Télécharger sigdif.eso

Retour à la liste

Numérotation des lignes :

sigdif
  1. C SIGDIF SOURCE BP208322 17/03/01 21:18:18 9325
  2.  
  3. SUBROUTINE SIGDIF (MELE,IELE,IPMAIL,NBPGAU,IPMINT1,NDEP,IVADEP,
  4. & LDIFF,LRE,MATE,IVAMAT,NVMAT, IVASTR)
  5.  
  6. *----------------------------------------------------------------------*
  7. * CALCUL DES FLUX DE DIFFUSION (FORMULATION 'DIFFUSION') *
  8. *----------------------------------------------------------------------*
  9. * ENTREES : *
  10. * ________ *
  11. * MELE Numero de l'element fini *
  12. * IPMAIL Pointeur sur un segment MELEME *
  13. * IPMINT Pointeur sur un segment MINTE *
  14. * NBPGAU Nombre de point d'integration pour la rigidite *
  15. * MATE Numero du materiau *
  16. * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou *
  17. * NVMAT Nombre de composantes de materiau *
  18. * *
  19. * SORTIES : *
  20. * ________ *
  21. * IPMATR pointeur sur la rigidite de la sous-zone *
  22. *----------------------------------------------------------------------*
  23.  
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26.  
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCREEL
  31.  
  32. -INC SMCHAML
  33. -INC SMCOORD
  34. -INC SMELEME
  35. -INC SMINTE
  36.  
  37. SEGMENT MWKELT
  38. REAL*8 DFICK(LDIFF,LDIFF),BGRDIF(LDIFF,LRE)
  39. REAL*8 XEL(3,NBNN),SHP(6,NBNN)
  40. REAL*8 VALMAT(NVMAT)
  41. ENDSEGMENT
  42.  
  43. SEGMENT MWKMAT
  44. REAL*8 XLOC(3,3),XGLOB(3,3),TXR(IDIM,IDIM)
  45. REAL*8 DFICK1(LDIFF,LDIFF)
  46. ENDSEGMENT
  47.  
  48. SEGMENT MWKDIF
  49. REAL*8 DDLDIF(LRE),FLUDIF(LDIFF)
  50. ENDSEGMENT
  51.  
  52. SEGMENT MPTVAL
  53. INTEGER IPOS(NS),NSOF(NS)
  54. INTEGER IVAL(NCOSOU)
  55. CHARACTER*16 TYVAL(NCOSOU)
  56. ENDSEGMENT
  57.  
  58. MINTE = IPMINT1
  59. MELEME = IPMAIL
  60. NBNN = NUM(/1)
  61. NBELEM = NUM(/2)
  62.  
  63. SEGINI,MWKELT
  64. IWKELT = MWKELT
  65.  
  66. MWKMAT = 0
  67. IF (MATE.EQ.2.OR.MATE.EQ.3) THEN
  68. CALL RESHPT(1,NBNN,IELE,MELE,0,IPMINT2,IRT1)
  69. MINTE2 = IPMINT2
  70. SEGACT,MINTE2
  71. NBSH = MINTE2.SHPTOT(/2)
  72. SEGINI,MWKMAT
  73. ENDIF
  74. IWKMAT = MWKMAT
  75.  
  76. SEGINI,MWKDIF
  77.  
  78. C-------------------------
  79. C Boucle sur les elements
  80. C-------------------------
  81. DO IEL = 1,NBELEM
  82. C - Recuperation des coordonnees des noeuds de l element IEL
  83. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IEL,XEL)
  84. C - Calcul des axes locaux dans les cas orthotrope et anisotrope
  85. IF (MATE.EQ.2.OR.MATE.EQ.3) THEN
  86. CALL RLOCAL(XEL,MINTE2.SHPTOT,NBSH,NBNN,TXR)
  87. IF (NBSH.EQ.-1) THEN
  88. CALL ERREUR(525)
  89. GOTO 999
  90. ENDIF
  91. ENDIF
  92. C - Recuperation des ddls de diffusion aux noeuds de l element IEL
  93. MPTVAL = IVADEP
  94. IE = 1
  95. DO IGAU = 1, NBNN
  96. DO ICOMP = 1, NDEP
  97. MELVAL = IVAL(ICOMP)
  98. IGMN = MIN(IGAU,VELCHE(/1))
  99. IEMN = MIN(IEL ,VELCHE(/2))
  100. DDLDIF(IE) = VELCHE(IGMN,IEMN)
  101. IE = IE+1
  102. ENDDO
  103. ENDDO
  104. C-- -- -- -- -- -- -- -- --
  105. C - Boucle sur les points de Gauss
  106. C-- -- -- -- -- -- -- -- --
  107. ISDJC = 0
  108. DO IGAU = 1, NBPGAU
  109. C -- Calcul de la matrice Bdif et du jacobien au point de Gauss IGAU
  110. CALL BDIFF(XEL,SHPTOT(1,1,IGAU),NBNN,LDIFF,-1,
  111. & SHP,BGRDIF,DJAC)
  112. IF (DJAC.LT.0.) ISDJC = ISDJC+1
  113. IF (DJAC.EQ.0.) THEN
  114. INTERR(1) = IEL
  115. CALL ERREUR(259)
  116. GOTO 999
  117. ENDIF
  118. C -- Recuperation des proprietes materielles (IGAU)
  119. MPTVAL = IVAMAT
  120. DO i = 1, NVMAT
  121. MELVAL = IVAL(i)
  122. IEMN = MIN(IEL ,VELCHE(/2))
  123. IGMN = MIN(IGAU,VELCHE(/1))
  124. VALMAT(i) = VELCHE(IGMN,IEMN)
  125. ENDDO
  126. C -- Calcul de la matrice de diffusion lineaire Fick (IGAU)
  127. CALL DOFICK(MATE,IDIM, IWKELT,IWKMAT)
  128. C -- Calcul du flux de diffusion lineaire Phidif (IGAU)
  129. CALL DBST(BGRDIF,DFICK,DDLDIF,LRE,LDIFF,FLUDIF)
  130. C -- Remplissage du segment contenant Phidif = "contraintes"
  131. MPTVAL = IVASTR
  132. DO ICOMP = 1, LDIFF
  133. MELVAL = IVAL(ICOMP)
  134. IEMN = MIN(IEL,VELCHE(/2))
  135. VELCHE(IGAU,IEMN) = FLUDIF(ICOMP)
  136. ENDDO
  137. C-- -- -- -- -- -- -- -- --
  138. ENDDO
  139. C-- -- -- -- -- -- -- -- --
  140. IF (ISDJC.NE.0 .AND. ISDJC.NE.NBPGAU) THEN
  141. INTERR(1) = IEL
  142. CALL ERREUR(195)
  143. GOTO 999
  144. ENDIF
  145. C-------------------------
  146. ENDDO
  147. C-------------------------
  148.  
  149. 999 CONTINUE
  150. IF (MATE.EQ.2.OR.MATE.EQ.3) THEN
  151. SEGDES,MINTE2
  152. SEGSUP,MWKMAT
  153. ENDIF
  154. SEGSUP,MWKELT
  155. SEGSUP,MWKDIF
  156.  
  157. RETURN
  158. END
  159.  
  160.  
  161.  
  162.  

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