Download uo2oto.eso

Back to the list

   1 : C UO2OTO    SOURCE    DURAND    13/12/03    21:15:06     7874           
   2 :       SUBROUTINE UO2OTO(MFR,IB,IGAU,DT,TETA1,TETA2,FI1,FI2,PRECIS,
   3 :      &                  MSOUPA,XMAT,IVAL,NCOMAT,NSIMP,XCAR,ICARA,SIG0,
   4 :      &                  NSTRS,DEPST,VAR0,NVARI,SIGF,VARF,DEFP,KERRE)
   5 : C----------------------------------------------------------------------
   6 : C            CE SOUS-PROGRAMME EST APPELE DANS "COML8"                                    
   7 : C IL PREPARE L'INTEGRATION DU MODELE UO2 COUPLANT LES MODELES
   8 : C                 OTTOSEN ET GATT_MONERIE
   9 : C SCHEMA EULER-CAUCHY AVEC DECOUPAGE DU SOUS PAS D INTEGRATION EN 2
  10 : C             CONTROLE AVEC METHODE DE SIMPSON
  11 : C----------------------------------------------------------------------
  12 : C                                                                               
  13 : C ENTREES:                                                                      
  14 : C -------                                                                       
  15 : C MFR          = INDICE DE LA FORMULATION MECANIQUE; SEULEMENT                  
  16 : C                MASSIF OU COQUES EN 3D
  17 : C IB           = NUMERO DE L ELEMENT
  18 : C IGAU         = NUMERO DU POINT D INTEGRATION
  19 : C DT           = PAS D INTEGRATION
  20 : C TETA1        = TEMPERATURE AU DEBUT DU PAS D INTEGRATION
  21 : C TETA2        = TEMPERATURE A LA FIN DU PAS D INTEGRATION
  22 : C FI1          = DENSITE DE FISSION AU DEBUT DU PAS D INTEGRATION
  23 : C FI2          = DENSITE DE FISSION A LA FIN DU PAS D INTEGRATION
  24 : C PRECIS       = PRECISION POUR LA VISCOPLASTICITE
  25 : C MSOUPA       = NBR. MAX. DE SOUS PAS AUTORISES POUR LA VISCOPLASTICITE
  26 : C NCOMAT       = NBR. DE CARACTERISTIQUES THERMOMECANIQUES DU MATERIAU
  27 : C XMAT(NCOMAT) = CARACTERISTIQUES THERMOMECANIQUES DU MATERIAU
  28 : C IVAL(NCOMAT) = INDICE DES COMPOSANTES DE MATERIAU
  29 : C NSIMP        = POINTE SUR LA CARACTERISTIQUE FACULTATIVE 'SIMP' DE XMAT
  30 : C ICARA        = NBR. DE CARACT. GEOMETRIQUES DES ELEMENTS FINIS                
  31 : C XCAR(ICARA)  = CARACT. GEOMETRIQUES DES ELEMENTS FINIS
  32 : C NSTRS        = NBR. DE COMPOSANTES DES CONTR. OU DES DEFORM.                  
  33 : C SIG0(NSTRS)  = CONTR. AU DEBUT DU PAS D'INTEGRATION                           
  34 : C DEPST(NSTRS) = INCREMENT DES DEFORM. TOTALES  
  35 : C NVARI        = NBR. DE VARIABLES INTERNES                                     
  36 : C VAR0(NVARI)  = VARIABLES INTERNES AU DEBUT DU PAS D INTEGRATION
  37 : C                                                                               
  38 : C SORTIES
  39 : C -------
  40 : C SIGF(NSTRS)  = CONTR. A LA FIN DU PAS D'INTEGRATION                             
  41 : C VARF(NVARI)  = VARIABLES INTERNES A LA FIN DU PAS D'INTEGRATION                 
  42 : C DEFP(NSTRS)  = INCREMENT DES DEFORM. INELASTIQUES A LA FIN DU PAS                 
  43 : C                D'INTEGRATION (FISSURATION+VISCOPLASTICITE)
  44 : C KERRE        = INDICE QUI REGIT LES ERREURS
  45 : C----------------------------------------------------------------------
  46 : C ==================================================================
  47 : C       ICI IL FAUT PROGRAMMER EN FORTRAN PUR
  48 : C ===================================================================            
  49 : C
  50 :       IMPLICIT INTEGER(I-N)
  51 :       IMPLICIT REAL*8(A-H,O-Z)
  52 : -INC CCOPTIO
  53 : -INC CCREEL
  54 : C 
  55 :       PARAMETER (XZER=0.D0,UNDEMI=.5D0,UN=1.D0,DEUX=2.D0,TROIS=3.D0,
  56 :      &           DIX=10.D0,NGAT=4)
  57 : C
  58 :       DIMENSION XMAT(*),IVAL(*),XCAR(*)
  59 :       DIMENSION SIG0(*),DEPST(*),VAR0(*),SIGF(*),VARF(*),DEFP(*)
  60 : C
  61 :       DIMENSION SIGMA0(6),DSIGMA(6),DDEF0(6),DDEFP0(6),SIGF0(6)
  62 :       DIMENSION SIGMA(6),DDEF(6),DDEFP(6),SIGMAF(6),DDEFPT(6)
  63 : C
  64 :       DIMENSION WMAX(3),SMAX(3),W(3),WMAX0(3),SMAX0(3),W0(3),
  65 :      &    GFTR(3),GS(3),XLTR(3),XINVL(3),WRUPT(3),WREOUV(3),IRESU(20),
  66 :      &    VF(3),XVF(3,3),VF1(3),VF2(3),VF3(3),VCA1(3),VCA2(3),VCA3(3),
  67 :      &    BILIN(3),SBILI(3)
  68 : C
  69 :       DIMENSION TAIL(6),P(6)
  70 :       DIMENSION PENTE(3)
  71 : C
  72 :       DIMENSION VARGA0(NGAT),VARGAF(NGAT)
  73 :       DIMENSION EPSV0(6),EPSVF0(6),EPSV(6),EPSVF(6)
  74 : C
  75 : C*******************************************************************
  76 : C
  77 :       JEBOUC=0
  78 :       IIMPI0=IIMPI
  79 : C
  80 : 2020  JEBOUC=JEBOUC+1
  81 :       KERRE=0
  81 :       CALL ZDANUL(SMAX,3)
  82 : C
  83 : C===================================================================
  84 : C           TEST DE COMPATIBILITE CALCUL/FORMULATION 
  85 : C===================================================================
  86 : C
  87 : C------UNIQUEMENT EN MASSIF OU EN COQUES MINCES
  88 : C        PAS DE FORMULATION DE FOURIER-----------
  89 : C
  90 :       IF ((MFR.NE.1.AND.MFR.NE.3.AND.MFR.NE.9)
  91 :      .    .OR.IFOUR.EQ.1) THEN
  92 :          KERRE=984
  93 :          GO TO 9999
  94 :       ENDIF
  95 : C
  96 : C=================================
  97 : C --- CONTROLE DU PAS DE TEMPS ---
  98 : C=================================
  99 : C
 100 :       IF (DT.LT.0.D0) THEN
 101 :          KERRE = 414
 102 :          PRINT *,' UO2OTO - PAS DE TEMPS NEGATIF'
 103 :          GO TO 9999
 104 :       ENDIF
 105 :       IF (DT.EQ.0.D0) DT=1.D-20
 106 : C
 107 : C===================================================================
 108 : C  INITIALISATION DES VARIABLES INTERNES ET DES CARACTERISTIQUES
 109 : C===================================================================
 110 : C
 111 : *        do 777 i=1,ncomat
 112 : *         print *,xmat(i),ival(i)
 113 : * 777    continue
 114 : C
 115 : C###################################################################
 116 : C===================================================================
 117 : C           INITIALISATION DES CARACTERISTIQUES
 118 : C===================================================================
 119 : C###################################################################
 120 : C
 121 : C   Les 4 premieres valeurs de Xmat_OBLIGATOIRES sont YOUN,NU,RHO,ALPH
 122 : C   puis R,DG,...(caract. mecaniques non lineaires obligatoires)
 123 : C   La premiere valeur de Xmat_FACULTATIF est VISQ et la deuxieme en CP
 124 : C   est DIM3
 125 : C   puis GFTR,LTR,...(caract. mecaniques non lineaires facultatives)
 126 : C           
 127 :       YOUN=XMAT(1)
 128 :       XNU =XMAT(2)
 129 :       G   = UNDEMI*YOUN/(UN+XNU)
 130 :       PRECIE=1.D-10
 131 :       PRECIZ=YOUN*PRECIE
 132 : C
 133 : C=====================================================================
 134 : C----CALCUL DU COEF AA INTERVENANT DANS LA VITESSE DE DENSIFICATION---
 135 : C=====================================================================
 136 : C
 136 :       CALL ADENS(XMAT,AA,KERRE)
 137 :       IF(KERRE.NE.0) GO TO 2021
 138 : C
 139 : C====================================================================
 140 : C----NOBL+i POINTE SUR LA ieme CARACTERISTIQUE DE FISSURATION FACULT.
 141 : C====================================================================
 142 : C
 143 :       IF (IFOMOD.EQ.2.AND.MFR.EQ.1) THEN
 144 :         NOBL=49
 145 :       ELSE 
 146 :         NOBL=44
 147 :         IF(MFR.EQ.1.AND.IFOUR.EQ.-2)  NOBL=45
 148 :       ENDIF
 149 : C
 150 : C===========================================================
 151 : C---MGAT: NOMBRE DE VAR. INT. PROPRES AU MODELE GATT_MONERIE
 152 : C---      PARMI CES VAR. INT. IL Y A LES DEF. VISCOPLAST.
 153 : C===========================================================
 154 : C
 155 :       IF (IFOUR.EQ.2.AND.(MFR.EQ.1.OR.MFR.EQ.3)) THEN
 156 :         MGAT=10
 157 :       ELSE
 158 :         MGAT=8
 159 :         IF(IFOUR.EQ.1) MGAT=10
 160 :         IF(MFR.EQ.9)   MGAT=12
 161 :       ENDIF
 162 : C      
 163 : C===================================================
 164 : C----------------TRACTION SIMPLE--------------------
 165 : C===================================================
 166 : C
 167 :       XDLTR=XMAT(2+NOBL)
 168 :       DEFOTR=1.2D-4
 169 :       IF (IVAL(2+NOBL).EQ.0) XDLTR=YOUN*DEFOTR
 170 :       XDGFTR=XMAT(1+NOBL)
 171 :       IF (IVAL(1+NOBL).EQ.0) XDGFTR=XDLTR*3.9D-5
 172 :       BTR=XMAT(4+NOBL)
 173 :       IF (IVAL(4+NOBL).EQ.0) BTR=0.2D0
 174 : *
 175 : *     PETIT TEST SUR BTR
 176 : *
 177 :       BTR=MIN(BTR,UN)
 178 : 
 179 :       XDWRUP=XMAT(5+NOBL)
 180 :       XDBILI=XMAT(6+NOBL)
 181 : C
 182 : C__________________________________________________________
 183 : C             en defo planes ou axis
 184 : C   les caracteristiques dans la direction normale au plan
 185 : C           sont traitees particulierement
 186 : C----------------------------------------------------------
 187 : C
 188 :       XDEPSR=0.D0
 189 :       IF (IFOUR.EQ.0.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
 190 :          XDEPSR=XMAT(7+NOBL)
 191 :          IF (IVAL(7+NOBL).EQ.0) XDEPSR=TROIS*XDLTR/YOUN
 192 :       ENDIF 
 193 : C
 194 : C===================================================
 195 : C------------------CISAILLEMENT---------------------
 196 : C===================================================
 197 : C
 198 :       XDGS=XMAT(3+NOBL)
 199 :       IF (IVAL(3+NOBL).EQ.0) XDGS=YOUN*1.8D-4
 200 : C
 201 : C###################################################################
 202 : C===================================================================
 203 : C            INITIALISATION DES VARIABLES INTERNES
 204 : C===================================================================
 205 : C###################################################################
 206 : C
 207 : C---------------------------------------------------------------------
 208 : C   RECUPERATION DES VARIABLES INTERNES PROPRES AU MODELE GATT_MONERIE
 209 : C                     AUTRES QUE LES DEF. VISCOPLAST.
 210 : C---------------------------------------------------------------------
 211 : C
 212 :       DO 9 IC=1,NGAT
 213 :         VARGA0(IC)=VAR0(NVARI-NGAT+IC)
 214 :   9   CONTINUE
 215 : C
 216 : C======================================
 217 : C---------CAS TRIDIMENSIONNEL MASSIF---
 218 : C======================================
 219 : C
 220 : C            NVARI=30    cf. IDVAR4
 221 : C
 222 :       IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN
 223 :          DO 10 IC=1,3
 224 :             ICN=IC+NOBL
 225 :             WMAX(IC)=VAR0(IC+1)
 226 :             W(IC)=VAR0(IC+4)
 227 :             GFTR(IC)=XMAT(ICN+6)
 228 :             IF (GFTR(IC).EQ.XZER) GFTR(IC)=XDGFTR
 229 :             GS(IC)=XMAT(ICN+9)
 230 :             IF (GS(IC).EQ.XZER) GS(IC)=XDGS
 231 :             XLTR(IC)=XMAT(ICN+12)
 232 :             IF (XLTR(IC).EQ.XZER) XLTR(IC)=XDLTR
 233 :             VF1(IC)=VAR0(IC+7)
 234 :             VF2(IC)=VAR0(IC+10)
 235 :             VF3(IC)=VAR0(IC+13)
 236 :             XINVL(IC)=VAR0(IC+16)
 237 :             WRUPT(IC)=XMAT(ICN+15)
 238 :             BILIN(IC)=XMAT(ICN+18)
 239 :             IF (BILIN(IC).EQ.XZER.OR.WRUPT(IC).EQ.XZER) THEN
 240 :                IF(XDBILI.EQ.XZER.OR.XDWRUP.EQ.XZER) THEN
 241 :                   WRUPT(IC)=DEUX*GFTR(IC)/XLTR(IC)
 242 :                   BILIN(IC)=XZER
 243 :                   SBILI(IC)=XLTR(IC)
 244 :                ELSE
 245 :                   WRUPT(IC)=XDWRUP
 246 :                   BILIN(IC)=XDBILI
 247 :                   SBILI(IC)=(DEUX*GFTR(IC)-XLTR(IC)*XDBILI)/XDWRUP
 248 :                ENDIF
 249 :             ELSE
 250 :                SBILI(IC)=(DEUX*GFTR(IC)-XLTR(IC)*BILIN(IC))/WRUPT(IC)
 251 :             ENDIF
 252 :   10     CONTINUE
 253 :          PREC0=VAR0(20)
 254 :       ENDIF
 255 : C
 256 : C======================================
 257 : C-----------CAS CONT PLANE-------------
 258 : C---- OU TRIDIM COQUES MINCES ---------
 259 : C======================================
 260 : C
 261 : C     NVARI=20    CONT PLANE                              cf. IDVAR4
 262 : C     NVARI=22/24 3D COQUES MINCES SANS/AVEC CISAILLEMENT TRANSVERSE
 263 : C
 264 :       IF (IFOUR.EQ.-2.OR.
 265 :      .   (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9))) THEN
 266 :          DO 11 IC=1,2
 267 :             ICN=IC+NOBL
 268 :             WMAX(IC+1)=VAR0(IC+1)
 269 :             W(IC+1)=VAR0(IC+3)
 270 :             GFTR(IC+1)=XMAT(ICN+6)
 271 :             IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR
 272 :             GS(IC+1)=XMAT(ICN+8)
 273 :             IF (GS(IC+1).EQ.XZER) GS(IC+1)=XDGS
 274 :             XLTR(IC+1)=XMAT(ICN+10)
 275 :             IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR
 276 :             VF2(IC)=VAR0(IC+5)
 277 :             VF3(IC)=VAR0(IC+7)
 278 :             XINVL(IC+1)=VAR0(IC+9)
 279 :             WRUPT(IC+1)=XMAT(ICN+12)
 280 :             BILIN(IC+1)=XMAT(ICN+14)
 281 :             IF (BILIN(IC+1).EQ.XZER.OR.WRUPT(IC+1).EQ.XZER) THEN
 282 :                IF(XDBILI.EQ.XZER.OR.XDWRUP.EQ.XZER) THEN
 283 :                   WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1)
 284 :                   BILIN(IC+1)=XZER
 285 :                   SBILI(IC+1)=XLTR(IC+1)
 286 :                ELSE
 287 :                   WRUPT(IC+1)=XDWRUP
 288 :                   BILIN(IC+1)=XDBILI
 289 :                   SBILI(IC+1)=(DEUX*GFTR(IC+1)-XLTR(IC+1)*XDBILI)
 290 :      &                         /XDWRUP
 291 :                ENDIF
 292 :             ELSE
 293 :                SBILI(IC+1)=(DEUX*GFTR(IC+1)-XLTR(IC+1)*BILIN(IC+1))
 294 :      &                      /WRUPT(IC+1)
 295 :             ENDIF
 296 :   11     CONTINUE
 297 :          PREC0=VAR0(12)
 298 : C
 299 : C------------------------------------------------------------
 300 : C  La direction normale au plan est une direction principale
 301 : C         elle est definie par VF1 et indice par 1
 302 : C------------------------------------------------------------
 303 : C
 304 :             WMAX(1)=XZER
 305 :             W(1)=XZER
 306 :             GFTR(1)=XDGFTR
 307 :             GS(1)=XDGS
 308 :             XLTR(1)=XDLTR
 309 :             VF1(1)=XZER
 310 :             VF1(2)=XZER
 311 :             VF1(3)=UN
 312 :             XINVL(1)=XZER
 313 :             VF2(3)=XZER
 314 :             VF3(3)=XZER
 315 :             WRUPT(1)=DEUX*GFTR(1)/XLTR(1)
 316 :             BILIN(1)=XZER
 317 :             SBILI(1)=XLTR(1)
 318 :       ENDIF
 319 : C
 320 : C===========================================
 321 : C-----------CAS DEFO PLANE/AXIS-------------
 322 : C===========================================
 323 : C
 324 : C            NVARI=23    cf. IDVAR4
 325 : C
 326 :       IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR.IFOUR.EQ.0) THEN
 327 :          DO 12 IC=1,2
 328 :             ICN=IC+NOBL
 329 :             WMAX(IC+1)=VAR0(IC+1)
 330 :             W(IC+1)=VAR0(IC+4)
 331 :             GFTR(IC+1)=XMAT(ICN+7)
 332 :             IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR
 333 :             GS(IC+1)=XMAT(ICN+10)
 334 :             IF (GS(IC+1).EQ.XZER) GS(IC+1)=XDGS
 335 :             XLTR(IC+1)=XMAT(ICN+13)
 336 :             IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR
 337 :             VF2(IC)=VAR0(IC+7)
 338 :             VF3(IC)=VAR0(IC+9)
 339 :             XINVL(IC+1)=VAR0(IC+11)
 340 :             WRUPT(IC+1)=XMAT(ICN+16)
 341 :             BILIN(IC+1)=XMAT(ICN+18)
 342 :             IF (BILIN(IC+1).EQ.XZER.OR.WRUPT(IC+1).EQ.XZER) THEN
 343 :                IF(XDBILI.EQ.XZER.OR.XDWRUP.EQ.XZER) THEN
 344 :                   WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1)
 345 :                   BILIN(IC+1)=XZER
 346 :                   SBILI(IC+1)=XLTR(IC+1)
 347 :                ELSE
 348 :                   WRUPT(IC+1)=XDWRUP
 349 :                   BILIN(IC+1)=XDBILI
 350 :                   SBILI(IC+1)=(DEUX*GFTR(IC+1)-XLTR(IC+1)*XDBILI)
 351 :      &                         /XDWRUP
 352 :                ENDIF
 353 :             ELSE
 354 :                SBILI(IC+1)=(DEUX*GFTR(IC+1)-XLTR(IC+1)*BILIN(IC+1))
 355 :      &                      /WRUPT(IC+1)
 356 :             ENDIF
 357 :   12     CONTINUE
 358 :          PREC0=VAR0(15)
 359 : C
 360 : C------------------------------------------------------------
 361 : C  La direction normale au plan est une direction principale
 362 : C         elle est definie par VF1 et indice par 1
 363 : C------------------------------------------------------------
 364 : C
 365 :             WMAX(1)=VAR0(4)
 366 :             W(1)=VAR0(7)
 367 :             XLTR(1)=XMAT(NOBL+16)
 368 :             IF (XLTR(1).EQ.XZER) XLTR(1)=XDLTR
 369 :             EPSR=XDEPSR
 370 :             GS(1)=XMAT(NOBL+13)
 371 :             IF (GS(1).EQ.XZER) GS(1)=XDGS
 372 :             XINVL(1)=VAR0(14)
 373 :             WRUPT(1)=EPSR
 374 :             BILIN(1)=XMAT(NOBL+21)
 375 :             GFTR(1)=XMAT(NOBL+10)
 376 :             IF (BILIN(1).EQ.XZER.OR.GFTR(1).EQ.XZER) THEN           
 377 : *
 378 : *  MLR : ICI ON NE PEUT PAS FAIRE MIEUX CAR ON VEUT
 379 : *        DES DEFORMATIONS DANS LA DIRECTION ETUDIEE
 380 : *
 381 :                IF (GFTR(1).EQ.XZER) GFTR(1)=UNDEMI*XLTR(1)*EPSR
 382 :                BILIN(1)=XZER
 383 :                SBILI(1)=XLTR(1)
 384 :             ELSE
 385 :                SBILI(1)=(DEUX*GFTR(1)-XLTR(1)*BILIN(1))/WRUPT(1)
 386 :             ENDIF
 387 : C
 388 :             VF1(1)=XZER
 389 :             VF1(2)=XZER
 390 :             VF1(3)=UN
 391 : C
 392 :             VF2(3)=XZER
 393 :             VF3(3)=XZER
 394 :       ENDIF
 395 : C
 396 : C
 397 : C##########################################################
 398 : C==========================================================
 399 : C   INITIALISATION DE LA PRECISION PREC0 AU PREMIER PASSAGE
 400 : C==========================================================
 401 : C##########################################################
 402 : C
 403 :        IF (PREC0.EQ.XZER) PREC0=PRECIZ
 404 : C
 405 : C#######################################
 406 : C=======================================
 407 : C         CALCUL DE SMAX ET PENTE
 408 : C=======================================
 409 : C#######################################
 410 : C
 411 :       DO IC=1,3
 411 :         CALL OTTOFU(XINVL,XLTR,WRUPT,BTR,BILIN,SBILI,W,WMAX,
 412 :      &              SMAX,PENTE,IC)
 413 :       ENDDO
 414 : C
 415 : C
 416 : C#######################################
 417 : C=======================================
 418 : C---------PARAMETRES DE TAILLE----------
 419 : C=======================================
 420 : C#######################################
 421 : C
 422 :       NTAIL=36
 423 :       IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN
 424 : C
 425 : C-----------TRIDIM MASSIF------------------
 426 : C
 427 :          DO 15 IC=1,6
 428 :             TAIL(IC)=XMAT(IC+NTAIL)
 429 :             P(IC)=XMAT(IC+NTAIL+6)
 430 :   15     CONTINUE
 431 : 
 432 :       ELSE
 433 : C
 434 : C------AXIS/DEF/CONT PLANES/COQUES MINCES---------
 435 : C
 436 : 
 437 :          TAIL(1)=XMAT(1+NTAIL)
 438 :          TAIL(2)=XMAT(2+NTAIL)
 439 :          TAIL(3)=XMAT(4+NTAIL)
 440 :          TAIL(4)=XMAT(3+NTAIL)
 441 :          TAIL(5)=XZER
 442 :          TAIL(6)=XZER
 443 :          P(1)=XMAT(5+NTAIL)
 444 :          P(2)=XMAT(6+NTAIL)
 445 :          P(3)=UN
 446 :          P(4)=XMAT(7+NTAIL)
 447 :          P(5)=XZER
 448 :          P(6)=XZER
 449 :       ENDIF
 450 : C
 451 : C
 452 : C    IMPRESSION DES DONNEES MATERIAU ,TAILLE  ET VARIABLES INTERNES
 453 : C    --------------------------------------------------------------
 454 : C
 455 :       IF(IIMPI.EQ.42) THEN
 456 :         WRITE(IOIMP,77000) IB,IGAU
 457 : 77000   FORMAT(////////2X,' IB=',I4,2X,'IGAU=',I3//)
 458 :       ENDIF
 459 :       IF(IIMPI.EQ.42) THEN
 460 :         WRITE(IOIMP,77001) YOUN,XNU,XDLTR,XDGFTR,BTR,XDEPSR,XDGS,
 461 :      .                     XDWRUP,XDBILI,AA
 462 : 77001   FORMAT(///2X,' YUNG=',1PE12.5,2X,'XNU=',1PE12.5/
 463 :      .    2X,'LTR=',1PE12.5,2X,'GF=',1PE12.5,2X,'BETA=',1PE12.5/
 464 :      .    2X,'EPSR=',1PE12.5,2X,'GS=',1PE12.5,2X,'WRUP=',1PE12.5/
 465 :      .    2X,'BILI=',1PE12.5,2X,'AA=',1PE12.5///)
 466 : *
 467 :         WRITE(IOIMP,77002) (WMAX(I),I=1,3),(SMAX(I),I=1,3)
 468 : 77002   FORMAT('0  WMAX '/3(1X,1PE12.5)/
 469 :      .         2X,'SMAX'/3(1X,1PE12.5)/)
 470 : *
 471 :         WRITE(IOIMP,77003) (W(I),I=1,3),(GFTR(I),I=1,3)
 472 : 77003   FORMAT('0  W    '/3(1X,1PE12.5)/
 473 :      .         2X,'GFTR'/3(1X,1PE12.5)/)
 474 : *
 475 :         WRITE(IOIMP,77004) (GS(I),I=1,3),(XLTR(I),I=1,3)
 476 : 77004   FORMAT('0  GS   '/3(1X,1PE12.5)/
 477 :      .         2X,'XLTR'/3(1X,1PE12.5)/)
 478 : *
 479 :         WRITE(IOIMP,77005) (VF1(I),I=1,3),(VF2(I),I=1,3)
 480 : 77005   FORMAT('0  VF1  '/3(1X,1PE12.5)/
 481 :      .         2X,'VF2  '/3(1X,1PE12.5)/)
 482 : *
 483 :         WRITE(IOIMP,77006) (VF3(I),I=1,3),(XINVL(I),I=1,3)
 484 : 77006   FORMAT('0  VF3  '/3(1X,1PE12.5)/
 485 :      .         2X,'XINVL'/3(1X,1PE12.5)/)
 486 : *
 487 :         WRITE(IOIMP,77007) (WRUPT(I),I=1,3),(BILIN(I),I=1,3)
 488 : 77007   FORMAT('0  WRUPT'/3(1X,1PE12.5)/
 489 :      .         2X,'BILIN'/3(1X,1PE12.5)/)
 490 : *
 491 :         WRITE(IOIMP,77008) (SBILI(I),I=1,3)
 492 : 77008   FORMAT('0  SBILI'/3(1X,1PE12.5)/)
 493 : *
 494 :         WRITE(IOIMP,77009) (TAIL(I),I=1,6),(P(I),I=1,6)
 495 : 77009   FORMAT('0  TAIL '/6(1X,1PE12.5)/
 496 :      .         2X,'P    '/6(1X,1PE12.5)/)
 497 : *
 498 :         WRITE(IOIMP,77090) (VARGA0(I),I=1,NGAT)
 499 : 77090   FORMAT('0  VARGA0 EN ENTREE'/4(1X,1PE12.5)/)
 500 : *
 501 :         WRITE(IOIMP,17009) (SIG0(I),I=1,NSTRS)
 502 : 17009   FORMAT('0  SIG0 EN ENTREE '/8(1X,1PE12.5)/)
 503 : *
 504 :         WRITE(IOIMP,18009) (DEPST(I),I=1,NSTRS)
 505 : 18009   FORMAT('0  DEPST EN ENTREE '/8(1X,1PE12.5)/)
 506 : *
 507 :         WRITE(IOIMP,18010) FI1,FI2
 508 : 18010   FORMAT('0  FI1 FI2 '/2(1X,1PE12.5)/)
 509 : *
 510 :         WRITE(IOIMP,18011) DT,TETA1,TETA2
 511 : 18011   FORMAT('0  DT TETA1 TETA2 '/3(1X,1PE12.5)/)
 512 :       ENDIF
 513 : C
 514 : C
 515 : C=======================================================================     
 516 : C       ADAPTATION DE L'OPTION DE CALCUL VERS LE 3D MASSIF 
 517 : C                     DE SIG0 A SIGMA0
 518 : C
 519 : C***********************************************************************
 520 : C                        A T T E N T I O N
 521 : C
 522 : C       DANS LA SUITE ON TRAVAILLE SUR EPSXY AU LIEU DE GAMXY  !!!!
 523 : C
 524 : C***********************************************************************
 525 : C
 526 : C=======================================================================
 527 : C
 527 :         CALL ZDANUL(SIGMA0,6)
 527 :         CALL ZDANUL(DSIGMA,6)
 527 :         CALL ZDANUL(EPSV0,6)
 528 : C
 529 :         IF (MFR.EQ.1) THEN
 530 : C 
 531 : C-----------------------MASSIF 3D/2D----NSTRS=6/4---------------
 532 : C
 533 :           DO 20 IC=1,NSTRS
 534 :             SIGMA0(IC)=SIG0(IC)
 535 :             IF(IC.LE.3) THEN
 536 :               DSIGMA(IC)=DEPST(IC)
 537 :               EPSV0(IC) =VAR0(NVARI-MGAT+IC)
 538 :             ELSE
 539 :               DSIGMA(IC)=DEPST(IC)*UNDEMI
 540 :               EPSV0(IC) =VAR0(NVARI-MGAT+IC)*UNDEMI
 541 :             ENDIF
 542 :   20      CONTINUE
 543 : C
 544 :         ELSEIF (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN
 545 : C
 546 : C-----3D COQUES MINCES SANS/AVEC CISAIL. TRANS.-----NSTRS=6/8--------
 547 : C              ON NE PREND QUE LA PARTIE MEMBRANE !!
 548 : C
 549 :           EPAI=XCAR(1)
 550 :           SIGMA0(1)=SIG0(1)/EPAI
 551 :           SIGMA0(2)=SIG0(2)/EPAI
 552 :           SIGMA0(4)=SIG0(3)/EPAI
 553 :           DSIGMA(1)=DEPST(1)
 554 :           DSIGMA(2)=DEPST(2)
 555 :           DSIGMA(4)=DEPST(3)*UNDEMI
 556 :           EPSV0(1) =VAR0(NVARI-MGAT+1)
 557 :           EPSV0(2) =VAR0(NVARI-MGAT+2)
 558 :           EPSV0(4) =VAR0(NVARI-MGAT+3)*UNDEMI
 559 :         ENDIF
 560 : C
 561 : C#######################################################################
 562 : C=======================================================================
 563 : C     CALCUL DES PARAMETRES POUR UN MATERIAU PRE-FISSURE
 564 : C=======================================================================
 565 : C#######################################################################
 566 : C
 567 :       XNF1=VF1(1)*VF1(1)+VF1(2)*VF1(2)+VF1(3)*VF1(3)
 568 :       XNF2=VF2(1)*VF2(1)+VF2(2)*VF2(2)+VF2(3)*VF2(3)
 569 :       XNF3=VF3(1)*VF3(1)+VF3(2)*VF3(2)+VF3(3)*VF3(3)
 570 : C
 571 : C=======================================================================
 572 : C    CALCUL DES PARAMETRES DE TAILLE POUR UN MATERIAU PRE-FISSURE
 573 : C=======================================================================
 574 : C
 575 : C---on calcule la parametre de taille si la fissure est ouverte--
 576 : C---------------et le parametre de taille nul--------------------
 577 : C
 578 :       IF (XNF1.NE.XZER.AND.W(1).NE.XZER.AND.XINVL(1).EQ.XZER) THEN
 579 : C
 580 : C------------FISSURE 1 OUVERTE---------------
 581 : C
 582 :          XL1=TAIL(1)*VF1(1)*VF1(1)+TAIL(2)*VF1(2)*VF1(2)
 583 :          XL1=XL1+TAIL(3)*VF1(3)*VF1(3)+DEUX*TAIL(4)*VF1(2)*VF1(1)
 584 :          XL1=XL1+DEUX*TAIL(5)*VF1(1)*VF1(3)
 585 :          XL1=XL1+DEUX*TAIL(6)*VF1(2)*VF1(3)
 586 :          P1=P(1)*VF1(1)*VF1(1)+P(2)*VF1(2)*VF1(2)+P(3)*VF1(3)*VF1(3)
 587 :          P1=P1+DEUX*P(4)*VF1(2)*VF1(1)+DEUX*P(5)*VF1(1)*VF1(3)
 588 :          P1=P1+DEUX*P(6)*VF1(2)*VF1(3)
 589 :          SMAX(1)=XLTR(1)
 590 :          WMAX(1)=W(1)
 591 :          IF (XL1.NE.XZER) THEN
 592 :             XINVL(1)=ABS(P1/XL1)
 593 :             IF (XINVL(1).LE
 594 :      &          .((UN+XNU)*XLTR(1)*XLTR(1)/(DEUX*GFTR(1)*YOUN))) THEN
 595 :                KERRE=983
 596 :                GO TO 2021
 597 :             ENDIF
 598 :          ELSE
 599 :             XINVL(1)=UN
 600 :          ENDIF
 601 :       ENDIF
 602 : C
 603 : C---------FISSURE 2 OUVERTE-----------
 604 : C
 605 :       IF (XNF2.NE.XZER.AND.W(2).NE.XZER.AND.XINVL(2).EQ.XZER) THEN
 606 :          XL2=TAIL(1)*VF2(1)*VF2(1)+TAIL(2)*VF2(2)*VF2(2)
 607 :          XL2=XL2+TAIL(3)*VF2(3)*VF2(3)+DEUX*TAIL(4)*VF2(2)*VF2(1)
 608 :          XL2=XL2+DEUX*TAIL(5)*VF2(1)*VF2(3)
 609 :          XL2=XL2+DEUX*TAIL(6)*VF2(2)*VF2(3)
 610 :          P2=P(1)*VF2(1)*VF2(1)+P(2)*VF2(2)*VF2(2)+P(3)*VF2(3)*VF2(3)
 611 :          P2=P2+DEUX*P(4)*VF2(2)*VF2(1)+DEUX*P(5)*VF2(1)*VF2(3)
 612 :          P2=P2+DEUX*P(6)*VF2(2)*VF2(3)
 613 :          SMAX(2)=XLTR(2)
 614 :          WMAX(2)=W(2)
 615 :          IF (XL2.NE.XZER) THEN
 616 :             XINVL(2)=ABS(P2/XL2)
 617 :             IF (XINVL(2).LE
 618 :      &          .((UN+XNU)*XLTR(2)*XLTR(2)/(DEUX*GFTR(2)*YOUN))) THEN
 619 :                KERRE=983
 620 :                GO TO 2021
 621 :             ENDIF
 622 :          ELSE
 623 :             XINVL(2)=UN
 624 :          ENDIF
 625 :       ENDIF               
 626 : C
 627 : C---------FISSURE 3 OUVERTE-----------
 628 : C
 629 :       IF (XNF3.NE.XZER.AND.W(3).NE.XZER.AND.XINVL(3).EQ.XZER) THEN
 630 :          XL3=TAIL(1)*VF3(1)*VF3(1)+TAIL(2)*VF3(2)*VF3(2)
 631 :          XL3=XL3+TAIL(3)*VF3(3)*VF3(3)+DEUX*TAIL(4)*VF3(2)*VF3(1)
 632 :          XL3=XL3+DEUX*TAIL(5)*VF3(1)*VF3(3)
 633 :          XL3=XL3+DEUX*TAIL(6)*VF3(2)*VF3(3)
 634 :          P3=P(1)*VF3(1)*VF3(1)+P(2)*VF3(2)*VF3(2)+P(3)*VF3(3)*VF3(3)
 635 :          P3=P3+DEUX*P(4)*VF3(2)*VF3(1)+DEUX*P(5)*VF3(1)*VF3(3)
 636 :          P3=P3+DEUX*P(6)*VF3(2)*VF3(3)
 637 :          SMAX(3)=XLTR(3)
 638 :          WMAX(3)=W(3)
 639 :          IF (XL3.NE.XZER) THEN
 640 :             XINVL(3)=ABS(P3/XL3)
 641 :             IF (XINVL(3).LE
 642 :      &          .((UN+XNU)*XLTR(3)*XLTR(3)/(DEUX*GFTR(3)*YOUN))) THEN
 643 :                KERRE=983
 644 :                GO TO 2021
 645 :             ENDIF
 646 :          ELSE
 647 :             XINVL(3)=UN
 648 :          ENDIF
 649 :       ENDIF  
 650 : C
 651 : C======================================================================
 652 : C                 CALCUL DU NOMBRE DE FISSURE
 653 : C======================================================================
 654 : C
 655 :       NFISSU=0
 656 :       IF (XINVL(1).NE.XZER) NFISSU=NFISSU+1
 657 :       IF (XINVL(2).NE.XZER) NFISSU=NFISSU+1
 658 :       IF (XINVL(3).NE.XZER) NFISSU=NFISSU+1
 659 : C
 660 : C================================================================
 661 : C             CALCUL DU NOMBRE DE DIRECTION IMPOSEE
 662 : C         qui ne sont pas des directions de fissuration
 663 : C================================================================
 664 : C
 665 :       NVF=0
 666 :       IF (XNF1.NE.XZER.AND.XINVL(1).EQ.XZER) NVF=NVF+1
 667 :       IF (XNF2.NE.XZER.AND.XINVL(2).EQ.XZER) NVF=NVF+1
 668 :       IF (XNF3.NE.XZER.AND.XINVL(3).EQ.XZER) NVF=NVF+1
 669 : C
 670 : C--remarque : en 2D NVF la direction (0 0 1) est toujours imposee--
 671 : C
 672 : C=======================================================================
 673 : C-------------test la consistance des vecteurs VF1 VF2 VF3--------------
 674 : C          VF1 VF2 et VF3 sont dans l ordre d apparition 1 2 3
 675 : C=======================================================================
 676 : C
 677 :       IF (XNF1.EQ.XZER.AND.(XNF2+XNF3).NE.XZER) THEN
 678 :          KERRE=985
 679 :          GO TO 2021
 680 :       ENDIF
 681 : C
 682 :       IF (XNF2.EQ.XZER.AND.XNF3.NE.XZER) THEN
 683 :          KERRE=985
 684 :          GO TO 2021
 685 :       ENDIF
 686 : C
 687 :       PRDT=VF1(1)*VF2(1)+VF1(2)*VF2(2)+VF1(3)*VF2(3)
 688 :       PRDT=PRDT+VF1(1)*VF3(1)+VF1(2)*VF3(2)+VF1(3)*VF3(3)
 689 :       PRDT=PRDT+VF2(1)*VF3(1)+VF2(2)*VF3(2)+VF2(3)*VF3(3)
 690 :       PRDT=ABS(PRDT)
 691 : C
 692 :       IF (PRDT.GE.1D-3) THEN
 693 :          KERRE=985
 694 :          GO TO 2021
 695 :       ENDIF
 696 : C
 697 : C#######################################################################
 698 : C=======================================================================
 699 : C          INCREMENT DE DEFORMATION 
 700 : C=======================================================================
 701 : C#######################################################################
 702 : C
 703 :         DO  34 I=1,6
 704 :            DDEF0(I)=DSIGMA(I)
 705 :  34     CONTINUE
 706 : C
 707 : C
 708 : C    IMPRESSION DES INCREMENTS DE DEFORMATION ET ETAT INITIAL
 709 : C    --------------------------------------------------------
 710 : C
 711 :       IF(IIMPI.EQ.42) THEN
 712 :         WRITE(IOIMP,77010) (SIGMA0(I),I=1,6)
 713 : 77010   FORMAT('0  SIGMA0 EN REPERE GENERAL '/6(1X,1PE12.5)/)
 714 : *
 715 :         WRITE(IOIMP,77011) (DDEF0(I),I=1,6)
 716 : 77011   FORMAT('0  DDEF0 EN REPERE GENERAL '/6(1X,1PE12.5)/)
 717 : *
 718 :         WRITE(IOIMP,77013) (EPSV0(I),I=1,6)
 719 : 77013   FORMAT('0  EPSV0 EN REPERE GENERAL '/6(1X,1PE12.5)/)
 720 : *
 721 :         WRITE(IOIMP,77012) NFISSU,NVF,(XINVL(I),I=1,3)
 722 : 77012   FORMAT('0  NFISSU=',I3,2X,'NVF=',I3/
 723 :      .         '0  XINVL '/3(1X,1PE12.5)/)
 724 :       ENDIF
 725 : C
 726 : C
 727 : C#######################################################################
 728 : C=======================================================================
 729 : C
 730 : C          LES CHOSES SERIEUSES COMMENCENT : ITERATIONS INTERNES
 731 : C
 732 : C=======================================================================
 733 : C#######################################################################
 734 : C
 735 : C=======================================================================
 736 : C      INITIALISATION DES VARIABLES GLOBALES AUX ITERATIONS INTERNES
 737 : C=======================================================================
 738 : C
 739 :         PSOM=0.D0
 740 :         DO  334 I=1,6
 741 :            PSOM=PSOM+ABS(DDEF0(I))
 742 : 334     CONTINUE
 743 :         PSOM=PSOM/(3.D0*DEFOTR)
 744 : *  MLR  22/11/96
 745 :         PSOM=MIN(PSOM,1.D6)
 746 : *
 747 : *  AM 30/04/96   ON MODULE LA PRECISION SELON LA VALEUR DE PSOM
 748 : *
 749 : *      PRECIS = MIN (1.D-4,1.D-4/PSOM)
 750 : *      EPSILO = MIN (1.D-2,1.D-2/PSOM)
 751 :       EPSIL2 = MIN (1.D-4,1.D-4/PSOM)
 752 :       TAURES=UN
 753 :       ITER=0
 754 : C
 754 :       CALL ZDANUL(DDEFPT,6)
 755 : C
 756 : C --- LES VITESSES DE TEMPERATURE ET DE DENSITE DE FISSION SONT CTES ---
 757 : C
 758 :       TPOINT=(TETA2-TETA1)/DT
 759 :       FPOINT=(FI2-FI1)/DT
 760 : C
 761 :       DTREST=DT
 762 :       TEMPE1=TETA1
 763 :       DFISS1=FI1
 764 : C
 765 : C=======================================================================
 766 : C              LABEL DE DEBUT DES ITERATIONS INTERNES
 767 : C=======================================================================
 768 : C
 769 :   31  CONTINUE
 770 : C
 771 :       ITER=ITER+1
 772 : C
 773 :           IF(IIMPI.EQ.42) THEN
 774 :             WRITE(IOIMP,77015) ITER,TAURES
 775 : 77015       FORMAT(//////2X,'  >>>>>>>>> ITERATION INTERNE ',
 776 :      &             I3,2X,'TAURES=',1PE12.5/)
 777 :           ENDIF
 778 : C
 779 :       IF (ITER.GE.25) THEN
 780 : C------non convergence des iterations internes------
 781 :          KERRE=986
 782 :          GO TO 2021
 783 :       ENDIF
 784 : C
 785 : C
 786 : C=======================================================================
 787 : C     INITIALISATION DES VARIABLES POUR GESTION DES SOUS ITERATIONS
 788 : C=======================================================================
 789 : C---prise en compte de la totalite du reste de l increment de def tot---
 790 : C----en sortie de UO2CA IRESU contient la nouvelle non linearite de ----
 791 : C-------fissuration rencontree lors des sous iterations internes--------
 792 : C
 793 : C
 794 :       TAU=UN
 795 : C  
 796 :       DO IC=1,3
 797 :          W0(IC)=W(IC)
 798 :          WMAX0(IC)=WMAX(IC)
 799 :          SMAX0(IC)=SMAX(IC)
 800 :       ENDDO
 801 : C
 802 :       IF(IIMPI.EQ.42) THEN
 803 :         WRITE(IOIMP,73032) (W0(I),I=1,3),(WMAX0(I),I=1,3)
 804 : 73032   FORMAT('   W0 '/3(1X,1PE12.5)/' WMAX0 '/3(1X,1PE12.5)/)
 805 : *
 806 :         WRITE(IOIMP,73630) (SMAX0(I),I=1,3)
 807 : 73630   FORMAT('  SMAX0'/3(1X,1PE12.5)/)
 808 : *
 809 :         WRITE(IOIMP,73034) (WRUPT(I),I=1,3),(XINVL(I),I=1,3)
 810 : 73034   FORMAT('  WRUPT'/3(1X,1PE12.5)/'  XINVL'/3(1X,1PE12.5)/)
 811 :         WRITE(IOIMP,73934) XNF1, XNF2,XNF3
 812 : 73934   FORMAT(/// 2X, 'XNF1 XNF2 XNF3 = ',3(1X,1PE12.5)/)
 813 :       ENDIF
 814 : C
 815 : C
 816 : C=======================================================================
 817 : C                        REPERE DE CALCUL
 818 : C=======================================================================
 819 : C
 820 : C
 821 :       IF (XNF1.NE.XZER) THEN
 822 : C
 823 : C------------DIRECTION 1 IMPOSEE---------------
 824 : C
 825 :          VCA1(1)=VF1(1)
 826 :          VCA1(2)=VF1(2)
 827 :          VCA1(3)=VF1(3)
 828 :          IF (XNF3.NE.XZER) THEN
 829 : C
 830 : C---------DIRECTION 1 2 3 IMPOSEES-----------
 831 : C
 832 :             VCA2(1)=VF2(1)
 833 :             VCA2(2)=VF2(2)
 834 :             VCA2(3)=VF2(3)
 835 :             VCA3(1)=VF3(1)
 836 :             VCA3(2)=VF3(2)
 837 :             VCA3(3)=VF3(3)
 838 :          ELSEIF (XNF2.NE.XZER) THEN
 839 : C
 840 : C----------DIRECTION 1 ET 2 IMPOSEES------------
 841 : C
 842 :              VCA2(1)=VF2(1)
 843 :              VCA2(2)=VF2(2)
 844 :              VCA2(3)=VF2(3)
 845 :              VCA3(1)=VF1(2)*VF2(3)-VF1(3)*VF2(2)
 846 :              VCA3(2)=VF1(3)*VF2(1)-VF1(1)*VF2(3)
 847 :              VCA3(3)=VF1(1)*VF2(2)-VF1(2)*VF2(1)
 848 :              SMAX(3)=XLTR(3)
 849 :          ELSE
 850 : C
 851 : C-------------UNIQUEMENT LA DIRECTION 1 IMPOSEE--------------
 852 : C
 853 :              IF (VCA1(2).NE.XZER.OR.VCA1(3).NE.XZER) THEN
 854 :                VCA2(1)=XZER
 855 :                VCA2(2)=-VCA1(3)
 856 :                VCA2(3)=VCA1(2)
 857 :                XVCA=SQRT(VCA2(1)*VCA2(1)+VCA2(2)*VCA2(2)
 858 :      .                  +VCA2(3)*VCA2(3))
 859 :                VCA2(1)=VCA2(1)/XVCA
 860 :                VCA2(2)=VCA2(2)/XVCA
 861 :                VCA2(3)=VCA2(3)/XVCA
 862 :              ELSE
 863 :                VCA2(1)=XZER
 864 :                VCA2(2)=UN
 865 :                VCA2(3)=XZER
 866 :              ENDIF
 867 :              VCA3(1)=VF1(2)*VCA2(3)-VF1(3)*VCA2(2)
 868 :              VCA3(2)=VF1(3)*VCA2(1)-VF1(1)*VCA2(3)
 869 :              VCA3(3)=VF1(1)*VCA2(2)-VF1(2)*VCA2(1)
 870 :              SMAX(2)=XLTR(2)
 871 :              SMAX(3)=XLTR(3)
 872 :          ENDIF
 873 :       ELSE
 874 : C
 875 : C------------PAS DE DIRECTION IMPOSEE----------
 876 : C
 877 :         VCA1(1)=UN
 878 :         VCA1(2)=XZER
 879 :         VCA1(3)=XZER
 880 :         VCA2(1)=XZER
 881 :         VCA2(2)=UN
 882 :         VCA2(3)=XZER
 883 :         VCA3(1)=XZER
 884 :         VCA3(2)=XZER
 885 :         VCA3(3)=UN
 886 :         SMAX(1)=XLTR(1)
 887 :         SMAX(2)=XLTR(2)
 888 :         SMAX(3)=XLTR(3)
 889 :       ENDIF       
 890 : C
 891 : C=======================================================================
 892 : C CALCUL DE DDEF0 (VIT. DEF. TOT.) ET SIGMA0 ET EPSV0 (DEF. VISCOPLAST.)
 893 : C                  DANS LE REPERE DE CALCUL
 894 : C            RESULTAT NOTE : DDEF ET SIGMA ET EPSV
 895 : C=======================================================================
 896 : C
 897 :       LECAS=1
 897 :       CALL UO2ROT(SIGMA0,SIGMA,VCA1,VCA2,VCA3,LECAS)
 897 :       CALL UO2ROT(DDEF0,DDEF,VCA1,VCA2,VCA3,LECAS)
 897 :       CALL UO2ROT(EPSV0,EPSV,VCA1,VCA2,VCA3,LECAS)
 898 : C
 899 :         IF(IIMPI.EQ.42) THEN
 900 :           WRITE(IOIMP,70016) (VCA1(I),I=1,3),(VCA2(I),I=1,3),
 901 :      &                       (VCA3(I),I=1,3)
 902 : 70016     FORMAT(2X,'VECTEUR VCA1 ',3(1X,1PE12.5)/
 903 :      &           2X,'VECTEUR VCA2 ',3(1X,1PE12.5)/
 904 :      &           2X,'VECTEUR VCA3 ',3(1X,1PE12.5)//)
 905 : *
 906 :           WRITE(IOIMP,77016) (SIGMA(I),I=1,6)
 907 : 77016     FORMAT(2X,'SIGMA0 EN REPERE CALCUL '/6(1X,1PE12.5)/)
 908 : *
 909 :           WRITE(IOIMP,77017) (DDEF(I),I=1,6)
 910 : 77017     FORMAT(2X,'DDEF0 EN REPERE CALCUL '/6(1X,1PE12.5)/)
 911 : *
 912 :           WRITE(IOIMP,77018) (EPSV(I),I=1,6)
 913 : 77018     FORMAT(2X,'EPSV0 EN REPERE CALCUL '/6(1X,1PE12.5)/)
 914 : *
 915 :           WRITE(IOIMP,73017) PRECIZ
 916 : 73017     FORMAT(2X,'PRECIZ = ',1PE12.5/)
 917 :           WRITE(IOIMP,77417) (SMAX(I),I=1,3)
 918 : 77417     FORMAT(2X,'  SMAX  ',3(1X,1PE12.5)//)
 919 :         ENDIF
 920 : C
 921 : C-----------------------------------------------------------------------
 922 : C
 923 : C           VERIFICATIONS SUR L'ETAT INITIAL
 924 : C ZZZZ  A COMPLETER
 925 : C-----------------------------------------------------------------------
 926 : C
 927 :             ICAZ=1
 927 :             CALL UO2TES(XINVL,W0,WMAX0,SMAX,SIGMA,XLTR,PREC0,
 928 :      &       BTR,WRUPT,IB,IGAU,ICAZ,KERRE)
 929 :             IF(KERRE.EQ.70) GO TO 2021
 930 : 
 931 : C
 932 : C
 933 : C=======================================================================
 934 : C             SOUS ITERATIONS INTERNES GEREES PAR UO2CA
 935 : C
 936 : C   CES SOUS-ITERATIONS REDUISENT L INCREMENT DE DEF. TOT. DE MANIERE
 937 : C     A ANNULER TOUTES LES NON LINEARITES EVENTUELLES (FISSURATION)
 938 : C=======================================================================
 939 : C
 939 :       CALL IANUL(IRESU,20)
 940 : C
 941 :       DO IC=1,3
 942 :          W(IC)=W0(IC)
 943 :          WMAX(IC)=WMAX0(IC)
 944 :          SMAX(IC)=SMAX0(IC)
 945 :       ENDDO
 946 : C
 947 : C=======================================================================
 948 : C
 949 : C---------------------------ECOULEMENT----------------------------------
 950 : C
 951 : C=======================================================================
 952 : C
 952 :       CALL UO2CA(DTREST,MSOUPA,PRECIE,PRECIZ,SIGMA,DDEF,EPSV,VARGA0,
 953 :      &           NGAT,W,WMAX,SMAX,WRUPT,BILIN,SBILI,XLTR,
 954 :      &           XINVL,WREOUV,GS,BTR,XMAT,NCOMAT,NSIMP,AA,
 955 :      &           TEMPE1,TPOINT,DFISS1,FPOINT,PRECIS,IB,IGAU,
 956 :      &           NFISSU,NVF,XVF,DTCALC,IRESU,NRESU,
 957 :      &           SIGMAF,DDEFP,EPSVF,VARGAF,KERRE)
 958 :       IF (KERRE.NE.0)  THEN
 959 :          PRINT *,'IB=',IB,'  IGAU=',IGAU
 960 :          GO TO 2021
 961 :       ENDIF
 962 : C
 963 : C
 964 :         IF(IIMPI.EQ.42) THEN
 965 :           WRITE(IOIMP,77031)
 966 : 77031     FORMAT('   SORTIE D UO2CA  ' /)
 967 : *
 968 :           WRITE(IOIMP,77032) (W(I),I=1,3),(WMAX(I),I=1,3)
 969 : 77032     FORMAT('   W '/3(1X,1PE12.5)/' WMAX  '/3(1X,1PE12.5)/)
 970 : *
 971 :           WRITE(IOIMP,75630) (SMAX(I),I=1,3)
 972 : 75630     FORMAT('  SMAX'/3(1X,1PE12.5)/)
 973 : *
 974 :           WRITE(IOIMP,75631) NFISSU,NVF,NRESU
 975 : 75631     FORMAT('  NFISSU = ',I3,2X,'NVF = ',I3,2X,'NRESU=',I3/)
 976 :           WRITE(IOIMP,75632) (IRESU(I),I=1,NRESU)
 977 : 75632     FORMAT('  IRESU  = ',10I4/)
 978 :           WRITE(IOIMP,75633) ((XVF(I,J),I=1,3),J=1,3)
 979 : 75633     FORMAT('  TABLEAU XVF '/(3(1X,1PE12.5)/))
 980 :         ENDIF
 981 : C
 982 : C
 983 : C=======================================================================
 984 : C            CALCUL DU RESTE DE L'INCREMENT DE DEFORMATION
 985 : C            ET MISE A JOUR DES VARIABLES INTERNES
 986 : C=======================================================================
 987 : C
 988 : C
 989 :         TAU=DTCALC/DTREST
 990 :         DTREST=(UN-TAU)*DTREST
 991 :         TEMPE1=TEMPE1+(TPOINT*DTCALC)
 992 :         DFISS1=DFISS1+(FPOINT*DTCALC)
 993 : C
 994 :         TAURES=(UN-TAU)*TAURES
 995 : C
 996 :         IF(IIMPI.EQ.42) THEN
 997 :            WRITE(IOIMP,77039) TAU,TAURES
 998 : 77039      FORMAT(//2X,'VALEUR DE L INCREMENT ECOULEE  ' /
 999 :      &           /2X,' TAU = ',1PE12.5,2X,'TAURES=',1PE12.5/)
1000 :         ENDIF
1001 : C
1002 : CZZZZZZZZZZZZZZZZ
1003 : C  EVENTUELLEMENT TESTER L'EGALITE DE TAU A 0. AUSSI
1004 : CZZZZZZZZZZZZZZZZ
1005 : 
1006 :         IF(TAU.LT.0.D0) THEN
1007 :            WRITE(IOIMP,70069)
1008 : 70069      FORMAT(////2X,'#########  UO2OTO: TAU NEGATIF #########'////)
1009 :            KERRE=414
1010 :            GO TO 2021
1011 :         ENDIF
1012 : C
1013 : C---------------------------------------------------------------------
1014 : C       TEST SUR IRESU
1015 : C---------------------------------------------------------------------
1016 : C
1017 :         IF(NRESU.GT.1) THEN
1018 :           DO 43 IR=1,NRESU
1019 :              JRESU=IRESU(IR)
1020 :              DO 44 KR=1,NRESU
1021 :                 KRESU=IRESU(KR)
1022 :                 IF(KR.NE.IR.AND.JRESU.EQ.KRESU) THEN
1023 :                    WRITE(IOIMP,20069)
1024 : 20069              FORMAT(////2X,
1025 :      &     '###########  UO2OTO: 2 IRESU IDENTIQUES  ###########'////)
1026 :                    KERRE=987
1027 :                    GO TO 2021
1028 :                 ENDIF
1029 :  44         CONTINUE
1030 :  43       CONTINUE
1031 :         ENDIF
1032 : 
1033 : C
1034 : C
1035 : C=======================================================================     
1036 : C
1037 : C-------------PRISE EN COMPTE DE LA NOUVELLE NON LINEARITE--------------
1038 : C
1039 : C=======================================================================
1040 : C
1041 : C
1042 :         DO 55 IR=1,NRESU
1043 :            JRESU=IRESU(IR)
1044 : C
1045 :            IF(IIMPI.EQ.42) THEN
1046 :               WRITE(IOIMP,74401) JRESU
1047 : 74401         FORMAT(/2X,'MISE A JOUR POUR JRESU = ',I4/)
1048 :            ENDIF
1049 : 
1050 : C
1051 : C-----------------FISSURATION---------------
1052 : C
1053 :         IF (JRESU.GE.1.AND.JRESU.LE.3) THEN
1054 : C
1055 :            NFISSU=NFISSU+1
1056 : C
1057 : C----------CALCUL DE VF , XINVL  DANS LE REPERE GLOBAL-------------
1058 : C
1059 :            XVFN=XVF(1,JRESU)**2 + XVF(2,JRESU)**2
1060 :      &        + XVF(3,JRESU)**2
1061 :            IF(XVFN.EQ.XZER) THEN
1062 :                WRITE(IOIMP,77027)    JRESU
1063 : 77027          FORMAT(2X,' ***  UO2OTO: PB AVEC UN VECTEUR XVF !!!!  ' /
1064 :      &         2X,' DIRECTION = ',I3//)
1065 :                KERRE=987
1066 :                GO TO 2021
1067 :            ENDIF
1068 : C
1069 : C
1070 :            VF(1)=VCA1(1)*XVF(1,JRESU)+VCA2(1)*XVF(2,JRESU)
1071 :      &          +VCA3(1)*XVF(3,JRESU)
1072 :            VF(2)=VCA1(2)*XVF(1,JRESU)+VCA2(2)*XVF(2,JRESU)
1073 :      &          +VCA3(2)*XVF(3,JRESU)
1074 :            VF(3)=VCA1(3)*XVF(1,JRESU)+VCA2(3)*XVF(2,JRESU)
1075 :      &          +VCA3(3)*XVF(3,JRESU)
1076 :            XNF=VF(1)*VF(1)+VF(2)*VF(2)+VF(3)*VF(3)
1077 :            XL=TAIL(1)*VF(1)*VF(1)+TAIL(2)*VF(2)*VF(2)
1078 :            XL=XL+TAIL(3)*VF(3)*VF(3)+DEUX*TAIL(4)*VF(2)*VF(1)
1079 :            XL=XL+DEUX*TAIL(5)*VF(1)*VF(3)
1080 :            XL=XL+DEUX*TAIL(6)*VF(2)*VF(3)
1081 :            PASS=P(1)*VF(1)*VF(1)+P(2)*VF(2)*VF(2)+P(3)*VF(3)*VF(3)
1082 :            PASS=PASS+DEUX*P(4)*VF(2)*VF(1)+DEUX*P(5)*VF(1)*VF(3)
1083 :            PASS=PASS+DEUX*P(6)*VF(2)*VF(3)
1084 :            IF (XL.NE.XZER) THEN
1085 :               XTAILLE=ABS(PASS/XL)
1086 :               IF (XTAILLE.LE.((UN+XNU)*XLTR(JRESU)*XLTR(JRESU)
1087 :      &          /(DEUX*GFTR(JRESU)*YOUN))) THEN
1088 :                  KERRE=983
1089 :                  GO TO 2021
1090 :               ENDIF
1091 :            ELSE
1092 :               XTAILLE=UN
1093 :            ENDIF
1094 : C
1095 :            XINVL(JRESU)=XTAILLE
1096 : C
1097 : C
1098 : C    MISE A JOUR DES DIRECTIONS DE FISSURE DANS LES VARIABLES INTERNES
1099 : C
1100 : C ------------------------------------------
1101 : C         MATERIAU NON FISSURE PREALABLEMENT
1102 : C ------------------------------------------
1103 : C
1104 :            IF (NFISSU.EQ.1) THEN
1105 :               IF (NVF.EQ.0) THEN
1106 :                  VF1(1)=VF(1)
1107 :                  VF1(2)=VF(2)
1108 :                  VF1(3)=VF(3)
1109 :                  XNF1=XNF
1110 :                  GOTO 55
1111 :               ENDIF
1112 :               IF (NVF.EQ.1.AND.JRESU.EQ.1) THEN
1113 :                  NVF=NVF-1
1114 :                  GOTO 55
1115 :               ENDIF
1116 :               IF (NVF.EQ.1.AND.JRESU.NE.1) THEN
1117 :                  VF2(1)=VF(1)
1118 :                  VF2(2)=VF(2)
1119 :                  VF2(3)=VF(3)
1120 :                  XNF2=XNF
1121 :                  GOTO 55
1122 :               ENDIF
1123 :               IF (NVF.EQ.2.AND.JRESU.EQ.3) THEN
1124 :                  VF3(1)=VF(1)
1125 :                  VF3(2)=VF(2)
1126 :                  VF3(3)=VF(3)
1127 :                  XNF3=XNF
1128 :                  GOTO 55
1129 :               ENDIF
1130 :               IF (NVF.EQ.2.AND.JRESU.NE.3) THEN
1131 :                  NVF=NVF-1
1132 :                  GOTO 55
1133 :               ENDIF
1134 :               IF (NVF.EQ.3) THEN
1135 :                  NVF=NVF-1
1136 :                  GOTO 55
1137 :               ENDIF
1138 :            ENDIF
1139 : C
1140 : C------------------------------------------
1141 : C      UNE FISSURE AU PREALABLE
1142 : C------------------------------------------
1143 : C
1144 :            IF (NFISSU.EQ.2) THEN
1145 :               IF (NVF.EQ.0) THEN
1146 :                  VF2(1)=VF(1)
1147 :                  VF2(2)=VF(2)
1148 :                  VF2(3)=VF(3)
1149 :                  XNF2=XNF
1150 :                  GOTO 55
1151 :               ENDIF
1152 :               IF (NVF.EQ.1.AND.JRESU.EQ.3) THEN
1153 :                  VF3(1)=VF(1)
1154 :                  VF3(2)=VF(2)
1155 :                  VF3(3)=VF(3)
1156 :                  XNF3=XNF
1157 :                  GOTO 55
1158 :               ENDIF
1159 :               IF (NVF.EQ.1.AND.JRESU.NE.3) THEN
1160 :                  NVF=NVF-1
1161 :                  GOTO 55
1162 :               ENDIF
1163 :               IF (NVF.EQ.2) THEN
1164 :                  NVF=NVF-1
1165 :                  GOTO 55
1166 :               ENDIF
1167 :            ENDIF
1168 : C
1169 : C------------------------------------------
1170 : C   DEUX FISSURES PRE EXISTANTES
1171 : C------------------------------------------
1172 : C
1173 :            IF (NFISSU.EQ.3) THEN
1174 :               IF (NVF.EQ.1) THEN
1175 :                  NVF=0
1176 :                  GOTO 55
1177 :               ENDIF
1178 :               IF (JRESU.EQ.1) THEN
1179 :                  VF1(1)=VF(1)
1180 :                  VF1(2)=VF(2)
1181 :                  VF1(3)=VF(3)
1182 :                  XNF1=XNF
1183 :                  GOTO 55
1184 :               ENDIF
1185 :               IF (JRESU.EQ.2) THEN
1186 :                  VF2(1)=VF(1)
1187 :                  VF2(2)=VF(2)
1188 :                  VF2(3)=VF(3)
1189 :                  XNF2=XNF
1190 :                  GOTO 55
1191 :               ENDIF
1192 :               IF (JRESU.EQ.3) THEN
1193 :                  VF3(1)=VF(1)
1194 :                  VF3(2)=VF(2)
1195 :                  VF3(3)=VF(3)
1196 :                  XNF3=XNF
1197 :                  GOTO 55
1198 :               ENDIF
1199 :            ENDIF
1200 :         ENDIF
1201 : C
1202 : C
1203 :   55  CONTINUE
1204 : 
1205 : C
1206 : C   QUELQUES TESTS SUPPLEMENTAIRES
1207 : C
1208 : 
1209 :         IF(IIMPI.EQ.42) THEN
1210 :           WRITE(IOIMP,77441) (SMAX(I),I=1,3)
1211 : 77441     FORMAT('0  SMAX   '/3(1X,1PE12.5)/)
1212 :         ENDIF
1213 : C
1214 : C
1215 :         DO I=1,3
1216 :             IF(ABS(WMAX(I)-WRUPT(I)).LT.WRUPT(I)*PRECIE) THEN
1217 :                 WMAX(I)=WRUPT(I)
1218 :             ENDIF
1219 :         ENDDO
1220 : C
1221 :         ICAZ=2
1221 :         CALL UO2TES(XINVL,W,WMAX,SMAX,SIGMAF,XLTR,PRECIZ,
1222 :      &              BTR,WRUPT,IB,IGAU,ICAZ,KERRE)
1223 :         IF(KERRE.EQ.70) GO TO 2021
1224 : C
1225 :       DO 202 I=1,3
1226 :         IF(WMAX(I).GE.WRUPT(I)) THEN
1227 :           IF(W(I).GE.WREOUV(I)) THEN
1228 :             IF(SIGMAF(I).GT.0.D0) THEN
1229 :               IF(SIGMAF(I).GT.PRECIZ*10.D0) THEN
1230 :                 WRITE(IOIMP,77202) SIGMAF(I)
1231 : 77202           FORMAT(2X,' ********  SIGMA TROP FORT = ',1PE12.5/)
1232 :               ENDIF
1233 :               SIGMAF(I)=0.D0
1234 :             ENDIF
1235 :           ENDIF
1236 :           IF(DDEFP(I).GT.0.D0) THEN
1237 :              IF(DABS(SIGMAF(I)).LT.PRECIZ) SIGMAF(I)=0.D0
1238 :           ENDIF
1239 :         ENDIF
1240 : 202   CONTINUE
1241 : C
1242 : C
1243 : C=======================================================================
1244 : C        CALCUL DE SIGMAF ET DDEFP ET EPSVF DANS LE REPERE GLOBAL
1245 : C                RESULTAT NOTE : SIGF0 ET DDEFP0 ET EPSVF0
1246 : C=======================================================================
1247 : C
1248 :       LECAS=2
1248 :       CALL UO2ROT(SIGMAF,SIGF0,VCA1,VCA2,VCA3,LECAS)
1248 :       CALL UO2ROT(DDEFP,DDEFP0,VCA1,VCA2,VCA3,LECAS)
1248 :       CALL UO2ROT(EPSVF,EPSVF0,VCA1,VCA2,VCA3,LECAS)
1249 : C
1250 :         IF(IIMPI.EQ.42) THEN
1251 :           WRITE(IOIMP,77040) (SIGF0(I),I=1,6)
1252 : 77040     FORMAT('0  SIGF EN REPERE GLOBAL '/6(1X,1PE12.5)/)
1253 : *
1254 :           WRITE(IOIMP,77041) (DDEFP0(I),I=1,6)
1255 : 77041     FORMAT('0  DDEFP EN REPERE GLOBAL '/6(1X,1PE12.5)/)
1256 : *
1257 :           WRITE(IOIMP,77042) (EPSVF0(I),I=1,6)
1258 : 77042     FORMAT('0  EPSVF EN REPERE GLOBAL '/6(1X,1PE12.5)/)
1259 :         ENDIF
1260 : C
1261 : C
1262 : C=======================================================================
1263 : C   MISE A JOUR DE L ETAT DU MATERIAU POUR UN NOUVEL INCREMENT INTERNE
1264 : C=======================================================================
1265 : C
1266 :       DO 54 IC=1,6
1267 :          SIGMA0(IC)=SIGF0(IC)
1268 :          EPSV0(IC)=EPSVF0(IC)
1269 :          DDEF0(IC)=(UN-TAU)*DDEF0(IC)
1270 :          DDEFPT(IC)=DDEFPT(IC)+DDEFP0(IC)
1271 :   54  CONTINUE
1272 :       DO I=1,NGAT
1273 :          VARGA0(I)=VARGAF(I)
1274 :       ENDDO
1275 : C
1276 : C
1277 : C=======================================================================
1278 : C --- CONTROLE DE L AMPLITUDE DE L INCREMENT INITIAL DE DEFORM. SI FISS.
1279 : C=======================================================================
1280 :       TOLEPS=1E12
1281 :       TOL=TOLEPS
1282 :       EPSMAX=XZER
1283 :       DO 56 I=1,3
1284 :         IF (DABS(DEPST(I)).GT.EPSMAX) EPSMAX=DABS(DEPST(I))
1285 :         IF (XINVL(I).NE.XZER) THEN
1286 :           TOL=(XINVL(I)*WRUPT(I)) - (XLTR(I)/YOUN)
1287 :           TOL=DABS(TOL)
1288 :           IF (TOL.LT.TOLEPS) TOLEPS=TOL
1289 :         ENDIF
1290 :  56   CONTINUE
1291 :       IF (EPSMAX.GT.TOLEPS) THEN
1292 :         FACTEU=DIX*EPSMAX/TOLEPS
1293 :         IFAC=IDINT(FACTEU)
1294 : *        WRITE(IOIMP,77894) IFAC
1295 : *77894   FORMAT(/,'UO2OTO - PAS DE TEMPS TROP GRAND D UN FACTEUR ',I4,/)
1296 : *        KERRE=268
1297 : *        RETURN
1298 :       ENDIF
1299 : C
1300 : C
1301 : C=======================================================================
1302 : C            TEST L ADMISSIBILITE DU DERNIER ECOULEMENT
1303 : C=======================================================================
1304 : C
1305 : C    AM  30/04/96  REMPLACEMENT DE EPSILO PAR EPSIL2
1306 : C
1307 :       IF (TAURES.GT.EPSIL2) GOTO 31
1308 : C
1309 : C#######################################################################
1310 : C=======================================================================
1311 : C
1312 : C  C EST FINI
1313 : C  LES CONTRAINTES FINALES SONT DONNEES PAR                    : SIGMA0
1314 : C  LES INC. DE DEF INELAS (FISS.+VISCOPLAST.) SONT DONNES PAR  : DDEFPT
1315 : C  LES DEF VISCOPLAST. SONT DONNEES PAR                        : EPSV0
1316 : C
1317 : C=======================================================================
1318 : C#######################################################################
1319 : C
1320 : C-----------------------------------------------------------------------
1321 : C
1322 :       DO 658 I=1,3
1323 :          IF(XINVL(I).NE.0.D0) THEN
1324 :            WREOUV(I)=BTR*MIN(WMAX(I),WRUPT(I))
1325 :            IF(W(I).LT.WREOUV(I)-1.D-10*WRUPT(I))  THEN
1326 :            WRITE(IOIMP,67676) I,W(I),WMAX(I)
1327 : 67676      FORMAT(2X,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$' /
1328 :      &     4X,'ATTENTION FINALE I=',I4,2X,'W=',1PE12.5,2X,
1329 :      &                       'WMAX=',1PE12.5/
1330 :      &            2X,'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'/)
1331 :           ENDIF
1332 :           ENDIF
1333 : 658   CONTINUE
1334 : C-----------------------------------------------------------------------
1335 : C
1336 : C#######################################################################
1337 : C=======================================================================
1338 : C                 MISE A JOUR DES VARIABLES INTERNES
1339 : C=======================================================================
1340 : C#######################################################################
1341 : C
1342 : C============================================
1343 : C-------CAS TRIDIMENSIONNEL MASSIF-----------
1344 : C============================================
1345 : C
1346 : C            NVARI=30    cf. IDVAR4
1347 : C
1348 :       IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN
1349 :          DO 60 IC=1,3
1350 :             VARF(IC+1) =WMAX(IC)
1351 :             VARF(IC+4) =W(IC)
1352 :             VARF(IC+7) =VF1(IC)
1353 :             VARF(IC+10)=VF2(IC)
1354 :             VARF(IC+13)=VF3(IC)
1355 :             VARF(IC+16)=XINVL(IC)
1356 :  60      CONTINUE
1357 :       ENDIF
1358 : C
1359 : C============================================
1360 : C-------------CAS CONT PLANE-----------------
1361 : C---------OU TRIDIM COQUES MINCES -----------
1362 : C============================================
1363 : C
1364 : C NVARI=20/22/24 (CP/3D COQUES SANS/AVEC CIS.) cf. IDVAR4
1365 : C
1366 :       IF (IFOUR.EQ.-2.OR.
1367 :      .    (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)))THEN
1368 :          DO 62 IC=1,2
1369 :             VARF(IC+1) =WMAX(IC+1)
1370 :             VARF(IC+3) =W(IC+1)
1371 :             VARF(IC+5) =VF2(IC)
1372 :             VARF(IC+7) =VF3(IC)
1373 :             VARF(IC+9) =XINVL(IC+1)
1374 :  62      CONTINUE
1375 :       ENDIF
1376 : C
1377 : C============================================
1378 : C-----------CAS DEFO PLANE/AXIS--------------
1379 : C============================================
1380 : C
1381 : C            NVARI=23    cf. IDVAR4
1382 : C
1383 :       IF (IFOUR.EQ.0.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN
1384 :          DO 64 IC=1,2
1385 :             VARF(IC+1) =WMAX(IC+1)
1386 :             VARF(IC+4) =W(IC+1)
1387 :             VARF(IC+7) =VF2(IC)
1388 :             VARF(IC+9) =VF3(IC)
1389 :             VARF(IC+11)=XINVL(IC+1)
1390 :  64      CONTINUE
1391 :          VARF(4) =WMAX(1)
1392 :          VARF(7) =W(1)
1393 :          VARF(14)=XINVL(1)
1394 :       ENDIF
1395 : C
1396 : C   VARIABLE INTERNE DE NOM 'EPSE'
1397 : C   ------------------------------
1398 :       VARF(1)=W(1)+W(2)+W(3)
1399 : C
1400 : C   VARIABLE INTERNE DE NOM 'PREC'
1401 : C   ------------------------------
1402 :       VARF(NVARI-MGAT)=PRECIZ
1403 : C
1404 : C------------------------------------------------------------------
1405 : C   RANGEMENT DES VARIABLES INTERNES PROPRES AU MODELE GATT_MONERIE
1406 : C                 AUTRES QUE LES DEF. VISCOPLAST.
1407 : C------------------------------------------------------------------
1408 :       DO 66 IC=1,NGAT
1409 :         VARF(NVARI-NGAT+IC)=VARGAF(IC)
1410 :   66  CONTINUE
1411 : C
1412 : C-----------------------------------------------------
1413 : C   RANGEMENT DES VARIABLES INTERNES / DEF. VISCOPLAST.
1414 : C------------------------------------------------------
1415 :       KGAT=MGAT-NGAT
1416 : C
1417 :       IF (MFR.EQ.1) THEN
1418 : C 
1419 : C-----------------------MASSIF 3D/2D----KGAT=6/4---------------
1420 : C
1421 :          DO 68 IC=1,KGAT
1422 :            IF(IC.LE.3) THEN
1423 :              VARF(NVARI-MGAT+IC)=EPSV0(IC)
1424 :            ELSE
1425 :              VARF(NVARI-MGAT+IC)=EPSV0(IC)*DEUX
1426 :            ENDIF
1427 :   68     CONTINUE
1428 : C
1429 :       ELSEIF (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN
1430 : C
1431 : C-----3D COQUES MINCES SANS/AVEC CISAIL. TRANS.-----KGAT=6/8--------
1432 : C              ON NE PREND QUE LA PARTIE MEMBRANE !!
1433 : C
1434 :          VARF(NVARI-MGAT+1)=EPSV0(1)
1435 :          VARF(NVARI-MGAT+2)=EPSV0(2)
1436 :          VARF(NVARI-MGAT+3)=EPSV0(4)*DEUX
1437 :          VARF(NVARI-MGAT+4)=XZER
1438 :          VARF(NVARI-MGAT+5)=XZER
1439 :          VARF(NVARI-MGAT+6)=XZER
1440 :          IF(MFR.EQ.9) THEN
1441 :            VARF(NVARI-MGAT+7)=XZER
1442 :            VARF(NVARI-MGAT+8)=XZER
1443 :          ENDIF
1444 :       ENDIF
1445 : C
1446 : C========================================================================
1447 : C---------PASSAGE A L'OPTION DE CALCUL POUR LES CONTRAINTES--------------
1448 : C======================================================================== 
1449 : C
1450 :       IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN
1451 : C
1452 : C----------MASSIF 3D----------------
1453 : C
1454 :         DO 70 I=1,6
1455 :           SIGF(I)=SIGMA0(I)
1456 :           IF(I.LE.3) THEN
1457 :             DEFP(I)=DDEFPT(I)
1458 :           ELSE
1459 :             DEFP(I)=DDEFPT(I)*DEUX
1460 :           ENDIF
1461 :  70     CONTINUE
1462 :       ELSE IF (IFOUR.NE.2.AND.MFR.EQ.1) THEN
1463 : C
1464 : C---AXISYMETRQUE/DEF/CONT PLANES----
1465 : C
1466 :         DO 80 I=1,4
1467 :           SIGF(I)=SIGMA0(I)
1468 :           IF(I.LE.3) THEN
1469 :             DEFP(I)=DDEFPT(I)
1470 :           ELSE
1471 :             DEFP(I)=DDEFPT(I)*DEUX
1472 :           ENDIF
1473 :  80     CONTINUE 
1474 :         IF (ABS(SIGMA0(5)).GT.(YOUN*1.D-15).OR.
1475 :      &      ABS(SIGMA0(6)).GT.(YOUN*1.D-15)) THEN
1476 : C
1477 : C             SMRT OU SMTZ NON NULLES APRES ECOULEMENT
1478 : C
1479 :            KERRE=988
1480 :            GO TO 2021
1481 :         ENDIF
1482 : C
1483 :         ELSEIF (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9)) THEN
1484 : C
1485 : C-----CALCUL TRIDIM COQUES MINCES -------
1486 : C
1487 : C     ON MET A JOUR DE FACON NON LINEAIRE LA PARTIE MEMBRANE
1488 : C     ET DE FACON LINEAIRE, LES PARTIES FLEXION ET EFFORTS
1489 : C     TRANCHANTS LE CAS ECHEANT
1490 : C
1491 :           FAC=(EPAI**3)/12.D0
1492 :           AUX =FAC*YOUN/(UN-XNU*XNU)
1493 :           AUX1=FAC*YOUN*UNDEMI/(UN+XNU)
1494 :           SIGF(1)=SIGMA0(1)*EPAI
1495 :           SIGF(2)=SIGMA0(2)*EPAI
1496 :           SIGF(3)=SIGMA0(4)*EPAI
1497 :           SIGF(4)=SIG0(4)+AUX*(DEPST(4)+XNU*DEPST(5))
1498 :           SIGF(5)=SIG0(5)+AUX*(DEPST(5)+XNU*DEPST(4))
1499 :           SIGF(6)=SIG0(6)+AUX1*DEPST(6)
1500 :           DEFP(1)=DDEFPT(1)
1501 :           DEFP(2)=DDEFPT(2)
1502 :           DEFP(3)=DDEFPT(4)*DEUX
1503 :           DEFP(4)=0.D0
1504 :           DEFP(5)=0.D0
1505 :           DEFP(6)=0.D0
1506 :           IF(MFR.EQ.9) THEN
1507 :             XK=1.2D0
1508 :             AUX2=EPAI*YOUN*UNDEMI/(UN+XNU)/XK
1509 :             SIGF(7)=SIG0(7)+AUX2*DEPST(7)
1510 :             SIGF(8)=SIG0(8)+AUX2*DEPST(8)
1511 :             DEFP(7)=0.D0
1512 :             DEFP(8)=0.D0
1513 :           ENDIF
1514 :       ENDIF
1515 : C
1516 :         IF(IIMPI.EQ.42) THEN
1517 :           WRITE(IOIMP,77051) (SIGF(I),I=1,NSTRS)
1518 : 77051     FORMAT('0  SIGF  '/8(1X,1PE12.5)/)
1519 : *
1520 :           WRITE(IOIMP,77052) (DEFP(I),I=1,NSTRS)
1521 : 77052     FORMAT('0  DEFP  '/8(1X,1PE12.5)/)
1522 :         ENDIF
1523 : C
1524 :  2021 CONTINUE
1525 : C
1526 :       IF(KERRE.EQ.0) GO TO 9999
1527 : C
1528 :       IF(JEBOUC.EQ.1.AND.IIMPI.EQ.1042) THEN
1529 :         IIMPI=42
1530 :         WRITE(IOIMP,70901) IB,IGAU
1531 : 70901   FORMAT(2X,'>>>>>>>>   UO2OTO  IB=',I7,2X,'IGAU=',I3/)
1532 :         GO TO 2020
1533 :       ENDIF
1534 : C
1535 : 9999  CONTINUE
1536 :       IIMPI=IIMPI0
1537 : 
1538 :       IF(KERRE.NE.0.AND.IIMPI.EQ.42) THEN
1539 :           WRITE(IOIMP,70902) IB,IGAU
1540 : 70902     FORMAT(2X,'SORTIE UO2OTO '////)
1541 :       ENDIF
1542 : C
1543 :       RETURN
1544 :       END
1545 :  
1546 :  
1547 :  
1548 :  
1549 :  
1550 :  
1551 :  
1552 :  
1553 :  
1554 :  
1555 :  

© Cast3M 2003 - All rights reserved.
Disclaimer