Download uo2xx.eso

Back to the list

   1 : C UO2XX     SOURCE    STRU      07/07/12    21:15:06     5789           
   2 :       SUBROUTINE UO2XX(T0,TPOINT,FI0,FPOINT,PRECIS,PRECIZ,
   3 :      &            XMAT,NCOMAT,NSIMP,AAD,GS,WRUPT,LEBIL,XINVL,PENTE,BTR,
   4 :      &            YOUN,EPSPT,SIG0,EPSV0,VAR0,W,WMAX0,WREOU0,DX0,
   5 :      &            SMAX,XLTR,NFISSU,NVF,VF,MC,MM,FC0,NGAT,NC1,NCA,NDIM,
   6 :      &            NN,TAU,STOT,EPSVF,VARF,WF,DXF,WMAXF,WREOUF,
   7 :      &            TF,FIF,MCA,XXMIN,JCRIT,NCRIT,LERED,KERRE)
   8 : C----------------------------------------------------------------------
   9 : C            ECOULEMENT MODELE UO2 (OTTOSEN ET GATT_MONERIE)
  10 : C----------------------------------------------------------------------
  11 : C
  12 : C  ENTREES
  13 : C  -------
  14 : C T0/FI0       = TEMPERATURE/DENSITE DE FISSION AU DEB. DU SS PAS
  15 : C TPOINT       = VITESSE DE TEMPERATURE SUR LE PAS D INTEGRATION
  16 : C FPOINT       = VITESSE DE DENSITE DE FISSION SUR LE PAS D INTEGRATION
  17 : C PRECIS       = PRECISION POUR LA CONVERGENCE DU SCHEMA NUMERIQUE
  18 : C PRECIZ       = PRECISION POUR TESTS SUR CONTRAINTES
  19 : C XMAT(NCOMAT) = CARACTERISTIQUES THERMOMECANIQUES DU MATERIAU
  20 : C NSIMP        = POINTE SUR LA CARACTERISTIQUE FACULTATIVE 'SIMP' DE XMAT
  21 : C AAD          = COEFFICIENT INTERVENANT DANS LE CALCUL DE L INCREMENT
  22 : C                DE LA DEFORMATION DE DENSIFICATION
  23 : C GS(3)        = RESISTANCES AU CISAILLEMENT
  24 : C WRUPT(3)     = OUVERTURES CONDITIONNANT LA RUPTURE
  25 : C LEBIL(NC)    = COMPRESSION/TRACTION
  26 : C XINVL(3)     = PARAMETRES DE TAILLE
  27 : C PENTE(NC)    = PENTES DES CRITERES
  28 : C BTR/YOUN     = PARAMETRE DE FERMETURE/MODULE D YOUNG
  29 : C EPSPT(6)     = VITESSE DES DEFORM. TOTALES SUR LE PAS D INTEGRATION
  30 : C SIG0(6)      = CONTRAINTES         AU DEBUT DU SOUS PAS D INTEGRATION
  31 : C EPSV0(6)     = DEFORM. VISCOPLAST. AU DEBUT DU SOUS PAS D'INTEGRATION
  32 : C VAR0(NGAT)   = VAR. INT. SCAL. DE GATT_MONERIE    AU DEB. DU SS PAS
  33 : C W(3)/WMAX0(3)= OUVERTURES/ MAXIMALES DES FISSURES AU DEB. DU SS PAS
  34 : C WREOU0(3)    = LIMITES DE FERMETURE AU DEBUT DU SOUS PAS D'INTEGRATION
  35 : C DX0(NC)      = DEF. DE FISSURATION (OUV.) AU DEB. DU SS PAS
  36 : C SMAX(3)      = CONTR. CORRESPONDANT A WMAX0
  37 : C XLTR(3)      = LIMITES EN TRACTION POUR LA FISSURATION
  38 : C NFISSU       = NOMBRE DE FISSURES
  39 : C NVF          = NBR DE DIRECTIONS IMPOSEES POUVANT DEVENIR
  40 : C                DES DIRECTIONS DE FISSURATION
  41 : C MM(20)/MC    = TYPES/NBR DE CRIT DE FISS SUSCEPTIBLES D ETRE ATTEINTS
  42 : C FC0(20)      = CRIT. DE FISS. SUSCEPTIBLES D ETRE ATTEINTS
  43 : C NC1          = NC+1 AVEC NC(=3) NBR. TOTAL DE DIRECTIONS DE FISS.
  44 : C NDIM         = NCA+1 SI CP, NCA SINON
  45 : C NN(NC)       = NUMEROS DES DIRECTIONS DE FISS. OU UN CRIT. EST ATTEINT
  46 : C TAU          = UN NOUVEAU CRIT EST-IL VIOLE POUR LES RESULTATS A TAU
  47 : C STOT(6)      = CONTRAINTES A LA FIN DU SOUS PAS D INTEGRATION
  48 : C EPSVF(6)     = DEFORM. VISCOPLAST. A LA FIN DU SOUS PAS D'INTEGRATION
  49 : C VARF(NGAT)   = VAR. INT. SCAL. DE GATT_MONERIE     A LA FIN DU SS PAS
  50 : C WF(3)/WMAXF(3)= OUVERTURES/ MAXIMALES DES FISSURES A LA FIN DU SS PAS
  51 : C
  52 : C  SORTIES
  53 : C  -------
  54 : C VF(3,3)      = VECTEURS DES DIRECTIONS DE FISSURATION
  55 : C STOT(6)      = CONTRAINTES A LA FIN DU NOUVEAU SOUS PAS D INTEGRATION
  56 : C                (LE CAS ECHEANT)/ UN DES NOUVEAUX CRITERES SOIT NUL
  57 : C EPSVF(6)     = DEFORM. VISCOPLAST.        A LA FIN DU NOUVEAU SS PAS
  58 : C VARF(NGAT)   = VAR. INT. SCAL.            A LA FIN DU NOUVEAU SS PAS
  59 : C WF(3)/WMAXF(3)= OUV./ MAXIMALES DES FISS. A LA FIN DU NOUVEAU SS PAS
  60 : C TF/FIF       = TEMPER./DENSITE DE FISSION A LA FIN DU NOUVEAU SS PAS
  61 : C MCA          = NBR. DE CRIT. VIOLES AVEC STOT EN ENTREE PARMI LES
  62 : C                NOUVEAUX CRITERES SUSCEPTIBLES D ETRE ATTEINTS
  63 : C XXMIN        = UN DES NOUVEAUX CRIT. EST ATTEINT POUR XXMIN*TAU
  64 : C JCRIT(20)    = TYPE DES NOUVELLES NON LINEARITES RENCONTREES
  65 : C                POUR LA FISSURATION
  66 : C NCRIT        = NOMBRE DE NOUVELLES NON LINEARITES (FISSURATION)
  67 : C LERED        = 1 NOUVEAUX CRIT. INCOMPATIBLES POUR SIG0 ET STOT INITIAL
  68 : C                0 OK
  69 : C KERRE        = GESTION DES ERREURS
  70 : C----------------------------------------------------------------------
  71 : C
  72 :       IMPLICIT INTEGER(I-N)
  73 :       IMPLICIT REAL*8(A-H,O-Z)
  74 : -INC CCOPTIO
  75 : C
  76 :       DIMENSION EPSPT(*),SIG0(*),EPSV0(*),VAR0(*),DX0(*)
  77 :       DIMENSION W(*),WMAX0(*),WREOU0(*),SMAX(*),XLTR(*)
  78 :       DIMENSION MM(*),NN(*)
  79 :       DIMENSION FC0(*)
  80 :       DIMENSION STOT(*),VF(3,*),EPSVF(*),VARF(*),DXF(*)
  81 :       DIMENSION WF(*),WMAXF(*),WREOUF(*),JCRIT(*)
  82 :       DIMENSION XMAT(*),GS(*),WRUPT(*)
  83 :       DIMENSION LEBIL(*),XINVL(*),PENTE(*)
  84 : C
  85 :       DIMENSION DSIGT(6),DXVV(3),XXF(3)
  86 :       DIMENSION JFIS(3),JFIS2(3)
  87 :       DIMENSION JCDUM(1)
  88 :       DIMENSION FC2(20),FCT(20),MMA(20)
  89 : C
  90 :       DATA ITMAX/350/
  91 : C
  92 : C     INITIALISATIONS
  93 : C
  94 :       KERRE=0
  95 :       LERED=0
  96 :       XXFIS=1.D4
  97 :       XXMIN=1.D0
  98 :       NCRIT=0
  99 :       IFLAG0=0
  99 :       CALL IANUL(JCRIT,20)
 100 : C
 100 :       CALL ZDANUL(DXVV,3)
 101 :       IF (NCA.NE.0) THEN
 102 :         DO IJ=1,NCA
 103 :            JJ=NN(IJ)
 104 :            DXVV(JJ)=DXF(JJ)-DX0(JJ)
 105 :         ENDDO
 106 :       ENDIF
 107 : C
 108 :       DO I=1,6
 109 :         DSIGT(I)= STOT(I)-SIG0(I)
 110 :       ENDDO
 111 : C
 112 : C
 113 : C  Viole-t-on un nouveau crit. avec contr. a la fin du ss. pas ?
 114 : C
 114 :       CALL UO2CE(MC,MM,STOT,DXVV,W,WMAXF,SMAX,WRUPT,XLTR,XINVL,
 115 :      &       BTR,NFISSU,NVF,FCT,VF,YOUN,PRECIZ,JFIS,KERRE)
 116 :       IF(KERRE.NE.0) RETURN
 117 : C
 118 : C
 119 :       MCA=0
 120 :       DO IC=1,MC
 121 :          JC=MM(IC)
 122 : C
 123 :          IF(IIMPI.EQ.42) THEN
 124 :            WRITE(IOIMP,30446) IC,JC,FCT(JC)
 125 : 30446      FORMAT(/2X,' UO2XX - IC=',I4,2X,' JC=',I4,2X,
 126 :      &                ' FCT(JC)=',1PE12.5/)
 127 :          ENDIF
 128 : C
 129 :          IF(FCT(JC).GT.0.D0)THEN
 130 :            MCA=MCA+1
 131 :            MMA(MCA)=JC
 132 :          ELSE IF(ABS(FCT(JC)).LE.PRECIZ)THEN
 133 :            MCA=MCA+1
 134 :            MMA(MCA)=JC
 135 :            IF(FCT(JC).LT.0.D0) FCT(JC)=0.D0
 136 :          ENDIF
 137 :       ENDDO
 138 : C
 139 : C
 140 :       IF(IIMPI.EQ.42) THEN
 141 :           WRITE(IOIMP,50446) MCA
 142 : 50446     FORMAT(/2X,' DANS UO2XX - MCA =',I4/)
 143 :           WRITE(IOIMP,40446) (MMA(I),I=1,MCA)
 144 : 40446     FORMAT(/2X,' UO2XX - MMA =',5I4/)
 145 :       ENDIF
 146 : C
 147 : C
 148 :       IF(MCA.NE.0) THEN
 149 : C
 150 : C     FAUT-IL APPELER OTTOXF ?
 151 : C
 152 :          LAPPEL=0
 153 :          DO IC=1,MCA
 154 :             JC=MMA(IC)
 155 : C
 156 :             IF(JC.GE.1.AND.JC.LE.3) THEN
 157 : C
 158 :               IF(FC0(JC).GT.0.D0.AND.FC0(JC).LT.PRECIZ) THEN
 159 :                  XXMIN=0.D0
 160 :                  JCRIT(1)=JC
 161 :                  NCRIT=1
 162 :                  GO TO 300
 163 :               ENDIF
 164 :               IF(JFIS(JC).GT.1) LAPPEL=1
 165 : C
 166 :             ENDIF
 167 :          ENDDO
 168 : C
 169 : C
 170 :          DO IC=1,MCA
 171 :             JC=MMA(IC)
 172 :             IF(FC0(JC)*FCT(JC).GT.0.D0) THEN
 173 :               IF(IIMPI.EQ.42) THEN
 174 :                 PRINT *,'##### UO2XX CRITERES INCOMPATIBLES JC = ',JC
 175 :                 PRINT *,' FC0 = ',FC0(JC), ' FCT = ', FCT(JC)
 176 :               ENDIF
 177 :               LERED=1
 178 :               RETURN
 179 :             ENDIF
 180 :          ENDDO
 181 : C
 182 : C    APPEL A OTTOXF
 183 : C
 184 :          IF(LAPPEL.EQ.1) THEN
 184 :             CALL OTTOXF(SIG0,DSIGT,XINVL,XLTR,
 185 :      &                  NFISSU,NVF,XXF,PRECIZ,KERRE)
 186 :             IF(KERRE.NE.0) RETURN
 187 : C
 188 :             IF(IIMPI.EQ.42) THEN
 189 :                WRITE(IOIMP,44556) (XXF(I),I=1,3)
 190 : 44556          FORMAT(/2X,' APRES OTTOXF : XXF ',3(1X,1PE12.5)/)
 191 :             ENDIF
 192 : C
 193 : C
 194 :             IF(XXF(2).EQ.1.D4.AND.XXF(3).EQ.1.D4) THEN
 195 :               LAPPEL=0
 196 :               GO TO 50
 197 :             ENDIF
 198 : C
 199 : C
 200 :             IF(JFIS(2).GT.1) THEN
 201 :               I1=1
 202 :               IF(JFIS(2).EQ.2) I1=2
 203 :               DO I=I1,3
 204 :                 IF(XXF(I).GT.0.D0) THEN
 205 :                    XXFIS=XXF(I)
 206 :                    GO TO 50
 207 :                 ENDIF
 208 :               ENDDO
 209 :               IF(IIMPI.EQ.42) THEN
 210 :                 WRITE(IOIMP,77453)
 211 : 77453           FORMAT(2X,'####  UO2XX - PAS DE RACINE POSITIVE  ####'/)
 212 :               ENDIF
 213 : C****             KERRE=70
 214 : C****             RETURN
 215 : C  ON SE DONNE UNE DERNIERE CHANCE
 216 : C
 217 :               LAPPEL=0
 218 :             ENDIF
 219 : C
 220 :   50        CONTINUE
 221 :          ENDIF
 222 : C
 223 : C
 224 :          DO IC=1,MCA
 225 :             JC=MMA(IC)
 226 :             F1=FC0(JC)
 227 :             F2=FCT(JC)
 228 :             IF(IIMPI.EQ.42) THEN
 229 :                PRINT *,' IC=',IC
 230 :                PRINT *,' JC=',JC
 231 :                PRINT *,' FC0=',FC0(JC)
 232 :                PRINT *,' FCT=',FCT(JC)
 233 :             ENDIF
 234 : C
 235 :             XXDEP=0.D0
 236 : C
 237 :             XX1=XXDEP
 238 :             XX2=1.D0
 239 :             XX= XX2 - F2*(XX2-XX1)/(F2-F1)
 240 : C
 241 :             IF(IIMPI.EQ.42) THEN
 242 :                PRINT *,' UO2XX - ESTIMATION SECANTE  XX = ',XX
 243 :                PRINT *,'JC=',JC,'  JFIS(JC)=',JFIS(JC)
 244 :             ENDIF
 245 : C
 246 : C
 247 :             IF(JC.GE.1.AND.JC.LE.3.AND.LAPPEL.EQ.1) THEN
 248 :                IF(JFIS(JC).GE.2) THEN
 249 : C
 250 :                  IF(IIMPI.EQ.42) THEN
 251 :                     PRINT *,'VALEUR CALCULEE XX = ',XXFIS
 252 :                  ENDIF
 253 : C
 254 : C
 255 :                  IF(XX.LE.1.D0.AND.XXFIS.LE.1.D0) THEN
 256 :                     XX=XXFIS
 257 :                     GO TO 75
 258 :                  ELSE
 259 :                     LAPPEL=0
 260 :                  ENDIF
 261 : C
 262 :                ENDIF
 263 :             ENDIF
 264 : C
 265 : C
 266 :             IF(IIMPI.EQ.42) THEN
 267 :                PRINT *,'PREMIERE ESTIMATION XX  = ',XX
 268 :             ENDIF
 269 : C
 270 : C
 271 : C       ITERATIONS
 272 : C
 273 :   75        CONTINUE
 274 :             ITER=0
 275 : C
 276 :   100       CONTINUE
 277 :             ITER=ITER+1
 278 : C
 279 :             IF(ITER.GT.ITMAX) THEN
 280 :               PRINT *,' UO2XX - NBR D ITERATIONS ',ITMAX
 281 :               KERRE=1
 282 :               RETURN
 283 :             ENDIF
 284 : C
 285 :             TAUESS=XX*TAU
 286 : C
 286 :             CALL UO2DCN(IFLAG0,T0,TPOINT,FI0,FPOINT,PRECIS,PRECIZ,XMAT,
 287 :      &                  NCOMAT,NSIMP,AAD,BTR,GS,WRUPT,LEBIL,XINVL,PENTE,
 288 :      &                  EPSPT,SIG0,EPSV0,VAR0,W,WMAX0,WREOU0,DX0,
 289 :      &                  NGAT,NC1,NCA,NDIM,NN,TAUESS,TAUNEX,STOT,EPSVF,
 290 :      &                  VARF,WF,DXF,WMAXF,WREOUF,TF,FIF,KERRE)
 291 : C
 291 :             CALL ZDANUL(DXVV,3)
 292 :             IF (NCA.NE.0) THEN
 293 :               DO IJ=1,NCA
 294 :                  JJ=NN(IJ)
 295 :                  DXVV(JJ)=DXF(JJ)-DX0(JJ)
 296 :               ENDDO
 297 :             ENDIF
 298 : C
 299 : C
 300 :             JCDUM(1)=JC
 300 :             CALL UO2CE(1,JCDUM,STOT,DXVV,W,WMAXF,SMAX,WRUPT,XLTR,XINVL,
 301 :      &                 BTR,NFISSU,NVF,FC2,VF,YOUN,PRECIZ,JFIS2,KERRE)
 302 :             IF(KERRE.NE.0) RETURN
 303 : C
 304 :             FF=FC2(JC)
 305 :             IF(ABS(FF).LT.PRECIZ) GO TO 200
 306 : C
 307 :             IF(IIMPI.EQ.42) THEN
 308 :                ZOB1 = F1
 309 :                ZOB2 = F2
 310 :             ENDIF
 311 : C
 312 :             IF(FF*F2.GE.0.D0) THEN
 313 :                XX2=XX
 314 :                F2=FF
 315 :             ELSE
 316 :                XX1=XX
 317 :                F1=FF
 318 :             ENDIF
 319 : C
 320 :             XX= XX2 - F2*(XX2-XX1)/(F2-F1)
 321 : C
 322 :             IF(IIMPI.EQ.42) THEN
 323 :               WRITE(IOIMP,75461) ITER,ZOB1,ZOB2,XX
 324 : 75461         FORMAT( 2X, 'I=',I3,2X,'F1=',1PE12.5,2X,
 325 :      &              'F2=',1PE12.5,2X,'XX=',1PE12.5)
 326 :             ENDIF
 327 : C
 328 :             GO TO 100
 329 : C
 330 :   200       CONTINUE
 331 : C
 332 :             IF(XX.LT.XXMIN) THEN
 333 :               XXMIN=XX
 334 :             ENDIF
 335 : C
 336 :          ENDDO
 337 : C
 338 : C
 339 : C
 340 :       IF(IIMPI.EQ.42) THEN
 341 :          WRITE(IOIMP,73361) XXMIN
 342 : 73361    FORMAT( 2X, ' UO2XX APRES BOUCLE - XXMIN= ',1PE12.5/)
 343 :       ENDIF
 344 : C
 345 : C
 346 : C  Maj et recherche des directions / on est pile sur un nouveau crit.
 347 : C
 348 :          TAUESS=XXMIN*TAU
 349 : C
 349 :          CALL UO2DCN(IFLAG0,T0,TPOINT,FI0,FPOINT,PRECIS,PRECIZ,XMAT,
 350 :      &               NCOMAT,NSIMP,AAD,BTR,GS,WRUPT,LEBIL,XINVL,PENTE,
 351 :      &               EPSPT,SIG0,EPSV0,VAR0,W,WMAX0,WREOU0,DX0,
 352 :      &               NGAT,NC1,NCA,NDIM,NN,TAUESS,TAUNEX,STOT,EPSVF,
 353 :      &               VARF,WF,DXF,WMAXF,WREOUF,TF,FIF,KERRE)
 354 : C
 354 :          CALL ZDANUL(DXVV,3)
 355 :          IF (NCA.NE.0) THEN
 356 :            DO IJ=1,NCA
 357 :               JJ=NN(IJ)
 358 :              DXVV(JJ)=DXF(JJ)-DX0(JJ)
 359 :            ENDDO
 360 :          ENDIF
 361 : C
 361 :          CALL UO2CE(MCA,MMA,STOT,DXVV,W,WMAXF,SMAX,WRUPT,XLTR,XINVL,
 362 :      &              BTR,NFISSU,NVF,FC2,VF,YOUN,PRECIZ,JFIS2,KERRE)
 363 :          IF(KERRE.NE.0) RETURN
 364 : C
 365 : C
 366 :          DO IC=1,MCA
 367 :             JC=MMA(IC)
 368 : C
 369 : C           Test supplementaire
 370 : C
 371 :             IF(FC2(JC).GT.PRECIZ) THEN
 372 :               PRINT *,'######### UO2XX CRITERE INCOHERENT JC = ',JC
 373 :               PRINT *,' FC2 = ',FC2(JC), ' PRECIZ=',PRECIZ
 374 :               KERRE=2
 375 :               RETURN
 376 :             ENDIF
 377 : C
 378 :             IF(ABS(FC2(JC)).LT.PRECIZ) THEN
 379 :               NCRIT=NCRIT+1
 380 :               JCRIT(NCRIT)=JC
 381 :             ENDIF
 382 :          ENDDO
 383 : C
 384 :   300    CONTINUE
 385 : C
 386 :       ENDIF
 387 : C
 388 : C
 389 :       IF(IIMPI.EQ.42) THEN
 390 :          WRITE(IOIMP,77000) NCRIT,(JCRIT(I),I=1,NCRIT)
 391 : 77000    FORMAT( 2X, ' UO2XX - NCRIT =',I3,4X,'JCRIT = ',15I3/)
 392 :          WRITE(IOIMP,77001) XXMIN
 393 : 77001    FORMAT( 2X, ' UO2XX - XXMIN= ',1PE12.5/)
 394 :       ENDIF
 395 : C
 396 :       RETURN
 397 :       END
 398 :  
 399 :  
 400 :  
 401 :  
 402 :  
 403 :  

© Cast3M 2003 - All rights reserved.
Disclaimer