Télécharger dfnfr.eso

Retour à la liste

Numérotation des lignes :

  1. C DFNFR SOURCE GOUNAND 06/01/18 21:15:26 5293
  2. SUBROUTINE DFNFR(DFFPG,JMIJAC,
  3. $ JDFFPG,
  4. $ IMPR,IRET)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. IMPLICIT INTEGER (I-N)
  7. C***********************************************************************
  8. C NOM : DFNFR
  9. C DESCRIPTION : Calcul des dérivées premières des fonctions de forme aux
  10. C points de Gauss sur l'élément réel.
  11. C
  12. C \partial_x = [j] \partial_{\xi}
  13. C
  14. C où \partial_x = trans( \frac{\partial}{\partial_x}
  15. C \frac{\partial}{\partial_y}
  16. C \frac{\partial}{\partial_z} )
  17. C
  18. C \partial_{\xi} = trans( \frac{\partial}{\partial_{\xi}}
  19. C \frac{\partial}{\partial_{\eta}}
  20. C \frac{\partial}{\partial_{\zeta}})
  21. C
  22. C [j] est l'inverse de la matrice jacobienne
  23. C
  24. C cf. Dhatt et Touzot p.52
  25. C
  26. C LANGAGE : ESOPE
  27. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  28. C mél : gounand@semt2.smts.cea.fr
  29. C***********************************************************************
  30. C APPELES : PRCHVA (impression d'un segment de type MCHEVA)
  31. C DFNFR1 (calcul des dérivées premières des fonctions
  32. C de forme aux points de Gauss sur l'élément
  33. C réel (fortran 77))
  34. C APPELE PAR : NLAP, NCVN
  35. C***********************************************************************
  36. C ENTREES : * DFFPG (type MCHEVA) : valeurs des dérivées
  37. C premières des fonctions d'interpolation aux
  38. C points de gauss sur l'élément de référence.
  39. C Structure (cf.include SMCHAEL) :
  40. C (1, nb. ddl, 1, dim.esp.réf, nb. poi. gauss, 1)
  41. C * JMIJAC (type MCHEVA) : valeurs de l'inverse de
  42. C la matrice jacobienne aux points de Gauss sur
  43. C le maillage élémentaire.
  44. C Structure (cf.include SMCHAEL) :
  45. C (1, 1, dim. esp. référence, dim. esp. réel,
  46. C nb. poi. gauss, nb. éléments)
  47. C ENTREES/SORTIES : -
  48. C SORTIES : * JDFFPG (type MCHEVA) : valeurs des dérivées
  49. C premières des fonctions d'interpolation
  50. C aux points de gauss sur l'élément réel.
  51. C Structure (cf.include SMCHAEL) :
  52. C (1, nb. ddl, 1, 1, nb. poi. gauss, nb. élém.)
  53. C TRAVAIL : * NDDL (type entier) : nombre de ddl (par
  54. C élément) de la transformation géométrique.
  55. C * IESREF (type entier) : dimension de l'espace de
  56. C référence.
  57. C * IESREL (type entier) : dimension de l'espace
  58. C réel (i.e. géométrique).
  59. C * NDPOGO (type entier) : nombre de points
  60. C d'intégration.
  61. C * NDELEM (type entier) : nombre d'éléments du
  62. C maillage élémentaire courant.
  63. C***********************************************************************
  64. C VERSION : v2, 25/09/03, refonte complète (modif SMPOUET)
  65. C VERSION : v1, 19/05/00, version initiale
  66. C HISTORIQUE : v1, 19/05/00, création
  67. C HISTORIQUE :
  68. C HISTORIQUE :
  69. C***********************************************************************
  70. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  71. C en cas de modification de ce sous-programme afin de faciliter
  72. C la maintenance !
  73. C***********************************************************************
  74. -INC CCOPTIO
  75. CBEGININCLUDE SMCHAEL
  76. SEGMENT MCHAEL
  77. POINTEUR IMACHE(N1).MELEME
  78. POINTEUR ICHEVA(N1).MCHEVA
  79. ENDSEGMENT
  80. SEGMENT MCHEVA
  81. REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  82. ENDSEGMENT
  83. SEGMENT LCHEVA
  84. POINTEUR LISCHE(NBCHE).MCHEVA
  85. ENDSEGMENT
  86. CENDINCLUDE SMCHAEL
  87. INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  88. POINTEUR DFFPG.MCHEVA
  89. POINTEUR JMIJAC.MCHEVA
  90. POINTEUR JDFFPG.MCHEVA
  91. *
  92. INTEGER IMPR,IRET
  93. *
  94. INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NDELEM
  95. INTEGER NDDL,IESREF,IESREL,NDPOGO,NBELEM
  96. *
  97. * Executable statements
  98. *
  99. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfr'
  100. SEGACT DFFPG
  101. NDLIG1=DFFPG.VELCHE(/1)
  102. NDDL =DFFPG.VELCHE(/2)
  103. N2DLI1=DFFPG.VELCHE(/3)
  104. IESREF=DFFPG.VELCHE(/4)
  105. NDPOG1=DFFPG.VELCHE(/5)
  106. NDELEM=DFFPG.VELCHE(/6)
  107. SEGACT JMIJAC
  108. NDLIG =JMIJAC.VELCHE(/1)
  109. NDCOL =JMIJAC.VELCHE(/2)
  110. N2DLIG=JMIJAC.VELCHE(/3)
  111. N2DCOL=JMIJAC.VELCHE(/4)
  112. NDPOG2=JMIJAC.VELCHE(/5)
  113. NBELEM=JMIJAC.VELCHE(/6)
  114. IF (NDLIG.NE.1.OR.NDCOL.NE.1) THEN
  115. WRITE(IOIMP,*) 'Erreur dims JMIJAC'
  116. GOTO 9999
  117. ENDIF
  118. NDPOGO=MAX(NDPOG1,NDPOG2)
  119. * WRITE(IOIMP,*) 'NDPOGO=',NDPOGO
  120. *
  121. IF (NDLIG1.NE.1.OR.N2DLI1.NE.1.OR.NDELEM.NE.1.OR.
  122. $ (NDPOG1.NE.1.AND.NDPOG1.NE.NDPOGO)) THEN
  123. WRITE(IOIMP,*) 'Erreur dims DFFPG'
  124. GOTO 9999
  125. ENDIF
  126. IF (N2DLIG.NE.IESREF.OR.N2DCOL.NE.IDIM.OR.
  127. $ (NDPOG2.NE.1.AND.NDPOG2.NE.NDPOGO)) THEN
  128. WRITE(IOIMP,*) 'Incompatibilité JMIJAC-DFFPG'
  129. GOTO 9999
  130. ENDIF
  131. *
  132. IESREL=N2DCOL
  133. NPFF =NDPOG1
  134. NPJMI=NDPOG2
  135. *
  136. * Initialisations...
  137. *
  138. NBLIG=1
  139. NBCOL=NDDL
  140. N2LIG=1
  141. N2COL=IESREL
  142. NBPOI=NDPOGO
  143. NBELM=NBELEM
  144. SEGINI JDFFPG
  145. *
  146. * On effectue le calcul du coefficient aux points de Gauss
  147. *
  148. CALL DFNFR1(NDDL,IESREF,IESREL,NPFF,NDPOGO,NBELEM,
  149. $ NPJMI,
  150. $ DFFPG.VELCHE,JMIJAC.VELCHE,
  151. $ JDFFPG.VELCHE,
  152. $ IMPR,IRET)
  153. IF (IRET.NE.0) GOTO 9999
  154. SEGDES JDFFPG
  155. SEGDES JMIJAC
  156. SEGDES DFFPG
  157. IF (IMPR.GT.3) THEN
  158. WRITE(IOIMP,*) 'On a créé',
  159. $ ' JDFFPG(élément , poi.gauss ,',
  160. $ 'dim. esp. réel. ,1, ddl ,1)'
  161. CALL PRCHVA(JDFFPG,IMPR,IRET)
  162. IF (IRET.NE.0) GOTO 9999
  163. ENDIF
  164. *
  165. * Normal termination
  166. *
  167. IRET=0
  168. RETURN
  169. *
  170. * Format handling
  171. *
  172. *
  173. * Error handling
  174. *
  175. 9999 CONTINUE
  176. IRET=1
  177. WRITE(IOIMP,*) 'An error was detected in subroutine dfnfr'
  178. RETURN
  179. *
  180. * End of subroutine DFNFR
  181. *
  182. END
  183.  
  184.  
  185.  
  186.  

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