C ADVAN2 SOURCE CHAT 05/01/12 21:18:46 5004 C ADVAN2 SOURCE PCP 90/01/12 11:07:40 C---------------------------------------------------------------- SUBROUTINE ADVAN2(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1, & SIGPT,EPSVPT,VARPT,XMAT, & NSTRS,NVARI,IFOUR,INPLAS,NCOMAT ) C ----------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION SIG(*),EPSV(*),VAR(*),SIG1(*),EPSV1(*),VAR1(*) DIMENSION SIGPT(*),EPSVPT(*),VARPT(*),XMAT(*) C---------------------------------------------------------------- C THIS ROUTINE CALCULATES THE LATEST VALUES OF SIG,EPSV,VAR, C FROM THE INITIAL VALUES OF SIG,EPSV,VAR AND DERIVATIVES : C SIGPT,EPSVPT,VARPT C---------------------------------------------------------------- T1 = XMAT(1)/(1.0-XMAT(2)*XMAT(2)) T2 = T1 * XMAT(2) T3 = XMAT(1)/(1.0+XMAT(2)) NS = NSTRS/2 C________________________________________________________________ C STRESS COMPONENTS C________________________________________________________________ IF(NS.EQ.2) THEN SIG1(1) = SIG(1) + TAU*(SIGPT(1)- T1*EPSVPT(1)-T2*EPSVPT(2)) SIG1(2) = SIG(2) + TAU*(SIGPT(2)- T1*EPSVPT(2)-T2*EPSVPT(1)) SIG1(3) = SIG(3) + TAU*(SIGPT(3)- T1*EPSVPT(3)-T2*EPSVPT(4)) SIG1(4) = SIG(4) + TAU*(SIGPT(4)- T1*EPSVPT(4)-T2*EPSVPT(3)) IF(IFOUR.EQ.-2) THEN SIG1(2)=0.0D0 SIG1(4)=0.0D0 ENDIF ELSE SIG1(1) = SIG(1) + TAU*(SIGPT(1)- T1*EPSVPT(1)-T2*EPSVPT(2)) SIG1(2) = SIG(2) + TAU*(SIGPT(2)- T1*EPSVPT(2)-T2*EPSVPT(1)) SIG1(3) = SIG(3) + TAU*(SIGPT(3)- T3*EPSVPT(3)) SIG1(4) = SIG(4) + TAU*(SIGPT(4)- T1*EPSVPT(4)-T2*EPSVPT(5)) SIG1(5) = SIG(5) + TAU*(SIGPT(5)- T1*EPSVPT(5)-T2*EPSVPT(4)) SIG1(6) = SIG(6) + TAU*(SIGPT(6)- T3*EPSVPT(6)) IF(IFOUR.EQ.-2) THEN SIG1(2)=0.0D0 SIG1(5)=0.0D0 ENDIF ENDIF C C________________________________________________________________ C STRAIN COMPONENTS C________________________________________________________________ DO 20 I =1,NSTRS EPSV1(I) = EPSV(I) + TAU*EPSVPT(I) 20 CONTINUE C C________________________________________________________________ C INTERNAL VARIABLES C________________________________________________________________ IF((INPLAS.GE.19.AND.INPLAS.LE.23).OR.INPLAS.EQ.61) THEN DO 30 I=1,2*NSTRS+3 VAR1(I)=VARPT(I) 30 CONTINUE DO 40 I=2*NSTRS+4,NVARI VAR1(I)=VAR(I)+TAU*VARPT(I) 40 CONTINUE ELSE IF(INPLAS.EQ.24.OR.INPLAS.EQ.25.OR.INPLAS.EQ.53 . .OR.INPLAS.EQ.76.OR.INPLAS.EQ.77) THEN DO 50 I=1,NVARI VAR1(I)=VAR(I)+TAU*VARPT(I) 50 CONTINUE ENDIF RETURN END