1 : C ADVA22 SOURCE CHAT 05/01/12 21:18:38 5004 2 : SUBROUTINE ADVA22(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,SIGPT,EPSVPT, 3 : & VARPT,XMAT,NSTRS,NVARI) 4 : C ----------------------------------------------------------------- 5 : IMPLICIT INTEGER(I-N) 6 : IMPLICIT REAL*8(A-H,O-Z) 7 : -INC CCOPTIO 8 : DIMENSION SIG(*),EPSV(*),VAR(*),SIG1(*),EPSV1(*),VAR1(*) 9 : DIMENSION SIGPT(*),EPSVPT(*),VARPT(*),XMAT(*) 10 : C 11 : C ICI : le modele est obligatoirement CERAMIQUE 12 : C---------------------------------------------------------------- 13 : C THIS ROUTINE CALCULATES THE LATEST VALUES OF SIG,EPSV,VAR, 14 : C FROM THE INITIAL VALUES OF SIG,EPSV,VAR AND DERIVATIVES : 15 : C SIGPT,EPSVPT,VARPT 16 : C---------------------------------------------------------------- 17 : C 18 : T1 = XMAT(1)/(1.D0-XMAT(2)*XMAT(2)) 19 : T2 = T1 * XMAT(2) 20 : T3 = XMAT(1)/(1.D0+XMAT(2)) 21 : NS = NSTRS/2 22 : C 23 : C________________________________________________________________ 24 : C STRAIN COMPONENTS 25 : C________________________________________________________________ 26 : DO 10 I =1,NSTRS 27 : EPSV1(I) = EPSV(I) + TAU*EPSVPT(I) 28 : 10 CONTINUE 29 : C 30 : C________________________________________________________________ 31 : C STRESS COMPONENTS 32 : C________________________________________________________________ 33 : IF(NS.EQ.2) THEN 34 : SIG1(1) = SIG(1) + TAU*(SIGPT(1)- T1*EPSVPT(1)-T2*EPSVPT(2)) 35 : SIG1(2) = SIG(2) + TAU*(SIGPT(2)- T1*EPSVPT(2)-T2*EPSVPT(1)) 36 : SIG1(3) = SIG(3) + TAU*(SIGPT(3)- T1*EPSVPT(3)-T2*EPSVPT(4)) 37 : SIG1(4) = SIG(4) + TAU*(SIGPT(4)- T1*EPSVPT(4)-T2*EPSVPT(3)) 38 : IF(IFOUR.EQ.-2) THEN 39 : SIG1(2)=0.D0 40 : SIG1(4)=0.D0 41 : ENDIF 42 : ELSE 43 : SIG1(1) = SIG(1) + TAU*(SIGPT(1)- T1*EPSVPT(1)-T2*EPSVPT(2)) 44 : SIG1(2) = SIG(2) + TAU*(SIGPT(2)- T1*EPSVPT(2)-T2*EPSVPT(1)) 45 : SIG1(3) = SIG(3) + TAU*(SIGPT(3)- T3*EPSVPT(3)) 46 : SIG1(4) = SIG(4) + TAU*(SIGPT(4)- T1*EPSVPT(4)-T2*EPSVPT(5)) 47 : SIG1(5) = SIG(5) + TAU*(SIGPT(5)- T1*EPSVPT(5)-T2*EPSVPT(4)) 48 : SIG1(6) = SIG(6) + TAU*(SIGPT(6)- T3*EPSVPT(6)) 49 : IF(IFOUR.EQ.-2) THEN 50 : SIG1(2)=0.D0 51 : SIG1(5)=0.D0 52 : ENDIF 53 : ENDIF 54 : C________________________________________________________________ 55 : C INTERNAL VARIABLES 56 : C________________________________________________________________ 57 : C La première variable interne qui était la derniere dans advan2 correspond à EPSE 58 : VAR1(1) = VAR(1)+TAU*VARPT(1) 59 : C La dernière variable interne correspond à EPSE fluage 60 : VAR1(NVARI) = VAR1(NVARI)+TAU*VARPT(NVARI) 61 : C l'avant dernière variable interne correspond à l'endommagement 62 : C on n'y touche pas ici 63 : VAR1(NVARI-1) = VAR(NVARI-1) 64 : CCC IF ((IFOUR.EQ.2.AND.MFR.EQ.3).OR.IFOUR.EQ.-2) THEN 65 : CCC IBID = 11 66 : CCC ELSE IF(IFOUR.EQ.-3.OR.IFOUR.EQ.-1 67 : CCC 1 .OR.IFOUR.EQ.0) THEN 68 : CCC IBID = 14 69 : CCC ELSE IF(IFOUR.EQ.2.AND.MFR.EQ.1) THEN 70 : CCC IBID = 19 71 : CCC ENDIF 72 : CCC Eloi : correction de IBID 73 : CCC de plus : ici on a obligatoirement MFR = 3 74 : IBID=NVARI-(2*NSTRS)-5 75 : C de 2 à IBID on a les variables d'ottosen qu'on ne touche pas 76 : C On ne change pas les variables de OTTOSEN 77 : DO 20 I=2,IBID 78 : VAR1(I)=VAR(I) 79 : 20 CONTINUE 80 : C de IBID + 1 à IBID + 2*NSTRS+3 81 : DO 30 I=(IBID+1),(IBID+2*NSTRS+3) 82 : VAR1(I)=VARPT(I) 83 : 30 CONTINUE 84 : RETURN 85 : END 86 : C pour mémoire voici ce qu'il y avait dans advan2 87 : ************************************************** 88 : C 89 : C IF((INPLAS.GE.19.AND.INPLAS.LE.23).OR.INPLAS.EQ.61) THEN 90 : C DO 30 I=1,2*NSTRS+3 91 : C VAR1(I)=VARPT(I) 92 : C 30 CONTINUE 93 : C en fait dans IDVAR1 on a 2*NSTRS+4 = NVARI 94 : C il s'agit donc de la variable EPSE qu'on met à jour 95 : C DO 40 I=2*NSTRS+4,NVARI 96 : C VAR1(I)=VAR(I)+TAU*VARPT(I) 97 : C 40 CONTINUE 98 : *********************************************** 99 : 100 : 101 : 102 : 103 : 104 : 105 :
© Cast3M 2003 - All rights reserved.
Disclaimer