Download calpco.eso

Back to the list

   1 : C CALPCO    SOURCE    GOUNAND   06/01/18    21:15:11     5293           
   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 CCOPTIO
  38 : CBEGININCLUDE SMPOUET
  39 :       SEGMENT TABGEO
  40 :       CHARACTER*4 DISGEO
  41 :       POINTEUR IGEO.MCHAEL
  42 :       ENDSEGMENT
  43 :       SEGMENT TABVDC
  44 :       INTEGER VVARPR(NUMVPR)
  45 :       INTEGER VVARDU(NUMVDU)
  46 :       INTEGER VDATPR(NUMDPR)
  47 :       INTEGER VDATDU(NUMDDU)
  48 :       INTEGER VCOFPR(NUMCPR)
  49 :       INTEGER VCOFDU(NUMCDU)
  50 :       INTEGER ILCPR(NUMDER+1,NUMOP,NUMVPR)
  51 :       INTEGER ILCDU(NUMDER+1,NUMOP,NUMVDU)
  52 :       POINTEUR VLCOF(JLCOF).MLENTI
  53 :       POINTEUR VCOMP(JGCOF).COMP
  54 :       POINTEUR VLDAT(JGCOF).MLENTI
  55 :       INTEGER  DJSVD(JGVD)
  56 :       POINTEUR NOMVD(JGVD).MLMOTS
  57 :       POINTEUR MVD(JGVD).MCHPOI
  58 :       REAL*8 XVD(JGVD)
  59 :       CHARACTER*4 DISVD(KGVD)
  60 :       ENDSEGMENT
  61 :       SEGMENT TATRAV
  62 :       POINTEUR VVCOF(JLCOF).MCHEVA
  63 :       POINTEUR VCOF(JGCOF).MCHEVA
  64 :       POINTEUR IVD(JGVD).MCHAEL
  65 :       POINTEUR VD(JGVD).MCHEVA
  66 :       POINTEUR DVD(JGVD).MCHEVA
  67 :       POINTEUR FFVD(KGVD).MCHEVA
  68 :       POINTEUR DFFVD(KGVD).MCHEVA
  69 :       LOGICAL LVCOF(JGCOF)
  70 :       LOGICAL LVD(JGVD)
  71 :       LOGICAL LDVD(JGVD)
  72 :       LOGICAL LFFVD(KGVD)
  73 :       LOGICAL LDFFVD(KGVD)
  74 :       ENDSEGMENT
  75 :       SEGMENT TABMAT
  76 :       POINTEUR VMAT(NUMVDU,NUMVPR).MCHAEL
  77 :       ENDSEGMENT
  78 : CENDINCLUDE SMPOUET
  79 : -INC SMLENTI
  80 :       POINTEUR POWCOF.MLENTI
  81 : CBEGININCLUDE SMCHAEL
  82 :       SEGMENT MCHAEL
  83 :       POINTEUR IMACHE(N1).MELEME
  84 :       POINTEUR ICHEVA(N1).MCHEVA
  85 :       ENDSEGMENT
  86 :       SEGMENT MCHEVA
  87 :       REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  88 :       ENDSEGMENT
  89 :       SEGMENT LCHEVA
  90 :       POINTEUR LISCHE(NBCHE).MCHEVA
  91 :       ENDSEGMENT
  92 : CENDINCLUDE SMCHAEL
  93 :       POINTEUR LCOF.LCHEVA
  94 :       POINTEUR MYCOF.MCHEVA
  95 : * Segments où l'on stocke les nombres d'éléments et nombre de points de
  96 : * Gauss pour chaque champ à fin de vérification
  97 :       POINTEUR LNELEM.MLENTI
  98 :       POINTEUR LNPOGA.MLENTI
  99 :       POINTEUR LPOW.MLENTI
 100 :       POINTEUR IPROCO.MCHEVA
 101 : *
 102 :       INTEGER IMPR,IRET
 103 : *     
 104 : * Executable statements
 105 : *
 106 :       IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans calpco.eso' 
 107 : *
 108 :       NBCHE=0
 109 :       SEGINI LCOF
 110 :       JG=0 
 111 :       SEGINI LNELEM
 112 :       JG=0 
 113 :       SEGINI LNPOGA
 114 :       JG=0 
 115 :       SEGINI LPOW
 116 :       SEGACT POWCOF
 117 :       JGCOF=POWCOF.LECT(/1)
 118 :       DO IJGCOF=1,JGCOF
 119 :          IPOW=POWCOF.LECT(IJGCOF)
 120 :          IF (IPOW.NE.0) THEN
 121 :             MYCOF=TATRAV.VCOF(IJGCOF)
 122 :             SEGACT MYCOF
 123 :             NDLIG =MYCOF.VELCHE(/1)
 124 :             NDCOL =MYCOF.VELCHE(/2)
 125 :             N2DLIG=MYCOF.VELCHE(/3)
 126 :             N2DCOL=MYCOF.VELCHE(/4)
 127 :             NEL=MYCOF.VELCHE(/6)
 128 :             NPG=MYCOF.VELCHE(/5)
 129 :             SEGDES MYCOF
 130 :             IF (NDLIG.NE.1.OR.NDCOL.NE.1.OR.N2DLIG.NE.1.OR.
 131 :      $           N2DCOL.NE.1) THEN
 132 :                WRITE(IOIMP,*) 'Erreur dims MYCOF'
 133 :                WRITE(IOIMP,*) 'IJGCOF=',IJGCOF
 134 :                WRITE(IOIMP,*) 'NDLIG=',NDLIG
 135 :                WRITE(IOIMP,*) 'NDCOL=',NDCOL
 136 :                WRITE(IOIMP,*) 'N2DLIG=',N2DLIG
 137 :                WRITE(IOIMP,*) 'N2DCOL=',N2DCOL
 138 :                WRITE(IOIMP,*) 'NPG   =',NPG
 139 :                WRITE(IOIMP,*) 'NEL   =',NEL
 140 :                GOTO 9999
 141 :             ENDIF
 142 :             LCOF.LISCHE(**)=MYCOF
 143 :             LNELEM.LECT(**)=NEL
 144 :             LNPOGA.LECT(**)=NPG
 145 :             LPOW.LECT(**)=IPOW
 146 :          ENDIF
 147 :       ENDDO
 148 :       SEGDES POWCOF
 149 : * Vérifications des dimensions
 150 : *   Calcul des max
 151 :       JG=LNELEM.LECT(/1)
 152 :       NELMAX=1
 153 :       NPGMAX=1
 154 :       DO IG=1,JG
 155 :          NELMAX=MAX(NELMAX,LNELEM.LECT(IG))
 156 :          NPGMAX=MAX(NPGMAX,LNPOGA.LECT(IG))
 157 :       ENDDO
 158 : *   Vérif proprement dite
 159 :       DO IG=1,JG
 160 :          NEL=LNELEM.LECT(IG)
 161 :          NPG=LNPOGA.LECT(IG)
 162 :          IF ((NPG.NE.1.AND.NPG.NE.NPGMAX)
 163 :      $     .OR.(NEL.NE.1.AND.NEL.NE.NELMAX)) THEN
 164 :             WRITE(IOIMP,*) 'Erreur dims MYCOF'
 165 :             WRITE(IOIMP,*) 'MYCOF=',LCOF.LISCHE(IG)
 166 :             WRITE(IOIMP,*) 'NPG=',NPG
 167 :             WRITE(IOIMP,*) 'NEL=',NEL
 168 :             WRITE(IOIMP,*) 'NPGMAX=',NPGMAX
 169 :             WRITE(IOIMP,*) 'NELMAX=',NELMAX
 170 :             GOTO 9999
 171 :          ENDIF
 172 :       ENDDO
 173 : *
 174 : * Initialisation du segment contenant la valeur de la loi de
 175 : * comportement
 176 :       NBLIG=1
 177 :       NBCOL=1
 178 :       N2LIG=1
 179 :       N2COL=1
 180 :       NBPOI=NPGMAX
 181 :       NBELM=NELMAX
 182 :       SEGINI IPROCO
 183 :       DO IBELM=1,NBELM
 184 :          DO IBPOI=1,NBPOI
 185 :             IPROCO.VELCHE(1,1,1,1,IBPOI,IBELM)=1.D0
 186 :          ENDDO
 187 :       ENDDO
 188 : *
 189 : * Calcul proprement dit 
 190 : *
 191 :       DO IG=1,JG
 192 :          MYCOF=LCOF.LISCHE(IG)
 193 :          NEL=LNELEM.LECT(IG)
 194 :          NPG=LNPOGA.LECT(IG)
 195 :          IPOW=LPOW.LECT(IG)
 196 :          SEGACT MYCOF
 196 :          CALL CALPC1(IPROCO.VELCHE,NPGMAX,NELMAX,
 197 :      $        MYCOF.VELCHE,NPG,NEL,IPOW,
 198 :      $        IMPR,IRET)
 199 :          IF (IRET.NE.0) GOTO 9999
 200 :          SEGDES MYCOF
 201 :       ENDDO
 202 :       SEGSUP LCOF
 203 :       SEGSUP LNELEM
 204 :       SEGSUP LNPOGA
 205 :       SEGSUP LPOW
 206 : *
 207 : * Fin
 208 : *
 209 :       SEGDES IPROCO
 210 : 
 211 : 
 212 : *
 213 : * Normal termination
 214 : *
 215 :       IRET=0
 216 :       RETURN
 217 : *
 218 : * Format handling
 219 : *
 220 : *
 221 : * Error handling
 222 : *
 223 :  9999 CONTINUE
 224 :       IRET=1
 225 :       WRITE(IOIMP,*) 'An error was detected in subroutine calpco'
 226 :       RETURN
 227 : *
 228 : * End of subroutine CALPCO
 229 : *
 230 :       END
 231 : 
 232 :  
 233 :  

© Cast3M 2003 - All rights reserved.
Disclaimer