Télécharger ccgmmd.eso

Retour à la liste

Numérotation des lignes :

ccgmmd
  1. C CCGMMD SOURCE GOUNAND 21/06/02 21:15:13 11022
  2. SUBROUTINE CCGMMD(LCOF,NOMLOI,
  3. $ FC,
  4. $ IMPR,IRET)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. IMPLICIT INTEGER (I-N)
  7. C***********************************************************************
  8. C NOM : CCGMMD
  9. C DESCRIPTION : Calcul de la loi de comportement aux points de Gauss :
  10. C max |d|/min|d| où d=det J
  11. C avec un signe moins si d change de signe
  12. C
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C APPELES :
  19. C APPELE PAR :
  20. C***********************************************************************
  21. C ENTREES :
  22. C ENTREES/SORTIES :
  23. C SORTIES : -
  24. C TRAVAIL :
  25. C***********************************************************************
  26. C VERSION : v1, 04/08/04, version initiale
  27. C HISTORIQUE : v1, 04/08/04, création
  28. C HISTORIQUE :
  29. C HISTORIQUE :
  30. C***********************************************************************
  31. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  32. C en cas de modification de ce sous-programme afin de faciliter
  33. C la maintenance !
  34. C***********************************************************************
  35.  
  36. -INC PPARAM
  37. -INC CCOPTIO
  38. -INC CCREEL
  39. -INC TNLIN
  40. *-INC SMCHAEL
  41. INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM,N1
  42. POINTEUR FC.MCHEVA
  43. POINTEUR LCOF.LCHEVA
  44. POINTEUR JMAJAC.MCHEVA
  45. POINTEUR JMIJAC.MCHEVA
  46. POINTEUR JDTJAC.MCHEVA
  47. POINTEUR JMAREG.MCHEVA
  48. POINTEUR JMET.MCHEVA
  49. CHARACTER*8 NOMLOI
  50. INTEGER ICOF
  51. *
  52. SEGMENT MCOF
  53. POINTEUR COEF(IDIM,IDIM).MCHEVA
  54. ENDSEGMENT
  55. POINTEUR MET.MCOF
  56. *
  57. LOGICAL LBID
  58. *
  59. INTEGER IMPR,IRET
  60. *
  61. * Executable statements
  62. *
  63. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans ccgmmd'
  64. C IF (.NOT.(IDIM.EQ.1)) THEN
  65. C WRITE(IOIMP,*) 'IDIM=',IDIM,' ?'
  66. C GOTO 9999
  67. C ENDIF
  68. NLFC=FC.WELCHE(/6)
  69. NPFC=FC.WELCHE(/5)
  70. ICOF=0
  71. *
  72. * Récupération des coefficients de la metrique
  73. *
  74. C SEGINJ MET
  75. C DO IIDIM=1,IDIM
  76. C ICOF=ICOF+1
  77. C JMET=LCOF.LISCHE(ICOF)
  78. C IF (ICOF.EQ.1) THEN
  79. C NLJM=JMET.WELCHE(/6)
  80. C NPJM=JMET.WELCHE(/5)
  81. C ELSE
  82. C NLJM2=JMET.WELCHE(/6)
  83. C NPJM2=JMET.WELCHE(/5)
  84. C IF (NLJM2.NE.NLJM.OR.NPJM2.NE.NPJM) THEN
  85. C WRITE(IOIMP,*) 'Erreur grave dims JMET'
  86. C GOTO 9999
  87. C ENDIF
  88. C ENDIF
  89. C MET.COEF(IIDIM,IIDIM)=JMET
  90. C ENDDO
  91. C DO IIDIM=1,IDIM
  92. C NJ=IDIM-IIDIM
  93. C IF (NJ.GE.1) THEN
  94. C DO JIDIM=IIDIM+1,IDIM
  95. C ICOF=ICOF+1
  96. C JMET=LCOF.LISCHE(ICOF)
  97. C NLJM2=JMET.WELCHE(/6)
  98. C NPJM2=JMET.WELCHE(/5)
  99. C IF (NLJM2.NE.NLJM.OR.NPJM2.NE.NPJM) THEN
  100. C WRITE(IOIMP,*) 'Erreur grave dims JMET2'
  101. C GOTO 9999
  102. C ENDIF
  103. C MET.COEF(IIDIM,JIDIM)=JMET
  104. C ENDDO
  105. C ENDIF
  106. C ENDDO
  107. *
  108. ICOF=ICOF+1
  109. JMAJAC=LCOF.LISCHE(ICOF)
  110. C NLJA=JMAJAC.WELCHE(/6)
  111. C NPJA=JMAJAC.WELCHE(/5)
  112. C IREF=JMAJAC.WELCHE(/4)
  113. C IREL=JMAJAC.WELCHE(/3)
  114. C*
  115. C IF (IREL.NE.IDIM) THEN
  116. C WRITE(IOIMP,*) 'Erreur dims JMAJAC'
  117. C GOTO 9999
  118. C ENDIF
  119. *
  120. ICOF=ICOF+1
  121. JMIJAC=LCOF.LISCHE(ICOF)
  122. ICOF=ICOF+1
  123. JDTJAC=LCOF.LISCHE(ICOF)
  124. NLJD=JDTJAC.WELCHE(/6)
  125. NPJD=JDTJAC.WELCHE(/5)
  126. ICOF=ICOF+1
  127. JMAREG=LCOF.LISCHE(ICOF)
  128. C NLJR=JMAREG.WELCHE(/6)
  129. C NPJR=JMAREG.WELCHE(/5)
  130. C I1 =JMAREG.WELCHE(/4)
  131. C I2 =JMAREG.WELCHE(/3)
  132. C IF ((NLJR.NE.1).OR.(NPJR.NE.1).OR.(I1.NE.IREF).OR.(I2.NE.IREF))
  133. C $ THEN
  134. C WRITE(IOIMP,*) 'Erreur dims JMAREG'
  135. C GOTO 9999
  136. C ENDIF
  137. *
  138. DO ILFC=1,NLFC
  139. IF (NLJD.EQ.1) THEN
  140. ILJD=1
  141. ELSE
  142. ILJD=ILFC
  143. ENDIF
  144. XMADA=-XGRAND
  145. XMIDA=XGRAND
  146. XMAD=-XGRAND
  147. XMID=XGRAND
  148. DO IPJD=1,NPJD
  149. C DO IPFC=1,NPFC
  150. C IF (NPJD.EQ.1) THEN
  151. C IPJD=1
  152. C ELSE
  153. C IPJD=IPFC
  154. C ENDIF
  155. XDET=JDTJAC.WELCHE(1,1,1,1,IPJD,ILJD)
  156. AXDET=ABS(XDET)
  157. XMADA=MAX(XMADA,AXDET)
  158. XMIDA=MIN(XMIDA,AXDET)
  159. XMAD=MAX(XMAD,XDET)
  160. XMID=MIN(XMID,XDET)
  161. ENDDO
  162. *
  163. * Les déterminants nuls ou petit ou changeant de signe ont déjà été
  164. * capturés dans geoli2 (normalement !)
  165. *
  166. CONTRI=SIGN(1.D0,XMAD*XMID)*(XMADA/XMIDA)
  167. * WRITE(IOIMP,*) 'CONTRI=',CONTRI
  168. *
  169. DO IPFC=1,NPFC
  170. FC.WELCHE(1,1,1,1,IPFC,ILFC)=
  171. $ FC.WELCHE(1,1,1,1,IPFC,ILFC)+CONTRI
  172. ENDDO
  173. ENDDO
  174. *
  175. * Normal termination
  176. *
  177. IRET=0
  178. RETURN
  179. *
  180. * Format handling
  181. *
  182. *
  183. * Error handling
  184. *
  185. 9999 CONTINUE
  186. IRET=1
  187. WRITE(IOIMP,*) 'An error was detected in subroutine ccgmmd'
  188. RETURN
  189. *
  190. * End of subroutine CCGMMD
  191. *
  192. END
  193.  
  194.  
  195.  
  196.  

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