Télécharger dfnfr.eso

Retour à la liste

Numérotation des lignes :

dfnfr
  1. C DFNFR SOURCE GOUNAND 21/06/02 21:15:47 11022
  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 SMTNLIN)
  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.  
  75. -INC PPARAM
  76. -INC CCOPTIO
  77. -INC TNLIN
  78. *-INC SMCHAEL
  79. INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  80. POINTEUR DFFPG.MCHEVA
  81. POINTEUR JMIJAC.MCHEVA
  82. POINTEUR JDFFPG.MCHEVA
  83. *
  84. INTEGER IMPR,IRET
  85. *
  86. INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NDELEM
  87. INTEGER NDDL,IESREF,IESREL,NDPOGO,NBELEM
  88. *
  89. * Executable statements
  90. *
  91. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfr'
  92. SEGACT DFFPG
  93. NDLIG1=DFFPG.WELCHE(/1)
  94. NDDL =DFFPG.WELCHE(/2)
  95. N2DLI1=DFFPG.WELCHE(/3)
  96. IESREF=DFFPG.WELCHE(/4)
  97. NDPOG1=DFFPG.WELCHE(/5)
  98. NDELEM=DFFPG.WELCHE(/6)
  99. SEGACT JMIJAC
  100. NDLIG =JMIJAC.WELCHE(/1)
  101. NDCOL =JMIJAC.WELCHE(/2)
  102. N2DLIG=JMIJAC.WELCHE(/3)
  103. N2DCOL=JMIJAC.WELCHE(/4)
  104. NDPOG2=JMIJAC.WELCHE(/5)
  105. NBELEM=JMIJAC.WELCHE(/6)
  106. IF (NDLIG.NE.1.OR.NDCOL.NE.1) THEN
  107. WRITE(IOIMP,*) 'Erreur dims JMIJAC'
  108. GOTO 9999
  109. ENDIF
  110. NDPOGO=MAX(NDPOG1,NDPOG2)
  111. * WRITE(IOIMP,*) 'NDPOGO=',NDPOGO
  112. *
  113. IF (NDLIG1.NE.1.OR.N2DLI1.NE.1.OR.NDELEM.NE.1.OR.
  114. $ (NDPOG1.NE.1.AND.NDPOG1.NE.NDPOGO)) THEN
  115. WRITE(IOIMP,*) 'Erreur dims DFFPG'
  116. GOTO 9999
  117. ENDIF
  118. IF (N2DLIG.NE.IESREF.OR.N2DCOL.NE.IDIM.OR.
  119. $ (NDPOG2.NE.1.AND.NDPOG2.NE.NDPOGO)) THEN
  120. WRITE(IOIMP,*) 'Incompatibilité JMIJAC-DFFPG'
  121. GOTO 9999
  122. ENDIF
  123. *
  124. IESREL=N2DCOL
  125. NPFF =NDPOG1
  126. NPJMI=NDPOG2
  127. *
  128. * Initialisations...
  129. *
  130. NBLIG=1
  131. NBCOL=NDDL
  132. N2LIG=1
  133. N2COL=IESREL
  134. NBPOI=NDPOGO
  135. NBELM=NBELEM
  136. SEGINI JDFFPG
  137. *
  138. * On effectue le calcul du coefficient aux points de Gauss
  139. *
  140. CALL DFNFR1(NDDL,IESREF,IESREL,NPFF,NDPOGO,NBELEM,
  141. $ NPJMI,
  142. $ DFFPG.WELCHE,JMIJAC.WELCHE,
  143. $ JDFFPG.WELCHE,
  144. $ IMPR,IRET)
  145. IF (IRET.NE.0) GOTO 9999
  146. SEGDES JDFFPG
  147. SEGDES JMIJAC
  148. SEGDES DFFPG
  149. IF (IMPR.GT.3) THEN
  150. WRITE(IOIMP,*) 'On a créé',
  151. $ ' JDFFPG(élément , poi.gauss ,',
  152. $ 'dim. esp. réel. ,1, ddl ,1)'
  153. CALL PRCHVA(JDFFPG,IMPR,IRET)
  154. IF (IRET.NE.0) GOTO 9999
  155. ENDIF
  156. *
  157. * Normal termination
  158. *
  159. IRET=0
  160. RETURN
  161. *
  162. * Format handling
  163. *
  164. *
  165. * Error handling
  166. *
  167. 9999 CONTINUE
  168. IRET=1
  169. WRITE(IOIMP,*) 'An error was detected in subroutine dfnfr'
  170. RETURN
  171. *
  172. * End of subroutine DFNFR
  173. *
  174. END
  175.  
  176.  
  177.  
  178.  
  179.  

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