fati
C FATI SOURCE CHAT 07/12/04 21:15:55 5985
C FATI
1 NMATT,ISTEP,ICARA,JDIM,IFOUR2,DT)
C MAZARS SOURCE AM 00/12/13 21:39:37 4045
C SUBROUTINE MAZARS (WRK0,WRK1,WRKK2,WRK5,NSTRS,NVARI,
C 1 NMATT,ISTEP,ICARA,JDIM,IFOUR2)
*======================================================================
* DB
* FOR THE NONLOCAL CASE CALLED by ECOU40 --> FATTT --> FATI
* New source: one nonlocal damage material model added:
* Fatigue damage
* This routine is inspired based on mazars.eso
*
C Goal: allowing cyclic cumulative damage calculation under simple fatigue loading
C
C Description:
C 1. The threshold is maintiened allowing an endurance limit but not tested
C 2. The equivalent strain is changed replaced by the geometric average of the positive stresses
C induced strain ( no damage growth due to compression induced tension - Poisson effect)
C 3. The damage rate given in [1] is integrated over a cycle with
C dD/dN = f(D) eps_a^(beta+1)/(beta+1)
C 4. Two expression of the f(D) funcion are implemented
C a) LOI = 2. power law as chosen in [2]
C b) LOI = 3. power law including a damage rate acceleration as describe in [1]
C
C References:
C [1] D. Bodin, G. Pijaudier-Cabot, C. de La Roche, J.-M Piau and A. Chabot, (2004)
C A Continuum Damage Approach to Asphalt Concrete Fatigue Modelling, Journal of
C Engineering Mechanics, ASCE, vol. 130 (6), pp. 700-708.
C
C [2] Paas, R. H. J. W., Scheurs, P. J. G., and Brekelmans, W. A. M. (1993). A
C continuum approach to brittle and fatigue damage: Theory and numerical
C procedures. Int. J. Solids Struct., 30~4!, 579599.
C
* DB
*
*======================================================================
C
C
C
C
C variables en entree
C
C
C WRK0 pointeur sur un segment deformation au pas precedent
C
C WRK1 pointeur sur un segment increment de deformation
C
C WRKK2 pointeur sur un segment variables internes au pas precedent
C
C WRK5 pointeur sur un segment de deformations inelastiques
C
C XMATER constantes du materiau
C
C NSTRS nombre de composantes dans les vecteurs des contraintes
C et les vecteurs des deformations
C
C NVARI nombre de variables internes (doit etre egal a 2)
C
C NMATT nombre de constantes du materiau
C
C ISTEP flag utilise pour separer les etapes dans un calcul non local
C ISTEP=0 -----> calcul local
C ISTEP=1 -----> calcul non local etape 1 on calcule les seuils
C ISTEP=2 -----> calcul non local etape 2 on continue le calcul
C a partir des seuils moyennes
C
C Modif L.Bode - 14/10/92
C Nouveaux parametres en entree
C JDIM Dimension de travail
C ( Coques JDIM =2 , Massifs JDIM = IDIM )
C IFOUR2 Type de formulation
C ( Coques IFOUR2 = -2 => contraintes planes ,
C Massifs IFOUR2 = IFOUR)
C
C variables en sortie
C
C VARINF variables internes finales
C
C SIGMAF contraintes finales
C
C C. LA BORDERIE MARS 1992
C declaration des variables
C
C
IMPLICIT REAL*8(A-H,O-Z)
-INC PPARAM
-INC CCOPTIO
SEGMENT WRK0
REAL*8 XMAT(NMATT)
ENDSEGMENT
*
SEGMENT WRK1
REAL*8 DDHOOK(LHOOK,LHOOK),SIG0(NSTRS),DEPST(NSTRS)
REAL*8 SIGF(NSTRS),VAR0(NVARI),VARF(NVARI)
REAL*8 DEFP(NSTRS),XCAR(ICARA)
ENDSEGMENT
SEGMENT WRKK2
REAL*8 EPSILI(NSTRS),DSIGT(NSTRS)
ENDSEGMENT
C Modif L.Bode - 14/10/92
SEGMENT WRK3
REAL*8 EPSILO(NSTRS)
ENDSEGMENT
C Definition dynamique de EPSILO
C Fin modif L.Bode
SEGMENT WRK5
REAL*8 EPIN0(NSTRS),EPINF(NSTRS),EPST0(NSTRS)
ENDSEGMENT
C
CHARACTER*8 CMATE
INTEGER NSTRS,NVARI,NMATT,ISTEP
REAL*8 EPS33(3,3),EPSIPP(3),EPSILT(3),VALP33(3,3)
REAL*8 SIGP(3),SIGPT(3),SIGPC(3),TRSIGT,TRSIGC
C REAL*8 YOUN,XNU,EPSD0,ACOM,BCOM,ATRA,BTRA,BETA
REAL*8 YOUN,XNU,EPSD0
C ajout bodin 14 02 2006
REAL*8 BETA,LOI
C pour la loi L2R
REAL*8 C,ALFA
C pour la loi L3R
REAL*8 ALFA1,ALFA2,ALFA3
C fin ajout bodin 14 02 2006
INTEGER ISTRS,JSTRS,KCAS,IRTD
REAL*8 XZERO,UN,DEUX,TROIS
REAL*8 EPSTL0,EPSTM0
REAL*8 dt1
C Fin modif Bodin - 26-09-2005
PARAMETER (XZERO=0.D0,UN=1.D0,DEUX=2.D0,TROIS=3.D0)
C
C
C recuperation des variables initiales dans les tableaux
C
C
N=NSTRS
CMATE = 'ISOTROPE'
YOUN = XMAT(1)
XNU = XMAT(2)
EPSD0= XMAT(5)
BETA = XMAT(6)
LOI = XMAT(7)
C = XMAT(8)
ALFA = XMAT(9)
ALFA1 = XMAT(10)
ALFA2 = XMAT(11)
ALFA3 = XMAT(12)
C ajout bodin 17-11-2000
C introduction de la variable EPSTIMI déformation équivalent initiale
EPSTL0 = VAR0(1)
C fin ajout bodin
DINI = VAR0(2)
C
C
C print*,'Je suis dans mazars'
C
C ajout bodin 26 09 2005
C print*,'mazars Variable DT ',DT
dt1 =DT
C print*,'mazars variable dt1',dt1
C fin ajout bodin 26 09 2005
C
C calcul des seuils
C
C
C calcul de la deformation totale
C
SEGINI WRK3
DO 100 ISTRS=1,NSTRS
EPSILO(ISTRS)=EPSILI(ISTRS)+DEPST(ISTRS)
100 CONTINUE
C
C calcul des deformations principales
C
C
C on reecrit les deformations sous forme matricielle
C
C Modif L.Bode - 14/10/92
C Rajout de IFOUR2 en argument de ENDOCA
* print*,'on appelle ENDOCB'
* print*,'apres endocb'
C Fin modif L.Bode
C
C et on diagonalise
C
C Modif L.Bode - 14/10/92
C Pour les elts Coques, on travaille en contraintes planes => JDIM =2
C Pour les elts Massifs JDIM =IDIM
* print*,'avant JACOB3'
* print*,'apres JACOB3'
C Fin modif L.Bode
IF (ISTEP .EQ. 0 .OR. ISTEP.EQ.2) THEN
C
C on calcule la matrice de hooke et les contraintes ppales
C
C CMATE = 'ISOTROPE'
C KCAS=1
C Modif L.Bode - 14/10/92
C IFOUR --> IFOUR2 dans appel DOHMAS
C* print*,'avant dohmas'
C CALL DOHMAS(XMAT,CMATE,IFOUR2,NSTRS,KCAS,DDHOOK,IRTD)
C* print*,'apres dohmas'
C Fin modif L.Bode
C DO 200 ISTRS=1,3
C SIGP(ISTRS)= XZERO
C DO 210 JSTRS=1,3
C SIGP(ISTRS)=SIGP(ISTRS)+DDHOOK(ISTRS,JSTRS)*EPSIPP(JSTRS)
C210 CONTINUE
C200 CONTINUE
END IF
C
C on complete la deformation dans le cas des contraintes planes
C
C Modif L.Bode - 14/10/92
C IFOUR remplace par IFOUR2
IF (IFOUR2.EQ. -2) THEN
EPSIPP(3)= -(EPSIPP(1) + EPSIPP(2))*XNU / (UN-XNU)
END IF
C Fin modif L.Bode
C
C on calcule le epsilontild
Cmodif bodin 6 juillet 2001 pour le calcul de epsilon equivalente
C on calcule la matrice de hooke et les contraintes ppales
C
CMATE = 'ISOTROPE'
KCAS=1
C Modif L.Bode - 14/10/92
C IFOUR --> IFOUR2 dans appel DOHMAS
* print*,'avant dohmas'
* print*,'apres dohmas'
C Fin modif L.Bode
DO 200 ISTRS=1,3
SIGP(ISTRS)= XZERO
DO 210 JSTRS=1,3
SIGP(ISTRS)=SIGP(ISTRS)+DDHOOK(ISTRS,JSTRS)*EPSIPP(JSTRS)
210 CONTINUE
200 CONTINUE
C
C on calcule le signe des contraintes elastiques
C
DO 300 ISTRS=1,3
IF (SIGP(ISTRS).LT. XZERO) THEN
SIGPC(ISTRS)=SIGP(ISTRS)
SIGPT(ISTRS)=XZERO
ELSE
SIGPT(ISTRS)=SIGP(ISTRS)
SIGPC(ISTRS)=XZERO
END IF
300 CONTINUE
TRSIGT=SIGPT(1)+SIGPT(2)+SIGPT(3)
TRSIGC=SIGPC(1)+SIGPC(2)+SIGPC(3)
C
C on calcule les deformations dues aux contraintes positives
C
DO 400 ISTRS=1,3
EPSILT(ISTRS)=(SIGPT(ISTRS)*(UN+XNU)-TRSIGT*XNU)/YOUN
400 CONTINUE
C
EPSTIL=MAX( XZERO , EPSILT(1) )**2 +
1 MAX( XZERO , EPSILT(2) )**2 +
2 MAX( XZERO , EPSILT(3) )**2
EPSTIL=SQRT (EPSTIL)
C
C EPSTIL=MAX( XZERO , EPSIPP(1) )**2 +
C 1 MAX( XZERO , EPSIPP(2) )**2 +
C 2 MAX( XZERO , EPSIPP(3) )**2
C EPSTIL=SQRT (EPSTIL)
C fin modif bodin 6 juillet 2001 pour le calcul de epsilon equivalente
IF (ISTEP .EQ. 0) THEN
EPSTIM=EPSTIL
EPSTM0=EPSTL0
VARF(1)=EPSTIL
ELSE IF (ISTEP .EQ. 1) THEN
VARF(2)=DINI
VARF(1)=EPSTIL
C ajout bodin 13-03-2001 pour une nouvelle variable interne
C VARx(3) introduite pour garder la mémoire de la déf eq initiale
C marche en non local si le champ de EPSTL0 est non local par exemple identiquement nul
VARF(3)=EPSTL0
C fin ajout bodin 13-03-2001
ELSE IF (ISTEP .EQ. 2) THEN
C ajout bodin 13-03-2001 pour une nouvelle variable interne
C VARx(3) introduite pour garder la mémoire de la déf eq initiale
EPSTM0=VAR0(3)
C fin ajout bodin 13-03-2001
EPSTIM=VAR0(1)
VARF(1)=EPSTIM
ELSE
PRINT*,'DANS MAZARS ISTEP = 0,1,2 ET PAS ',ISTEP
END IF
IF ( (ISTEP .EQ. 0) .OR. (ISTEP .EQ. 2)) THEN
C
C on calcule l'endommagement et les contraintes
C
C
C on calcule ALFAT ALFAC DT et DC puis D
C dans le cas ou le seuil initial est depasse
C
C
IF ( EPSTIM .GT. EPSD0) THEN
C
C calcul de l'endommagement
C
C
C on calcule le signe des contraintes elastiques
C
C DO 300 ISTRS=1,3
C IF (SIGP(ISTRS).LT. XZERO) THEN
C SIGPC(ISTRS)=SIGP(ISTRS)
C SIGPT(ISTRS)=XZERO
C ELSE
C SIGPT(ISTRS)=SIGP(ISTRS)
C SIGPC(ISTRS)=XZERO
C END IF
C300 CONTINUE
C TRSIGT=SIGPT(1)+SIGPT(2)+SIGPT(3)
C TRSIGC=SIGPC(1)+SIGPC(2)+SIGPC(3)
C
C on calcule les deformations dues aux contraintes positives
C
C DO 400 ISTRS=1,3
C EPSILT(ISTRS)=(SIGPT(ISTRS)*(UN+XNU)-TRSIGT*XNU)/YOUN
C400 CONTINUE
C
C on en deduit ALFAT et ALFAC
C
C ALFAT = MAX(XZERO,EPSIPP(1))*EPSILT(1) +
C 1 MAX(XZERO,EPSIPP(2))*EPSILT(2) +
C 2 MAX(XZERO,EPSIPP(3))*EPSILT(3)
C ALFAT = ALFAT/(EPSTIL*EPSTIL)
C ALFAC = UN - ALFAT
C PRINT*,'alfat = ',ALFAT,' et alfac = ',ALFAC
C PRINT*,'alfa1=',A99,'beta1 =',B99,'C1 = ',C99
C
C modification pour la bi ou tricompression
C
C IF (TRSIGC.LT. -XPETIT .AND. TRSIGT.LT.XPETIT) THEN
C GAMMA=SIGPC(1)*SIGPC(1)+SIGPC(2)*SIGPC(2)+
C 1 SIGPC(3)*SIGPC(3)
C GAMMA=-SQRT(GAMMA)/TRSIGC
C EPSTIM=EPSTIM*GAMMA
C END IF
C
C amelioration de la reponse en cisaillement pour beta > 1.
C
C IF (BETA .GT. UN) THEN
C IF ( ALFAT .GT. XPETIT ) THEN
C ALFAT=ALFAT**BETA
C END IF
C IF ( ALFAC .GT. XPETIT ) THEN
C ALFAC=ALFAC**BETA
C END IF
C END IF
C
C
C on calcule DT et DC puis D
C dans le cas ou le seuil initial est depasse
C
C on est oblige de verifier car on a pu multiplier par gamma
C
C modif bodin 26-02-2001
C modif bodin 26-02-2001
C calcul incrémental pour le pas EPSTIM-EPSTIMI de déformation
C équivalente
C
C
C
C
C
C
C PRINT*,'Je suis dans mazars_bod et je suis content !!'
C PRINT*,'La def initiale est',EPSTM0
C PRINT*,'La def finale est',EPSTIM
IF (LOI.EQ.DEUX) THEN
D=((DINI**(1-ALFA))+
1 ((C*(1-ALFA)/(BETA+1))*
2 ((EPSTIM**(BETA+1))-(EPSD0**(BETA+1)))*(dt1*2)
3 ))**(1/(1-ALFA))
C
ELSE IF (LOI.EQ.TROIS) THEN
C on traite la loi L3R
C calcul d'un term intermediaire
TERM_A= (((ALFA1*(UN -EXP(-1*((DINI/ALFA2)**ALFA3))))+
1 ((((EPSTIM**(BETA+1))-(EPSD0**(BETA+1)))
2 /(BETA+UN))*(dt1*2))
3 )/ALFA1)
C
IF (TERM_A .LT. UN) THEN
D= ALFA2 *((-1*(LOG(UN - TERM_A)))**(UN/ALFA3))
ELSE
D=UN
END IF
C sinon roblème de définition de LOI
ELSE
WRITE(*,*) 'LOI doit etre egal à 2. ou 3.'
STOP
END IF
C
C on borne la valeur de D a 0.99999
C
D=MIN ( D , UN-1.D-05 )
ELSE
C on n'a pas dépassé le seuil
D=XZERO
END IF
C
C on teste la croissance de D
C
D=MAX ( D , DINI )
C
C on le stocke dans les variables internes finales
C
VARF(2)= D
C
C on calcule les contraintes finales
C
DO 500 ISTRS=1,NSTRS
SIGF(ISTRS)=SIGF(ISTRS)*(UN-D)
500 CONTINUE
C
C et les deformations inelastiques finales
C
DO 600 ISTRS=1,NSTRS
EPINF(ISTRS)=EPSILO(ISTRS)*D
600 CONTINUE
END IF
SEGSUP WRK3
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales