Télécharger bdiff.eso

Retour à la liste

Numérotation des lignes :

  1. C BDIFF SOURCE FANDEUR 10/12/17 21:15:26 6427
  2.  
  3. C=======================================================================
  4. C= B D I F F =
  5. C= --------- =
  6. C= Fonction : =
  7. C= ---------- =
  8. C= Calcul de la matrice Bdif reliant le gradient (au signe pres) en =
  9. C= un point d'un element fini aux ddls de la quantite "diffusante" =
  10. C= Le jacobien est egalement evalue en ce point pour la verification =
  11. C= ulterieure si l'element fini n'est pas trop distordu. =
  12. C= =
  13. C= Parametres : (E)=Entree (S)=Sortie =
  14. C= ------------ =
  15. C= XEL (E) Coordonnees des noeuds de l'element fini considere =
  16. C= SHPREF (E) Fonctions de forme et leurs derivees au point etudie =
  17. C= dans l'element fini de reference =
  18. C= NBNO (E) Nombre de noeuds de l'element fini =
  19. C= NDIM (E) Nombre de lignes de la matrice GRDDIF =
  20. C= ISGNG (E) Valeur negative (<0) si on veut l'oppose du gradient =
  21. C= =
  22. C= SHP (S) Fonctions de forme et leurs derivees "actuelles" =
  23. C= GRDDIF (S) Matrice de gradients Bdif calculee au point etudie =
  24. C= DJAC (S) Jacobien au point de l'element etudie =
  25. C= =
  26. C= Remarque : =
  27. C= ---------- =
  28. C= Lors de l'entree dans le sous-programme, SHPREF(2 a 4,*) contient =
  29. C= les DERIVEES des fonctions de forme par rapport aux coordonnees =
  30. C= de REFERENCE Qsi,Eta,Dzeta. =
  31. C= En sortie du sous-programme, SHP(2 a 4,*) contient les DERIVEES =
  32. C= des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. =
  33. C=======================================================================
  34.  
  35. SUBROUTINE BDIFF (XEL,SHPREF,NBNO,NDIM,ISGNG, SHP,GRDDIF,DJAC)
  36.  
  37. IMPLICIT INTEGER(I-N)
  38. IMPLICIT REAL*8 (A-H,O-Z)
  39.  
  40. -INC CCREEL
  41. -INC CCOPTIO
  42.  
  43. C= Quelques constantes (2.Pi et 4.Pi)
  44. PARAMETER (X2Pi= 6.283185307179586476925286766559D0)
  45. PARAMETER (X4Pi=12.566370614359172953850573533118D0)
  46.  
  47. DIMENSION XEL(3,*),SHPREF(6,*), SHP(6,*),GRDDIF(NDIM,*)
  48.  
  49. C ====================
  50. C 1 - Initialisation
  51. C ====================
  52. C*OF CALL ZERO(GRDDIF,IDIM,NBNO)
  53.  
  54. C ===================================
  55. C 2.1 - Cas des elements massifs 3D
  56. C ===================================
  57. IF (IFOMOD.EQ.2) THEN
  58. DO j = 1, NBNO
  59. SHP(1,j) = SHPREF(1,j)
  60. SHP(2,j) = SHPREF(2,j)
  61. SHP(3,j) = SHPREF(3,j)
  62. SHP(4,j) = SHPREF(4,j)
  63. ENDDO
  64. CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC)
  65. IF (ISGNG .GE. 0) THEN
  66. DO j = 1, NBNO
  67. GRDDIF(1,j) = SHP(2,j)
  68. GRDDIF(2,j) = SHP(3,j)
  69. GRDDIF(3,j) = SHP(4,j)
  70. ENDDO
  71. ELSE
  72. DO j = 1, NBNO
  73. GRDDIF(1,j) = -SHP(2,j)
  74. GRDDIF(2,j) = -SHP(3,j)
  75. GRDDIF(3,j) = -SHP(4,j)
  76. ENDDO
  77. ENDIF
  78. C =========================================================
  79. C 2.2 - Cas des elements massifs 2D PLAN ou AXISymetrique
  80. C =========================================================
  81. ELSE IF (IFOMOD.EQ.-1 .OR. IFOMOD.EQ.0) THEN
  82. DO j = 1,NBNO
  83. SHP(1,j) = SHPREF(1,j)
  84. SHP(2,j) = SHPREF(2,j)
  85. SHP(3,j) = SHPREF(3,j)
  86. ENDDO
  87. CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC)
  88. IF (ISGNG .GE. 0) THEN
  89. DO j = 1, NBNO
  90. GRDDIF(1,j) = SHP(2,j)
  91. GRDDIF(2,j) = SHP(3,j)
  92. ENDDO
  93. ELSE
  94. DO j = 1, NBNO
  95. GRDDIF(1,j) = -SHP(2,j)
  96. GRDDIF(2,j) = -SHP(3,j)
  97. ENDDO
  98. ENDIF
  99. IF (IFOMOD.EQ.0) THEN
  100. CALL DISTRR(XEL,SHP,NBNO,RR)
  101. DJAC = X2Pi*DJAC*RR
  102. ENDIF
  103. C ===================================================
  104. C 2.3 - Cas des elements massifs 2D en mode FOURIER
  105. C ===================================================
  106. ELSE IF (IFOMOD.EQ.1) THEN
  107. DO j = 1,NBNO
  108. SHP(1,j) = SHPREF(1,j)
  109. SHP(2,j) = SHPREF(2,j)
  110. SHP(3,j) = SHPREF(3,j)
  111. ENDDO
  112. CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC)
  113. CALL DISTRR(XEL,SHP,NBNO,RR)
  114. IF (ISGNG .GE. 0) THEN
  115. DNN = NIFOUR/RR
  116. DO j = 1, NBNO
  117. GRDDIF(1,j) = SHP(2,j)
  118. GRDDIF(2,j) = DNN*SHP(1,j)
  119. GRDDIF(3,j) = SHP(3,j)
  120. ENDDO
  121. ELSE
  122. DNN = -NIFOUR/RR
  123. DO j = 1, NBNO
  124. GRDDIF(1,j) = -SHP(2,j)
  125. GRDDIF(2,j) = DNN*SHP(1,j)
  126. GRDDIF(3,j) = -SHP(3,j)
  127. ENDDO
  128. ENDIF
  129. IF (NIFOUR.EQ.0) THEN
  130. DJAC = X2Pi*DJAC*RR
  131. ELSE
  132. DJAC = XPi*DJAC*RR
  133. ENDIF
  134. C ===================================
  135. C 2.4 - Cas des elements MASSIFS 1D
  136. C ===================================
  137. ELSE IF (IFOMOD.EQ.3 .OR. IFOMOD.EQ.4 .OR. IFOMOD.EQ.5) THEN
  138. DO j = 1,NBNO
  139. SHP(1,j) = SHPREF(1,j)
  140. SHP(2,j) = SHPREF(2,j)
  141. ENDDO
  142. CALL JACOBI(XEL,SHP,IDIM,NBNO,DJAC)
  143. C= Traitement des modes axisymetriques et spherique 1D
  144. IF (ISGNG .GE. 0) THEN
  145. DO j = 1,NBNO
  146. GRDDIF(1,j) = SHP(2,j)
  147. ENDDO
  148. ELSE
  149. DO j = 1, NBNO
  150. GRDDIF(1,j) = -SHP(2,j)
  151. ENDDO
  152. ENDIF
  153. IF (IFOMOD.EQ.4) THEN
  154. CALL DISTRR(XEL,SHP,NBNO,RR)
  155. DJAC = X2Pi*DJAC*RR
  156. ELSE IF (IFOMOD.EQ.5) THEN
  157. CALL DISTRR(XEL,SHP,NBNO,RR)
  158. DJAC = X4Pi*DJAC*RR*RR
  159. ENDIF
  160.  
  161. ENDIF
  162.  
  163. RETURN
  164. END
  165.  
  166.  
  167.  

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