Télécharger cfl2.eso

Retour à la liste

Numérotation des lignes :

  1. C CFL2 SOURCE BP208322 15/06/22 21:15:54 8543
  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.  
  36. -INC PPARAM
  37. -INC CCOPTIO
  38. -INC CCHAMP
  39. -INC SMCHAML
  40. -INC SMELEME
  41. *
  42. *
  43. SEGMENT MPTVAL
  44. * ipos pointeur vers la sous zone du mchelm
  45. * nsof ??
  46. INTEGER IPOS(NS) ,NSOF(NS)
  47. * ival pointeur vers le melval de la composante
  48. * =0 si il n'est pas présente
  49. * ncosou = nbrfac + nbrobl
  50. INTEGER IVAL(NCOSOU)
  51. * continent le type de composante
  52. CHARACTER*16 TYVAL(NCOSOU)
  53. ENDSEGMENT
  54. POINTEUR MPTVA1.MPTVAL,MPTVA2.MPTVAL
  55. *
  56. *
  57. *
  58. MPTVA1 = IVAM1
  59. MPTVA2 = IVAM2
  60. *
  61. *
  62. * branchement en fonction de l'élément fini
  63. *
  64. * 0 5 0 5 0
  65. GOTO (99,99,99, 4,99,99,99, 4,99,99,99,99,99,99,99,99,99,99,99,99,
  66. 2 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  67. 4 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  68. 6 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  69. 8 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  70. 1 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
  71. 2 99,99,99,99,99,99,99),MELE
  72. *
  73. * éléments massifs
  74. *
  75. 4 CONTINUE
  76. * ================ calcul de la vitesse du son
  77. * le resultat est stocké dans melval avec n1ptel =1
  78. IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN
  79. * recherche des paramètre matériau
  80. * module d'young
  81. MELVA3 = MPTVA1.IVAL(1)
  82. * densite
  83. MELVA4 = MPTVA1.IVAL(3)
  84. SEGDES MPTVA1
  85. SEGACT MELVA3,MELVA4
  86. *
  87. N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2))
  88. N1PTEL = 1
  89. N2PTEL = 0
  90. N2EL = 0
  91. SEGINI MELVAL
  92. MCSON = MELVAL
  93. * boucle sur les éléments pour calculer la vitesse du son
  94. DO 403 I=1,N1EL
  95. * on prend les valeurs moyennes sur les éléments
  96. YOU1 = 0.D0
  97. I3 = MIN(I,MELVA3.VELCHE(/2))
  98. DO 401 J=1,MELVA3.VELCHE(/1)
  99. YOU1 = YOU1 + MELVA3.VELCHE(J,I3)
  100. 401 CONTINUE
  101. YOU1 = YOU1 / MELVA3.VELCHE(/1)
  102. *
  103. RO1 = 0.D0
  104. I4 = MIN(I,MELVA4.VELCHE(/2))
  105. DO 402 J=1,MELVA4.VELCHE(/1)
  106. RO1 = RO1 + MELVA4.VELCHE(J,I4)
  107. 402 CONTINUE
  108. RO1 = RO1 / MELVA4.VELCHE(/1)
  109. IF (RO1.EQ.0.D0) THEN
  110. SEGDES MELVA4,MELVA3
  111. SEGSUP MELVAL
  112. CALL ERREUR(855)
  113. RETURN
  114. ENDIF
  115. *
  116. IF (YOU1.EQ.0.D0) THEN
  117. SEGDES MELVA4,MELVA3
  118. SEGSUP MELVAL
  119. CALL ERREUR(856)
  120. RETURN
  121. ENDIF
  122. VELCHE(1,I) = SQRT(YOU1/RO1)
  123. * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i)
  124. 403 CONTINUE
  125. SEGDES MELVA4,MELVA3
  126. IF (ICAS.EQ.4) THEN
  127. * cas ou seule la vitesse du son est demandée
  128. MELVA2 = 0
  129. MELV1 = MELVAL
  130. SEGDES MELVAL
  131. RETURN
  132. ENDIF
  133. ELSE IF (ICAS.EQ.2) THEN
  134. * recuperation du champ
  135. SEGACT MPTVA2
  136. MELVA1 = MPTVA2.IVAL(1)
  137. SEGACT MELVA1
  138. MCSON = MELVA1
  139. SEGDES MPTVA2
  140. ENDIF
  141. * ================ paramètre geometrique
  142. * stocké dans un melval mtaille
  143. IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN
  144. MELEME = IPMAIL
  145. SEGACT MELEME
  146. N1EL = NUM(/2)
  147. N1PTEL = 1
  148. N2PTEL = 0
  149. N2EL = 0
  150. SEGINI MELVAL
  151. MTAIL1 = MELVAL
  152. MTAIL2 = 0
  153. CALL CFLTAI(MTAIL1,IPMAIL,MELE)
  154. SEGDES MELEME
  155. IF (ICAS.EQ.5) THEN
  156. MELV1 = MTAIL1
  157. MELV2 = 0
  158. SEGDES MELVAL
  159. RETURN
  160. ENDIF
  161. ELSE IF (ICAS.EQ.3) THEN
  162. * recuperation du champ
  163. SEGACT MPTVA2
  164. MELVA1 = MPTVA2.IVAL(1)
  165. SEGACT MELVA1
  166. MTAIL1 = MELVA1
  167. SEGDES MPTVA2
  168. ENDIF
  169. * ================ pas de temps cfl
  170. IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN
  171. * recuperation de la vitesse du son
  172. * et du paramètre de taille
  173. MELVA1 = MCSON
  174. MELVA2 = MTAIL1
  175. * creation du melval résultat
  176. N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2))
  177. N1PTEL = 1
  178. N2EL = 0
  179. N2PTEL = 0
  180. SEGINI MELVAL
  181. *
  182. DO 404 I=1,N1EL
  183. I1 = MIN(I,MELVA1.VELCHE(/2))
  184. I2 = MIN(I,MELVA2.VELCHE(/2))
  185. VELCHE(1,I)=MELVA2.VELCHE(1,I2)/MELVA1.VELCHE(1,I1)
  186. * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i)
  187. 404 CONTINUE
  188. MELV1 = MELVAL
  189. MELV2 = 0
  190. SEGDES MELVAL
  191. IF (ICAS.EQ.1) THEN
  192. SEGSUP MELVA1,MELVA2
  193. ELSE IF (ICAS.EQ.2) THEN
  194. SEGSUP MELVA2
  195. SEGDES MELVA1
  196. ELSE
  197. SEGSUP MELVA1
  198. SEGDES MELVA2
  199. ENDIF
  200. RETURN
  201. ENDIF
  202. *
  203.  
  204. 99 CONTINUE
  205. MOTERR(1:4)=NOMTP(MELE)
  206. MOTERR(9:12)='CFL5'
  207. CALL ERREUR(86)
  208. *
  209. RETURN
  210. END
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  

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