Download hujeux.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer