Télécharger cfl2.eso

Retour à la liste

Numérotation des lignes :

cfl2
  1. C CFL2 SOURCE OF166741 25/02/21 21:15:29 12166
  2. SUBROUTINE CFL2(ICAS,IPMAIL,MELE,IVAM1,IVAM2,MELV1,MELV2,N2)
  3. *---------------------------------------------------------------------*
  4. *
  5. * calcul du pas de temps CFL
  6. *
  7. * elements massifs formulation mécanique
  8. *
  9. *
  10. * entree
  11. * icas : cas à traiter
  12. * = 1 calcul du pas de temps complet ivam1 avec cara
  13. * = 2 calcul du pas de temps lorsque cson est donne ivam2
  14. * = 3 calcul du pas de temps lorsque la taille est donnée ivam1 si cara
  15. * = 4 calcul de la vitesse du son ivam1 donné
  16. * = 5 calcul du parametre de taille ivam1 si cara
  17. *
  18. * ipmail : pointeur vers le maillage a traiter
  19. * mele : numero de l'élément finis dans nomtp
  20. * ivam1 : pointeur vers mptval du cham1 actif
  21. * ivam2 : pointeur vers mptval du cham2 actif
  22. * n2 : nombre de comosante en sortie
  23. *
  24. * sortie
  25. * melv1 : melval de la première composante du chamelem resultat
  26. * inactif en sortie
  27. * melv2 : melval de la deuxième composante du chamelem resultat
  28. * inactif en sortie
  29. *
  30. *
  31. *---------------------------------------------------------------------*
  32. IMPLICIT INTEGER(I-N)
  33. IMPLICIT REAL*8(A-H,O-Z)
  34.  
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. -INC CCHAMP
  38.  
  39. -INC SMCHAML
  40. -INC SMELEME
  41.  
  42. -INC TMPTVAL
  43.  
  44. MPTVA1 = IVAM1
  45. MPTVA2 = IVAM2
  46. *
  47. * branchement en fonction de l'élément fini
  48. *
  49. * 0 5 0 5 0
  50. GOTO (99,99,99, 4,99,99,99, 4,99),MELE
  51. GOTO 99
  52. *
  53. * éléments massifs
  54. *
  55. 4 CONTINUE
  56. * ================ calcul de la vitesse du son
  57. * le resultat est stocké dans melval avec n1ptel =1
  58. IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN
  59. * recherche des paramètre matériau
  60. * module d'young
  61. MELVA3 = MPTVA1.IVAL(1)
  62. * densite
  63. MELVA4 = MPTVA1.IVAL(3)
  64. SEGACT MELVA3,MELVA4
  65. *
  66. N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2))
  67. N1PTEL = 1
  68. N2PTEL = 0
  69. N2EL = 0
  70. SEGINI MELVAL
  71. MCSON = MELVAL
  72. * boucle sur les éléments pour calculer la vitesse du son
  73. DO 403 I=1,N1EL
  74. * on prend les valeurs moyennes sur les éléments
  75. YOU1 = 0.D0
  76. I3 = MIN(I,MELVA3.VELCHE(/2))
  77. DO 401 J=1,MELVA3.VELCHE(/1)
  78. YOU1 = YOU1 + MELVA3.VELCHE(J,I3)
  79. 401 CONTINUE
  80. YOU1 = YOU1 / MELVA3.VELCHE(/1)
  81. *
  82. RO1 = 0.D0
  83. I4 = MIN(I,MELVA4.VELCHE(/2))
  84. DO 402 J=1,MELVA4.VELCHE(/1)
  85. RO1 = RO1 + MELVA4.VELCHE(J,I4)
  86. 402 CONTINUE
  87. RO1 = RO1 / MELVA4.VELCHE(/1)
  88. IF (RO1.EQ.0.D0) THEN
  89. SEGDES MELVA4,MELVA3
  90. SEGSUP MELVAL
  91. CALL ERREUR(855)
  92. RETURN
  93. ENDIF
  94. *
  95. IF (YOU1.EQ.0.D0) THEN
  96. SEGDES MELVA4,MELVA3
  97. SEGSUP MELVAL
  98. CALL ERREUR(856)
  99. RETURN
  100. ENDIF
  101. VELCHE(1,I) = SQRT(YOU1/RO1)
  102. * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i)
  103. 403 CONTINUE
  104. SEGDES MELVA4,MELVA3
  105. IF (ICAS.EQ.4) THEN
  106. * cas ou seule la vitesse du son est demandée
  107. MELVA2 = 0
  108. MELV1 = MELVAL
  109. SEGDES MELVAL
  110. RETURN
  111. ENDIF
  112. ELSE IF (ICAS.EQ.2) THEN
  113. * recuperation du champ
  114. SEGACT MPTVA2
  115. MELVA1 = MPTVA2.IVAL(1)
  116. SEGACT MELVA1
  117. MCSON = MELVA1
  118. SEGDES MPTVA2
  119. ENDIF
  120. * ================ paramètre geometrique
  121. * stocké dans un melval mtaille
  122. IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN
  123. MELEME = IPMAIL
  124. SEGACT MELEME
  125. N1EL = NUM(/2)
  126. N1PTEL = 1
  127. N2PTEL = 0
  128. N2EL = 0
  129. SEGINI MELVAL
  130. MTAIL1 = MELVAL
  131. MTAIL2 = 0
  132. CALL CFLTAI(MTAIL1,IPMAIL,MELE)
  133. SEGDES MELEME
  134. IF (ICAS.EQ.5) THEN
  135. MELV1 = MTAIL1
  136. MELV2 = 0
  137. SEGDES MELVAL
  138. RETURN
  139. ENDIF
  140. ELSE IF (ICAS.EQ.3) THEN
  141. * recuperation du champ
  142. SEGACT MPTVA2
  143. MELVA1 = MPTVA2.IVAL(1)
  144. SEGACT MELVA1
  145. MTAIL1 = MELVA1
  146. SEGDES MPTVA2
  147. ENDIF
  148. * ================ pas de temps cfl
  149. IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN
  150. * recuperation de la vitesse du son
  151. * et du paramètre de taille
  152. MELVA1 = MCSON
  153. MELVA2 = MTAIL1
  154. * creation du melval résultat
  155. N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2))
  156. N1PTEL = 1
  157. N2EL = 0
  158. N2PTEL = 0
  159. SEGINI MELVAL
  160. *
  161. DO 404 I=1,N1EL
  162. I1 = MIN(I,MELVA1.VELCHE(/2))
  163. I2 = MIN(I,MELVA2.VELCHE(/2))
  164. VELCHE(1,I)=MELVA2.VELCHE(1,I2)/MELVA1.VELCHE(1,I1)
  165. * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i)
  166. 404 CONTINUE
  167. MELV1 = MELVAL
  168. MELV2 = 0
  169. SEGDES MELVAL
  170. IF (ICAS.EQ.1) THEN
  171. SEGSUP MELVA1,MELVA2
  172. ELSE IF (ICAS.EQ.2) THEN
  173. SEGSUP MELVA2
  174. SEGDES MELVA1
  175. ELSE
  176. SEGSUP MELVA1
  177. SEGDES MELVA2
  178. ENDIF
  179. RETURN
  180. ENDIF
  181.  
  182. 99 CONTINUE
  183. MOTERR(1:4)=NOMTP(MELE)
  184. MOTERR(9:12)='CFL5'
  185. CALL ERREUR(86)
  186.  
  187. RETURN
  188. END
  189.  
  190.  
  191.  

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