1 : C DERIV SOURCE FANDEUR 13/01/29 21:15:27 7683 2 : SUBROUTINE DERIV(TAU,SIG,EPSV,VAR,SIGD,EPSVD,VARD,EPSTHD, 3 : &DSPT,XMAT,FKX,NPTEUR,NSTRS,NVARI,NCOMAT,NKX,NC,DD,DDV,DDINV, 4 : &YOUNG,NYOUNG,XNU,NXNU,MFR,XCAR,ICARA,IFOURB,INDIC, 5 : &TI,TPOINT,ITHHER,TRUC,NCOURB) 6 : C----------------------------------------------------------------------- 7 : C Objet: Cette subroutine calcule les derivees des variables internes 8 : C pour un materiau viscoplastique a endommagement et ecrouissage 9 : C isotrope en regime anisotherme 10 : C----------------------------------------------------------------------- 11 : C 12 : C----------------------------------------------------------------------- 13 : C Entree: TAU pas de temps 14 : C TI temperature au debut du pas 15 : C TPOINT derivee de la temperature 16 : C SIG(NSTRS) tenseur des contraintes 17 : C EPSV(NSTRS) tenseur des deformations 18 : C VAR(NVARI) tableau contenant les variables internes 19 : C pilotant les equations 20 : C VAR(1)=p ; VAR(2)=r ;VAR(3)=D 21 : C EPSTHD vitesse de dilatation thermique au debut du pas 22 : C DSPT(NSTRS,NSTRS) vitesse de deformation totale 23 : C XMAT(NCOMAT) tableau des parametres scalaires du materiau 24 : C a une temperature TI donnee 25 : C XMAT(1)=YOUNG ;XMAT(2)=XNU ;XMAT(3)=n 26 : C XMAT(4)=m ;XMAT(5)=KK; XMAT(6)=ALPHA 27 : C XMAT(7)=BETA ;XMAT(8)=r; XMAT(9)=A ; 28 : C XMAT(10)=EVOL ;XMAT(11)=ALPHAT 29 : C XMAT(12)=RHO; XMAT(13)=SIGY 30 : C FKX(NKX) tableau de la fonction k(X,T) contenant les courbes 31 : C de k a differentes temperatures T1,T2,T3,... 32 : C NPTEUR(NC) tableau de pointeurs sur les differentes courbes 33 : C de la fonction k 34 : C MFR indice de la formulation mecanique(seulement massif 35 : C ou coque pour les materiaux endommageables 36 : C ICARA nombre de caracteristiques geometriques des elements 37 : C finis 38 : C XCAR(ICARA) tableau des caracteristiques geometriques des 39 : C elements finis 40 : C IFOURB= -2 EN CONTR. PLANES 41 : C -1 EN DEFORM. PLANES 42 : C 0 EN AXISYMETRIE 43 : C 1 EN SERIE DE FOURIER 44 : C 2 EN TRIDIM 45 : C INDIC=0, 1 OU -1 pour plasticite avec endommagement 46 : C =2 OU -2 pour viscoplasticite avec endommagement 47 : C ITHHER = 0 pas de chargement thermique et materiau constant 48 : C = 1 chargement thermique et materiau constant 49 : C = 2 chargement thermique et materiau(T) 50 : C------------------------------------------------------------------------ 51 : C 52 : C------------------------------------------------------------------------ 53 : C Sortie: EPSVD(NSTRS) derivee du tenseur des deformations 54 : C VARD(NVARI) tableau contenant les derivees des variables 55 : C internes 56 : C SIGD(NSTRS) derivee des contraintes 57 : C DD(NSTRS,NSTRS) matrice de Hooke au debut du pas 58 : C DDV(NSTRS,NSTRS) derivee de DD 59 : C DDINV(NSTRS,NSTRS) inverse de DD 60 : C------------------------------------------------------------------------ 61 : C 62 : IMPLICIT INTEGER(I-N) 63 : IMPLICIT REAL*8(A-H,O-Z) 64 : DIMENSION SIG(*),EPSV(*),VAR(*),XCAR(*),YOUNG(*),XNU(*) 65 : DIMENSION SIGD(*),EPSVD(*),VARD(*),DDINV(NSTRS,NSTRS) 66 : DIMENSION FKX(*),NPTEUR(*),XMAT(*),DSPT(*),TRUC(*) 67 : DIMENSION EPSTHD(*),DD(NSTRS,NSTRS),DDV(NSTRS,NSTRS) 68 : DIMENSION XX(6),A(3,3),D(3),S(3,3) 69 : C 70 : C---------------------------------------------------------------------- 71 : C CALCULATE J0,J1,J2 72 : C J0: THE BIGEST PRINCIPAL STRESS 73 : C J1: MEAN STRESS 74 : C J2: CONTR. DE VON MISES 75 : C---------------------------------------------------------------------- 76 : * cas des massif et coques 77 : * write(6,*) ' entree dans deriv mfr ',mfr 78 : if(mfr.eq.1.or.mfr.eq.3) then 79 : AJ1 = SIG(1)+SIG(2)+SIG(3) 80 : AJ1 = AJ1/3.0D0 81 : DO 30 I=1,3 82 : 30 XX(I) = SIG(I)-AJ1 83 : DO 40 I=4,NSTRS 84 : 40 XX(I) = SIG(I) 85 : AJ2 = PROCON(XX,XX,NSTRS) 86 : AJ2 = SQRT(1.5D0*AJ2) 87 : elseif (mfr.eq.5) then 88 : * cas des coques epaisses <= a priori non utilise dans ce modele ! 89 : alfah = 1.D0 90 : ep1 = xcar(1) 91 : AJ1= (SIG(1)+SIG(2)) / 3.D0 92 : AJ2 = vonmis0(sig,nstrs,mfr,ifourb,ep1,alfah) 93 : XX(1)= sig(1) - aj1 94 : xx(2) = sig(2)-aj1 95 : DO 41 I=3,NSTRS 96 : 41 XX(I) = SIG(I) 97 : endif 97 : CALL ZERO(A,3,3) 98 : if(mfr.eq.1.or.mfr.eq.3) then 99 : DO 50 I=1,3 100 : 50 A(I,I) = SIG(I) 101 : A(1,2) = SIG(4) 102 : IF(NSTRS.NE.6) GOTO 54 103 : A(1,3) = SIG(5) 104 : A(2,3) = SIG(6) 105 : 54 CONTINUE 106 : elseif(mfr.eq.5) then 107 : a(1,1)=sig(1) 108 : a(2,2)=sig(2) 109 : a(1,2)= sig(3) 110 : a(1,3)= sig(4) 111 : a(2,3)= sig(5) 112 : endif 113 : A(2,1) = A(1,2) 114 : A(3,1) = A(1,3) 115 : A(3,2) = A(2,3) 115 : IF (NSTRS.EQ.4) CALL JACOB3(A,2,D,S) 116 : * on appele jacod3 car on n'a pas besoin des vecteurs propres 117 : * write(6,*) ' entree de jacob3' 117 : IF (NSTRS.GE.5) CALL JACOD3(A,3,D) 118 : * write(6,*) ' sortie de jacob3' 119 : C 120 : C--------------------------------------------------------------------- 121 : C CALCULATE PRINCIPLE STRESS : D(*) 122 : C--------------------------------------------------------------------- 123 : AJ0 = DMAX1(D(1),D(2),D(3)) 124 : C 125 : C--------------------------------------------------------------------- 126 : C CALCULATE VARIABLE X 127 : C--------------------------------------------------------------------- 128 : C 129 : ALFA = XMAT(6) 130 : BETA = XMAT(7) 131 : X = (ALFA*AJ0)+(BETA*AJ1)+((1.0D0-ALFA-BETA)*AJ2) 132 : C 133 : C--------------------------------------------------------------------- 134 : C CALCULATE PARAMETER k(X,T)=AK 135 : C--------------------------------------------------------------------- 136 : C 136 : CALL VALPAR(FKX,NPTEUR,NKX,NC,X,AK,AKV,TI,TINF,TSUP,TRUC,NCOURB) 137 : 138 : C 139 : C--------------------------------------------------------------------- 140 : C CALCULATE RATE OF EQUAL EFFECTIVE STRAIN VARD(1) 141 : C RATE OF REAL EQUAL EFFECTIVE STRAIN VARD(2) 142 : C WITH VARD(2)=(1-D)*VARD(1) 143 : C--------------------------------------------------------------------- 144 : DEN=1.D0-VAR(3) 145 : EM=XMAT(4) 146 : EN=XMAT(3) 147 : EK=XMAT(5) 148 : SIGY=XMAT(13) 149 : IF ( VAR(2).EQ.0.D0 ) VAR(2)=VAR(2)+1.D-12 150 : VARR=AJ2-(SIGY*DEN) 151 : D1=DEN*EK*(VAR(2)**(1.D0/EM)) 152 : VARR=VARR/D1 153 : IF ( VARR.GT.0.D0 ) THEN 154 : VARD(2)=VARR**EN 155 : ELSE 156 : VARD(2)=0.D0 157 : ENDIF 158 : 159 : VARD(1)=VARD(2)/DEN 160 : C 161 : C--------------------------------------------------------------------- 162 : C CALCULATE RATE OF DAMAGE 163 : C--------------------------------------------------------------------- 164 : ER=XMAT(8) 165 : EA=XMAT(9) 166 : IF (X.LE.0.D0) THEN 167 : VARD(3)=0.D0 168 : ELSE 169 : VARD(3)=((X/EA)**ER)/(DEN**AK) 170 : ENDIF 171 : C 172 : C--------------------------------------------------------------------- 173 : C CALCULATE RATE OF PLASTIC STRAIN 174 : C--------------------------------------------------------------------- 175 : IF ( AJ2.EQ.0.D0 ) THEN 176 : AA3=0.D0 177 : ELSE 178 : AA3=1.5D0*VARD(1)/AJ2 179 : ENDIF 180 : if(mfr.eq.1.or.mfr.eq.3) then 181 : DO 10 I=1,NSTRS 182 : AGAM=1.D0 183 : IF (I.GE.4) AGAM=2.D0 184 : EPSVD(I)=AA3*XX(I)*AGAM 185 : 10 CONTINUE 186 : elseif(mfr.eq.5) then 187 : DO 11 I=1,NSTRS 188 : AGAM=1.D0 189 : IF (I.GE.3) AGAM=2.D0 190 : EPSVD(I)=AA3*XX(I)*AGAM 191 : 11 CONTINUE 192 : endif 193 : C 194 : C---------------------------------------------------------------------- 195 : C CALCULATE RATE OF STRESS 196 : C---------------------------------------------------------------------- 197 : 197 : CALL DERTRA(NYOUNG,YOUNG,TI,YUNG,YUNGV,TINF,TSUP) 197 : CALL DERTRA(NXNU,XNU,TI,ENU,ENUV,TINF,TSUP) 198 : C 199 : C Calcul de l'inverse de la matrice de Hooke au debut du pas 199 : CALL ELAST1(2,IFOURB,VAR,NVARI,XMAT,NCOMAT,YUNGV,ENUV, 200 : &XCAR,ICARA,MFR,NSTRS,DDINV,DDV,KERRE,INDIC,ITHHER) 201 : C 202 : C Calcul de la matrice de Hooke et de sa derivee au debut du pas 202 : CALL ELAST1(1,IFOURB,VAR,NVARI,XMAT,NCOMAT,YUNGV,ENUV, 203 : &XCAR,ICARA,MFR,NSTRS,DD,DDV,KERRE,INDIC,ITHHER) 204 : C 204 : CALL ZDANUL(SIGD,NSTRS) 205 : DO 80 I=1,NSTRS 206 : DO 85 J=1,NSTRS 207 : SIGD(I)=SIGD(I)+ DD(I,J)*( DSPT(J)-EPSVD(J)-EPSTHD(J) ) 208 : 85 CONTINUE 209 : 80 CONTINUE 209 : CALL MULMAT(DD,DDV,DDINV,NSTRS,NSTRS,NSTRS) 210 : DO 90 I=1,NSTRS 211 : DO 95 J=1,NSTRS 212 : SIGD(I)=SIGD(I)+(TPOINT*(DD(I,J)*SIG(J))) 213 : 95 CONTINUE 214 : SIGD(I)=SIGD(I)-((VARD(3)/DEN)*SIG(I)) 215 : 90 CONTINUE 216 : C 217 : RETURN 218 : END 219 : 220 :
© Cast3M 2003 - All rights reserved.
Disclaimer