C INCRE1 SOURCE PV 11/03/07 21:16:56 6885 SUBROUTINE INCRE1(DT,SIG,EPSV,VAR,EPSVPT,VARPT,XMAT,NSTRS0, & NVARI,INPLAS,NCOMAT,MFR,PHI1,PHITAU,TTAU) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION SIG(*),EPSV(*),VAR(*),XMAT(*),EPSVPT(*),VARPT(*) DIMENSION SS(6),EPLU(6),EMIN(6),EPSCRP(6) DIMENSION SIG0(6),EPSV0(6),EPS0(6),EPS0V(6) C _________________________________________________________________ C C THIS ROUTINE CALCULATES INCREMENTAL STRAINS & INTERNAL VARIABLES C _________________________________________________________________ C C STEP-1 : EXTRACT EPLUS , EMINUS & EPSCRP C ---------------------------------------- IF (MFR.EQ.5) THEN NSTRS=6 SIG0(1)=SIG(1) SIG0(2)=SIG(2) SIG0(3)=0.D0 SIG0(4)=SIG(3) SIG0(5)=SIG(4) SIG0(6)=SIG(5) EPSV0(1)=EPSV(1) EPSV0(2)=EPSV(2) EPSV0(3)=0.D0 EPSV0(4)=EPSV(3) EPSV0(5)=EPSV(4) EPSV0(6)=EPSV(5) ELSE NSTRS=NSTRS0 DO 10 I=1,NSTRS SIG0(I)=SIG(I) EPSV0(I)=EPSV(I) 10 CONTINUE ENDIF C IF((INPLAS.GE.19.AND.INPLAS.LE.23).OR.INPLAS.EQ.61) THEN DO 20 I=1,NSTRS EPLU(I)=VAR(I) EMIN(I)=VAR(NSTRS+I) 20 CONTINUE EEFF =VAR(2*NSTRS+1) LL =nint(VAR(2*NSTRS+3)) ENDIF IF(INPLAS.EQ.19.OR.INPLAS.EQ.21) THEN DO 30 I=1,NSTRS EPS0(I)=0.0D0 EPSCRP(I)=EPSV0(I) 30 CONTINUE ELSE IF(INPLAS.EQ.20.OR.INPLAS.EQ.22.OR.INPLAS.EQ.23.OR. & INPLAS.EQ.61) THEN DO 40 I=1,NSTRS EPS0(I)=0.0D0 EPSCRP(I)=VAR(2*NSTRS+4+I) 40 CONTINUE ENDIF DO 50 I=1,NVARI VARPT(I)=0.0D0 50 CONTINUE C_____________________________________________________________________ C C STEP-2 : COMPUTATION OF SEQUV C ------------------------------ SIGM=0.333333333333333D0*(SIG0(1)+SIG0(2)+SIG0(3)) DO 60 I=1,NSTRS A=0.0D0 IF(I.LE.3) A=1.0D0 SS(I)=SIG0(I)-A*SIGM 60 CONTINUE SEQUV =PROCON(SS,SS,NSTRS) SEQUV =SQRT(1.5D0*SEQUV) C_____________________________________________________________________ C gatt : IF (INPLAS.EQ.107) THEN CALL GATT(DT,SEQUV,SIGM,SS,EPSV,VAR,XMAT,NSTRS,PHI1,PHITAU, & TTAU,EPS0,VARPT) GOTO 1000 ENDIF C gatt. C_____________________________________________________________________ C C STEP-3 : UPDATING INTERNAL VARIABLES C ------------------------------------ IF((INPLAS.GE.19.AND.INPLAS.LE.23).OR.INPLAS.EQ.61) THEN CALL UPVAR1(SIG0,EPSCRP,EPLU,EMIN,EEFF,EPSH,LL,NSTRS) DO 90 I=1,NSTRS VARPT( I)=EPLU(I) VARPT(NSTRS+I)=EMIN(I) 90 CONTINUE VARPT(2*NSTRS+1)=EEFF VARPT(2*NSTRS+2)=EPSH VARPT(2*NSTRS+3)=LL ENDIF C_____________________________________________________________________ C C STEP-4 : COMPUTATION OF INELASTIC STRAIN RATE C --------------------------------------------- IF(SEQUV.LE.1.D-10) GO TO 1000 IF(INPLAS.EQ.19) THEN CALL NORTON(SEQUV,EPSH,DT,XMAT(6),XMAT(7),XMAT(8),DECT) VARPT(2*NSTRS+4)=DECT ELSE IF(INPLAS.EQ.21) THEN DECT=XMAT(6)+XMAT(7)*(SEQUV**XMAT(8))+ . XMAT(9)*(SEQUV**XMAT(10)) + . XMAT(11)*(SEQUV**XMAT(12)) VARPT(2*NSTRS+4)=DECT ELSE IF(INPLAS.EQ.20.OR.INPLAS.EQ.22.OR. . INPLAS.EQ.23.OR.INPLAS.EQ.61) THEN CALL SOLUTN(INPLAS,SEQUV,EPSH,XMAT,DT,TIME) CALL EQUATN(INPLAS,SEQUV,TIME,DT,XMAT,DECP,DECS) DECT=DECP+DECS CONS=1.5D0*DECP/SEQUV DO 100 I=1,NSTRS VARPT(2*NSTRS+4+I)=CONS*SS(I) 100 CONTINUE VARPT(2*NSTRS+4)=DECT ELSE IF(INPLAS.EQ.24) THEN CALL LEMAIT(SEQUV,VAR(1),DX,DT,XMAT,DECT) VARPT(1)=DX VARPT(2)=DECT ENDIF CONS=1.5D0*DECT/SEQUV DO 110 I=1,NSTRS EPS0(I)=CONS*SS(I) 110 CONTINUE C C_______________________________________________________________________ 1000 CONTINUE C IF (MFR.EQ.5) THEN EPSVPT(1)=EPS0(1) EPSVPT(2)=EPS0(2) EPSVPT(3)=EPS0(4) EPSVPT(4)=EPS0(5) EPSVPT(5)=EPS0(6) ELSE DO 120 I=1,NSTRS EPSVPT(I)=EPS0(I) 120 CONTINUE ENDIF C RETURN END