Télécharger fluma3.eso

Retour à la liste

Numérotation des lignes :

fluma3
  1. C FLUMA3 SOURCE CB215821 19/07/30 21:16:19 10273
  2. SUBROUTINE FLUMA3(IPFLOD,IPGEOM,IPINTE,NUMPOI,IPFLEQ)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * F L U M A 3
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. * CALCUL DES FLUX NODAUX EQUIVALENTS
  13. * MODE TRIDIMENSIONNEL
  14. *
  15. * MODULES UTILISES:
  16. * -----------------
  17. *
  18.  
  19. -INC PPARAM
  20. -INC CCOPTIO
  21. -INC CCREEL
  22. -INC SMCHAML
  23. -INC SMELEME
  24. -INC SMINTE
  25. -INC SMCOORD
  26. *
  27. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  28. * -----------
  29. *
  30. * IPFLOD (E) POINTEUR SUR UN SEGMENT MELVAL CONTENANT LES
  31. * FLUX NODAUX
  32. * IPGEOM (E) POINTEUR SUR UN OBJET MAILLAGE ELEMENTAIRE
  33. * DE L'ENVELOPPE
  34. * IPINTE (E) POINTEUR SUR UN SEGMENT MINTE CONTENANT LES
  35. * CARACTERISTIQUES D'INTEGRATION DES FACES
  36. * +IDIM (E) VOIR CCOPTIO
  37. * +XZERO (E) VOIR CCREEL
  38. * +XPETIT (E) VOIR CCREEL
  39. * NUMPOI (E) REFERENCE LA DIRECTION DU FLUX DANS LE REPERE GLOBAL
  40. * = -1 LORSQUE LE FLUX EST NORMAL A LA SURFACE
  41. * MIS A 1 POUR LA SYNTAXE 3 ( FLUX D UN VECTEUR)
  42. * IPFLEQ (S) POINTEUR SUR UN SEGMENT MELVAL CONTENANT LES
  43. * FLUX NODAUX EQUIVALENTS
  44. *
  45. INTEGER NUMPOI
  46. *
  47. * VARIABLES:
  48. * ----------
  49. *
  50. * XE(3,NBPTEL) = COORDONNEES DES ELEMENTS DANS LE REPERE GLOBAL
  51. * SURF = SURFACE ELEMENTAIRE AU POINT DE GAUSS
  52. * A ET S = TABLEAUX DE TRAVAIL
  53. * COSDIR = COSINUS DIRECTEUR DE L'INCLINAISON DU FLUX
  54. *
  55. REAL*8 S(6)
  56. SEGMENT,MMAT1
  57. REAL*8 XE(3,NBPTEL)
  58. ENDSEGMENT
  59. *
  60. * CONSTANTES:
  61. * -----------
  62. *
  63. PARAMETER ( O1=1.D0 )
  64. PARAMETER ( O4=4.D0 )
  65. *
  66. * AUTEUR, DATE DE CREATION:
  67. * -------------------------
  68. *
  69. * DENIS ROBERT,LE 3 FEVRIER 1988.
  70. *
  71. * LANGAGE:
  72. * --------
  73. *
  74. * ESOPE + FORTRAN77
  75. *
  76. ************************************************************************
  77. *
  78. * ON RECUPERE LES VALEURS NODALES DU FLUX
  79.  
  80. *
  81. IF (NUMPOI.NE.1) THEN
  82.  
  83. MELVA1=IPFLOD
  84. NBPTE1=MELVA1.VELCHE(/1)
  85. NEL1=MELVA1.VELCHE(/2)
  86. ELSE
  87. * numpoi a ete mis a 1 si ipflod a 2 ou 3 composantes .........
  88.  
  89. MCHAM1 = IPFLOD
  90. MELVA1= MCHAM1.IELVAL(1)
  91. MELVA2= MCHAM1.IELVAL(2)
  92. MELVA3= MCHAM1.IELVAL(3)
  93. MELVA4= MCHAM1.IELVAL(4)
  94. MELVA5= MCHAM1.IELVAL(5)
  95. MELVA6= MCHAM1.IELVAL(6)
  96.  
  97.  
  98. NBPTE1=MELVA1.VELCHE(/1)
  99. NEL1=MELVA1.VELCHE(/2)
  100. ENDIF
  101. *
  102. * ON RECUPERE LES CARACTERISTIQUES D'INTEGRATION DES FACES
  103. *
  104. MINTE=IPINTE
  105. NBPGAU=POIGAU(/1)
  106. *
  107. * ON RECUPERE UN DES MAILLAGES ELEMENTAIRES DE L'ENVELOPPE
  108. *
  109. MELEME=IPGEOM
  110. NBPTEL=NUM(/1)
  111. NEL=NUM(/2)
  112. *
  113. * MELVAL QUI CONTIENDRA LES FLUX NODAUX EQUIVALENTS
  114. *
  115. N1PTEL=NBPTEL
  116. N1EL=NEL
  117. N2PTEL=0
  118. N2EL=0
  119. SEGINI,MELVAL
  120. IPFLEQ=MELVAL
  121. SEGINI,MMAT1
  122. *
  123. * CAS D'UN FLUX INCLINE PAR RAPPORT A LA NORMALE A LA SURFACE
  124. *
  125. COSDIR=O1
  126. IF ((NUMPOI.NE.-1).AND.(NUMPOI.NE.1)) THEN
  127. *
  128. * ON RECUPERE LES COORDONNEES DU VECTEUR DIRECTION
  129. *
  130. CALL EXCOO1(NUMPOI,XDIR,YDIR,ZDIR,DENS)
  131. DNORME=SQRT(XDIR**2+YDIR**2+ZDIR**2)
  132. IF (DNORME.LT.XPETIT) THEN
  133. *
  134. * ERREUR DANS LA DONNEE DE LA DIRECTION DU FLUX
  135. *
  136. CALL ERREUR(417)
  137. RETURN
  138. ENDIF
  139. XDIRNO=XDIR/DNORME
  140. YDIRNO=YDIR/DNORME
  141. ZDIRNO=ZDIR/DNORME
  142. COSDIR=O4
  143. ENDIF
  144.  
  145.  
  146.  
  147. *
  148. * BOUCLE SUR LES ELEMENTS
  149. *
  150. DO 10 IEL=1,NEL
  151. *
  152. * ON CHERCHE LES COORDONNEES DES NOEUDS DANS LE REPERE GLOBAL
  153. *
  154. CALL DOXE(XCOOR,IDIM,NBPTEL,NUM,IEL,XE)
  155. *
  156. * BOUCLE SUR LES POINTS DE GAUSS ET SUR LES NOEUDS
  157.  
  158. DO 40 IGAU=1,NBPGAU
  159. *
  160. * CALCUL DE LA SURFACE ELEMENTAIRE AU POINT DE GAUSS
  161. *
  162. SURFX=XZERO
  163. SURFY=XZERO
  164. SURFZ=XZERO
  165. DO 21 I=1,6
  166. S(I)=XZERO
  167. 21 CONTINUE
  168. * END DO
  169. DO 30 INOE=1,NBPTEL
  170. S(1)=S(1)+SHPTOT(2,INOE,IGAU)*XE(2,INOE)
  171. S(2)=S(2)+SHPTOT(3,INOE,IGAU)*XE(3,INOE)
  172. S(3)=S(3)+SHPTOT(3,INOE,IGAU)*XE(2,INOE)
  173. S(4)=S(4)+SHPTOT(2,INOE,IGAU)*XE(3,INOE)
  174. S(5)=S(5)+SHPTOT(3,INOE,IGAU)*XE(1,INOE)
  175. S(6)=S(6)+SHPTOT(2,INOE,IGAU)*XE(1,INOE)
  176. 30 CONTINUE
  177. * END DO
  178. SURFX=S(1)*S(2)-S(3)*S(4)
  179. SURFY=S(4)*S(5)-S(2)*S(6)
  180. SURFZ=S(6)*S(3)-S(5)*S(1)
  181. SURF=SQRT(SURFX**2+SURFY**2+SURFZ**2)
  182.  
  183. *
  184. * SI ON A UN FLUX INCLINE,CALCUL DU COSINUS DIRECTEUR
  185. *
  186. IGMN=MIN(IGAU,MELVA1.VELCHE(/1))
  187. IBMN=MIN(IEL,MELVA1.VELCHE(/2))
  188. DIRNOR=COSDIR
  189. IF ((COSDIR.NE.O1).AND.(NUMPOI.NE.1)) THEN
  190. DIRNOR=ABS(XDIRNO*(SURFX/SURF)+YDIRNO*(SURFY/SURF)
  191. + +ZDIRNO*(SURFZ/SURF))
  192.  
  193. ENDIF
  194.  
  195.  
  196. IF (NUMPOI.EQ.1) THEN
  197. C on oriente la vraie normale suivant la pseudo
  198. S1 = MELVA4.VELCHE(IGMN,IBMN)
  199. S2 = MELVA5.VELCHE(IGMN,IBMN)
  200. S3 = MELVA6.VELCHE(IGMN,IBMN)
  201. AMUL = 1.D0
  202. PS = SURFX*S1+SURFY*S2+SURFZ*S3
  203. IF(PS.LT.0) AMUL = -1.D0
  204. T1 = ( POIGAU(IGAU)*( MELVA1.VELCHE(IGMN,IBMN)*SURFX +
  205. 1 MELVA2.VELCHE(IGMN,IBMN)*SURFY +
  206. 1 MELVA3.VELCHE(IGMN,IBMN)*SURFZ ))*AMUL
  207. ELSE
  208. T1 = POIGAU(IGAU)*DIRNOR*SURF*MELVA1.VELCHE(IGMN,IBMN)
  209. ENDIF
  210. DO 51 J=1,NBPTEL
  211. VELCHE(J,IEL) = VELCHE(J,IEL) +SHPTOT(1,J,IGAU)*T1
  212.  
  213. 51 CONTINUE
  214. 40 CONTINUE
  215. 10 CONTINUE
  216. * END DO
  217. *
  218. SEGSUP,MMAT1
  219. IF ( NUMPOI.EQ.1) THEN
  220. ENDIF
  221.  
  222. END
  223.  
  224.  
  225.  

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