behav1
C BEHAV1 SOURCE CB215821 16/04/21 21:15:17 8920 & SIG1,SIG2,IFIS,SIGF,DSIGT,NSTRS,IFOUB,DEP,SIGRV,SIGP, & BETJEF,VISCO,NECH0,NECH1) C C ================================================================== C C MODELE DE PLASTICITE EN TRAITEMENT POST PIC C Un seul critere de traction: Rankine C C ================================================================== C CE SOUS-PROGRAMME EST APPELE DANS "BONE". C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION V1(4),AC(4),SIGE(4),SIGP(4),SIGR(4),DSTRN(4) DIMENSION AI(4,4),AH(4,4) * SEGMENT BETJEF & TCON,DPSTF1,DPSTF2,TETA,PDT,TP0 INTEGER ICT,ICC,IMOD,IVIS,ITR, & ISIM,IBB,IGAU,IZON ENDSEGMENT * SEGMENT VISCO REAL*8 DPSTV1,DPSTV2,SIGV1,SIGV2,ENDV ENDSEGMENT SEGMENT NECH0 ENDSEGMENT SEGMENT NECH1 REAL*8 ENDL ENDSEGMENT C * COMMON /DBETJEF/AA,BETA,COLI,PALF,YOUN,XNU,GFC,GFT,CAR,ETA,TDEF, * & TCON,DPSTF1,DPSTF2,TETA,PDT,ICT,ICC,IMOD,IVIS,ITR, * & ISIM,IBB,IGAU,IZON C C IAPEX=0 PRB=1.D-10 PRB2=1.D-6 ITER=1 ITANG=0 IBROY=0 CRIMAX=0.D0 SEQ = 0.D0 SEQ1 = 0.D0 C DO 10 I=1,NSTRS SIGE(I)=SIGF(I) 10 CONTINUE C C DO 11 I=1,NSTRS C DO 11 J=1,NSTRS C D(I,J)=0.D0 C 11 CONTINUE C IF (IMOD.EQ.1.OR.IMOD.EQ.3) THEN AD=YOUN/(1.D0-XNU*XNU) D(1,1)=AD D(2,2)=D(1,1) D(3,3)=AD*(1.D0-XNU)/2.D0 D(1,2)=AD*XNU D(2,1)=D(1,2) ENDIF C IF (IMOD.EQ.2.OR.IMOD.EQ.4) THEN ADD=YOUN/((1.D0+XNU)*(1.D0-2.D0*XNU)) D(1,1)=ADD*(1.D0-XNU) D(2,2)=D(1,1) D(3,3)=D(1,1) D(1,2)=ADD*XNU D(2,1)=D(1,2) D(1,3)=D(1,2) D(2,3)=D(1,2) D(3,1)=D(1,2) D(3,2)=D(1,2) D(4,4)=0.5*ADD*(1.D0-2.D0*XNU) ENDIF C C ************ Le point est fissure pour 1ere fois *********** C IF (IFIS.EQ.0) THEN DEPS1=0.D0 SIG1=Ft IF (V1(1).GT.Ft) THEN IFIS=1 ENDIF ENDIF IF (IPLA.EQ.0) THEN DEPS2=0.D0 ENDIF C 8 CONTINUE C DO 4 I=1,NSTRS SIGF(I)=SIGE(I) 4 CONTINUE C DK=DEPS1 DLAM0=0.D0 FCRI0=V1(1)-SIG1 CRIMAX=ABS(100.D0*FCRI0) C IF (FCRI0.LT.0.D0) THEN DO 45 I=1,NSTRS DO 45 J=1,NSTRS DEP(I,J)=D(I,J) 45 CONTINUE GOTO 100 ENDIF C C ************ Traitement du point deja fissure ******************** C 9 CONTINUE PI=4.D0*ATAN(1.D0) PHIC=V1(4)*(PI/180.D0) COSA=COS(PHIC) SINA=SIN(PHIC) C------------------------------------------------------------------- IF (IMOD.EQ.1.OR.IMOD.EQ.3) THEN DO 12 I=1,NSTRS DO 12 J=1,NSTRS P1(I,J)=0.D0 12 CONTINUE P1(1,1)=1.D0/2.D0 P1(1,2)=-1.D0/2.D0 P1(2,1)=-1.D0/2.D0 P1(2,2)=1.D0/2.D0 P1(3,3)=2.D0 ENDIF C------------------------------------------------------------------- IF (IMOD.EQ.2.OR.IMOD.EQ.4) THEN DO 13 I=1,NSTRS DO 13 J=1,NSTRS P1(I,J)=0.D0 13 CONTINUE P1(1,1)=1.D0/2.D0 P1(1,2)=-1.D0/2.D0 P1(2,1)=-1.D0/2.D0 P1(2,2)=1.D0/2.D0 P1(4,4)=2.D0 ENDIF C------------------------------------------------------------------- DO 20 I=1,NSTRS AC(I)=0.D0 DO 20 J=1,NSTRS 20 CONTINUE C FDF=0.D0 DO 30 J=1,NSTRS 30 CONTINUE C--------------- Determination du parametre d'ecrouissage ---------- C IF(IVIS.LE.2) THEN ELSE ENDIF C C------------------------------------------------------------------- DJAC0=-(PAEC+FDF) C C ************ Debut des iterations internes *************** C 40 CONTINUE C C *************** Determination de DK ********************* C DLAM1=-FCRI0/DJAC0+DLAM0 DK=DEPS1+DLAM1 C IF (DLAM1.LT.0.D0) THEN C WRITE(*,*)'Dans BEHAV1, DLAMDA est negatif:',DLAM1 C WRITE(*,*)'A l iteration :',ITER C ENDIF C C--------------- Estimation contrainte quivalente ---------- C IF(IVIS.LE.2) THEN ELSE ENDIF C C ************** Determination de DPHI ********************* C IF (IMOD.EQ.1.OR.IMOD.EQ.3) THEN AD1=YOUN/(1.D0-XNU) TO=SIGF(3) ENDIF IF (IMOD.EQ.2.OR.IMOD.EQ.4) THEN AD1=YOUN/((1.D0+XNU)*(1.D0-2.D0*XNU)) TO=SIGF(4) ENDIF C DPHI=SEQ1-0.5*(SIGE(1)+SIGE(2))+0.5*AD1*DLAM1 C IF (ITER.EQ.1) THEN C DPHI=0.25*(SIGF(1)-SIGF(2))*(SIGF(1)-SIGF(2)) C DPHI=DPHI+TO*TO C DPHI=SQRT(DPHI) C ENDIF IF (DPHI.LT.0.D0) THEN C WRITE(*,*)'ATTENTION DPHI NEGATIF' C WRITE(*,*)'DPHI=',DPHI ENDIF C C--------------- Cas de l'apex ----------------------------- C IF (ABS(DPHI).LE.10E-10) THEN IAPEX=1 C WRITE(*,*)'IAPEX ds BEHAV1 =',IAPEX C WRITE(*,*)'Dans l element',IBB C WRITE(*,*)'et au point d intégration',IGAU DO 50 I=1,NSTRS DO 50 J=1,NSTRS AI(I,J)=0.D0 50 CONTINUE AI(1,1)=0.5 AI(1,2)=0.5 AI(2,1)=AI(1,2) AI(2,2)=AI(1,1) IF (IMOD.EQ.1.OR.IMOD.EQ.3) AI(3,3)=0.D0 IF (IMOD.EQ.2.OR.IMOD.EQ.4) AI(3,3)=1.D0 GOTO 75 ENDIF C C ************** Mise a jour des contraintes *************** C C ---------------- calcul de la matrice A ------------------ C DO 60 I=1,NSTRS DO 60 J=1,NSTRS A(I,J)=0.D0 60 CONTINUE C DG=YOUN/2.D0/(1.D0+XNU) C IF (IMOD.EQ.1.OR.IMOD.EQ.3) THEN A(1,1)=1.D0+(DLAM1*DG)/2.D0/DPHI A(2,2)=A(1,1) A(1,2)=-(A(1,1)-1.D0) A(2,1)=A(1,2) A(3,3)=1.D0+(DLAM1*DG)/DPHI ELSE A(1,1)=1.D0+(DLAM1*DG)/2.D0/DPHI A(2,2)=A(1,1) A(1,2)=-(A(1,1)-1.D0) A(2,1)=A(1,2) A(3,3)=1.D0 A(4,4)=1.D0+(DLAM1*DG)/DPHI ENDIF C C -------------- invertion de la matrice A ----------------- C DO 70 I=1,NSTRS DO 70 J=1,NSTRS AI(I,J)=A(I,J) 70 CONTINUE IF (ISING.EQ.1) THEN WRITE(*,*)'MATRICE AI singuliere ds BEHAV1' ENDIF C C -------------- mise a jour des contraintes ------------ C 75 CONTINUE IF (IMOD.EQ.1.OR.IMOD.EQ.3) THEN VEC1(1)=AD1 VEC1(2)=AD1 VEC1(3)=0.D0 VEC1(4)=0.D0 ENDIF IF (IMOD.EQ.2.OR.IMOD.EQ.4) THEN VEC1(1)=AD1 VEC1(2)=AD1 VEC1(3)=AD1*2.D0*XNU VEC1(4)=0.D0 ENDIF C DO 80 I=1,NSTRS DEPSI(I)=SIGE(I)-0.5*DLAM1*VEC1(I) 80 CONTINUE C DO 90 I=1,NSTRS SIGF(I)=0.0D+00 DO 90 J=1,NSTRS SIGF(I)=SIGF(I)+AI(I,J)*DEPSI(J) 90 CONTINUE C C ******** Verification du critere **************** C FCRI1=V1(1)-SEQ1 C IF (IBROY.EQ.0.AND.ABS(FCRI1).GE.CRIMAX) THEN C WRITE(*,*)'****************************************' C WRITE(*,*)'LE RESIDU DIVERGE AVEC BROYDEN' C WRITE(*,*)'on passe donc a la secante' C WRITE(*,*)'Dans l element',IBB C WRITE(*,*)'et au point d intégration',IGAU C WRITE(*,*)'CRIMAX=',CRIMAX C WRITE(*,*)'****************************************' ITER=ITR ENDIF C C ******* Compteur sur la methode de resolution **** C IF (IBROY.EQ.0.AND.ITER.EQ.ITR) THEN IBROY=1 ITANG=1 ITER=1 IAPEX=0 GOTO 8 ENDIF C C ******* non convergence ************************** C IF (ABS(FCRI1).GT.PRB.AND.ITER.LT.ITR) THEN IF (IBROY.EQ.0) THEN DJAC1=(FCRI0-FCRI1)/(DLAM0-DLAM1) DLAM0=DLAM1 DJAC0=DJAC1 FCRI0=FCRI1 ITER=ITER+1 IF (ITER.GE.(ITR-1)) THEN C WRITE(*,*)'***********************' C WRITE(*,*)'BROYDEN n a pas aboutit' C WRITE(*,*)'Dans l element',IBB C WRITE(*,*)'et au point d intégration',IGAU C WRITE(*,*)'ITER=',ITER C WRITE(*,*)'FCRI=',FCRI1 C WRITE(*,*)'***********************' ENDIF GOTO 40 ENDIF IF (IBROY.EQ.1.AND.ITANG.EQ.1) THEN DLAM0=DLAM1 FCRI0=FCRI1 ITER=ITER+1 IF (ITER.GE.(ITR-5)) THEN WRITE(*,*)'ITER=',ITER WRITE(*,*)'FCRI=',FCRI1 ENDIF GOTO 9 ENDIF ENDIF IF (ITER.GE.ITR.AND.ABS(FCRI1).GT.PRB2) THEN WRITE(*,*)'NON CONVERGENCE INTERNE dans BEHAV1' WRITE(*,*)'FCRI=',FCRI1 WRITE(*,*)'Dans l element',IBB WRITE(*,*)'et au point d intégration',IGAU WRITE(*,*)'IPLA=',IPLA WRITE(*,*)'IFIS=',IFIS C STOP ENDIF C C ************* Calcul de la DEP **************** C IF (IAPEX.EQ.0) THEN ELSE C WRITE(*,*)'ELAS',IAPEX DO 95 I=1,NSTRS DO 95 J=1,NSTRS AH(I,J)=0.D0 DO 95 K=1,NSTRS AH(I,J)=AH(I,J)+AI(I,K)*D(K,J) 95 CONTINUE ENDIF IAPEX=0 CRIMAX=0.D0 C C *********************************************** C IF (DK.LT.0.D0) THEN WRITE(*,*)'Dans BEHAV1, DLAMDA est negatif:',DLAM1 WRITE(*,*)'A l iteration :',ITER C STOP ENDIF DEPS1=DK SIG1=V1(1) IF (V1(1).LT.0.D0) V1(1)=0.D0 IF(IVIS.LE.2) THEN ELSE ENDIF C ********************** CALCUL VISCOPLASTIQUE *********************** IF (IVIS.EQ.1) THEN & SIGP,SIGRV,DSTRN,D,BETJEF,VISCO) ENDIF C ******************************************************************** 100 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales