crack
C CRACK SOURCE CB215821 17/11/30 21:15:47 9639 .ITENRZ,ITENTE,ITETA,IRZ,SIGMA,DSIGMA,YUNG,XNU, .ALFAD2,DPELA2,PENTE2,IBAB,ICTD,KASTR, .PREC,RFSG,RFEP,RFPR,KERRE) C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C DIMENSION SIGEL(*),DSIGP(*) DIMENSION SIGTP(6),SIG0P(6),DSIGPP(6),DSIGMA(6),SIGEL0(6) C C INITIALISATION DES VARIABLES C GAMCIS=0.D0 F1ST=0.D0 F2ST=0.D0 C C SI ON N A PAS LE DROIT D ECOULER SELON LE CRITERE DE LA TRACTION C IF(KASTR.NE.2) GO TO 99 DO 199 I=1,6 DSIGMA(I)=DSIGP(I) 199 CONTINUE ICTD=1 GO TO 333 C C INITIALISATION C 99 R10=R1 R20=R2 R30=R3 TETAQ0=TETAQ ITRAC0=ITRAC ITETA0=ITETA IRZ0=IRZ DO 100 I=1,6 SIGEL0(I)=SIGEL(I) DSIGP0(I)=DSIGP(I) 100 CONTINUE UNIT=0.01745329252D0 LUNE=1 ICONCA=0 ITER=0 ICTD=0 ZER=0.D0 C 96 IND=0 IND1=0 IND2=0 IND3=0 JTRAC=ITRAC ITENS=0 ITENRZ=0 ITENTE=0 SIMER=0.D0 C C ROTATION DES AXES C 24 IF(ITER.LE.12) GO TO 48 WRITE(IOIMP,1002) ITER KERRE=640 RETURN C 48 ITER=ITER+1 IF(IIMPI.EQ.9) WRITE(IOIMP,7001) (SIGEL(I),I=1,6) IF(IIMPI.EQ.9) WRITE(IOIMP,7006) (DSIGP(I),I=1,6) IF(IIMPI.EQ.9) . WRITE(IOIMP,7000) ITRAC,ITENRZ,ITENTE,ITETA,IRZ,ITER C IF(ITRAC.GT.0) GO TO 1 WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) TETAQ=WW1(3) C 1 ANRUP=TETAQ*UNIT CO=COS(ANRUP) SII=SIN(ANRUP) CC=CO*CO SS=SII*SII CS=CO*SII C SIG0P(1)=WW1(1) SIG0P(2)=WW1(2) SIG0P(3)=SIGEL(3) SIG0P(4)=0.D0 SIG0P(5)=0.D0 SIG0P(6)=0.D0 C DSIGPP(3)=DSIGP(3) DSIGPP(5)=0.D0 DSIGPP(6)=0.D0 C IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 70 DO 2 I=1,6 2 CONTINUE C 70 DO 3 I=1,6 SIGTP(I)=SIG0P(I)+DSIGPP(I) 3 CONTINUE C IF(IIMPI.EQ.9) WRITE(IOIMP,7003) (SIG0P(I),I=1,6) IF(IIMPI.EQ.9) WRITE(IOIMP,7004) (DSIGPP(I),I=1,6) IF(IIMPI.EQ.9) WRITE(IOIMP,7005) (SIGTP(I),I=1,6) C CRIT3=SIGTP(3)-R3 C C UNMU=XNU/(1.D0-XNU) IF(CRIT3.GT.0.D0.AND.ITETA.NE.2) IND3=4 IND=IND1+IND2+IND3 IF(IIMPI.EQ.9) WRITE(IOIMP,7011) IND,IND1,IND2,IND3 GO TO(11,12,14,13,15,16,17),IND WRITE(IOIMP,1000)IND KERRE=640 RETURN C C*********************************************************************** C*************************** CAS D UNE SEULE FISSURE ******************* C*********************************************************************** C C FISSURE DANS LA DIRECTION (R) C 11 DSIGPP(1)=-SIG0P(1) DSIGPP(4)=-SIG0P(4) DSIGPP(6)=-SIG0P(6) DSIGPP(2)=DSIGPP(2)-SIGTP(1)*UNMU DSIGPP(3)=DSIGPP(3)-SIGTP(1)*UNMU SIMER=SIG0P(1)*UNMU R1=0.D0 ITENRZ=1 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 5 GO TO 5 C C FISSURE DANS LA DIRECTION (Z) C 12 DSIGPP(2)=-SIG0P(2) DSIGPP(4)=-SIG0P(4) DSIGPP(5)=-SIG0P(5) DSIGPP(1)=DSIGPP(1)-SIGTP(2)*UNMU DSIGPP(3)=DSIGPP(3)-SIGTP(2)*UNMU SIMER=SIG0P(2)*UNMU R2=0.D0 ITENRZ=1 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 5 GO TO 5 C C FISSURE DANS LA DIRECTION (@) C 13 DSIGPP(3)=-SIG0P(3) DSIGPP(5)=-SIG0P(5) DSIGPP(6)=-SIG0P(6) DSIGPP(1)=DSIGPP(1)-SIGTP(3)*UNMU DSIGPP(2)=DSIGPP(2)-SIGTP(3)*UNMU SIMER=SIG0P(3)*UNMU R3=0.D0 ITENTE=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 5 GO TO 5 C C*********************************************************************** C*************************** CAS DE DEUX FISSURES ********************** C*********************************************************************** C C DEUX FISSURES DANS LE PLAN (RZ) C 14 DSIGPP(1)=-SIG0P(1) DSIGPP(2)=-SIG0P(2) DSIGPP(3)=DSIGPP(3)-XNU*(SIGTP(1)+SIGTP(2)) SIMER=XNU*(SIG0P(1)+SIG0P(2)) R1=0.D0 R2=0.D0 ITENRZ=2 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 6 GO TO 6 C C DEUX FISSURES DANS LE PLAN (R@) C 15 DSIGPP(1)=-SIG0P(1) DSIGPP(3)=-SIG0P(3) DSIGPP(2)=DSIGPP(2)-XNU*(SIGTP(1)+SIGTP(3)) SIMER=XNU*(SIG0P(1)+SIG0P(3)) R1=0.D0 R3=0.D0 ITENRZ=1 ITENTE=1 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 6 GO TO 6 C C DEUX FISSURES DANS LE PLAN (Z@) C 16 DSIGPP(2)=-SIG0P(2) DSIGPP(3)=-SIG0P(3) DSIGPP(1)=DSIGPP(1)-XNU*(SIGTP(2)+SIGTP(3)) SIMER=XNU*(SIG0P(2)+SIG0P(3)) R2=0.D0 R3=0.D0 ITENRZ=1 ITENTE=1 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 6 GO TO 6 C C*********************************************************************** C***************************** CAS DE TROIS FISSURES ******************* C*********************************************************************** C 17 DSIGPP(1)=-SIG0P(1) DSIGPP(2)=-SIG0P(2) DSIGPP(3)=-SIG0P(3) R1=0.D0 R2=0.D0 R3=0.D0 ITENRZ=2 ITENTE=1 ITRAC=1 IF(IBAB.EQ.1.OR.ICTD.EQ.1) GO TO 6 DO 8 I=1,6 8 CONTINUE C 6 DSIGPP(4)=-SIG0P(4) DSIGPP(5)=-SIG0P(5) DSIGPP(6)=-SIG0P(6) C 5 DO 7 I=1,6 SIGTP(I)=SIG0P(I)+DSIGPP(I) 7 CONTINUE C IF(IIMPI.EQ.9) WRITE(IOIMP,7005) (SIGTP(I),I=1,6) C C LE RETOUR DANS LES AXES C WW1(1)=SIGTP(1) WW1(2)=SIGTP(2) WW1(3)=SIGTP(4) C C SIGEL(3)=SIGTP(3) SIGEL(5)=0.D0 SIGEL(6)=0.D0 C IF(ITENRZ.EQ.0.AND.JTRAC.EQ.0) TETAQ=0.D0 IF(IIMPI.EQ.9) . WRITE(IOIMP,7000) ITRAC,ITENRZ,ITENTE,ITETA,IRZ,ITER C IF(ITETA.EQ.3.AND.IRZ.EQ.1) ITETA=5 IF(ITETA.EQ.3.AND.IRZ.EQ.2) ITETA=6 IF(IIMPI.EQ.9) WRITE(IOIMP,7012) ITETA GO TO(21,22,23,33,25,26,23),ITETA WRITE(IOIMP,1001)ITETA KERRE=640 RETURN C C*********************************************************************** C*************************** FISSURATION EN (@) PUIS EN (RZ) *********** C*********************************************************************** C 21 IF(ITRAC.GT.0) GO TO 18 WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) F1ST=WW1(1) F2ST=WW1(2) SIG0P(1)=SIG0P(1)-SIMER SIG0P(2)=SIG0P(2)-SIMER DSIGPP(1)=DSIGPP(1)+SIMER DSIGPP(2)=DSIGPP(2)+SIMER C DO 19 I=1,6 DSIGMA(I)=DSIGPP(I) 19 CONTINUE C C RETOUR DANS LES AXES C C C WW1(1)=DSIGMA(1) WW1(2)=DSIGMA(2) WW1(3)=DSIGMA(4) C C . GAMMA,PREC,RFSG,RFEP,RFPR,KERRE) C C CORRECTION DES INCREMENTS DE CONTRAINTES C IF(IIMPI.EQ.9) WRITE(IOIMP,7001) (SIGEL(I),I=1,6) DO 20 I=1,6 SIGEL(I)=SIG0P(I)+DSIGPP(I) 20 CONTINUE C C RETOUR DANS LES AXES C WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) C C ITETA=ITETA+IRZ+3 IND1=0 IND2=0 IND3=0 IND=0 SIMER=0.D0 GO TO 24 C C*********************************************************************** C************************* FISSURATION EN (RZ) PUIS EN (@) ************* C*********************************************************************** C 22 GO TO(31,32,33),IND WRITE(IOIMP,1000)IND KERRE=640 RETURN C C****************** FISSURATION EN (R) PUIS EN (Z) ET (@) ************** C C CRIT3=SIGEL(3)-R3 IF(CRIT3.LE.0.D0) GO TO 205 C SIG0P(2)=SIG0P(2)-SIMER SIG0P(3)=SIG0P(3)-SIMER DSIGPP(2)=DSIGPP(2)+SIMER DSIGPP(3)=DSIGPP(3)+SIMER C IF(DSIGPP(2).EQ.0.D0) GO TO 28 GAMM1=(R2-SIG0P(2))/DSIGPP(2) IF(IIMPI.EQ.9) WRITE(IOIMP,7008) GAMM1 IF(GAMM1.LT.0.D0) GAMM1=0.D0 IF(GAMM1.GE.0.D0.AND.GAMM1.LT.1.D0) GO TO 29 28 GAMM1=100.D0 IF(IIMPI.EQ.9) WRITE(IOIMP,7008) GAMM2 IF(GAMM2.GE.1.D0) GAMM2=100.D0 IF(GAMM2.LT.0.D0) GAMM2=0.D0 C ITETA=1 DENOR=MIN(GAMM1,GAMM2) DENOR= MAX(DENOR,RFPR) DIF=ABS(GAMM1-GAMM2)/DENOR IF(DIF.LE.PREC) ITETA=3 GO TO(41,42,43),ITETA KERRE=640 RETURN C C FISSURATION EN (R) PUIS EN (@) C ITETA=2 GO TO 47 C C FISSURATION EN (R) PUIS EN (Z) C ITETA=2 GO TO 30 C C FISSURATION EN (R) PUIS EN (Z@) C ITETA=4 IRZ=3 GO TO 47 C C******************** FISSURATION EN (Z) PUIS EN (R) ET (@) ************ C C CRIT3=SIGEL(3)-R3 IF(CRIT3.LE.0.D0) GO TO 206 C SIG0P(1)=SIG0P(1)-SIMER SIG0P(3)=SIG0P(3)-SIMER DSIGPP(1)=DSIGPP(1)+SIMER DSIGPP(3)=DSIGPP(3)+SIMER C IF(DSIGPP(1).EQ.0.D0) GO TO 35 GAMM1=(R1-SIG0P(1))/DSIGPP(1) IF(IIMPI.EQ.9) WRITE(IOIMP,7008) GAMM1 IF(GAMM1.LT.0.D0) GAMM1=0.D0 IF(GAMM1.GE.0.D0.AND.GAMM1.LT.1.D0) GO TO 36 35 GAMM1=100.D0 IF(IIMPI.EQ.9) WRITE(IOIMP,7008) GAMM2 IF(GAMM2.GE.1.D0) GAMM2=100.D0 IF(GAMM2.LT.0.D0) GAMM2=0.D0 C ITETA=1 DENOR=MIN(GAMM1,GAMM2) DENOR= MAX(DENOR,RFPR) DIF=ABS(GAMM1-GAMM2)/DENOR IF(DIF.LE.PREC) ITETA=3 GO TO(51,52,53),ITETA WRITE(IOIMP,1001)ITETA KERRE=640 RETURN C C FISSURATION EN (Z) PUIS EN (@) C ITETA=3 GO TO 47 C C FISSURATION EN (Z) PUIS EN (R) C ITETA=3 GO TO 37 C C FISSURATION EN (Z) PUIS EN (R@) C ITETA=4 IRZ=3 GO TO 47 C C********************* FISSURATION EN (RZ) PUIS EN (@) ***************** C 33 CRIT3=SIGEL(3)-R3 IF(CRIT3.LE.0.D0) GO TO 23 SIG0P(3)=SIG0P(3)-SIMER DSIGPP(3)=DSIGPP(3)+SIMER C C C CORRECTION DES INCREMENTS DE CONTRAINTES C GO TO(61,62,63),IND WRITE(IOIMP,1000)IND KERRE=640 RETURN C C FISSURE EN (R) PUIS EN (@) C ITETA=2 GO TO 47 C C FISSURE EN (Z) PUIS EN (@) C ITETA=3 GO TO 47 C C FISSURE EN (RZ) PUIS EN (@) C 63 ITETA=4 C DO 39 I=1,6 SIGEL(I)=SIG0P(I)+DSIGPP(I) 39 CONTINUE C C RETOUR DANS LES AXES C WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) C C ITETA=ITETA+3 IND1=0 IND2=0 IND3=0 IND=0 JTRAC=ITRAC SIMER=0.D0 GO TO 24 C C*********************************************************************** C********************** FISSURATION EN (R@) PUIS EN (Z) **************** C*********************************************************************** C 205 SIG0P(2)=SIG0P(2)-SIMER DSIGPP(2)=DSIGPP(2)+SIMER IF(DSIGPP(2).EQ.0.D0) GO TO 23 30 DO 44 I=1,6 SIGEL(I)=SIG0P(I)+DSIGPP(I) 44 CONTINUE C C RETOUR DANS LES AXES C WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) C C ITETA=ITETA+2 IND1=0 IND2=0 IND3=0 IND=0 IRZ=3 JTRAC=ITRAC SIMER=0.D0 GO TO 24 C C*********************************************************************** C*********************** FISSURATION EN (Z@) PUIS EN (R) *************** C*********************************************************************** C 206 SIG0P(1)=SIG0P(1)-SIMER DSIGPP(1)=DSIGPP(1)+SIMER IF(DSIGPP(1).EQ.0.D0) GO TO 23 37 DO 46 I=1,6 SIGEL(I)=SIG0P(I)+DSIGPP(I) 46 CONTINUE C C RETOUR DANS LES AXES C WW1(1)=SIGEL(1) WW1(2)=SIGEL(2) WW1(3)=SIGEL(4) C C ITETA=ITETA+1 IND1=0 IND2=0 IND3=0 IND=0 IRZ=3 JTRAC=ITRAC SIMER=0.D0 GO TO 24 C C*********************************************************************** C****************************** PAS DE COUPLAGE ************************ C*********************************************************************** C 23 ITENS=ITENRZ+ITENTE DO 9 III=1,6 9 CONTINUE GO TO 300 C C*********************************************************************** C****************************** LES FISSURES SE FERMENT **************** C*********************************************************************** C 4 CONTINUE DO 10 III=1,6 10 CONTINUE C C*********************************************************************** C**** CALCUL DE LA QUANTITE DE CONTRAINTE A ECOULER AVEC LE CRITERE **** C* DE LA TRACTION AVANT D ARRIVER AU CRITERE DE DRUCKER PRAGER ECROUI * C*********************************************************************** C 300 IF(IBAB.EQ.1) GO TO 331 IF(ICTD.EQ.1) GO TO 332 C C RETOUR DANS LES AXES C C C DO 301 I=1,6 301 CONTINUE C C CALCUL DE GAMMA CISAILLEMENT C . PREC,RFSG,RFEP,RFPR) IF(IIMPI.EQ.9) WRITE(IOIMP,7014) (DSIGMA(I),I=1,6) IF(GAMCIS.GE.1.D0) GO TO 331 IF(GAMCIS.LT.0.D0) GAMCIS=0.D0 IF(GAMCIS.LT.RFPR*PREC) GAMCIS=0.D0 C C ON RECOMMENCE AVEC GAMCIS*DSIGP AU LIEU DE DSIGP C DO 302 I=1,6 SIGEL(I)=SIGEL0(I) DSIGP(I)=GAMCIS*DSIGP0(I) 302 CONTINUE R1=R10 R2=R20 R3=R30 TETAQ=TETAQ0 ITRAC=ITRAC0 ITETA=ITETA0 IRZ=IRZ0 ICTD=1 IF(GAMCIS.NE.0.D0) GO TO 96 ITENS=0 ITENRZ=0 ITENTE=0 GO TO 332 C C*********************************************************************** C**************************** LA SORTIE ******************************** C*********************************************************************** C 331 DO 303 I=1,6 DSIGMA(I)=0.D0 DSIGP(I)=0.D0 303 CONTINUE GO TO 333 C 332 DO 304 I=1,6 DSIGMA(I)=DSIGP0(I)*(1.D0-GAMCIS) DSIGP(I)=DSIGMA(I) 304 CONTINUE C .KERRE) IF(IIMPI.EQ.9) . ITENTE,ITENS IF(IIMPI.EQ.9) WRITE(IOIMP,7014) (DSIGMA(I),I=1,6) IF(IIMPI.EQ.9) WRITE(IOIMP,7001) (SIGEL(I),I=1,6) IF(IIMPI.EQ.9) WRITE(IOIMP,7006) (DSIGP(I),I=1,6) C 1000 FORMAT(1X,'ERREUR DANS CRACK DANS LA VALEUR DE IND =',I4) 1001 FORMAT(1X,'ERREUR DANS CRACK DANS LA VALEUR DE ITETA =',I4) 1002 FORMAT(1X,'ERREUR DANS CRACK PAS DE CONVERGENCE ITER =',I4) 7000 FORMAT(1X,'ITRAC =',I4,1X,'ITENRZ=',I4,1X,'ITENTE=',I4,/, . 1X,'ITETA =',I4,1X,'IRZ =',I4,1X,'ITER =',I4) 7001 FORMAT(1X,'SIGEL =',6(1X,1PD12.5)) 7002 FORMAT(1X,'SIGMAT=',6(1X,1PD12.5)) 7003 FORMAT(1X,'SIG0P =',6(1X,1PD12.5)) 7004 FORMAT(1X,'DSIGPP=',6(1X,1PD12.5)) 7005 FORMAT(1X,'SIGTP =',6(1X,1PD12.5)) 7006 FORMAT(1X,'DSIGP =',6(1X,1PD12.5)) 7007 FORMAT(1X,'GAMCIS=',1PD12.5,1X,'CRIT =',1PD12.5) 7008 FORMAT(1X,'GAMMA =',1PD12.5) 7009 FORMAT(1X,'CRIT =',1PD12.5,1X,'R1 =',1PD12.5, . 1X,'R2 =',1PD12.5,/, . 1X,'R3 =',1PD12.5,1X,'TETAQ =',1PD12.5,/, . 1X,'ICTD =',I4,1X,'ITRAC =',I4,1X,'ITENRZ=',I4, . 1X,'ITENTE=',I4,1X,'ITENS =',I4) 7011 FORMAT(1X,'IND =',I4,1X,'IND1 =',I4, . 1X,'IND2 =',I4,1X,'IND3 =',I4) 7012 FORMAT(1X,'ITETA =',I4) 7013 FORMAT(1X,'SIGMA =',6(1X,1PD12.5)) 7014 FORMAT(1X,'DSIGMA=',6(1X,1PD12.5)) C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales