Télécharger evorig.eso

Retour à la liste

Numérotation des lignes :

  1. C EVORIG SOURCE CHAT 05/01/12 23:47:33 5004
  2. SUBROUTINE EVORIG(IROT,ICDG,IBOO,ILEX,ITYP,ILEXRO,ILEXVI,IDEFO)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *-----------------------------------------------------------------------*
  6. * *
  7. * Sous-programme appelé par EVRECO de l'opérateur EVOL option RECO *
  8. * *
  9. * Pour les rotations de corps rigides, recombine les déplacements * *
  10. * les vitesses ou les accélérations . *
  11. * *
  12. * *
  13. * Paramètres *
  14. * *
  15. * e IROT Position du mode de rotation *
  16. * e ICDG Numéro du point centre de gravité *
  17. * e IDEFO Numéro de la déformée modale de rotation *
  18. * e ITYP = 0 si on recombine les déplacements *
  19. * = 1 pour les vitesses *
  20. * =-1 pour les accélérations *
  21. * = 2 pour les contraintes *
  22. * es IBOO Segment des résultats *
  23. * e ILEX Suite des chpoints des contributions modales *
  24. * e ILEXRO Suite des chpoints des déplacements modaux *
  25. * (sert pour les vitesses et accélérations)*
  26. * e ILEXVI Suite des chpoints des vitessess modales *
  27. * (sert pour les accélérations) *
  28. * *
  29. * *
  30. * Auteur, date de création: *
  31. * *
  32. * Samuel DURAND : le 14 Octobre 1996 : Création *
  33. * *
  34. *-----------------------------------------------------------------------*
  35. -INC CCOPTIO
  36. -INC SMLENTI
  37. -INC SMLREEL
  38. -INC SMCHPOI
  39. -INC SMELEME
  40. *
  41. SEGMENT NUMOO
  42. INTEGER NUMO(N),KLIST(N)
  43. CHARACTER*4 NUDDL(N)
  44. ENDSEGMENT
  45. *
  46. CHARACTER*4 MOTCOM
  47. CHARACTER*4 NOMTRI(3)
  48. REAL*8 XAXROT(3),XROTA(2,6)
  49. *
  50. DATA NOMTRI/'UX ','UY ','UZ '/
  51. *
  52. *
  53. * Création d'un listréel composé des valeurs du mode
  54. * de rotation au cours du temps
  55. *
  56. MLENTI=ILEX
  57. SEGACT MLENTI
  58. LTEMP=LECT(/1)
  59. * Recherche de la position du mode de rotation, dans le premier
  60. * chpoint des variables généralisées
  61. MCHPOI=LECT(1)
  62. SEGACT MCHPOI
  63. NSOUP=IPCHP(/1)
  64. KT=0
  65. 15 CONTINUE
  66. KT=KT+1
  67. MSOUPO=IPCHP(KT)
  68. SEGACT MSOUPO
  69. MELEME = IGEOC
  70. SEGACT MELEME
  71. NE = NUM(/2)
  72. IE=0
  73. 16 CONTINUE
  74. IE=IE+1
  75. IF ((NUM(1,IE).EQ.IROT)) THEN
  76. * RIEN
  77. SEGDES MELEME,MSOUPO
  78. ELSE
  79. IF (IE.NE.NE) THEN
  80. GOTO 16
  81. ELSE
  82. SEGDES MELEME,MSOUPO
  83. GOTO 15
  84. ENDIF
  85. ENDIF
  86. SEGDES MCHPOI
  87. *
  88. * Boucle sur tous les instants pour remplir le listréel
  89. JG = LTEMP
  90. SEGINI,MLREEL
  91. DO 20 JT=1,LTEMP
  92. MCHPOI=LECT(JT)
  93. SEGACT MCHPOI
  94. MSOUPO=IPCHP(KT)
  95. SEGACT MSOUPO
  96. MPOVAL=IPOVAL
  97. SEGACT MPOVAL
  98. MLREEL.PROG(JT)=VPOCHA(IE,1)
  99. SEGDES MPOVAL,MSOUPO,MCHPOI
  100. 20 CONTINUE
  101. SEGDES MLENTI
  102. IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN
  103. * Récupération des angles de rotation à chaque pas de temps
  104. JG=LTEMP
  105. SEGINI MLREE2
  106. MLENTI=ILEXRO
  107. SEGACT MLENTI
  108. DO 21 JT=1,LTEMP
  109. MCHPOI=LECT(JT)
  110. SEGACT MCHPOI
  111. MSOUPO=IPCHP(KT)
  112. SEGACT MSOUPO
  113. MPOVAL=IPOVAL
  114. SEGACT MPOVAL
  115. MLREE2.PROG(JT)=VPOCHA(IE,1)
  116. SEGDES MPOVAL,MSOUPO,MCHPOI
  117. 21 CONTINUE
  118. SEGDES MLENTI
  119. IF (ITYP.EQ.-1) THEN
  120. * Récupération des vitesses de rotation à chaque pas de temps
  121. JG=LTEMP
  122. SEGINI MLREE3
  123. MLENTI=ILEXVI
  124. SEGACT MLENTI
  125. DO 22 JT=1,LTEMP
  126. MCHPOI=LECT(JT)
  127. SEGACT MCHPOI
  128. MSOUPO=IPCHP(KT)
  129. SEGACT MSOUPO
  130. MPOVAL=IPOVAL
  131. SEGACT MPOVAL
  132. MLREE3.PROG(JT)=VPOCHA(IE,1)
  133. SEGDES MPOVAL,MSOUPO,MCHPOI
  134. 22 CONTINUE
  135. SEGDES MLENTI
  136. *
  137. else
  138. * rien
  139. ENDIF
  140. else
  141. * rien
  142. ENDIF
  143. NUMOO = IBOO
  144. SEGACT NUMOO
  145. N=NUMO(/1)
  146. *
  147. *
  148. * Boucle sur tous les points de recombinaison
  149. **
  150. IF (IDIM.EQ.3) THEN
  151. IDIMB=6
  152. ELSE
  153. IDIMB=3
  154. ENDIF
  155. DO 10 IPOINT=1,N
  156. MERR=0
  157. * Recherche de l axe de rotation
  158. MCHPOI=IDEFO
  159. SEGACT,MCHPOI
  160. NSO=IPCHP(/1)
  161. ISOU=0
  162. 11 CONTINUE
  163. ISOU=ISOU+1
  164. MSOUPO=IPCHP(ISOU)
  165. SEGACT,MSOUPO
  166. MELEME=IGEOC
  167. SEGACT,MELEME
  168. MPOVAL=IPOVAL
  169. SEGACT,MPOVAL
  170. NEL=NUM(/2)
  171. IE=0
  172. 12 CONTINUE
  173. IE=IE+1
  174. IF (NUM(1,IE).EQ.NUMO(IPOINT)) THEN
  175. DO 13 ID=(IDIM+1),IDIMB
  176. XAXROT(ID-IDIM)=VPOCHA(IE,ID)
  177. 13 CONTINUE
  178. SEGDES MPOVAL,MELEME,MSOUPO
  179. ELSE
  180. IF (IE.NE.NEL) THEN
  181. GOTO 12
  182. ELSE
  183. SEGDES MPOVAL,MELEME,MSOUPO
  184. GOTO 11
  185. ENDIF
  186. ENDIF
  187. SEGDES MCHPOI
  188. *
  189. CALL DYNE41(XAXROT,MERR,IDIM)
  190. * Calcul des fausses déformées modales de rotation
  191. CALL DYNE42(XROTA,XAXROT,NUMO(IPOINT),ICDG,IDIMB,MERR)
  192. MOTCOM=NUDDL(IPOINT)
  193. CALL PLACE5(NOMTRI,IDIM,IPOSI,MOTCOM)
  194. IF (IPOSI.NE.0) THEN
  195. * Boucle sur tous les instants
  196. *
  197. MLREE1=KLIST(IPOINT)
  198. SEGACT MLREE1*MOD
  199. DO 30 IT=1,LTEMP
  200. XVAL=MLREEL.PROG(IT)
  201. IF (ITYP.EQ.0) THEN
  202. MLREE1.PROG(IT)=MLREE1.PROG(IT)+(XROTA(1,IPOSI)*
  203. &(COS(XVAL)-1) + XROTA(2,IPOSI)*SIN(XVAL))
  204. ELSE
  205. XANG=MLREE2.PROG(IT)
  206. MLREE1.PROG(IT)=MLREE1.PROG(IT)+XVAL*
  207. &(COS(XANG)*XROTA(2,IPOSI)-SIN(XANG)*XROTA(1,IPOSI))
  208. IF (ITYP.EQ.-1) THEN
  209. XVIT=MLREE3.PROG(IT)
  210. MLREE1.PROG(IT)=MLREE1.PROG(IT)-XVIT*XVIT*
  211. &(COS(XANG)*XROTA(1,IPOSI)+SIN(XANG)*XROTA(2,IPOSI))
  212. else
  213. * rien
  214. ENDIF
  215. ENDIF
  216. 30 CONTINUE
  217. SEGDES MLREE1
  218. else
  219. * rien
  220. ENDIF
  221. 10 CONTINUE
  222. SEGSUP,MLREEL
  223. IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN
  224. SEGSUP MLREE2
  225. IF (ITYP.EQ.-1) SEGSUP MLREE3
  226. else
  227. * rien
  228. ENDIF
  229. END
  230.  
  231.  
  232.  
  233.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales