Download camcla.eso

Back to the list

   1 : C CAMCLA    SOURCE    AM        13/12/16    21:15:22     7832           
   2 :       SUBROUTINE CAMCLA(SIG0,NSTRS,DEPST,VAR0,NVARI,XMAT,NCOMAT,XCAR,
   3 :      .                  SIGF,VARF,DEFP,PRECIS,MFR,KERRE)
   4 : C----------------------------------------------------------------------         
   5 : C             PLASTICITE MODELE CAM-CLAY
   6 : C                                                                               
   7 : C ENTREES                                                                       
   8 : C     SIG0(NSTRS)   = CONTRAINTES INITIALES
   9 : C     NSTRS         = NOMBRE DE CONTRAINTES
  10 : C     DEPST(NSTRS)  = INCREMENT DE DEFORMATIONS TOTALES
  11 : C     VAR0(NVARI)   =  VARIABLES INTERNES DEBUT
  12 : C     VAR0(1)       =  EPSE
  13 : C     VAR0(2)       =  TRAP
  14 : C     XMAT(NCOMAT)  =  COMPOSANTES DE MATERIAU
  15 : C     XMAT(1)       = YOUN
  16 : C     XMAT(2)       = NU
  17 : C     XMAT(3)       = RHO
  18 : C     XMAT(4)       = ALPH
  19 : C     XMAT(5)       = E0
  20 : C     XMAT(6)       = PI0
  21 : C     XMAT(7)       = COHE
  22 : C     XMAT(8)       = M
  23 : C     XMAT(9)       = LAMD
  24 : C     XMAT(10)      = KAPA
  25 : C     XMAT(11)      = G1
  26 : C     NCOMAT        = NOMBRE DE COMPOSANTES DE MATERIAU
  27 : C     XCAR(ICARA)   =  CARACTERISTIQUES
  28 : C     MFR           =  NUMERO DE LA FORMULATION DE L'ELEMENT FINI
  29 : C                   = 1       MASSIF
  30 : C
  31 : C  SORTIES                                                                      
  32 : C     SIGF(NSTRS)   = CONTRAINTES FINALES                                       
  33 : C     VARF(NVARI)   = VARIABLES INTERNES FINALES
  34 : C     DEFP(NSTRS)   = DEFORMATIONS PLASTIQUES                                   
  35 : C     KERRE         = 0    TOUT OK
  36 : C        1   SI DLAMBDA NEGATIF
  37 : C        2   NOMBRE MAX D ITERATIONS INTERNES DEPASSE                           
  38 : C       21   ON NE TROUVE PAS L INTERSECTION AVEC LA SURFACE DE CHARGE          
  39 : C       22   SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE                         
  40 : C                                                                               
  41 : C-----------------------------------------------------------------------        
  42 : C
  43 :       IMPLICIT INTEGER(I-N)
  44 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
  45 : -INC CCOPTIO                                                                    
  46 : C                                                                               
  47 :       DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),XCAR(*)
  48 :       DIMENSION SIGF(*),VARF(*),DEFP(*)                                         
  49 :       DIMENSION STOT(6),XINV(2),SIGEL(6)
  50 :       DIMENSION DFDS(6),COVNMS(6),DEFPLA(6)
  51 : *
  52 :       DATA ITMAX/25/
  53 :       DATA COVNMS / 6 * 0.D0 /
  54 :       ALFAH=0.D0
  55 : *
  56 : *   TEST SUR IFOUR : ON ACCEPTE 2D DP, AXI, 3D , FOUR
  57 : *
  58 :       KERRE=0
  59 :       IF(IFOUR.NE.0.AND.IFOUR.NE.2.AND.IFOUR.NE.-1
  60 :      &             .AND.IFOUR.NE.1) THEN
  61 :         KERRE=99
  62 :         RETURN
  63 :       ENDIF
  64 : *
  65 : *   QUELQUES INITIALISATIONS
  66 : *
  67 :       JEBOUC=0
  68 :       IIMPI0=IIMPI
  69 : 2020  JEBOUC=JEBOUC+1
  70 : *
  71 :       IF(IIMPI.EQ.33) THEN
  72 :         WRITE(IOIMP,77881) (XMAT(I),I=1,11)
  73 : 77881   FORMAT(1X,' XMAT=',1PE12.5/)
  74 :         WRITE(IOIMP,77882) (SIG0(I),I=1,NSTRS)
  75 : 77882   FORMAT(1X,' SIG0 ' /(6(1X,1PE12.5))/)
  76 :         WRITE(IOIMP,77883) (VAR0(I),I=1,NVARI)
  77 : 77883   FORMAT(1X,'  VAR0 ' /(6(1X,1PE12.5))/)
  78 :         WRITE(IOIMP,77884) (DEPST(I),I=1,NSTRS)
  79 : 77884   FORMAT(1X,'  DEPST ' /(6(1X,1PE12.5))/)
  80 :       ENDIF
  81 : *
  82 : *   ON RECUPERE LES CONSTANTES DU MATERIAU
  83 : *
  84 :       YOUN = XMAT(1)
  85 :       XNU  = XMAT(2)
  86 :       E0   = XMAT(5)
  87 :       PI0  = XMAT(6)
  88 :       COHE = XMAT(7)
  89 :       GM   = XMAT(8)
  90 :       XLAMD= XMAT(9)
  91 :       XKAPA= XMAT(10)
  92 :       G    = XMAT(11)
  93 : *
  94 : *  TESTS SUR LES DONNEES
  95 : *
  96 :       IF(XKAPA.GE.XLAMD) THEN
  97 :         KERRE=60
  98 :         RETURN
  99 :       ENDIF
 100 :       IF(COHE.EQ.0.D0) COHE = 1.D-10 * PI0
 101 : *
 102 :       G2= G * 2.D0
 103 :       TETA=(1.D0+E0)/(XLAMD-XKAPA)
 104 : *
 105 : *   ON CALCULE LES CONTRAINTES FINALES EN ELASTIQUE
 106 : *
 107 :       XK0=(1.D0+E0)/XKAPA
 108 :       TRACEP= TRACE(DEPST)
 109 :       TRASI0 = (TRACE(SIG0))/3.D0  - COHE
 110 :       FAC = TRASI0 * (EXP(-XK0*TRACEP) -1.D0)
 111 :       STOT(1)= SIG0(1)+G2*(DEPST(1)-TRACEP/3.D0) +FAC
 112 :       STOT(2)= SIG0(2)+G2*(DEPST(2)-TRACEP/3.D0) +FAC
 113 :       STOT(3)= SIG0(3)+G2*(DEPST(3)-TRACEP/3.D0) +FAC
 114 :       STOT(4)= SIG0(4)+G*DEPST(4)
 115 :       IF(IFOUR.GE.1) THEN
 116 :         STOT(5)= SIG0(5)+G*DEPST(5)
 117 :         STOT(6)= SIG0(6)+G*DEPST(6)
 118 :       ELSE
 119 :         STOT(5)= 0.D0
 120 :         STOT(6)= 0.D0
 121 :       ENDIF
 122 : *
 123 :       IF(IIMPI.EQ.33) THEN
 124 :         WRITE(IOIMP,77875) XK0,TRACEP
 125 : 77875   FORMAT(1X,'  XK0 = ',1PE12.5,2X,'TRACEP = ',1PE12.5/)
 126 :         WRITE(IOIMP,77885) (DEPST(I),I=1,NSTRS)
 127 : 77885   FORMAT(1X,'  DEPST ' /(6(1X,1PE12.5))/)
 128 :         WRITE(IOIMP,77886) (STOT(I),I=1,NSTRS)
 129 : 77886   FORMAT(1X,'  STOT ' /(6(1X,1PE12.5))/)
 130 :       ENDIF
 131 : *
 132 : *  ON CALCULE LE CRITERE
 133 : *
 134 :       PI= (PI0+COHE)*EXP(-TETA*VAR0(2)) - COHE
 134 :       CALL CAMCRI(STOT,PI,XMAT,XINV,Y,SELAS)
 135 : *
 136 :       IF(IIMPI.EQ.33) THEN
 137 :         WRITE(IOIMP,77887) XINV(1),XINV(2),Y,SELAS,PI
 138 : 77887   FORMAT(1X,'  XINV(1)= ',1PE12.5,2X,'XINV(2)= ',1PE12.5,
 139 :      .  2X,'Y= ',1PE12.5,2X,'SELAS= ',1PE12.5,2X,'PI= ',1PE12.5/)
 140 :       ENDIF
 141 : *
 142 :       PETI=1.1D00*PRECIS*Y
 142 :       CALL EPSPRE(Y,SELAS,PETI,ITRY)
 143 :       IF(ITRY.EQ.0.AND.Y.GT.SELAS) GO TO 4
 144 : *
 145 : *  SORTIE ELASTIQUE
 146 : *
 147 :       VARF(1)=VAR0(1)
 148 :       VARF(2)=VAR0(2)
 149 :       DO 3 IBA=1,NSTRS
 150 :         SIGF(IBA)=STOT(IBA)
 151 :         DEFP(IBA)=0.D0
 152 :   3   CONTINUE
 153 :       IF(IIMPI.EQ.33) THEN
 154 :         WRITE(IOIMP,77003)
 155 : 77003   FORMAT(1X,'  SORTIE ELASTIQUE ' /)
 156 :       ENDIF
 157 :       RETURN
 158 : *
 159 : *  ECOULEMENT PLASTIQUE
 160 : *
 161 :   4   CONTINUE
 162 :       ITER =0                                                                   
 163 :       DEPS =0.D0                                                                
 164 :       DEPSI=0.D0                                                                
 164 :       CALL SHIFTD(STOT,SIGEL,6)                                                 
 164 :       CALL ZDANUL(DEFPLA,6)
 165 : *                                                                               
 166 : *                -------------------------------                                
 167 : *                |   LES ITERATIONS INTERNES   |                                
 168 : *                -------------------------------                                
 169 :   555 CONTINUE                                                                  
 170 :       ITER=ITER+1                                                               
 171 :       IF(IIMPI.EQ.33) THEN
 172 :          WRITE(IOIMP,77888) ITER
 173 : 77888    FORMAT(1X,'  >>>>>>>>>>> CAMCLA - ITER =',I4/)
 174 :       ENDIF
 175 : *
 175 :       CALL CAMFLO(IFOUR,SIGEL,XINV,PI,XMAT,DFDS,DFDPI,H)
 176 :       IF(IIMPI.EQ.33) THEN
 177 :          WRITE(IOIMP,77889) (DFDS(IJ),IJ=1,NSTRS)
 178 : 77889    FORMAT(1X,' DFDS '/(6(1X,1PE12.5))/)
 179 :          WRITE(IOIMP,77890) DFDPI,H
 180 : 77890    FORMAT(1X,' DFDPI= ',1PE12.5,2X,'H= ',1PE12.5/)
 181 :       ENDIF
 182 : *
 183 : *     CALCUL DE D*DFDS
 184 : *
 185 :       BULKGT=((COHE-XINV(1))*(1.D0+E0)/XKAPA - G2/3.D0)
 186 :      .        *TRACE(DFDS)
 187 :       STOT(1)=G2*DFDS(1)+BULKGT
 188 :       STOT(2)=G2*DFDS(2)+BULKGT
 189 :       STOT(3)=G2*DFDS(3)+BULKGT
 190 :       STOT(4)=G*DFDS(4)
 191 :       IF(IFOUR.GE.1) THEN
 192 :         STOT(5)=G*DFDS(5)
 193 :         STOT(6)=G*DFDS(6)
 194 :       ELSE
 195 :         STOT(5)=0.D0
 196 :         STOT(6)=0.D0
 197 :       ENDIF
 198 : *
 199 :       IF(IIMPI.EQ.33) THEN
 200 :          WRITE(IOIMP,77891) (STOT(IJ),IJ=1,NSTRS)
 201 : 77891    FORMAT(1X,' D*DFDS '/(6(1X,1PE12.5))/)
 202 :       ENDIF
 203 : *
 204 :       DFTDDG=SDOT(NSTRS,DFDS,1,STOT,1)
 205 :       DEPSI=(Y-SELAS)/(DFTDDG - DFDPI*H +1.D-20)
 206 :       DEPS = DEPS+DEPSI                                                         
 207 :       IF(IIMPI.EQ.33) THEN
 208 :          WRITE(IOIMP,77892) DEPSI,DEPS
 209 : 77892    FORMAT(1X,'  DEPSI=',1PE12.5,2X,'DEPS=',1PE12.5/)
 210 :       ENDIF
 211 :       IF(DEPS.LT.0.D0) GO TO 6
 212 : *
 213 : *   ON INCREMENTE
 214 : *
 215 :       DO 66 I=1,NSTRS
 216 :       DEFPLA(I)=DEFPLA(I)+DFDS(I)*DEPSI
 217 :       STOT(I)=DEPST(I)-DEFPLA(I)
 218 :   66  CONTINUE
 219 :       IF(IFOUR.LT.1) THEN
 220 :         DEFPLA(5)=0.D0
 221 :         DEFPLA(6)=0.D0
 222 :         STOT(5)=0.D0
 223 :         STOT(6)=0.D0
 224 :       ENDIF
 225 :       IF(IIMPI.EQ.33) THEN
 226 :          WRITE(IOIMP,77991) (DEFPLA(IJ),IJ=1,NSTRS)
 227 : 77991    FORMAT(1X,' DEFPLA '/(6(1X,1PE12.5))/)
 228 :       ENDIF
 229 : *
 230 :       TRACEP= TRACE(STOT)
 231 :       TRASI0 = (TRACE(SIG0))/3.D0  - COHE
 232 :       FAC = TRASI0 * (EXP(-XK0*TRACEP) -1.D0)
 233 :       SIGEL(1)= SIG0(1)+G2*(STOT(1)-TRACEP/3.D0) +FAC
 234 :       SIGEL(2)= SIG0(2)+G2*(STOT(2)-TRACEP/3.D0) +FAC
 235 :       SIGEL(3)= SIG0(3)+G2*(STOT(3)-TRACEP/3.D0) +FAC
 236 :       SIGEL(4)= SIG0(4)+G*STOT(4)
 237 :       IF(IFOUR.GE.1) THEN
 238 :         SIGEL(5)= SIG0(5)+G*STOT(5)
 239 :         SIGEL(6)= SIG0(6)+G*STOT(6)
 240 :       ELSE
 241 :         SIGEL(5)= 0.D0
 242 :         SIGEL(6)= 0.D0
 243 :       ENDIF
 244 : *
 245 :       PI= (PI0+COHE)*EXP(-TETA*(VAR0(2)+TRACE(DEFPLA))) - COHE
 246 : *
 247 : *   TEST DE CONVERGENCE
 248 : *
 248 :       CALL CAMCRI(SIGEL,PI,XMAT,XINV,Y,SELAS)
 249 :       STST=ABS((Y-SELAS)/SELAS)
 250 : *                                                                               
 251 :       IF(IIMPI.EQ.33) THEN
 252 :          WRITE(IOIMP,77893) (SIGEL(IJ),IJ=1,NSTRS)
 253 : 77893    FORMAT(1X,' NEW SIG '/(6(1X,1PE12.5))/)
 254 :          WRITE(IOIMP,77894) PI,Y,SELAS,STST
 255 : 77894    FORMAT(1X,' PI= ',1PE12.5,2X,'Y= ',1PE12.5,2X,
 256 :      .          'SELAS= ',1PE12.5,2X,'STST= ',1PE12.5/)
 257 :       ENDIF                                                                     
 258 : *                                                                               
 259 :       IF(STST.LE.PRECIS) GO TO 8
 260 :       IF(ITER.GT.ITMAX)  GO TO 7
 261 :       GO TO 555                                                                 
 262 : *                                                                               
 263 :   6   CONTINUE
 264 :       KERRE=1                                                                   
 265 :       GO TO 9
 266 :   7   CONTINUE
 267 :       KERRE=2                                                                   
 268 :   9   CONTINUE
 269 :       IF (JEBOUC.EQ.1) THEN
 270 :         IIMPI=33
 271 :         GO TO 2020
 272 :       ELSE
 273 :         IIMPI=IIMPI0
 274 :       ENDIF
 275 : *
 276 :   8   CONTINUE
 277 : *
 278 : *  REMPLISSAGE
 279 : *
 280 :       VARF(1)=VAR0(1)+VONEPS(DEFPLA,1,ALFAH,COVNMS)
 281 :       VARF(2)=VAR0(2)+TRACE(DEFPLA)
 282 :       DO 12 IBA=1,NSTRS
 283 :         SIGF(IBA)=SIGEL(IBA)
 284 :         DEFP(IBA)=DEFPLA(IBA)
 285 :   12  CONTINUE
 286 : *
 287 :       IF(IIMPI.EQ.33) THEN
 288 :          WRITE(IOIMP,77895) (STOT(IJ),IJ=1,NSTRS)
 289 : 77895    FORMAT(1X,' DEF_ELA '/(6(1X,1PE12.5))/)
 290 :          WRITE(IOIMP,77896) (DEFP(IJ),IJ=1,NSTRS)
 291 : 77896    FORMAT(1X,' DEF_PLA '/(6(1X,1PE12.5))/)
 292 :          WRITE(IOIMP,77897) VARF(1),VARF(2)
 293 : 77897    FORMAT(1X,' VARF(1)= ',1PE12.5,2X,'VARF(2)= ',1PE12.5/)
 294 :       ENDIF
 295 : *
 296 :  1000 RETURN                                                                    
 297 :       END                                                                       
 298 :  
 299 :  
 300 :  

© Cast3M 2003 - All rights reserved.
Disclaimer