Télécharger tadve8.eso

Retour à la liste

Numérotation des lignes :

tadve8
  1. C TADVE8 SOURCE CB215821 22/04/01 14:03:16 11326
  2.  
  3. C=======================================================================
  4. C= T A D V E 8 =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice d'ADVECTION pour les =
  10. C= les elements finis MASSIFs a integration NUMERIQUE =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. * NEF (E) NUMERO DE L'ELEMENT-FINI DANS NOMTP (VOIR CCHAMP)
  15. * IPMAIL E) NUMERO DU MAILLAGE ELEMENTAIRE CONSIDERE
  16. *
  17. * AUTEUR, DATE DE CREATION:
  18. * -------------------------
  19. * MARINO ARROYO, 18 MAI 1999
  20. *
  21. * LANGAGE:
  22. * --------
  23. * ESOPE + FORTRAN77
  24. *
  25. ************************************************************************
  26. SUBROUTINE TADVE8 (NEF,IPMAIL,IPINTE,IMATE,IVAMAT,NVAMAT,ISYMM,
  27. & IPMATR,NLIGR)
  28.  
  29. IMPLICIT INTEGER(I-N)
  30. IMPLICIT REAL*8(A-H,O-Z)
  31.  
  32.  
  33. -INC PPARAM
  34. -INC CCOPTIO
  35. -INC CCREEL
  36. -INC CCHAMP
  37.  
  38. -INC SMCHAML
  39. -INC SMCOORD
  40. -INC SMELEME
  41. -INC SMINTE
  42. -INC SMRIGID
  43.  
  44. SEGMENT MPTVAL
  45. INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU)
  46. CHARACTER*16 TYVAL(NCOSOU)
  47. ENDSEGMENT
  48.  
  49. SEGMENT,MMAT1
  50. REAL*8 CEL(NBNN,NBNN),XE(3,NBNN)
  51. REAL*8 SHP(6,NBNN),GRAD(NDIM,NBNN)
  52. C* REAL*8 FORME(NBNN),V77(NBNN),V22(IDIM) <- A verifier pour V22
  53. REAL*8 FORME(NBNN),V77(NBNN),V22(NDIM)
  54. REAL*8 CMAT(NDIM,NDIM),CMAT1(IDIM,IDIM),CMAT2(IDIM,IDIM)
  55. ENDSEGMENT
  56.  
  57. C SEGMENT ,MAXE
  58. C REAL*8 TXR(IDIM,IDIM),XLOC(3,3),XGLOB(3,3)
  59. C ENDSEGMENT
  60.  
  61. C 1 - INITIALISATIONS ET VERIFICATIONS
  62. C ======================================
  63. MELEME = IPMAIL
  64. c* SEGACT,MELEME
  65. NBNN = NUM(/1)
  66. NBELEM = NUM(/2)
  67. C =====
  68. MINTE = IPINTE
  69. c* SEGACT,MINTE
  70. NBPGAU = POIGAU(/1)
  71. C =====
  72. MPTVAL = IVAMAT
  73. c* SEGACT,MPTVAL
  74. C =====
  75. XMATRI = IPMATR
  76. c* SEGACT,xMATRI*MOD
  77. c* NLIGRP = NBNN = NLIGR
  78. c* NLIGRD = NBNN = NLIGR
  79. C =====
  80. C Recuperation des fonctions de forme et de leurs derivees au
  81. C centre de gravite de l'element pour le calcul des axes locaux
  82. C d'orthotropie ou d'anisotropie
  83. C =====
  84. C IF (IMATE.EQ.2 .OR.IMATE.EQ.3) THEN
  85. C NLG = NUMGEO(NEF)
  86. C CALL RESHPT(1,NBNN,NLG,NEF,0,IPINT1,IOK)
  87. Cc*of IF (IOK.EQ.0) GOTO 999
  88. C MINTE1 = IPINT1
  89. C SEGACT,MINTE1
  90. C NBSH = MINTE1.SHPTOT(/2)
  91. C ENDIF
  92.  
  93. C =====
  94. C Initialisation des segments de travail
  95. C =====
  96. IF (IFOMOD.EQ.1) THEN
  97. NDIM = 3
  98. ELSE
  99. NDIM = IDIM
  100. ENDIF
  101. SEGINI,MMAT1
  102. C IF (IMATE.EQ.2 .OR. IMATE.EQ.3) THEN
  103. C SEGINI,MAXE
  104. C ENDIF
  105.  
  106. C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL
  107. C ============================================================
  108. DO IEL = 1, NBELEM
  109. *
  110. * MISE A ZERO DU TABLEAU CEL
  111. *
  112. CALL ZERO(CEL,NBNN,NBNN)
  113. *
  114. * COORDONNEES DES NOEUDS DE L'ELEMENT IEL DANS LE REPERE GLOBAL
  115. *
  116. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IEL,XE)
  117. *
  118. CB215821 : En ADVECTION, les vitesses sont donnees dans le repere global
  119. CC Calcul des axes locaux d'orthotropie ou d'anisotropie
  120. C IF (IMATE.EQ.2 .OR. IMATE.EQ.3) THEN
  121. C CALL RLOCAL(XE,MINTE1.SHPTOT,NBSH,NBNN,TXR)
  122. C IF (nbsh.EQ.-1) THEN
  123. C CALL ERREUR(525)
  124. C GOTO 9990
  125. C ENDIF
  126. C ENDIF
  127. *
  128. * BOUCLE SUR LES POINTS DE GAUSS
  129. *
  130. IFOIS = 0
  131.  
  132. DO IGAU = 1, NBPGAU
  133. *
  134. * CALCUL DE LA MATRICE GRADIENT DES FONCTIONS DE FORME ET
  135. * DU JACOBIEN,EN UN POINT DE GAUSS
  136. *
  137. CALL TCOND5(IGAU,NBNN,NDIM,XE,SHPTOT,SHP,GRAD,DJAC)
  138. IF (IERR.NE.0) GOTO 9990
  139. IF (DJAC.LT.XZERO) IFOIS=IFOIS+1
  140. * Marino calcul de la matrice des fonctions de forme et confirmation du jacobien
  141. CALL CAPA4(NEF,IGAU,NBNN,XE,SHPTOT,SHP,FORME,DJAC2)
  142. IF ((ABS(DJAC-DJAC2)).GT.1.d-2) THEN
  143. WRITE(*,*) '###ERREUR DANS ADVE: Marino jacob diff '
  144. INTERR(1) = iElt
  145. CALL ERREUR(259)
  146. GOTO 9990
  147. ENDIF
  148. DJAC = ABS(DJAC)
  149. IF (DJAC.LT.XPETIT) THEN
  150. INTERR(1) = iElt
  151. CALL ERREUR(259)
  152. GOTO 9990
  153. ENDIF
  154. DJAC = DJAC*POIGAU(IGAU)
  155.  
  156. * Recuperation des valeurs des composantes du champ vectoriel
  157. DO i = 1, IDIM
  158. IF (IVAL(i).NE.0) THEN
  159. MELVAL = IVAL(i)
  160. IBMN = MIN(IEL ,VELCHE(/2))
  161. IGMN = MIN(IGAU,VELCHE(/1))
  162. V22(i) = DJAC*VELCHE(IGMN,IBMN)
  163. ELSE
  164. V22(i) = XZERO
  165. ENDIF
  166. ENDDO
  167.  
  168. C La vitesse est donnee dans le repere global (elements massifs)
  169. C Il n'y a pas a distinguer les cas ISOTROPE, ORTHOTROPE et ANISOTROPE
  170. DO i = 1, NBNN
  171. r_z = XZERO
  172. DO j = 1, NDIM
  173. r_z = r_z + GRAD(j,i)*V22(j)
  174. ENDDO
  175. V77(i) = r_z
  176. ENDDO
  177.  
  178. * CAS SYMETRIQUE
  179. IF (ISYMM.EQ.1) THEN
  180. DO i = 1, NBNN
  181. r_z = V77(i)
  182. DO j = 1, i
  183. CEL(i,j) = CEL(i,j)
  184. & + (r_z*FORME(j) + V77(j)*FORME(i))/2.D0
  185. ENDDO
  186. ENDDO
  187. * NON SYMETRIQUE
  188. ELSE
  189. DO i = 1, NBNN
  190. r_z = V77(i)
  191. DO j = 1, NBNN
  192. CEL(j,i) = CEL(j,i) + (r_z *FORME(j))
  193. ENDDO
  194. ENDDO
  195. ENDIF
  196. ENDDO
  197.  
  198. C Erreur si, en un point de Gauss, le jacobien change de signe.
  199. IF (IFOIS.NE.0.AND.IFOIS.NE.NBPGAU) THEN
  200. INTERR(1) = iElt
  201. CALL ERREUR(195)
  202. GOTO 9990
  203. ENDIF
  204.  
  205. * REMPLISSAGE DE XMATRI
  206. IF (ISYMM.EQ.1) THEN
  207. CALL REMPMT(CEL,NLIGR,RE(1,1,iel))
  208. ELSE
  209. CALL REMPMS(CEL,NLIGR,RE(1,1,iel))
  210. ENDIF
  211. C
  212. ENDDO
  213. *
  214. * DESACTIVATION DES SEGMENTS
  215. *
  216. C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  217. C ====================================================
  218. 9990 CONTINUE
  219. SEGSUP,MMAT1
  220. C IF (IMATE.EQ.2.OR.IMATE.EQ.3) THEN
  221. C SEGDES,MINTE1
  222. C SEGSUP,MAXE
  223. C ENDIF
  224.  
  225. RETURN
  226. END
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  

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