ric3nl
C RIC3NL SOURCE PV 17/12/08 21:17:39 9660 C sub ricnl3d C C====&===1=========2=========3=========4=========5=========6=========7== C Commentaires : Subroutine permettant de mettre en oeuvre le C modele RICRAG (F. Ragueneau & B. Richard) pour représenter C le comportement 3D d'un béton ordinaire sous C sollicitations complexes en non local C Traits : - Endommagement scalaire C - Glissement frottant C - 3D C - Monotone et cyclique C - Non localité portant sur le seuil d'endommagement (Fd) C - Bon comportement unilatteral C Auteurs : B. Richard (doctorant) & F. Ragueneau (LCPC, FDOA & BCC) C Date : Mai 2008 C====&===1=========2=========3=========4=========5=========6=========7== C C-----DECLARATION GENERALE---------------------------------------------- C IMPLICIT REAL*8(A-H,O-Z) C C-----LISTE DES INCLUDES A CHARGER-------------------------------------- C -INC PPARAM -INC CCOPTIO -INC DECHE -INC CCREEL C C-----DECLARATION GENERALE---------------------------------------------- C C REAL*8 XMAT(9),VAR0(30),VARF(30),SIGF(6),DEPST(6) REAL*8 E,NU,FT,ALIND,GAMMA1,A1,ALDIR REAL*8 EPS0,K,G,Y0,DEPSDEV(3,3),DTRA REAL*8 UNIT(3,3),DEPSI(3,3),EPSTFBIS(6) REAL*8 FORCEI,NRUPT,SEUILT,DEVPI(3,3) REAL*8 YD,YN,EPSDIR(3,3),EPSIND(3,3),Dn REAL*8 SIGMPI(3,3),SIGMOD(3,3),SIGMOX(3,3),X(3,3),TERME6(3,3) REAL*8 TERME7(3,3),TERME8(3,3),TERME9(3,3),TROGO,DEVTRO(3,3) REAL*8 DEVDGS(3,3) C CHARACTER*8 CMATE C C-----DEFINITION DE PARAMETRES------------------------------------------ C PARAMETER (XZER=0.0D0 , UN=1.0D0 , DEUX=2.0D0, XCOEF=0.00D0) C C-----OUVERTURE DE SEGMENTS DE TRAVAIL---------------------------------- C C SEGMENT WRK0 C REAL*8 XMAT(NMATT) C ENDSEGMENT C C SEGMENT WRK1 C REAL*8 DDHOOK(LHOOK,LHOOK),SIG0(NSTRS),DEPST(NSTRS) C REAL*8 SIGF(NSTRS),VAR0(NVARI),VARF(NVARI) C REAL*8 DEFP(NSTRS),XCAR(ICARA) C ENDSEGMENT C C SEGMENT WRK5 C REAL*8 EPIN0(NSTRS),EPINF(NSTRS),EPST0(NSTRS) C ENDSEGMENT C C-----MISE EN DONNEE---------------------------------------------------- C CMATE='ISOTROPE' E = XMAT(1) NU = XMAT(2) FT = XMAT(5) ALIND = XMAT(6) GAMMA1 = XMAT(7) A1 = XMAT(8) ALDIR = XMAT(9) EPS0 = FT/E K = E/(1.D0-2.D0*NU) G = E/(2.D0*(1.D0+NU)) Y0 = (K/6.0D0*EPS0**2.D0) DO I=1,3 DO J=1,3 IF (I.EQ.J) THEN UNIT(I,J)=UN ELSE UNIT(I,J)=XZER ENDIF ENDDO ENDDO C C-----PASSAGE DES VARIABLES INTERNES------------------------------------ C C C GLISSEMENT (EPSILON_PI) C EPSIPI(1,1)=VAR0(2) EPSIPI(2,2)=VAR0(3) EPSIPI(3,3)=VAR0(4) EPSIPI(1,2)=VAR0(5) EPSIPI(1,3)=VAR0(6) EPSIPI(2,3)=VAR0(7) EPSIPI(2,1)=VAR0(5) EPSIPI(3,1)=VAR0(6) EPSIPI(3,2)=VAR0(7) C C ECROUISSAGE CINEMATIQUE (ALPHA) C C C C C ENDOMMAGEMENT (D) C D=VAR0(14) C C FORCE ECROUISSAGE ISOTROPE C FFFZ=VAR0(17) C C DEFORMATION TOTALE MISE DANS EPSI C DO I=1,6 EPSTFBIS(I)=VAR0(18+I)+DEPST(I) ENDDO DO I=1,3 DEPSI(I,I)=DEPST(I) ENDDO DEPSI(1,2)=DEPST(4)/2.0D0 DEPSI(1,3)=DEPST(5)/2.0D0 DEPSI(2,3)=DEPST(6)/2.0D0 DEPSI(2,1)=DEPST(4)/2.0D0 DEPSI(3,1)=DEPST(5)/2.0D0 DEPSI(3,2)=DEPST(6)/2.0D0 C C ECROUISSAGE C FORCED = VAR0(25) FORCEI = VAR0(26) C C MATRICE DE HOOKE C AUX0=E/((UN+NU)*(UN-NU-NU)) AUX=AUX0*(UN-NU) AUX1=AUX0*NU XGEGE=0.5D0*E/(UN+NU) DDHOOK(1,1)=AUX DDHOOK(2,1)=AUX1 DDHOOK(3,1)=AUX1 DDHOOK(1,2)=AUX1 DDHOOK(2,2)=AUX DDHOOK(3,2)=AUX1 DDHOOK(1,3)=AUX1 DDHOOK(2,3)=AUX1 DDHOOK(3,3)=AUX DDHOOK(4,4)=XGEGE DDHOOK(5,5)=XGEGE DDHOOK(6,6)=XGEGE C----------------------------------------------------------------------- C-----DEBUT INTEGRATION NUMERIQUE--------------------------------------- C----------------------------------------------------------------------- DTRA = DEPSI(1,1)+DEPSI(2,2)+DEPSI(3,3) DO I=1,3 DO J=1,3 DEPSDEV(I,J) = DEPSI(I,J)-DTRA*UNIT(I,J)/3.0D0 ENDDO ENDDO DO I=1,3 DO J=1,3 ENDDO ENDDO C C-----ENDOMMAGEMENT------------------------------------------------------ C C C CALCUL DES VALEURS PRINCIPALES C C C CALCUL DE EPSILON DIRECT C IF (TRA.GE.XZER) THEN XPDC=1.0D0 c GAMMA1 = 7.0D8 c A1 = 7.0D-5 ELSE XPDC=XZER ENDIF DO I=1,3 DO J=1,3 IF (I.EQ.J) THEN EPSDIR(I,J)=0.5D0*(ABS(VPEPS(I))+VPEPS(I))*XPDC ELSE EPSDIR(I,J)=XZER ENDIF ENDDO ENDDO C C CALCUL DE EPSILON INDUIT C DO I=1,3 DO J=1,3 IF (I.EQ.J) THEN EPSIND(I,J)=0.5D0*(ABS(VPEPS(I))+VPEPS(I))-EPSDIR(I,J) ELSE EPSIND(I,J)=XZER ENDIF ENDDO ENDDO C C TAUX D ENERGIES CORRESPONDANTES C DONMDNL=XZER DONMINL=XZER DO I=1,3 DO J=1,3 DONMDNL=DONMDNL+(K/6.0D0)*EPSDIR(I,J)*EPSDIR(I,J) DONMINL=DONMINL+(K/6.0D0)*EPSIND(I,J)*EPSIND(I,J) ENDDO ENDDO * YNP = (K/6.0D0)*((ABS(TRA)+TRA)*0.5D0)**2.0D0 * YNN = (K/6.0D0)*((-ABS(TRA)+TRA)*0.5D0)**2.0D0 * YDD = 0.0D0 * DO I=1,3 * DO J=1,3 * YDD = YDD + G*EPSDEV(I,J)*EPSDEV(I,J) * ENDDO * ENDDO * SEUIL1NL = 50.0D0*YNP + YDD - YNN*0.000D0 * Y0 = Y0 * 5.0D0 SEUIL1NL=DONMDNL*XPDC+DONMINL*(1.0D0-XPDC) IF (ISTEP.EQ.0) THEN SEUIL1=SEUIL1NL VARF(1)=SEUIL1 ELSE IF (ISTEP.EQ.1) THEN VARF(1)=SEUIL1NL DO I=2,26 VARF(I)=VAR0(I) ENDDO GOTO 2000 ELSE IF (ISTEP.EQ.2) THEN SEUIL1=VAR0(1) VARF(1)=SEUIL1 ENDIF C C CALCUL NON LOCAL - ON MOYENNE LE SEUIL C FFFZ=FORCED*XPDC+FORCEI*(1.0D0-XPDC) SEUILT=SEUIL1-(FFFZ+Y0) C C EVOLUTION ENDOMMAGEMENT C IF (SEUILT.GT.XZER) THEN IF (TRA.GE.XZER) THEN Dn = 1.0D0-1.0D0/(1.0D0+ALDIR*(SEUIL1-Y0)) FORCED = SEUIL1-Y0 ELSE Dn = 1.0D0-1.0D0/(1.0D0+ALIND*(SEUIL1-Y0)) FORCEI = SEUIL1-Y0 ENDIF C C ON VERIFIE D COISSANT C IF (Dn.GE.D) THEN D=Dn ENDIF C C ON LIMITE LA VALEUR DE D C IF (D.GE.0.99999D0) THEN D=0.99999D0 ENDIF C C ON BLOQUE LES ECROUISSAGES C FFFZ=FORCED*XPDC+FORCEI*(1.0D0-XPDC) ENDIF DO I=1,3 DO J=1,3 ENDDO ENDDO C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C SUBSTEPPING C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C NENTIER=100 DO KIN=1,NENTIER DO I=1,6 EPSTFBIS(I)=VAR0(18+I)+KIN*DEPST(I)/NENTIER ENDDO TRAPI = EPSIPI(1,1)+EPSIPI(2,2)+EPSIPI(3,3) DO I=1,3 DO J=1,3 DEVPI(I,J)=EPSIPI(I,J)-(1.0D0/3.0D0)*TRAPI*UNIT(I,J) ENDDO ENDDO DO I=1,3 DO J=1,3 & (1.0D0-D)*2.0D0*G*EPSDEV(I,J)+ & (K/3.0D0)*D*(TRA-TRAPI)*UNIT(I,J)+ & 2.0D0*G*D*(EPSDEV(I,J)-DEVPI(I,J)) ENDDO ENDDO DO I=1,3 DO J=1,3 SIGMPI(I,J)=(K/3.0D0)*D*(TRA-TRAPI)*UNIT(I,J)+ & 2.0D0*G*D*(EPSDEV(I,J)-DEVPI(I,J)) ENDDO ENDDO C C====&===1=========2=========3=========4=========5=========6=========7== C-----DEBUT INTEGRATION GLISSEMENT-------------------------------------- C====&===1=========2=========3=========4=========5=========6=========7== C DO 500 IREMP=1,500 C C 1) EVALUATION DU SEUIL C ---------------------- DO 101 I=1,3 DO 201 J=1,3 SIGMOX(I,J)=XZER SIGMOX(I,J)=SIGMPI(I,J)-X(I,J) 201 CONTINUE 101 CONTINUE TRASX=XZER TRASX=SIGMOX(1,1)+SIGMOX(2,2)+SIGMOX(3,3) DO 102 I=1,3 DO 202 J=1,3 SIGMOD(I,J)=XZER SIGMOD(I,J)=SIGMOX(I,J)-(1.0D0/3.0D0)*TRASX*UNIT(I,J) 202 CONTINUE 102 CONTINUE TERME4=XZER DO 103 I=1,3 DO 203 J=1,3 TERME4=TERME4+SIGMOD(I,J)*SIGMOD(I,J) 203 CONTINUE 103 CONTINUE C C CALCUL DU J2(SIGMPI-X) C TRASIN = 0.5D0*(-ABS(TRASIN)+TRASIN)*0.0D0 TERME4=SQRT(3.D0/2.D0*TERME4)+(TRASIN/3.0D0)*0.80D0 SEUIL2=TERME4+XCOEF*(1.0D0/3.0D0)*TRASX IF (IREMP.EQ.1) THEN SEUINI=SEUIL2 DLAM2=XZER COCO=2 ENDIF IF (SEUINI.GT.1.0D0) THEN ELSE CRIT=XZER ENDIF C C 2) ON VERIFIE LA VALEUR RELATIVE DU SEUIL C ----------------------------------------- & (D.EQ.XZER))THEN GOTO 666 ELSE IF (IREMP.EQ.1) COCO=1 C C 3) CALCUL DES DERIVÉES POUR LA REDESCENTE C ----------------------------------------- DO I=1,3 DO J=1,3 TERME6(I,J)=XZER TERME7(I,J)=XZER TERME8(I,J)=XZER TERME9(I,J)=XZER ENDDO ENDDO C C CALCUL DE DF/DS.................................................... C DO I=1,3 DO J=1,3 TERME6(I,J)=(3.D0/2.D0)*SIGMOX(I,J)/TERME4+XCOEF*1.0D0/3.D0* & UNIT(I,J) ENDDO ENDDO C C CALCUL DE DF/DX.................................................... C DO I=1,3 DO J=1,3 TERME7(I,J)=-TERME6(I,J) ENDDO ENDDO C C CALCUL DE DG/DS.................................................... C DO I=1,3 DO J=1,3 TERME8(I,J)=(3.D0/2.D0)*SIGMOX(I,J)/TERME4+XCOEF*1.0D0/3.D0* & UNIT(I,J) ENDDO ENDDO C C CALCUL DE DG/DX.................................................... C DO I=1,3 DO J=1,3 TERME9(I,J)=-(3.D0/2.D0)*SIGMOX(I,J)/TERME4+A1*X(I,J)- & XCOEF*1.0D0/3.D0*UNIT(I,J) ENDDO ENDDO C C 4) CALCUL DU MULTIPLICATEUR DE GLISSEMENT C ----------------------------------------- TRDGZ=TERME8(1,1)+TERME8(2,2)+TERME8(3,3) DO I=1,3 DO J=1,3 DEVDGS(I,J)=TERME8(I,J)-(1.0D0/3.0D0)*TRDGZ*UNIT(I,J) ENDDO ENDDO TERM10=XZER DO I=1,3 DO J=1,3 TERM10=TERM10+TERME6(I,J)*((K/3.0D0)*TRDGZ*UNIT(I,J)+ & 2.0D0*G*DEVDGS(I,J)) ENDDO ENDDO TERM11=XZER DO I=1,3 DO J=1,3 TERM11=TERM11+TERME7(I,J)*TERME9(I,J) ENDDO ENDDO DLAM2=SEUIL2/(TERM10+GAMMA1*TERM11) C C 5) ACTUALISATION DES VARIABLES FORCES C ------------------------------------- DO I=1,3 DO J=1,3 SIGMPI(I,J)=SIGMPI(I,J)-DLAM2*D*((K/3.0D0)*TRDGZ*UNIT(I,J)+ & 2.0D0*G*DEVDGS(I,J)) ENDDO ENDDO DO I=1,3 DO J=1,3 X(I,J)=X(I,J)-GAMMA1*DLAM2*TERME9(I,J) ENDDO ENDDO ENDIF 500 CONTINUE C C-----ACTUALISATION DES VARIABLES FLUX (S'IL Y A LIEU)------------------ C C 1) ALPHA : C ------- 666 CONTINUE IF (COCO.EQ.1) THEN DO 303 I=1,3 DO 403 J=1,3 403 CONTINUE 303 CONTINUE C C 2) EPSILON_PI : C ------------ dplus=max(d,xpetit) TROGO = TRA-(SIGMPI(1,1)+SIGMPI(2,2)+SIGMPI(3,3))/(Dplus*K) DO I=1,3 DO J=1,3 DEVTRO(I,J)=EPSDEV(I,J)-(SIGMPI(I,J)-(1.0D0/3.0D0)* & (SIGMPI(1,1)+SIGMPI(2,2)+SIGMPI(3,3))*UNIT(I,J))/(2.0D0*G*Dplus) ENDDO ENDDO DO I=1,3 DO J=1,3 EPSIPI(I,J)=(1.0D0/3.0D0)*TROGO*UNIT(I,J)+DEVTRO(I,J) ENDDO ENDDO ENDIF C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ENDDO C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C-----CORRECTION DES CONTRAINTES C TRAPOS = 0.5D0*( ABS(TRA)+TRA) TRANEG = 0.5D0*(-ABS(TRA)+TRA) DO I=1,3 DO J=1,3 & K*TRANEG*UNIT(I,J)/3.0D0+ & (1.0D0-D)*2.0D0*G*EPSDEV(I,J)+ & SIGMPI(I,J) ENDDO ENDDO C------------------------------------------------------------------------ C-----FIN INTEGRATION NUMERIQUE------------------------------------------ C------------------------------------------------------------------------ C C GLISSEMENT (EPSILON_PI) C VARF(2)=EPSIPI(1,1) VARF(3)=EPSIPI(2,2) VARF(4)=EPSIPI(3,3) VARF(5)=EPSIPI(1,2) VARF(6)=EPSIPI(1,3) VARF(7)=EPSIPI(2,3) C C ECROUISSAGE CINEMATIQUE (ALPHA) C C C ENDOMMAGEMENT (D) C VARF(14)=D C C FORCE LIEE A L ECROUISSAGE ISOTROPE C VARF(17)=FFFZ C C DEFORMATION TOTALE C DO I=1,6 VARF(18+I)=EPSTFBIS(I) ENDDO C C ECROUISSAGES C VARF(25)=FORCED VARF(26)=FORCEI C C CONTRAINTES DE FROTTEMENT C * VARF(27)=SIGMPI(1,1) * VARF(28)=SIGMPI(2,2) * VARF(29)=SIGMPI(3,3) * VARF(30)=SIGMPI(1,3) 2000 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales