Télécharger calpco.eso

Retour à la liste

Numérotation des lignes :

calpco
  1. C CALPCO SOURCE GOUNAND 21/06/02 21:15:06 11022
  2. SUBROUTINE CALPCO(POWCOF,TATRAV,
  3. $ IPROCO,IMPR,IRET)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : CALPCO
  8. C DESCRIPTION : Calcul d'un produit de coefficients
  9. C à une certaine puissance
  10. C
  11. C
  12. C LANGAGE : ESOPE
  13. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  14. C mél : gounand@semt2.smts.cea.fr
  15. C***********************************************************************
  16. C APPELES :
  17. C APPELES (E/S) :
  18. C APPELES (BLAS) :
  19. C APPELES (CALCUL) :
  20. C APPELE PAR :
  21. C***********************************************************************
  22. C SYNTAXE GIBIANE :
  23. C ENTREES :
  24. C ENTREES/SORTIES :
  25. C SORTIES :
  26. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  27. C***********************************************************************
  28. C VERSION : v1, 19/12/2005, version initiale
  29. C HISTORIQUE : v1, 19/12/2005, création
  30. C HISTORIQUE :
  31. C HISTORIQUE :
  32. C***********************************************************************
  33. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  34. C en cas de modification de ce sous-programme afin de faciliter
  35. C la maintenance !
  36. C***********************************************************************
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC TNLIN
  40. *-INC SMTNLIN
  41. -INC SMLENTI
  42. POINTEUR POWCOF.MLENTI
  43. *-INC SMCHAEL
  44. POINTEUR LCOF.LCHEVA
  45. POINTEUR MYCOF.MCHEVA
  46. * Segments où l'on stocke les nombres d'éléments et nombre de points de
  47. * Gauss pour chaque champ à fin de vérification
  48. POINTEUR LNELEM.MLENTI
  49. POINTEUR LNPOGA.MLENTI
  50. POINTEUR LPOW.MLENTI
  51. POINTEUR IPROCO.MCHEVA
  52. *
  53. INTEGER IMPR,IRET
  54. *
  55. * Executable statements
  56. *
  57. IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans calpco.eso'
  58. *
  59. NBCHE=0
  60. SEGINI LCOF
  61. JG=0
  62. SEGINI LNELEM
  63. JG=0
  64. SEGINI LNPOGA
  65. JG=0
  66. SEGINI LPOW
  67. SEGACT POWCOF
  68. JGCOF=POWCOF.LECT(/1)
  69. DO IJGCOF=1,JGCOF
  70. IPOW=POWCOF.LECT(IJGCOF)
  71. IF (IPOW.NE.0) THEN
  72. MYCOF=TATRAV.VCOF(IJGCOF)
  73. SEGACT MYCOF
  74. NDLIG =MYCOF.WELCHE(/1)
  75. NDCOL =MYCOF.WELCHE(/2)
  76. N2DLIG=MYCOF.WELCHE(/3)
  77. N2DCOL=MYCOF.WELCHE(/4)
  78. NEL=MYCOF.WELCHE(/6)
  79. NPG=MYCOF.WELCHE(/5)
  80. SEGDES MYCOF
  81. IF (NDLIG.NE.1.OR.NDCOL.NE.1.OR.N2DLIG.NE.1.OR.
  82. $ N2DCOL.NE.1) THEN
  83. WRITE(IOIMP,*) 'Erreur dims MYCOF'
  84. WRITE(IOIMP,*) 'IJGCOF=',IJGCOF
  85. WRITE(IOIMP,*) 'NDLIG=',NDLIG
  86. WRITE(IOIMP,*) 'NDCOL=',NDCOL
  87. WRITE(IOIMP,*) 'N2DLIG=',N2DLIG
  88. WRITE(IOIMP,*) 'N2DCOL=',N2DCOL
  89. WRITE(IOIMP,*) 'NPG =',NPG
  90. WRITE(IOIMP,*) 'NEL =',NEL
  91. GOTO 9999
  92. ENDIF
  93. LCOF.LISCHE(**)=MYCOF
  94. LNELEM.LECT(**)=NEL
  95. LNPOGA.LECT(**)=NPG
  96. LPOW.LECT(**)=IPOW
  97. ENDIF
  98. ENDDO
  99. SEGDES POWCOF
  100. * Vérifications des dimensions
  101. * Calcul des max
  102. JG=LNELEM.LECT(/1)
  103. NELMAX=1
  104. NPGMAX=1
  105. DO IG=1,JG
  106. NELMAX=MAX(NELMAX,LNELEM.LECT(IG))
  107. NPGMAX=MAX(NPGMAX,LNPOGA.LECT(IG))
  108. ENDDO
  109. * Vérif proprement dite
  110. DO IG=1,JG
  111. NEL=LNELEM.LECT(IG)
  112. NPG=LNPOGA.LECT(IG)
  113. IF ((NPG.NE.1.AND.NPG.NE.NPGMAX)
  114. $ .OR.(NEL.NE.1.AND.NEL.NE.NELMAX)) THEN
  115. WRITE(IOIMP,*) 'Erreur dims MYCOF'
  116. WRITE(IOIMP,*) 'MYCOF=',LCOF.LISCHE(IG)
  117. WRITE(IOIMP,*) 'NPG=',NPG
  118. WRITE(IOIMP,*) 'NEL=',NEL
  119. WRITE(IOIMP,*) 'NPGMAX=',NPGMAX
  120. WRITE(IOIMP,*) 'NELMAX=',NELMAX
  121. GOTO 9999
  122. ENDIF
  123. ENDDO
  124. *
  125. * Initialisation du segment contenant la valeur de la loi de
  126. * comportement
  127. NBLIG=1
  128. NBCOL=1
  129. N2LIG=1
  130. N2COL=1
  131. NBPOI=NPGMAX
  132. NBELM=NELMAX
  133. SEGINI IPROCO
  134. DO IBELM=1,NBELM
  135. DO IBPOI=1,NBPOI
  136. IPROCO.WELCHE(1,1,1,1,IBPOI,IBELM)=1.D0
  137. ENDDO
  138. ENDDO
  139. *
  140. * Calcul proprement dit
  141. *
  142. DO IG=1,JG
  143. MYCOF=LCOF.LISCHE(IG)
  144. NEL=LNELEM.LECT(IG)
  145. NPG=LNPOGA.LECT(IG)
  146. IPOW=LPOW.LECT(IG)
  147. SEGACT MYCOF
  148. CALL CALPC1(IPROCO.WELCHE,NPGMAX,NELMAX,
  149. $ MYCOF.WELCHE,NPG,NEL,IPOW,
  150. $ IMPR,IRET)
  151. IF (IRET.NE.0) GOTO 9999
  152. SEGDES MYCOF
  153. ENDDO
  154. SEGSUP LCOF
  155. SEGSUP LNELEM
  156. SEGSUP LNPOGA
  157. SEGSUP LPOW
  158. *
  159. * Fin
  160. *
  161. SEGDES IPROCO
  162.  
  163.  
  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 calpco'
  178. RETURN
  179. *
  180. * End of subroutine CALPCO
  181. *
  182. END
  183.  
  184.  
  185.  
  186.  
  187.  

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