pakgon
C PAKGON SOURCE CHAT 05/01/13 02:08:47 5004 . DEPST,KERRE,IB,IGAU,PCT1, . SUCF0,RSIG0) * *============================================================= * Modèle d'argile de PAKZAD: surface de gonflement *============================================================= * * Entrées *------------------------------------------------------------- * * XMAT : caractéristiques matériau * SIG0 : contraintes initiales TEST * VAR0 : variables internes initiales TEST * DEPST : incrément des déformations totales * IB : numéro de l'élément courrant * IGAU : numéro du point de Gauss courrant * PCT1 : pression de consolidation "fictive" de l'état saturé * SUCF0 : succion finale * RSIG0 : contraintes au début du pas * *------------------------------------------------------------- * * * Sorties *------------------------------------------------------------- * * SIGF : contraintes finales * DEFF : incrémént de déformation plastique final * VARF : variables internes finales * KERRE : message d'erreur * *------------------------------------------------------------- * ICI ON PROGRAMME EN FORTRAN PUR * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * DIMENSION XMAT(*),SIG0(*),VAR0(*),DEPST(*) DIMENSION SIGF(*),DEFF(*),VARF(*),RSIG0(*) DIMENSION SIGT(6),DEVT(6),DEV(6),DEV0(6),DEFP(6) * * * Données du materiau *=========================================================== * YOUN0=XMAT(1) XNU0=XMAT(2) XN0=XMAT(5) XKA0=XMAT(6) XGA0=XMAT(7) XPA0=XMAT(8) XPC0=XMAT(9) XM0=XMAT(10) XBET1=XMAT(11) XA0=XMAT(12) XPCR0=XMAT(13) XS0=XMAT(14) XM1=XMAT(15) XM2=XMAT(16) XM3=XMAT(17) XBET2=XMAT(18) XTAU0=XMAT(19) dif0=ABS(XN0-1.D0) * *---> Initialisation du rayon initial de l'ellipse * IF (VAR0(5).LE.1.D-10) VAR0(5)=XA0 IF (VAR0(6).LE.1.D-10) VAR0(6)=XA0 * *---> Charge ou décharge ? * . NCHAR0 = 0 : décharge * . NCHAR0 = 1 : recharge * TRELT=DEPST(1)+DEPST(2)+DEPST(3) NCHAR0=0 IF (TRELT.LE.0.D0) NCHAR0=1 * *---> Contraintes test, incrément de déformation plastique test, * déviateur initial et pression initiale * PRES00=-1.D0/3.D0*(RSIG0(1)+RSIG0(2)+RSIG0(3)) DO 05 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 SIGT(I)=SIG0(I) DEFP(I)=0.D0 DEVT(I)=RSIG0(I)+PRES00*A 05 CONTINUE * *---> Cas où XN0 n'est pas égal à 1 * Les constantes de raideur sont prises au début du pas * IF (dif0.GT.1.D-5) THEN XKA1=XKA0*XPA0*((PRES00/XPA0)**XN0) XGA1=XGA0*XPA0*((PRES00/XPA0)**XN0) ENDIF * *---> Contrainte équivalente initiale * IF (Stest.LE.(1.D-10*YOUN0)) Stest=0.D0 St0=(3.D0*Stest/2.D0)**(.5D0) * *---> Calcul . du terme de contrainte équivalente * . du centre de la surface * . du rayon * PRES1=-1.D0/3.D0*(SIGT(1)+SIGT(2)+SIGT(3)) IF (NCHAR0.EQ.1) THEN * * On charge *----------------------------------------------------- * * Centre test et au début du pas * DO 10 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 DEVT(I)=SIGT(I)+PRES1*A DEV(I)=(DEVT(I)-VAR0(14+I))/2.D0 DEV0(I)=(RSIG0(I)+PRES00*A-VAR0(14+I))/2.D0 10 CONTINUE APT=(PRES1+VAR0(8))/2.D0 APT0=(PRES00+VAR0(8))/2.D0 * * Rayon test et au début du pas * AIS=VAR0(6) AIS0=AIS * * Contrainte équivalente du point fixe * IF (Stest0.LE.(1.D-10*YOUN0)) Stest0=0.D0 Stest0=(3.D0*Stest0/2.D0)**(.5D0) ELSE * * On décharge *----------------------------------------------------- * * Centre test et au début du pas * DO 11 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 DEVT(I)=SIGT(I)+PRES1*A DEV(I)=(DEVT(I)-VAR0(8+I))/2.D0 DEV0(I)=(RSIG0(I)+PRES00*A-VAR0(8+I))/2.D0 11 CONTINUE APT=(PRES1+VAR0(7))/2.D0 APT0=(PRES00+VAR0(7))/2.D0 * * Rayon test et au début du pas * AIS=VAR0(5) AIS0=AIS * * Contrainte équivalente du point fixe * IF (Stest0.LE.(1.D-10*YOUN0)) Stest0=0.D0 Stest0=(3.D0*Stest0/2.D0)**(.5D0) ENDIF * *---> Terme déviatoire de la distance au centre de la surface test * IF (AJ2.LE.(1.D-10*YOUN0)) AJ2=0.D0 AJ2=(3.D0/2.D0*AJ2)**(.5D0) * *---> Terme déviatoire de la distance au centre de la surface au * début du pas * IF (AJ20.LE.(1.D-10*YOUN0)) AJ20=0.D0 AJ20=(3.D0/2.D0*AJ20)**(.5D0) * *---> Pressions critiques au début du pas * APT10=2.D0*APT0-PRES00 PC2=(St0*St0+XM0*XM0*PRES00*PRES00)/(XM0*XM0*PRES00) PCD1=(Stest0*Stest0+XM0*XM0*APT10*APT10)/(XM0*XM0*APT10) * *---> Initialisation de la pression initiale du "CENTRE" * IF (NCHAR0.EQ.1) THEN IF (ABS(VAR0(22)).LE.1.D-10) THEN AP1=APT AP2=0.D0 ELSE AP1=VAR0(22) AP2=AP1 ENDIF ELSE IF (ABS(VAR0(21)).LE.1.D-10) THEN AP1=APT AP2=0.D0 ELSE AP1=VAR0(21) AP2=AP1 ENDIF ENDIF * *---> Terme d'écrouissage BETA2 au début du pas * Terme ALP0 non associatif de l'écoulemment * IF (NCHAR0.EQ.1) THEN BETA2=(XPCR0/PC2+1.D0)*PRES00*2.D0*VAR0(4) BETA2=XBET1*BETA2/(3.D0*PCD1*PC2) ALP0=(1.D0-(ABS(APT10-AP1)/XA0)) ALP0=ALP0*(1.D0-1.5D0*PC2/VAR0(4)) ELSE BETA2=XBET1*(XPCR0/PCD1+1.D0)*PC2/PRES00 ALP0=(1.D0-(ABS(APT10-AP1)/XA0)) ALP0=ALP0*(1.5D0*PC2/PCD1-.5D0) ENDIF BETA2=BETA2*EXP(XTAU0*SUCF0) ALP0=-1.D0*ALP0 * *---> Termes d'accroissement du rayon de l'ellipse * XB1=PRES00*BETA2*(PRES00-APT0)/(2.D0*AIS0) XB2=PRES00*BETA2*AJ20/(2.D0*AIS0) * *---> Surface de charge de gonflement * PHIT=AJ2*AJ2+XM0*XM0*(PRES1-APT+AIS)*(PRES1-APT-AIS) * * * * Vérification du critère de plasticité *========================================================= * *---> Erreur admise * ERR0=1.D-7*ABS(PHIT) ERR0=MAX(ERR0,1.D-10*YOUN0) * *---> Critère de plasticité * PHI0=PHIT iter0=0 * 99 IF (PHI0.LE.ERR0) THEN * * On est élastique par rapport à la surface de gonflement *========================================================= * IF (NCHAR0.EQ.1) THEN * * On charge * DO 20 I=1,6 SIGF(I)=SIGT(I) DEFF(I)=DEFP(I) VARF(8+I)=DEVT(I) VARF(14+I)=VAR0(14+I) 20 CONTINUE VARF(5)=XA0 VARF(6)=AIS VARF(7)=PRES1 VARF(8)=VAR0(8) VARF(21)=0.D0 VARF(22)=AP2 ELSE * * On décharge * DO 21 I=1,6 SIGF(I)=SIGT(I) DEFF(I)=DEFP(I) VARF(8+I)=VAR0(8+I) VARF(14+I)=DEVT(I) 21 CONTINUE VARF(5)=AIS VARF(6)=XA0 VARF(7)=VAR0(7) VARF(8)=PRES1 VARF(21)=AP2 VARF(22)=0.D0 ENDIF * ELSE * * On est plastique par rapport à la surface de gonflement *========================================================= * *---> Pression initiale du "CENTRE" * IF (NCHAR0.EQ.1) THEN IF (ABS(VAR0(22)).LE.1.D-10) THEN AP1=APT AP2=AP1 ENDIF ELSE IF (ABS(VAR0(21)).LE.1.D-10) THEN AP1=APT AP2=AP1 ENDIF ENDIF * *---> Condition de consistance * IF (dif0.LE.1.D-5) THEN * * Cas où XN0=1 *------------------------------------------------------------- * tr0=2.D0*XM0*XM0*(PRES1-APT) DEQ=ABS(2.D0*AJ2-ALP0*tr0) DF0=3.D0*XGA0*PRES00*AJ2*DEQ DF1=XKA0*PRES1*tr0*tr0/2.D0 DF2=(XB1*tr0+XB2*DEQ)*2.D0*XM0*XM0*AIS * denom0=DF0+DF1+DF2 * dlam0=PHIT/denom0 * *---> Mise à jour des contraintes * PRES1=PRES1*EXP(-1.D0*XKA0*tr0*dlam0) DO 30 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 IF (AJ2.GT.(YOUN0*1.D-10)) THEN DEVT(I)=DEVT(I)-3.D0*XGA0*PRES00*DEV(I)/AJ2*DEQ*dlam0 ELSE DEVT(I)=DEVT(I)-6.D0*XGA0*PRES00*DEV(I)*dlam0 ENDIF SIGT(I)=DEVT(I)-PRES1*A 30 CONTINUE * *---> Mise à jour du rayon de l'ellipse * AIS=AIS+tr0*XB1*dlam0+XB2*DEQ*dlam0 * *---> Mise à jour du centre de l'ellipse * IF (NCHAR0.EQ.1) THEN APT=(PRES1+VAR0(8))/2.D0 DO 35 I=1,6 DEV(I)=(DEVT(I)-VAR0(14+I))/2.D0 35 CONTINUE ELSE APT=(PRES1+VAR0(7))/2.D0 DO 36 I=1,6 DEV(I)=(DEVT(I)-VAR0(8+I))/2.D0 36 CONTINUE ENDIF IF (AJ2.LE.(1.D-10*YOUN0)) AJ2=0.D0 AJ2=(3.D0/2.D0*AJ2)**(.5D0) * *---> Mise à jour des déformations élastiques et plastiques * TRELT=-1.D0*LOG(PRES1/PRES00)/XKA0 DO 40 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 DEFP(I)=(DEVT(I)-(RSIG0(I)+PRES00*A)) . /(2.D0*XGA0*PRES00) DEFP(I)=DEPST(I)-DEFP(I)-TRELT*A/3.D0 40 CONTINUE * ELSE * * Autres cas *------------------------------------------------------------- * tr0=2.D0*XM0*XM0*(PRES1-APT) DEQ=ABS(2.D0*AJ2-ALP0*tr0) DF0=3.D0*XGA1*AJ2*DEQ DF1=XKA1*tr0*tr0/2.D0 DF2=(XB1*tr0+XB2*DEQ)*2.D0*XM0*XM0*AIS * denom0=DF0+DF1+DF2 * dlam0=PHIT/denom0 * *---> Mise à jour des contraintes * PRES1=PRES1-1.D0*XKA1*tr0*dlam0 DO 31 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 IF (AJ2.GT.(YOUN0*1.D-10)) THEN DEVT(I)=DEVT(I)-3.D0*XGA1*DEV(I)/AJ2*DEQ*dlam0 ELSE DEVT(I)=DEVT(I)-6.D0*XGA1*DEV(I)*dlam0 ENDIF SIGT(I)=DEVT(I)-PRES1*A 31 CONTINUE * *---> Mise à jour du rayon de l'ellipse * AIS=AIS+tr0*XB1*dlam0+XB2*DEQ*dlam0 * *---> Mise à jour du centre de l'ellipse * IF (NCHAR0.EQ.1) THEN APT=(PRES1+VAR0(8))/2.D0 DO 350 I=1,6 DEV(I)=(DEVT(I)-VAR0(14+I))/2.D0 350 CONTINUE ELSE APT=(PRES1+VAR0(7))/2.D0 DO 360 I=1,6 DEV(I)=(DEVT(I)-VAR0(8+I))/2.D0 360 CONTINUE ENDIF IF (AJ2.LE.(1.D-10*YOUN0)) AJ2=0.D0 AJ2=(3.D0/2.D0*AJ2)**(.5D0) * *---> Mise à jour des déformations élastiques et plastiques * TRELT=-1.D0*(PRES1-PRES00)/XKA1 DO 41 I=1,6 A=0.D0 IF (I.LE.3) A=1.D0 DEFP(I)=(DEVT(I)-(RSIG0(I)+PRES00*A)) . /(2.D0*XGA1) DEFP(I)=DEPST(I)-DEFP(I)-TRELT*A/3.D0 41 CONTINUE * * Fin du cas sur XN0 *------------------------------------------------------------- * ENDIF * *---> Surface de charge de gonflement * PHIT=AJ2*AJ2+XM0*XM0*(PRES1-APT+AIS)*(PRES1-APT-AIS) PHI0=ABS(PHIT) * * *---> Test de convergence ou itération suivante * iter0=iter0+1 IF (iter0.LT.200) THEN GOTO 99 ELSE PHI0=0.D0 KERRE=460 GOTO 99 ENDIF * * ENDIF * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales