Télécharger simul7.eso

Retour à la liste

Numérotation des lignes :

simul7
  1. C SIMUL7 SOURCE CB215821 20/11/25 13:39:54 10792
  2. SUBROUTINE SIMUL7(IPSOLU,IPMASS,IPKW2M,W2,IPLMOX,IPLMOY,IFLU)
  3. C
  4. C***********************************************************************
  5. C
  6. C SBR APPELE PAR SIMUL1
  7. C
  8. C VERSION 11/06/86 AUTEUR D. BROCHARD
  9. C modifs BP 06/01/2012 : ajout cas M non definie positive
  10. C
  11. C CALCUL MASSE GENERALISEE ET DEPL. GEN. DANS LE CAS OU L ON FAIT
  12. C UN CALCUL DE MODES (VIBRATION) OPTION SIMULTANEE
  13. C
  14. C IPSOLU : POINTEUR SUR L OBJET SOLUTION
  15. C IPMASS : POINTEUR SUR L OBJET RIGIDITE DE TYPE MASSE
  16. C PROPRE : VOIR ITINV
  17. C
  18. C SOUS-PROGRAMMES APPELES : XTMX,MASGEN,DEPGEN
  19. C
  20. C***********************************************************************
  21. C
  22. C
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8(A-H,O-Z)
  25. REAL*8 PROPRE(5)
  26. -INC CCREEL
  27. -INC SMSOLUT
  28. -INC SMCHPOI
  29.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. *
  33. SEGMENT TRAV
  34. REAL*8 TT(NM),TT1(NM)
  35. INTEGER IORD(NM),IPOS(NM)
  36. ENDSEGMENT
  37. *
  38. MSOLUT=IPSOLU
  39. SEGACT MSOLUT
  40. MSOLEN=MSOLIS(4)
  41. SEGACT MSOLEN
  42. NBMOD=ISOLEN(/1)
  43. *
  44. NM=NBMOD
  45. SEGINI TRAV
  46. *
  47. MSOLE1=MSOLIS(5)
  48. SEGACT MSOLE1
  49. C
  50. C
  51. DO 10 NMOD=1,NBMOD
  52. IPX=MSOLE1.ISOLEN(NMOD)
  53. C
  54. C CALCUL DE XTMX (MASSE GENERALISEE SANS COEFF.)
  55. C
  56. ** CALL XTMX(MCHPOI,IPMASS,X1TMX1)
  57. ** PROPRE(2)=X1TMX1
  58. *
  59. CALL MUCPRI(IPX,IPMASS,IPBX)
  60. C IF(NMOD.EQ.1) CALL CORRSP(IPX,IPBX,IPLMOX,IPLMOY)
  61. CALL XTY1(IPX,IPBX,IPLMOX,IPLMOY,XMG)
  62. PROPRE(2)=XMG
  63. *
  64. C
  65. C CALCUL MASSE GEN. AVEC COEF.
  66. C
  67. CALL MASGEN(IPX,PROPRE)
  68. C
  69. C CALCUL DEPL. GEN.
  70. C
  71. CALL DEPGEN(IPMASS,IPX,PROPRE,IPBX,IPLMOX,IPLMOY)
  72. C
  73. C MODIFICATION DE L OBJET SOLUTION
  74. C
  75. MMODE=ISOLEN(NMOD)
  76. SEGACT MMODE*MOD
  77. TT(NMOD)=FMMODD(1)
  78. DO 20 I=2,5
  79. FMMODD(I)=PROPRE(I)
  80. 20 CONTINUE
  81. SEGDES MMODE
  82. 10 CONTINUE
  83. C
  84. C RANGER DANS TT1 LES FREQUENCES PAR ORDRE CROISSANT
  85. C IPOS(I) POSITION DANS TT DE LA IEME FREQ.
  86. C
  87. DO 400 I=1,NBMOD
  88. 400 TT1(I)=0.E0
  89. C
  90. TT1(1)=TT(1)
  91. DO 410 N1=2,NBMOD
  92. IF(TT(N1).LT.TT1(N1-1)) GOTO 420
  93. TT1(N1)=TT(N1)
  94. GOTO 410
  95. 420 CONTINUE
  96. DO 430 N2=1,(N1-1)
  97. N1M2=N1-N2-1
  98. IF(N1M2.EQ.0) GOTO 500
  99. IF(TT(N1).GT.TT1(N1M2)) GOTO 500
  100. 430 CONTINUE
  101. C
  102. C
  103. 500 CONTINUE
  104. N1M21=N1M2+1
  105. J=0
  106. DO 510 I=N1M21,(N1-1)
  107. TT1(N1-J)=TT1(N1-J-1)
  108. J=J+1
  109. 510 CONTINUE
  110. TT1(N1M21)=TT(N1)
  111. 410 CONTINUE
  112. C
  113. C CALCUL DE LA POSITION DE LA IEME FREQUENCE
  114. C
  115. DO 600 I=1,NBMOD
  116. FR=TT1(I)
  117. DO 605 J=1,NBMOD
  118. IF(FR.EQ.TT(J)) GOTO 610
  119. 605 CONTINUE
  120. 610 CONTINUE
  121. TT(J)=-1.
  122. IPOS(I)=J
  123. 600 CONTINUE
  124. C
  125. C
  126. C CALCUL DU NUMERO DU MODE
  127. C
  128. CALL DIAGN1(IPKW2M,IND0)
  129. *ajout bp 06/01/2012:
  130. CALL DIAGN1(IPMASS,nvp0M)
  131. * correction pour elements fluides (inconnue PI mise à 0 via INITFL)
  132. c nvp0M = nvp0M - IFLU
  133. * bp 10/01/2012: nvp0M et NEMSM ne semblent pas bien calculés ...
  134. * (resultats dependant machine -> cf. dyna7.dgibi)
  135. * on propose la solution qui suppose que nvp0M si M est LIQUIDE
  136. if(IFLU.gt.0) nvp0M=0
  137. if(nvp0M.ne.0) then
  138. if (W2.gt.0.D0) then
  139. IND0=nvp0M+IND0
  140. elseif (W2.lt.0.D0) then
  141. IND0=nvp0M-IND0
  142. else
  143. IND0=nvp0M
  144. endif
  145. endif
  146. *rem : le cas ou ni K ni M ne sont defini positifs n est pas prevu pour
  147. * l instant car le théroème de Sylvester ne s'applique pas.
  148. * on va donc utiliser la formule ci dessus et planter dans strate
  149. * (ou au mieux fournir un numero faux)
  150.  
  151. FIN=SQRT(W2)/(2.0*XPI)
  152. IF(FIN.LT.TT1(1)) GOTO 120
  153. IF(FIN.GT.TT1(NBMOD)) GOTO 130
  154. DO 100 IN=2,NBMOD
  155. IF(FIN.GE.TT1(IN-1).AND.FIN.LE.TT1(IN)) GOTO 110
  156. 100 CONTINUE
  157. C
  158. 120 CONTINUE
  159. C
  160. C FIN INF. A TT1(1) ON ASSOCIE IND0 A TT1(1)
  161. C
  162. IREP=1
  163. IND0=IND0+1
  164. GOTO 140
  165. 130 CONTINUE
  166. C
  167. C FIN SUP TT1(NMOD) ON ASSOCIE IND0 A TT1(NMOD)
  168. C
  169. IREP=NBMOD
  170. GOTO 140
  171. 110 CONTINUE
  172. C
  173. C CAS GENERAL ON ASSOCIE IND0 AU MODE JUSTE EN DESSOUS
  174. C
  175. C IREP=IN
  176. C IF((TT1(IN)-FIN).LE.(FIN-TT1(IN-1))) GOTO 140
  177. IREP=IN-1
  178. 140 CONTINUE
  179. DO 220 I=1,NBMOD
  180. IORD(IPOS(I))=IND0-IREP+I
  181. 220 CONTINUE
  182. C
  183. C
  184. IF(IIMPI.NE.30) GOTO 1500
  185. WRITE(IOIMP,*) (TT(I),I=1,NBMOD)
  186. WRITE(IOIMP,*) (TT1(I),I=1,NBMOD)
  187. WRITE(IOIMP,*) (IPOS(I),I=1,NBMOD)
  188. WRITE(IOIMP,*) (IORD(I),I=1,NBMOD)
  189. C
  190. C
  191. C MODIFICATION DE L OBJET SOLUTION
  192. C
  193. 1500 CONTINUE
  194. DO 310 NMOD=1,NBMOD
  195. MMODE=ISOLEN(NMOD)
  196. SEGACT MMODE*MOD
  197. IMMODD(1)=IORD(NMOD)
  198. SEGDES MMODE
  199. 310 CONTINUE
  200. SEGDES MSOLE1,MSOLEN,MSOLUT
  201. SEGSUP TRAV
  202. IPMODE=MSOLUT
  203. C
  204. C MESSAGE D AVERTISSEMENT
  205. C
  206. IF (IIMPI.EQ.2) THEN
  207. WRITE(IOIMP,1000)
  208. 1000 FORMAT(/40X,'ATTENTION OPERATEUR VIBRA OPTION SIMUL',
  209. C /40X,'--------------------------------------',
  210. C/10X,'LE NUMERO DU MODE EST CALCULE A PARTIR DU NOMBRE MODES',
  211. C/10X,' PROPRES INFERIEURS A LA FREQUENCE FOURNIE PAR L UTILI',
  212. C 'SATEUR')
  213. C
  214. * IMPRESSION DU MODE CALCULE:
  215. WRITE (IOIMP,2000)
  216. 2000 FORMAT ('1MODE PROPRE CALCULE:'/' --------------------'//)
  217. CALL ECMODE (IPMODE)
  218. ENDIF
  219. *
  220. C
  221. RETURN
  222. END
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  

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