Télécharger dcogau.eso

Retour à la liste

Numérotation des lignes :

  1. C DCOGAU SOURCE GOUNAND 07/07/05 21:15:19 5784
  2. SUBROUTINE DCOGAU(JCOEFF,JDFFPG,
  3. $ JDCOFG,
  4. $ IMPR,IRET)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. IMPLICIT INTEGER (I-N)
  7. C***********************************************************************
  8. C NOM : DCOGAU
  9. C PROJET : Noyau linéaire NLIN
  10. C DESCRIPTION : Calcul du coefficient aux points de Gauss d'un élément
  11. C de référence pour chaque élément réel.
  12. C Le coefficient peut être scalaire, vectoriel ou
  13. C tensoriel. Les fonctions d'interpolation seront les
  14. C mêmes pour chaque composante du vecteur ou chaque
  15. C coefficient des matrices.
  16. C Les valeurs nodales devront être exprimées par rapport
  17. C aux coordonnées de l'espace de référence (par exemple,
  18. C s'il y a des dérivées, elles devront être exprimées par
  19. C rapport à ksi, eta...)
  20. C Si les valeurs sont des variables généralisées, il n'y
  21. C a peut-être rien à faire. (?)
  22. C
  23. C
  24. C LANGAGE : ESOPE
  25. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  26. C mél : gounand@semt2.smts.cea.fr
  27. C***********************************************************************
  28. C APPELES : PRCHVA (impression d'un segment de type MCHEVA)
  29. C DCOGA1 (calcul de JDCOFG (fortran 77))
  30. C APPELE PAR : NLIN
  31. C***********************************************************************
  32. C ENTREES :
  33. C ENTREES/SORTIES : -
  34. C SORTIES :
  35. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  36. C***********************************************************************
  37. C VERSION : v3.1, 30/07/04, possiblité de travailler
  38. C dans l'espace de référence
  39. C VERSION : v1, 26/08/03, version initiale
  40. C HISTORIQUE : v1, 26/08/03, création
  41. C HISTORIQUE :
  42. C HISTORIQUE :
  43. C***********************************************************************
  44. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  45. C en cas de modification de ce sous-programme afin de faciliter
  46. C la maintenance !
  47. C***********************************************************************
  48. -INC CCOPTIO
  49. CBEGININCLUDE SMCHAEL
  50. SEGMENT MCHAEL
  51. POINTEUR IMACHE(N1).MELEME
  52. POINTEUR ICHEVA(N1).MCHEVA
  53. ENDSEGMENT
  54. SEGMENT MCHEVA
  55. REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  56. ENDSEGMENT
  57. SEGMENT LCHEVA
  58. POINTEUR LISCHE(NBCHE).MCHEVA
  59. ENDSEGMENT
  60. CENDINCLUDE SMCHAEL
  61. INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  62. POINTEUR JCOEFF.MCHEVA
  63. POINTEUR JDCOFG.MCHEVA
  64. * Valeurs des fns d'interpolation du coeff. aux points de Gauss
  65. POINTEUR JDFFPG.MCHEVA
  66. *
  67. INTEGER IMPR,IRET
  68. *
  69. INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NLDF,NLCO
  70. INTEGER NDDL,IESREL,NBPOGO,NBELEM
  71. *
  72. * Executable statements
  73. *
  74. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dcogau'
  75. * IESREL=IDIM
  76. SEGACT JDFFPG
  77. NDLIG=JDFFPG.VELCHE(/1)
  78. NDCOL=JDFFPG.VELCHE(/2)
  79. N2DLIG=JDFFPG.VELCHE(/3)
  80. IESP=JDFFPG.VELCHE(/4)
  81. NDNOEU=JDFFPG.VELCHE(/5)
  82. NLDF =JDFFPG.VELCHE(/6)
  83. * Correction pour l'option 'EREF', les gradients sont alors
  84. * dans l'espace de référence
  85. * IF (NDLIG.NE.1.OR.N2DLIG.NE.1.OR.N2DCOL.NE.IESREL) THEN
  86. IF (NDLIG.NE.1.OR.N2DLIG.NE.1) THEN
  87. WRITE(IOIMP,*) 'Erreur dims JDFFPG'
  88. GOTO 9999
  89. ENDIF
  90. NDDL=NDCOL
  91. NBPOGO=NDNOEU
  92. * NBELEM=NDELM
  93. SEGACT JCOEFF
  94. NDLIG=JCOEFF.VELCHE(/1)
  95. NDCOL=JCOEFF.VELCHE(/2)
  96. N2DLIG=JCOEFF.VELCHE(/3)
  97. N2DCOL=JCOEFF.VELCHE(/4)
  98. NDNOEU=JCOEFF.VELCHE(/5)
  99. NLCO =JCOEFF.VELCHE(/6)
  100. IF (NDLIG.NE.1.OR.N2DLIG.NE.1.OR.N2DCOL.NE.1.OR.NDNOEU.NE.1) THEN
  101. * $ .OR.NDELM.NE.NBELEM) THEN
  102. WRITE(IOIMP,*) 'Erreur dims JCOEFF'
  103. GOTO 9999
  104. ENDIF
  105. NBELEM=MAX(NLDF,NLCO)
  106. IF (NLDF.NE.1.AND.NLDF.NE.NBELEM) THEN
  107. WRITE(IOIMP,*) 'Erreur nb. elem. JDFFPG'
  108. GOTO 9999
  109. ENDIF
  110. IF (NLCO.NE.1.AND.NLCO.NE.NBELEM) THEN
  111. WRITE(IOIMP,*) 'Erreur nb. elem. JCOEFF'
  112. GOTO 9999
  113. ENDIF
  114. *
  115. * Initialisations...
  116. *
  117. NBLIG=1
  118. NBCOL=1
  119. N2LIG=1
  120. N2COL=IESP
  121. NBPOI=NBPOGO
  122. NBELM=NBELEM
  123. SEGINI JDCOFG
  124. *
  125. * On effectue le calcul du coefficient aux points de Gauss
  126. *
  127. CALL DCOGA1(NDDL,IESP,NBPOGO,NLDF,NLCO,NBELEM,
  128. $ JCOEFF.VELCHE,JDFFPG.VELCHE,
  129. $ JDCOFG.VELCHE,
  130. $ IMPR,IRET)
  131. IF (IRET.NE.0) GOTO 9999
  132. SEGDES JDCOFG
  133. SEGDES JCOEFF
  134. SEGDES JDFFPG
  135. IF (IMPR.GT.3) THEN
  136. WRITE(IOIMP,*) 'On a créé',
  137. $ ' JDCOFG(élément , poi.gauss ,',
  138. $ ' dim.esp.rel ,1,1,1)'
  139. CALL PRCHVA(JDCOFG,IMPR,IRET)
  140. IF (IRET.NE.0) GOTO 9999
  141. ENDIF
  142. *
  143. * Normal termination
  144. *
  145. IRET=0
  146. RETURN
  147. *
  148. * Format handling
  149. *
  150. *
  151. * Error handling
  152. *
  153. 9999 CONTINUE
  154. IRET=1
  155. WRITE(IOIMP,*) 'An error was detected in subroutine dcogau'
  156. RETURN
  157. *
  158. * End of subroutine DCOGAU
  159. *
  160. END
  161.  
  162.  
  163.  
  164.  

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