iwpr3d
C IWPR3D SOURCE GF238795 18/02/01 21:15:44 9724 C IWPR3D SOURCE AF221230 12/10/04 21:15:18 7520 & EPIN0,EPINF,EPST0,EPSTF) C C====&===1=========2=========3=========4=========5=========6=========7== C Commentaires : Loi d Iwan generalisée en 3D et basee sur les travaux C de Prevost C Traits : - C C Auteur : A. Frau (Ing.) - CEA/DEN/DANS/DM2S/SEMT/EMSI C====&===1=========2=========3=========4=========5=========6=========7== C C----DECLARATION GENERALES---------------------------------------------- C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C C----DECLARATION VARIABLES---------------------------------------------- C REAL*8 XID1(6),XID2(6,6) C C REAL*8 XMAT(*),SIG0(*),SIGF(*),VAR0(*),VARF(*),DEPST(*),XCAR(*) REAL*8 EPIN0(*),EPINF(*),EPST0(*),EPSTF(*) C C Parametres materiaux REAL*8 XE1,XNU1,XE0,XA0,XC1,XN1,XPREF1,XK1 REAL*8 XM1, XM2, XM3, XM4, XM5, XM6, XM7, XM8, XM9, XM10 REAL*8 XHC1, XHC2, XHC3, XHC4, XHC5, XHC6, XHC7, XHC8, XHC9,XHC10 REAL*8 XHE1, XHE2, XHE3, XHE4, XHE5, XHE6, XHE7, XHE8, XHE9,XHE10 REAL*8 XD1, XD2, XD3, XD4, XD5, XD6, XD7, XD8, XD9, XD10 REAL*8 XETC1,XETC2,XETC3,XETC4,XETC5,XETC6,XETC7,XETC8,XETC9 REAL*8 XETC10 REAL*8 XETE1,XETE2,XETE3,XETE4,XETE5,XETE6,XETE7,XETE8,XETE9 REAL*8 XETE10 C C Valeurs elastiques REAL*8 GMOD_E1,KMOD_E1,GMOD,KMOD C C tollerances REAL*8 XTOL1,XTOL2 C C indicateurs de controle pour le substep INTEGER IND_TEST,IND_STEP1,IND_STEP2,IND_STEP3,N_STEP,N_STEP2 C C variables deplacement REAL*8 DDET_ST(6),DDET_ST2(6),DE_TOT(6),DSE_TOT(6),DVE_TOT c c Valeurs pour contraintes, deformations et autres valeurs initiaux REAL*8 SIG_INI(6),S_INI(6),P_INI REAL*8 X1_INI(6),X2_INI(6),X3_INI(6),X4_INI(6),X5_INI(6) REAL*8 X6_INI(6),X7_INI(6),X8_INI(6),X9_INI(6),X10_INI(6) REAL*8 NX1_INI,NX2_INI,NX3_INI,NX4_INI,NX5_INI REAL*8 NX6_INI,NX7_INI,NX8_INI,NX9_INI,NX10_INI REAL*8 NN1_INI(6),NN2_INI(6),NN3_INI(6),NN4_INI(6),NN5_INI(6) REAL*8 NN6_INI(6),NN7_INI(6),NN8_INI(6),NN9_INI(6),NN10_INI(6) REAL*8 NN21_INI(6),NN22_INI(6),NN23_INI(6),NN24_INI(6),NN25_INI(6) REAL*8 NN26_INI(6),NN27_INI(6),NN28_INI(6),NN29_INI(6) REAL*8 NN210_INI(6) REAL*8 COS3TH1_INI,COS3TH2_INI,COS3TH3_INI,COS3TH4_INI REAL*8 COS3TH5_INI REAL*8 COS3TH6_INI,COS3TH7_INI,COS3TH8_INI,COS3TH9_INI REAL*8 COS3TH10_INI REAL*8 RTH1_INI,RTH2_INI,RTH3_INI,RTH4_INI,RTH5_INI REAL*8 RTH6_INI,RTH7_INI,RTH8_INI,RTH9_INI,RTH10_INI REAL*8 F1_INI,F2_INI,F3_INI,F4_INI,F5_INI REAL*8 F6_INI,F7_INI,F8_INI,F9_INI,F10_INI REAL*8 BET1_INI(6),BET2_INI(6),BET3_INI(6),BET4_INI(6),BET5_INI(6) REAL*8 BET6_INI(6),BET7_INI(6),BET8_INI(6),BET9_INI(6) REAL*8 BET10_INI(6) REAL*8 EPLA_INI(6),SEPLA_INI(6),VEPLA_INI,ETOT_INI(6) INTEGER IINI_CRIT C C INTEGER N_ITER1 c c Valeurs pour contraintes, deformations et autres valeurs pour c l'instant n+1 au demarrage des boucles REAL*8 X1_0(6),X2_0(6),X3_0(6),X4_0(6),X5_0(6) REAL*8 X6_0(6),X7_0(6),X8_0(6),X9_0(6),X10_0(6) REAL*8 NX1_0,NX2_0,NX3_0,NX4_0,NX5_0 REAL*8 NX6_0,NX7_0,NX8_0,NX9_0,NX10_0 REAL*8 NN1_0(6),NN2_0(6),NN3_0(6),NN4_0(6),NN5_0(6) REAL*8 NN6_0(6),NN7_0(6),NN8_0(6),NN9_0(6),NN10_0(6) REAL*8 NN21_0(6),NN22_0(6),NN23_0(6),NN24_0(6),NN25_0(6) REAL*8 NN26_0(6),NN27_0(6),NN28_0(6),NN29_0(6) REAL*8 NN210_0(6) REAL*8 COS3TH1_0,COS3TH2_0,COS3TH3_0,COS3TH4_0 REAL*8 COS3TH5_0 REAL*8 COS3TH6_0,COS3TH7_0,COS3TH8_0,COS3TH9_0 REAL*8 COS3TH10_0 REAL*8 RTH1_0,RTH2_0,RTH3_0,RTH4_0,RTH5_0 REAL*8 RTH6_0,RTH7_0,RTH8_0,RTH9_0,RTH10_0 REAL*8 F1_0,F2_0,F3_0,F4_0,F5_0 REAL*8 F6_0,F7_0,F8_0,F9_0,F10_0 REAL*8 BET1_0(6),BET2_0(6),BET3_0(6),BET4_0(6),BET5_0(6) REAL*8 BET6_0(6),BET7_0(6),BET8_0(6),BET9_0(6) REAL*8 BET10_0(6) REAL*8 VET_TEST(10) INTEGER VET_TEST2(10) INTEGER I1_CRIT,I2_CRIT REAL*8 XCONT_CRI c Valeurs pour contraintes, deformations et autres valeurs pour c l'instant n+1 au cours des iterations une fois que le critere C est detecté REAL*8 XM,XHC,XHE,XETC,XETE,XD REAL*8 S_0(6),P_0 REAL*8 SEPLA_0(6),VEPLA_0 REAL*8 DGAM_0 REAL*8 BET_0(6),X_0(6),NX_0,NN_0(6),N2N_0(6) REAL*8 COS3TH_0,RTH_0 REAL*8 HMOD_0 REAL*8 ETA_0,P1_0 REAL*8 S1M(6),S2M(6),S2SCAL,MM_0(6),NMM_0,XVAL1(6),XVAL2 REAL*8 F_0,F_00 C C criteres C C partie elastiques REAL*8 GMOD_0,KMOD_0,DGDP_0,DKDP_0 REAL*8 R_0(7),DTOT(7) REAL*8 AE_0I(7,7),AE_0(7,7) C C partie iteration REAL*8 D2F(6,6),DS_0(6),DP_0 REAL*8 DFDS_0(6),DFDS_0D(6),DFDP_0,VECT1,DFDBET_0(6) REAL*8 XVAL3(6),XVAL4 REAL*8 VAL1,VAL2,VAL3 REAL*8 D2GAM,DSEPLA_0(6),DVEPLA_0,DBET_0(6) REAL*8 SEPLA_1(6),VEPLA_1,BET_1(6),DGAM_1 c Valeurs suite à la convergence à chaque sous-step n+1 REAL*8 EPLA_FIN(6),ETOT_FIN(6) REAL*8 SIG_FIN(6) REAL*8 A_CORR,XXI_CORR(6) REAL*8 BET1_FIN(6),BET2_FIN(6),BET3_FIN(6),BET4_FIN(6),BET5_FIN(6) REAL*8 BET6_FIN(6),BET7_FIN(6),BET8_FIN(6),BET9_FIN(6) REAL*8 BET10_FIN(6) C C Definition des matrices identité XID1(1:6) = 0.0D0 XID2(1:6,1:6) = 0.0D0 XID1(1:3) = 1.0D0 XID2(1,1) = 1.0D0 XID2(2,2) = 1.0D0 XID2(3,3) = 1.0D0 XID2(4,4) = 1.0D0 XID2(5,5) = 1.0D0 XID2(6,6) = 1.0D0 C C----CONTROLE OPTION CALCUL -------------------------------------------- IF ((IFOUR.NE.2).AND.(IFOUR.NE.0).AND.(IFOUR.NE.-1)) THEN WRITE(IOIMP,10000) 10000 FORMAT('Option calcul mauvais') WRITE(IOIMP,10001) 10001 FORMAT(' seulement:') WRITE(IOIMP,10002) 10002 FORMAT(' 3D MODE PLAN') WRITE(IOIMP,10003) 10003 FORMAT(' 2D MODE AXIS') WRITE(IOIMP,10004) 10004 FORMAT(' 2D MODE PLAN') STOP ENDIF C C----MISE EN DONNEES---------------------------------------------------- C C Module de young et coef poisson XE1 = XMAT(1) XNU1 = XMAT(2) C C parametres alph0, c1, n1, pref, k1 XE0 = XMAT(5) XA0 = XMAT(6) XC1 = XMAT(7) XN1 = XMAT(8) XPREF1 = XMAT(9) XK1 = XMAT(10) C C seuils m1, m2, m3, m4, m5, m6, m7, m8, m9, m10 XM1 = XMAT(11) XM2 = XMAT(12) XM3 = XMAT(13) XM4 = XMAT(14) XM5 = XMAT(15) XM6 = XMAT(16) XM7 = XMAT(17) XM8 = XMAT(18) XM9 = XMAT(19) XM10 = XMAT(20) C C Modules plastiques Hc1, Hc2, Hc3, Hc4, Hc5, Hc6, Hc7, Hc8, Hc9 C Hc10 XHC1 = XMAT(21) XHC2 = XMAT(22) XHC3 = XMAT(23) XHC4 = XMAT(24) XHC5 = XMAT(25) XHC6 = XMAT(26) XHC7 = XMAT(27) XHC8 = XMAT(28) XHC9 = XMAT(29) XHC10 = 0.01D0*XMAT(29) C C Modules plastiques He1, He2, He3, He4, He5, He6, He7, He8, He9 C He10 XHE1 = XMAT(30) XHE2 = XMAT(31) XHE3 = XMAT(32) XHE4 = XMAT(33) XHE5 = XMAT(34) XHE6 = XMAT(35) XHE7 = XMAT(36) XHE8 = XMAT(37) XHE9 = XMAT(38) XHE10 = 0.01D0*XMAT(38) C C Modules plastiques D1, D2, D3, D4, D5, D6, D7, D8, D9, D10 XD1 = XMAT(39) XD2 = XMAT(40) XD3 = XMAT(41) XD4 = XMAT(42) XD5 = XMAT(43) XD6 = XMAT(44) XD7 = XMAT(45) XD8 = XMAT(46) XD9 = XMAT(47) XD10 = 0.0D0 C C Modules plastiques eta_c1, eta_c2, eta_c3, eta_c4, eta_c5 C eta_c6, eta_c7, eta_c8, eta_c9, eta_c10 XETC1 = XMAT(48) XETC2 = XMAT(49) XETC3 = XMAT(50) XETC4 = XMAT(51) XETC5 = XMAT(52) XETC6 = XMAT(53) XETC7 = XMAT(54) XETC8 = XMAT(55) XETC9 = XMAT(56) XETC10 = 1000.0D0 C C Modules plastiques eta_e1, eta_e2, eta_e3, eta_e4, eta_e5 C eta_e6, eta_e7, eta_e8, eta_e9, eta_e10 XETE1 = XMAT(57) XETE2 = XMAT(58) XETE3 = XMAT(59) XETE4 = XMAT(60) XETE5 = XMAT(61) XETE6 = XMAT(62) XETE7 = XMAT(63) XETE8 = XMAT(64) XETE9 = XMAT(65) XETE10 = 1000.0D0 C C----CONTROLE SUR LE VALEURS MATERIAUX --------------------------------- IF ((XM2.LT.XM1).OR.(XM3.LT.XM2).OR.(XM4.LT.XM3).OR.(XM5.LT.XM4) &.OR.(XM6.LT.XM5).OR.(XM7.LT.XM6).OR.(XM8.LT.XM7).OR.(XM9.LT.XM8) &.OR.(XM10.LT.XM9)) THEN WRITE(IOIMP,10005) 10005 FORMAT(' ERREUR DANS LES VALEURS M') STOP ENDIF C C---- DEFINITION DES VALEURS ELASTIQUES -------------------------------- GMOD_E1 = ((XE1)/((2.0D0)*(1.0D0 + XNU1))) KMOD_E1 = ((XE1)/((3.0D0)*(1.0D0 - ((2.0D0)*(XNU1))))) GMOD = (((XA0)*(XE0))/((2.0D0)*(1.0D0 + XNU1))) KMOD = (((XA0)*(XE0))/((3.0D0)*(1.0D0 - ((2.0D0)*(XNU1))))) C C---- DEFINITION DES TOLLERANCES --------------------------------------- XTOL1 = 1.0E-8 XTOL2 = 1.0E-8 C C---- INITIALLIZZATION INTEGER POUR SUBSTEPPING ------------------------ IND_TEST = INT(0) IND_STEP1 = INT(0) IND_STEP2 = INT(0) IND_STEP3 = INT(0) C C---- VALEUR INITIALES ------------------------------------------------- SIG_INI(1:6) = SIG0(1:6) BET1_INI(1:6) = VAR0(2:7) BET2_INI(1:6) = VAR0(8:13) BET3_INI(1:6) = VAR0(14:19) BET4_INI(1:6) = VAR0(20:25) BET5_INI(1:6) = VAR0(26:31) BET6_INI(1:6) = VAR0(32:37) BET7_INI(1:6) = VAR0(38:43) BET8_INI(1:6) = VAR0(44:49) BET9_INI(1:6) = VAR0(50:55) BET10_INI(1:6) = VAR0(56:61) C ETOT_INI(1:6) = EPST0(1:6) EPLA_INI(1:6) = EPIN0(1:6) EPLA_INI(4:6) = (EPLA_INI(4:6))/(2.0D0) ETOT_INI(4:6) = (ETOT_INI(4:6))/(2.0D0) C N_STEP = INT(1) C C Modification 17-05-2016 IF (IFOUR.NE.2) THEN DEPST(5:6) = 0.0D0 DDET_ST(5:6) = 0.0D0 ETOT_INI(5:6) = 0.0D0 EPLA_INI(5:6) = 0.0D0 ENDIF DDET_ST(1:6) = (DEPST(1:6))/(N_STEP) DDET_ST(4:6) = (DDET_ST(4:6))/(2.0D0) C C---- ON COMMENCE LA BOUCLE WHILE POUR L ALGORITHME ADAPTATIVE --------- 10 CONTINUE DO 100 I_STEP=1,N_STEP C C---- AU DEBUT DE CHAQUE STEP ON INTIALISE LES VARIABLE ET ------------ C---- ON RECHERCHE LE CRITERE ACTIVE AU DERNIER PAS DE TEMP ----------- c C Delta deformation totale pour le substep DE_TOT(1:6) = DDET_ST(1:6) c C Partie deviatore et volumique du Deps_tot DSE_TOT = DE_TOT(1:6) - & (((DE_TOT(1) + DE_TOT(2) + DE_TOT(3))/(3.0D0))*(XID1(1:6))) DVE_TOT = (DE_TOT(1) + DE_TOT(2) + DE_TOT(3)) c C Partie deviatoire et hydrostatique de sig_ini S_INI = SIG_INI(1:6) - & (((SIG_INI(1) + SIG_INI(2) + SIG_INI(3))/(3.0D0))*(XID1(1:6))) P_INI = ((SIG_INI(1) + SIG_INI(2) + SIG_INI(3))/(3.0D0)) c C PArtie deviatoire et volumiquue de e_pla_ini SEPLA_INI(1:6) = EPLA_INI - & (((EPLA_INI(1) + EPLA_INI(2) + EPLA_INI(3))/(3.0D0))*(XID1(1:6))) VEPLA_INI = (EPLA_INI(1) + EPLA_INI(2) + EPLA_INI(3)) C C On determine le termes xi_i_ini = s_ini +(p_ini - c)*beta_i_ini C pour chaque critere X1_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET1_INI(1:6))) X2_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET2_INI(1:6))) X3_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET3_INI(1:6))) X4_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET4_INI(1:6))) X5_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET5_INI(1:6))) X6_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET6_INI(1:6))) X7_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET7_INI(1:6))) X8_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET8_INI(1:6))) X9_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET9_INI(1:6))) X10_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET10_INI(1:6))) C C On determine lA norme |x_i_ini| NX1_INI = (((X1_INI(1)*X1_INI(1)) + & (X1_INI(2)*X1_INI(2)) + & (X1_INI(3)*X1_INI(3)) + & ((2.0D0)*(X1_INI(4)*X1_INI(4))) + & ((2.0D0)*(X1_INI(5)*X1_INI(5))) + & ((2.0D0)*(X1_INI(6)*X1_INI(6))))**(0.5D0)) NX2_INI = (((X2_INI(1)*X2_INI(1)) + & (X2_INI(2)*X2_INI(2)) + & (X2_INI(3)*X2_INI(3)) + & ((2.0D0)*(X2_INI(4)*X2_INI(4))) + & ((2.0D0)*(X2_INI(5)*X2_INI(5))) + & ((2.0D0)*(X2_INI(6)*X2_INI(6))))**(0.5D0)) NX3_INI = (((X3_INI(1)*X3_INI(1)) + & (X3_INI(2)*X3_INI(2)) + & (X3_INI(3)*X3_INI(3)) + & ((2.0D0)*(X3_INI(4)*X3_INI(4))) + & ((2.0D0)*(X3_INI(5)*X3_INI(5))) + & ((2.0D0)*(X3_INI(6)*X3_INI(6))))**(0.5D0)) NX4_INI = (((X4_INI(1)*X4_INI(1)) + & (X4_INI(2)*X4_INI(2)) + & (X4_INI(3)*X4_INI(3)) + & ((2.0D0)*(X4_INI(4)*X4_INI(4))) + & ((2.0D0)*(X4_INI(5)*X4_INI(5))) + & ((2.0D0)*(X4_INI(6)*X4_INI(6))))**(0.5D0)) NX5_INI = (((X5_INI(1)*X5_INI(1)) + & (X5_INI(2)*X5_INI(2)) + & (X5_INI(3)*X5_INI(3)) + & ((2.0D0)*(X5_INI(4)*X5_INI(4))) + & ((2.0D0)*(X5_INI(5)*X5_INI(5))) + & ((2.0D0)*(X5_INI(6)*X5_INI(6))))**(0.5D0)) NX6_INI = (((X6_INI(1)*X6_INI(1)) + & (X6_INI(2)*X6_INI(2)) + & (X6_INI(3)*X6_INI(3)) + & ((2.0D0)*(X6_INI(4)*X6_INI(4))) + & ((2.0D0)*(X6_INI(5)*X6_INI(5))) + & ((2.0D0)*(X6_INI(6)*X6_INI(6))))**(0.5D0)) NX7_INI = (((X7_INI(1)*X7_INI(1)) + & (X7_INI(2)*X7_INI(2)) + & (X7_INI(3)*X7_INI(3)) + & ((2.0D0)*(X7_INI(4)*X7_INI(4))) + & ((2.0D0)*(X7_INI(5)*X7_INI(5))) + & ((2.0D0)*(X7_INI(6)*X7_INI(6))))**(0.5D0)) NX8_INI = (((X8_INI(1)*X8_INI(1)) + & (X8_INI(2)*X8_INI(2)) + & (X8_INI(3)*X8_INI(3)) + & ((2.0D0)*(X8_INI(4)*X8_INI(4))) + & ((2.0D0)*(X8_INI(5)*X8_INI(5))) + & ((2.0D0)*(X8_INI(6)*X8_INI(6))))**(0.5D0)) NX9_INI = (((X9_INI(1)*X9_INI(1)) + & (X9_INI(2)*X9_INI(2)) + & (X9_INI(3)*X9_INI(3)) + & ((2.0D0)*(X9_INI(4)*X9_INI(4))) + & ((2.0D0)*(X9_INI(5)*X9_INI(5))) + & ((2.0D0)*(X9_INI(6)*X9_INI(6))))**(0.5D0)) NX10_INI = (((X10_INI(1)*X10_INI(1)) + & (X10_INI(2)*X10_INI(2)) + & (X10_INI(3)*X10_INI(3)) + & ((2.0D0)*(X10_INI(4)*X10_INI(4))) + & ((2.0D0)*(X10_INI(5)*X10_INI(5))) + & ((2.0D0)*(X10_INI(6)*X10_INI(6))))**(0.5D0)) C C Check sur |x_i_ini| et determination de nn_i_ini de nn2_i_ini IF ((NX1_INI).LT.(1.0E-12) ) THEN NN1_INI(1:6) = 0.0D0 NN21_INI(1:6) = 0.0D0 ELSE NN1_INI(1:6) = X1_INI(1:6)/(NX1_INI) NN21_INI(1) = ((NN1_INI(1))*(NN1_INI(1))) + & ((NN1_INI(4))*(NN1_INI(4))) + & ((NN1_INI(5))*(NN1_INI(5))) NN21_INI(2) = ((NN1_INI(4))*(NN1_INI(4))) + & ((NN1_INI(2))*(NN1_INI(2))) + & ((NN1_INI(6))*(NN1_INI(6))) NN21_INI(3) = ((NN1_INI(5))*(NN1_INI(5))) + & ((NN1_INI(6))*(NN1_INI(6))) + & ((NN1_INI(3))*(NN1_INI(3))) NN21_INI(4) = ((NN1_INI(1))*(NN1_INI(4))) + & ((NN1_INI(4))*(NN1_INI(2))) + & ((NN1_INI(5))*(NN1_INI(6))) NN21_INI(5) = ((NN1_INI(1))*(NN1_INI(5))) + & ((NN1_INI(4))*(NN1_INI(6))) + & ((NN1_INI(5))*(NN1_INI(3))) NN21_INI(6) = ((NN1_INI(4))*(NN1_INI(5))) + & ((NN1_INI(2))*(NN1_INI(6))) + & ((NN1_INI(6))*(NN1_INI(3))) ENDIF IF ((NX2_INI).LT.(1.0E-12) ) THEN NN2_INI(1:6) = 0.0D0 NN22_INI(1:6) = 0.0D0 ELSE NN2_INI(1:6) = X2_INI(1:6)/(NX2_INI) NN22_INI(1) = ((NN2_INI(1))*(NN2_INI(1))) + & ((NN2_INI(4))*(NN2_INI(4))) + & ((NN2_INI(5))*(NN2_INI(5))) NN22_INI(2) = ((NN2_INI(4))*(NN2_INI(4))) + & ((NN2_INI(2))*(NN2_INI(2))) + & ((NN2_INI(6))*(NN2_INI(6))) NN22_INI(3) = ((NN2_INI(5))*(NN2_INI(5))) + & ((NN2_INI(6))*(NN2_INI(6))) + & ((NN2_INI(3))*(NN2_INI(3))) NN22_INI(4) = ((NN2_INI(1))*(NN2_INI(4))) + & ((NN2_INI(4))*(NN2_INI(2))) + & ((NN2_INI(5))*(NN2_INI(6))) NN22_INI(5) = ((NN2_INI(1))*(NN2_INI(5))) + & ((NN2_INI(4))*(NN2_INI(6))) + & ((NN2_INI(5))*(NN2_INI(3))) NN22_INI(6) = ((NN2_INI(4))*(NN2_INI(5))) + & ((NN2_INI(2))*(NN2_INI(6))) + & ((NN2_INI(6))*(NN2_INI(3))) ENDIF IF ((NX3_INI).LT.(1.0E-12) ) THEN NN3_INI(1:6) = 0.0D0 NN23_INI(1:6) = 0.0D0 ELSE NN3_INI(1:6) = X3_INI(1:6)/(NX3_INI) NN23_INI(1) = ((NN3_INI(1))*(NN3_INI(1))) + & ((NN3_INI(4))*(NN3_INI(4))) + & ((NN3_INI(5))*(NN3_INI(5))) NN23_INI(2) = ((NN3_INI(4))*(NN3_INI(4))) + & ((NN3_INI(2))*(NN3_INI(2))) + & ((NN3_INI(6))*(NN3_INI(6))) NN23_INI(3) = ((NN3_INI(5))*(NN3_INI(5))) + & ((NN3_INI(6))*(NN3_INI(6))) + & ((NN3_INI(3))*(NN3_INI(3))) NN23_INI(4) = ((NN3_INI(1))*(NN3_INI(4))) + & ((NN3_INI(4))*(NN3_INI(2))) + & ((NN3_INI(5))*(NN3_INI(6))) NN23_INI(5) = ((NN3_INI(1))*(NN3_INI(5))) + & ((NN3_INI(4))*(NN3_INI(6))) + & ((NN3_INI(5))*(NN3_INI(3))) NN23_INI(6) = ((NN3_INI(4))*(NN3_INI(5))) + & ((NN3_INI(2))*(NN3_INI(6))) + & ((NN3_INI(6))*(NN3_INI(3))) ENDIF IF ((NX4_INI).LT.(1.0E-12) ) THEN NN4_INI(1:6) = 0.0D0 NN24_INI(1:6) = 0.0D0 ELSE NN4_INI(1:6) = X4_INI(1:6)/(NX4_INI) NN24_INI(1) = ((NN4_INI(1))*(NN4_INI(1))) + & ((NN4_INI(4))*(NN4_INI(4))) + & ((NN4_INI(5))*(NN4_INI(5))) NN24_INI(2) = ((NN4_INI(4))*(NN4_INI(4))) + & ((NN4_INI(2))*(NN4_INI(2))) + & ((NN4_INI(6))*(NN4_INI(6))) NN24_INI(3) = ((NN4_INI(5))*(NN4_INI(5))) + & ((NN4_INI(6))*(NN4_INI(6))) + & ((NN4_INI(3))*(NN4_INI(3))) NN24_INI(4) = ((NN4_INI(1))*(NN4_INI(4))) + & ((NN4_INI(4))*(NN4_INI(2))) + & ((NN4_INI(5))*(NN4_INI(6))) NN24_INI(5) = ((NN4_INI(1))*(NN4_INI(5))) + & ((NN4_INI(4))*(NN4_INI(6))) + & ((NN4_INI(5))*(NN4_INI(3))) NN24_INI(6) = ((NN4_INI(4))*(NN4_INI(5))) + & ((NN4_INI(2))*(NN4_INI(6))) + & ((NN4_INI(6))*(NN4_INI(3))) ENDIF IF ((NX5_INI).LT.(1.0E-12) ) THEN NN5_INI(1:6) = 0.0D0 NN25_INI(1:6) = 0.0D0 ELSE NN5_INI(1:6) = X5_INI(1:6)/(NX5_INI) NN25_INI(1) = ((NN5_INI(1))*(NN5_INI(1))) + & ((NN5_INI(4))*(NN5_INI(4))) + & ((NN5_INI(5))*(NN5_INI(5))) NN25_INI(2) = ((NN5_INI(4))*(NN5_INI(4))) + & ((NN5_INI(2))*(NN5_INI(2))) + & ((NN5_INI(6))*(NN5_INI(6))) NN25_INI(3) = ((NN5_INI(5))*(NN5_INI(5))) + & ((NN5_INI(6))*(NN5_INI(6))) + & ((NN5_INI(3))*(NN5_INI(3))) NN25_INI(4) = ((NN5_INI(1))*(NN5_INI(4))) + & ((NN5_INI(4))*(NN5_INI(2))) + & ((NN5_INI(5))*(NN5_INI(6))) NN25_INI(5) = ((NN5_INI(1))*(NN5_INI(5))) + & ((NN5_INI(4))*(NN5_INI(6))) + & ((NN5_INI(5))*(NN5_INI(3))) NN25_INI(6) = ((NN5_INI(4))*(NN5_INI(5))) + & ((NN5_INI(2))*(NN5_INI(6))) + & ((NN5_INI(6))*(NN5_INI(3))) ENDIF IF ((NX6_INI).LT.(1.0E-12) ) THEN NN6_INI(1:6) = 0.0D0 NN26_INI(1:6) = 0.0D0 ELSE NN6_INI(1:6) = X6_INI(1:6)/(NX6_INI) NN26_INI(1) = ((NN6_INI(1))*(NN6_INI(1))) + & ((NN6_INI(4))*(NN6_INI(4))) + & ((NN6_INI(5))*(NN6_INI(5))) NN26_INI(2) = ((NN6_INI(4))*(NN6_INI(4))) + & ((NN6_INI(2))*(NN6_INI(2))) + & ((NN6_INI(6))*(NN6_INI(6))) NN26_INI(3) = ((NN6_INI(5))*(NN6_INI(5))) + & ((NN6_INI(6))*(NN6_INI(6))) + & ((NN6_INI(3))*(NN6_INI(3))) NN26_INI(4) = ((NN6_INI(1))*(NN6_INI(4))) + & ((NN6_INI(4))*(NN6_INI(2))) + & ((NN6_INI(5))*(NN6_INI(6))) NN26_INI(5) = ((NN6_INI(1))*(NN6_INI(5))) + & ((NN6_INI(4))*(NN6_INI(6))) + & ((NN6_INI(5))*(NN6_INI(3))) NN26_INI(6) = ((NN6_INI(4))*(NN6_INI(5))) + & ((NN6_INI(2))*(NN6_INI(6))) + & ((NN6_INI(6))*(NN6_INI(3))) ENDIF IF ((NX7_INI).LT.(1.0E-12) ) THEN NN7_INI(1:6) = 0.0D0 NN27_INI(1:6) = 0.0D0 ELSE NN7_INI(1:6) = X7_INI(1:6)/(NX7_INI) NN27_INI(1) = ((NN7_INI(1))*(NN7_INI(1))) + & ((NN7_INI(4))*(NN7_INI(4))) + & ((NN7_INI(5))*(NN7_INI(5))) NN27_INI(2) = ((NN7_INI(4))*(NN7_INI(4))) + & ((NN7_INI(2))*(NN7_INI(2))) + & ((NN7_INI(6))*(NN7_INI(6))) NN27_INI(3) = ((NN7_INI(5))*(NN7_INI(5))) + & ((NN7_INI(6))*(NN7_INI(6))) + & ((NN7_INI(3))*(NN7_INI(3))) NN27_INI(4) = ((NN7_INI(1))*(NN7_INI(4))) + & ((NN7_INI(4))*(NN7_INI(2))) + & ((NN7_INI(5))*(NN7_INI(6))) NN27_INI(5) = ((NN7_INI(1))*(NN7_INI(5))) + & ((NN7_INI(4))*(NN7_INI(6))) + & ((NN7_INI(5))*(NN7_INI(3))) NN27_INI(6) = ((NN7_INI(4))*(NN7_INI(5))) + & ((NN7_INI(2))*(NN7_INI(6))) + & ((NN7_INI(6))*(NN7_INI(3))) ENDIF IF ((NX8_INI).LT.(1.0E-12) ) THEN NN8_INI(1:6) = 0.0D0 NN28_INI(1:6) = 0.0D0 ELSE NN8_INI(1:6) = X8_INI(1:6)/(NX8_INI) NN28_INI(1) = ((NN8_INI(1))*(NN8_INI(1))) + & ((NN8_INI(4))*(NN8_INI(4))) + & ((NN8_INI(5))*(NN8_INI(5))) NN28_INI(2) = ((NN8_INI(4))*(NN8_INI(4))) + & ((NN8_INI(2))*(NN8_INI(2))) + & ((NN8_INI(6))*(NN8_INI(6))) NN28_INI(3) = ((NN8_INI(5))*(NN8_INI(5))) + & ((NN8_INI(6))*(NN8_INI(6))) + & ((NN8_INI(3))*(NN8_INI(3))) NN28_INI(4) = ((NN8_INI(1))*(NN8_INI(4))) + & ((NN8_INI(4))*(NN8_INI(2))) + & ((NN8_INI(5))*(NN8_INI(6))) NN28_INI(5) = ((NN8_INI(1))*(NN8_INI(5))) + & ((NN8_INI(4))*(NN8_INI(6))) + & ((NN8_INI(5))*(NN8_INI(3))) NN28_INI(6) = ((NN8_INI(4))*(NN8_INI(5))) + & ((NN8_INI(2))*(NN8_INI(6))) + & ((NN8_INI(6))*(NN8_INI(3))) ENDIF IF ((NX9_INI).LT.(1.0E-12) ) THEN NN9_INI(1:6) = 0.0D0 NN29_INI(1:6) = 0.0D0 ELSE NN9_INI(1:6) = X9_INI(1:6)/(NX9_INI) NN29_INI(1) = ((NN9_INI(1))*(NN9_INI(1))) + & ((NN9_INI(4))*(NN9_INI(4))) + & ((NN9_INI(5))*(NN9_INI(5))) NN29_INI(2) = ((NN9_INI(4))*(NN9_INI(4))) + & ((NN9_INI(2))*(NN9_INI(2))) + & ((NN9_INI(6))*(NN9_INI(6))) NN29_INI(3) = ((NN9_INI(5))*(NN9_INI(5))) + & ((NN9_INI(6))*(NN9_INI(6))) + & ((NN9_INI(3))*(NN9_INI(3))) NN29_INI(4) = ((NN9_INI(1))*(NN9_INI(4))) + & ((NN9_INI(4))*(NN9_INI(2))) + & ((NN9_INI(5))*(NN9_INI(6))) NN29_INI(5) = ((NN9_INI(1))*(NN9_INI(5))) + & ((NN9_INI(4))*(NN9_INI(6))) + & ((NN9_INI(5))*(NN9_INI(3))) NN29_INI(6) = ((NN9_INI(4))*(NN9_INI(5))) + & ((NN9_INI(2))*(NN9_INI(6))) + & ((NN9_INI(6))*(NN9_INI(3))) ENDIF IF ((NX10_INI).LT.(1.0E-12) ) THEN NN10_INI(1:6) = 0.0D0 NN210_INI(1:6) = 0.0D0 ELSE NN10_INI(1:6) = X10_INI(1:6)/(NX10_INI) NN210_INI(1) = ((NN10_INI(1))*(NN10_INI(1))) + & ((NN10_INI(4))*(NN10_INI(4))) + & ((NN10_INI(5))*(NN10_INI(5))) NN210_INI(2) = ((NN10_INI(4))*(NN10_INI(4))) + & ((NN10_INI(2))*(NN10_INI(2))) + & ((NN10_INI(6))*(NN10_INI(6))) NN210_INI(3) = ((NN10_INI(5))*(NN10_INI(5))) + & ((NN10_INI(6))*(NN10_INI(6))) + & ((NN10_INI(3))*(NN10_INI(3))) NN210_INI(4) = ((NN10_INI(1))*(NN10_INI(4))) + & ((NN10_INI(4))*(NN10_INI(2))) + & ((NN10_INI(5))*(NN10_INI(6))) NN210_INI(5) = ((NN10_INI(1))*(NN10_INI(5))) + & ((NN10_INI(4))*(NN10_INI(6))) + & ((NN10_INI(5))*(NN10_INI(3))) NN210_INI(6) = ((NN10_INI(4))*(NN10_INI(5))) + & ((NN10_INI(2))*(NN10_INI(6))) + & ((NN10_INI(6))*(NN10_INI(3))) ENDIF C C Calcul de cos(3th_i_ini)=-sqrt(6)*trace(nn_i_ini^3) - c depandance angle de Lode COS3TH1_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN1_INI(1))*(NN21_INI(1))) + & ((NN1_INI(2))*(NN21_INI(2))) + & ((NN1_INI(3))*(NN21_INI(3))) + & (2.0D0)*((NN1_INI(4))*(NN21_INI(4))) + & (2.0D0)*((NN1_INI(5))*(NN21_INI(5))) + & (2.0D0)*((NN1_INI(6))*(NN21_INI(6)))) COS3TH2_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN2_INI(1))*(NN22_INI(1))) + & ((NN2_INI(2))*(NN22_INI(2))) + & ((NN2_INI(3))*(NN22_INI(3))) + & (2.0D0)*((NN2_INI(4))*(NN22_INI(4))) + & (2.0D0)*((NN2_INI(5))*(NN22_INI(5))) + & (2.0D0)*((NN2_INI(6))*(NN22_INI(6)))) COS3TH3_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN3_INI(1))*(NN23_INI(1))) + & ((NN3_INI(2))*(NN23_INI(2))) + & ((NN3_INI(3))*(NN23_INI(3))) + & (2.0D0)*((NN3_INI(4))*(NN23_INI(4))) + & (2.0D0)*((NN3_INI(5))*(NN23_INI(5))) + & (2.0D0)*((NN3_INI(6))*(NN23_INI(6)))) COS3TH4_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN4_INI(1))*(NN24_INI(1))) + & ((NN4_INI(2))*(NN24_INI(2))) + & ((NN4_INI(3))*(NN24_INI(3))) + & (2.0D0)*((NN4_INI(4))*(NN24_INI(4))) + & (2.0D0)*((NN4_INI(5))*(NN24_INI(5))) + & (2.0D0)*((NN4_INI(6))*(NN24_INI(6)))) COS3TH5_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN5_INI(1))*(NN25_INI(1))) + & ((NN5_INI(2))*(NN25_INI(2))) + & ((NN5_INI(3))*(NN25_INI(3))) + & (2.0D0)*((NN5_INI(4))*(NN25_INI(4))) + & (2.0D0)*((NN5_INI(5))*(NN25_INI(5))) + & (2.0D0)*((NN5_INI(6))*(NN25_INI(6)))) COS3TH6_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN6_INI(1))*(NN26_INI(1))) + & ((NN6_INI(2))*(NN26_INI(2))) + & ((NN6_INI(3))*(NN26_INI(3))) + & (2.0D0)*((NN6_INI(4))*(NN26_INI(4))) + & (2.0D0)*((NN6_INI(5))*(NN26_INI(5))) + & (2.0D0)*((NN6_INI(6))*(NN26_INI(6)))) COS3TH7_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN7_INI(1))*(NN27_INI(1))) + & ((NN7_INI(2))*(NN27_INI(2))) + & ((NN7_INI(3))*(NN27_INI(3))) + & (2.0D0)*((NN7_INI(4))*(NN27_INI(4))) + & (2.0D0)*((NN7_INI(5))*(NN27_INI(5))) + & (2.0D0)*((NN7_INI(6))*(NN27_INI(6)))) COS3TH8_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN8_INI(1))*(NN28_INI(1))) + & ((NN8_INI(2))*(NN28_INI(2))) + & ((NN8_INI(3))*(NN28_INI(3))) + & (2.0D0)*((NN8_INI(4))*(NN28_INI(4))) + & (2.0D0)*((NN8_INI(5))*(NN28_INI(5))) + & (2.0D0)*((NN8_INI(6))*(NN28_INI(6)))) COS3TH9_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN9_INI(1))*(NN29_INI(1))) + & ((NN9_INI(2))*(NN29_INI(2))) + & ((NN9_INI(3))*(NN29_INI(3))) + & (2.0D0)*((NN9_INI(4))*(NN29_INI(4))) + & (2.0D0)*((NN9_INI(5))*(NN29_INI(5))) + & (2.0D0)*((NN9_INI(6))*(NN29_INI(6)))) COS3TH10_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN10_INI(1))*(NN210_INI(1))) + & ((NN10_INI(2))*(NN210_INI(2))) + & ((NN10_INI(3))*(NN210_INI(3))) + & (2.0D0)*((NN10_INI(4))*(NN210_INI(4))) + & (2.0D0)*((NN10_INI(5))*(NN210_INI(5))) + & (2.0D0)*((NN10_INI(6))*(NN210_INI(6)))) C C Calcul du terme R(th)_i_ini=2k1/((1+k1)-(1-k1)*(cos(3th_i_ini))) RTH1_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH1_INI))) RTH2_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH2_INI))) RTH3_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH3_INI))) RTH4_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH4_INI))) RTH5_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH5_INI))) RTH6_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH6_INI))) RTH7_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH7_INI))) RTH8_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH8_INI))) RTH9_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH9_INI))) RTH10_INI = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH10_INI))) C C Calcul des criteres f_i_ini F1_INI = NX1_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_INI - XC1)*(RTH1_INI)) F2_INI = NX2_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_INI - XC1)*(RTH2_INI)) F3_INI = NX3_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_INI - XC1)*(RTH3_INI)) F4_INI = NX4_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_INI - XC1)*(RTH4_INI)) F5_INI = NX5_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_INI - XC1)*(RTH5_INI)) F6_INI = NX6_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_INI - XC1)*(RTH6_INI)) F7_INI = NX7_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & ((P_INI - XC1)*(RTH7_INI)) F8_INI = NX8_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))* & ((P_INI - XC1)*(RTH8_INI)) F9_INI = NX9_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))* & ((P_INI - XC1)*(RTH9_INI)) F10_INI = NX10_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))* & ((P_INI - XC1)*(RTH10_INI)) C C Determination du critere activé, si IINI_CRIT = INT(0) IF ((F1_INI.GT.(0.0D0)).OR.((ABS(F1_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(1) ENDIF IF ((F2_INI.GT.(0.0D0)).OR.((ABS(F2_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(2) ENDIF IF ((F3_INI.GT.(0.0D0)).OR.((ABS(F3_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(3) ENDIF IF ((F4_INI.GT.(0.0D0)).OR.((ABS(F4_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(4) ENDIF IF ((F5_INI.GT.(0.0D0)).OR.((ABS(F5_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(5) ENDIF IF ((F6_INI.GT.(0.0D0)).OR.((ABS(F6_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(6) ENDIF IF ((F7_INI.GT.(0.0D0)).OR.((ABS(F7_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(7) ENDIF IF ((F8_INI.GT.(0.0D0)).OR.((ABS(F8_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(8) ENDIF IF ((F9_INI.GT.(0.0D0)).OR.((ABS(F9_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(9) ENDIF IF ((F10_INI.GT.(0.0D0)).OR.((ABS(F10_INI)).LT.(1.0E-8))) THEN IINI_CRIT = INT(10) ENDIF C---- FIN DE L INTIALISE LES VARIABLE ET DE LA ------------------------- C---- ON RECHERCHE LE CRITERE ACTIVE AU DERNIER PAS DE TEMP ----------- C C------ ITERATION POUR LA RECHERCHE DE L'ETAT PLASTIQUE ADMISSIBLE ----- C C Initialissation deformations plastique SEPLA_0(1:6) = SEPLA_INI(1:6) VEPLA_0 = VEPLA_INI C C Initialissation back stress BET1_0(1:6) = BET1_INI(1:6) BET2_0(1:6) = BET2_INI(1:6) BET3_0(1:6) = BET3_INI(1:6) BET4_0(1:6) = BET4_INI(1:6) BET5_0(1:6) = BET5_INI(1:6) BET6_0(1:6) = BET6_INI(1:6) BET7_0(1:6) = BET7_INI(1:6) BET8_0(1:6) = BET8_INI(1:6) BET9_0(1:6) = BET9_INI(1:6) BET10_0(1:6) = BET10_INI(1:6) C C Initialissation Gamma_plastique DGAM_0 = 0.0D0 C C Prevision Elastique des contraintes (etat trial) S_0(1:6) = S_INI(1:6) + & ((2.0D0)*(GMOD_E1))*(DSE_TOT(1:6) - & (SEPLA_0(1:6) - SEPLA_INI(1:6))) IF (IFOUR.NE.2) THEN S_0(5:6) = 0.0D0 ENDIF P_0 = P_INI + & ((1.0D0)*(KMOD_E1))*(DVE_TOT - & (VEPLA_0 - VEPLA_INI)) C N_ITER1 = 1000 C C------ CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP ----------------------- DO 101 I_ITER1=1,N_ITER1 C Cas apres la premiere iteration k=1 IF (I_ITER1.GT.(INT(1))) THEN C Mise a jour pour l'iteration k+1 SEPLA_0(1:6) = SEPLA_1(1:6) VEPLA_0 = VEPLA_1 BET_0(1:6) = BET_1(1:6) DGAM_0 = DGAM_1 ELSE C Choix du critere activé des variables pour l'evolution C de l'etat plastique C C On determine le termes xi_i_0 = s_0 +(p_0 - c)*beta_i_0 C pour chaque critere pour k=1 X1_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET1_0(1:6))) X2_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET2_0(1:6))) X3_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET3_0(1:6))) X4_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET4_0(1:6))) X5_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET5_0(1:6))) X6_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET6_0(1:6))) X7_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET7_0(1:6))) X8_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET8_0(1:6))) X9_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET9_0(1:6))) X10_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET10_0(1:6))) C C On determine lA norme |x_i_ini| NX1_0 = (((X1_0(1)*X1_0(1)) + & (X1_0(2)*X1_0(2)) + & (X1_0(3)*X1_0(3)) + & ((2.0D0)*(X1_0(4)*X1_0(4))) + & ((2.0D0)*(X1_0(5)*X1_0(5))) + & ((2.0D0)*(X1_0(6)*X1_0(6))))**(0.5D0)) NX2_0 = (((X2_0(1)*X2_0(1)) + & (X2_0(2)*X2_0(2)) + & (X2_0(3)*X2_0(3)) + & ((2.0D0)*(X2_0(4)*X2_0(4))) + & ((2.0D0)*(X2_0(5)*X2_0(5))) + & ((2.0D0)*(X2_0(6)*X2_0(6))))**(0.5D0)) NX3_0 = (((X3_0(1)*X3_0(1)) + & (X3_0(2)*X3_0(2)) + & (X3_0(3)*X3_0(3)) + & ((2.0D0)*(X3_0(4)*X3_0(4))) + & ((2.0D0)*(X3_0(5)*X3_0(5))) + & ((2.0D0)*(X3_0(6)*X3_0(6))))**(0.5D0)) NX4_0 = (((X4_0(1)*X4_0(1)) + & (X4_0(2)*X4_0(2)) + & (X4_0(3)*X4_0(3)) + & ((2.0D0)*(X4_0(4)*X4_0(4))) + & ((2.0D0)*(X4_0(5)*X4_0(5))) + & ((2.0D0)*(X4_0(6)*X4_0(6))))**(0.5D0)) NX5_0 = (((X5_0(1)*X5_0(1)) + & (X5_0(2)*X5_0(2)) + & (X5_0(3)*X5_0(3)) + & ((2.0D0)*(X5_0(4)*X5_0(4))) + & ((2.0D0)*(X5_0(5)*X5_0(5))) + & ((2.0D0)*(X5_0(6)*X5_0(6))))**(0.5D0)) NX6_0 = (((X6_0(1)*X6_0(1)) + & (X6_0(2)*X6_0(2)) + & (X6_0(3)*X6_0(3)) + & ((2.0D0)*(X6_0(4)*X6_0(4))) + & ((2.0D0)*(X6_0(5)*X6_0(5))) + & ((2.0D0)*(X6_0(6)*X6_0(6))))**(0.5D0)) NX7_0 = (((X7_0(1)*X7_0(1)) + & (X7_0(2)*X7_0(2)) + & (X7_0(3)*X7_0(3)) + & ((2.0D0)*(X7_0(4)*X7_0(4))) + & ((2.0D0)*(X7_0(5)*X7_0(5))) + & ((2.0D0)*(X7_0(6)*X7_0(6))))**(0.5D0)) NX8_0 = (((X8_0(1)*X8_0(1)) + & (X8_0(2)*X8_0(2)) + & (X8_0(3)*X8_0(3)) + & ((2.0D0)*(X8_0(4)*X8_0(4))) + & ((2.0D0)*(X8_0(5)*X8_0(5))) + & ((2.0D0)*(X8_0(6)*X8_0(6))))**(0.5D0)) NX9_0 = (((X9_0(1)*X9_0(1)) + & (X9_0(2)*X9_0(2)) + & (X9_0(3)*X9_0(3)) + & ((2.0D0)*(X9_0(4)*X9_0(4))) + & ((2.0D0)*(X9_0(5)*X9_0(5))) + & ((2.0D0)*(X9_0(6)*X9_0(6))))**(0.5D0)) NX10_0 = (((X10_0(1)*X10_0(1)) + & (X10_0(2)*X10_0(2)) + & (X10_0(3)*X10_0(3)) + & ((2.0D0)*(X10_0(4)*X10_0(4))) + & ((2.0D0)*(X10_0(5)*X10_0(5))) + & ((2.0D0)*(X10_0(6)*X10_0(6))))**(0.5D0)) C C Check sur |x_i_0| et determination de nn_i_0 de nn2_i_0 c pour l'iteration k=0 IF ((NX1_0).LT.(1.0E-12) ) THEN NN1_0(1:6) = 0.0D0 NN21_0(1:6) = 0.0D0 ELSE NN1_0(1:6) = X1_0(1:6)/(NX1_0) NN21_0(1) = ((NN1_0(1))*(NN1_0(1))) + & ((NN1_0(4))*(NN1_0(4))) + & ((NN1_0(5))*(NN1_0(5))) NN21_0(2) = ((NN1_0(4))*(NN1_0(4))) + & ((NN1_0(2))*(NN1_0(2))) + & ((NN1_0(6))*(NN1_0(6))) NN21_0(3) = ((NN1_0(5))*(NN1_0(5))) + & ((NN1_0(6))*(NN1_0(6))) + & ((NN1_0(3))*(NN1_0(3))) NN21_0(4) = ((NN1_0(1))*(NN1_0(4))) + & ((NN1_0(4))*(NN1_0(2))) + & ((NN1_0(5))*(NN1_0(6))) NN21_0(5) = ((NN1_0(1))*(NN1_0(5))) + & ((NN1_0(4))*(NN1_0(6))) + & ((NN1_0(5))*(NN1_0(3))) NN21_0(6) = ((NN1_0(4))*(NN1_0(5))) + & ((NN1_0(2))*(NN1_0(6))) + & ((NN1_0(6))*(NN1_0(3))) ENDIF IF ((NX2_0).LT.(1.0E-12) ) THEN NN2_0(1:6) = 0.0D0 NN22_0(1:6) = 0.0D0 ELSE NN2_0(1:6) = X2_0(1:6)/(NX2_0) NN22_0(1) = ((NN2_0(1))*(NN2_0(1))) + & ((NN2_0(4))*(NN2_0(4))) + & ((NN2_0(5))*(NN2_0(5))) NN22_0(2) = ((NN2_0(4))*(NN2_0(4))) + & ((NN2_0(2))*(NN2_0(2))) + & ((NN2_0(6))*(NN2_0(6))) NN22_0(3) = ((NN2_0(5))*(NN2_0(5))) + & ((NN2_0(6))*(NN2_0(6))) + & ((NN2_0(3))*(NN2_0(3))) NN22_0(4) = ((NN2_0(1))*(NN2_0(4))) + & ((NN2_0(4))*(NN2_0(2))) + & ((NN2_0(5))*(NN2_0(6))) NN22_0(5) = ((NN2_0(1))*(NN2_0(5))) + & ((NN2_0(4))*(NN2_0(6))) + & ((NN2_0(5))*(NN2_0(3))) NN22_0(6) = ((NN2_0(4))*(NN2_0(5))) + & ((NN2_0(2))*(NN2_0(6))) + & ((NN2_0(6))*(NN2_0(3))) ENDIF IF ((NX3_0).LT.(1.0E-12) ) THEN NN3_0(1:6) = 0.0D0 NN23_0(1:6) = 0.0D0 ELSE NN3_0(1:6) = X3_0(1:6)/(NX3_0) NN23_0(1) = ((NN3_0(1))*(NN3_0(1))) + & ((NN3_0(4))*(NN3_0(4))) + & ((NN3_0(5))*(NN3_0(5))) NN23_0(2) = ((NN3_0(4))*(NN3_0(4))) + & ((NN3_0(2))*(NN3_0(2))) + & ((NN3_0(6))*(NN3_0(6))) NN23_0(3) = ((NN3_0(5))*(NN3_0(5))) + & ((NN3_0(6))*(NN3_0(6))) + & ((NN3_0(3))*(NN3_0(3))) NN23_0(4) = ((NN3_0(1))*(NN3_0(4))) + & ((NN3_0(4))*(NN3_0(2))) + & ((NN3_0(5))*(NN3_0(6))) NN23_0(5) = ((NN3_0(1))*(NN3_0(5))) + & ((NN3_0(4))*(NN3_0(6))) + & ((NN3_0(5))*(NN3_0(3))) NN23_0(6) = ((NN3_0(4))*(NN3_0(5))) + & ((NN3_0(2))*(NN3_0(6))) + & ((NN3_0(6))*(NN3_0(3))) ENDIF IF ((NX4_0).LT.(1.0E-12) ) THEN NN4_0(1:6) = 0.0D0 NN24_0(1:6) = 0.0D0 ELSE NN4_0(1:6) = X4_0(1:6)/(NX4_0) NN24_0(1) = ((NN4_0(1))*(NN4_0(1))) + & ((NN4_0(4))*(NN4_0(4))) + & ((NN4_0(5))*(NN4_0(5))) NN24_0(2) = ((NN4_0(4))*(NN4_0(4))) + & ((NN4_0(2))*(NN4_0(2))) + & ((NN4_0(6))*(NN4_0(6))) NN24_0(3) = ((NN4_0(5))*(NN4_0(5))) + & ((NN4_0(6))*(NN4_0(6))) + & ((NN4_0(3))*(NN4_0(3))) NN24_0(4) = ((NN4_0(1))*(NN4_0(4))) + & ((NN4_0(4))*(NN4_0(2))) + & ((NN4_0(5))*(NN4_0(6))) NN24_0(5) = ((NN4_0(1))*(NN4_0(5))) + & ((NN4_0(4))*(NN4_0(6))) + & ((NN4_0(5))*(NN4_0(3))) NN24_0(6) = ((NN4_0(4))*(NN4_0(5))) + & ((NN4_0(2))*(NN4_0(6))) + & ((NN4_0(6))*(NN4_0(3))) ENDIF IF ((NX5_0).LT.(1.0E-12) ) THEN NN5_0(1:6) = 0.0D0 NN25_0(1:6) = 0.0D0 ELSE NN5_0(1:6) = X5_0(1:6)/(NX5_0) NN25_0(1) = ((NN5_0(1))*(NN5_0(1))) + & ((NN5_0(4))*(NN5_0(4))) + & ((NN5_0(5))*(NN5_0(5))) NN25_0(2) = ((NN5_0(4))*(NN5_0(4))) + & ((NN5_0(2))*(NN5_0(2))) + & ((NN5_0(6))*(NN5_0(6))) NN25_0(3) = ((NN5_0(5))*(NN5_0(5))) + & ((NN5_0(6))*(NN5_0(6))) + & ((NN5_0(3))*(NN5_0(3))) NN25_0(4) = ((NN5_0(1))*(NN5_0(4))) + & ((NN5_0(4))*(NN5_0(2))) + & ((NN5_0(5))*(NN5_0(6))) NN25_0(5) = ((NN5_0(1))*(NN5_0(5))) + & ((NN5_0(4))*(NN5_0(6))) + & ((NN5_0(5))*(NN5_0(3))) NN25_0(6) = ((NN5_0(4))*(NN5_0(5))) + & ((NN5_0(2))*(NN5_0(6))) + & ((NN5_0(6))*(NN5_0(3))) ENDIF IF ((NX6_0).LT.(1.0E-12) ) THEN NN6_0(1:6) = 0.0D0 NN26_0(1:6) = 0.0D0 ELSE NN6_0(1:6) = X6_0(1:6)/(NX6_0) NN26_0(1) = ((NN6_0(1))*(NN6_0(1))) + & ((NN6_0(4))*(NN6_0(4))) + & ((NN6_0(5))*(NN6_0(5))) NN26_0(2) = ((NN6_0(4))*(NN6_0(4))) + & ((NN6_0(2))*(NN6_0(2))) + & ((NN6_0(6))*(NN6_0(6))) NN26_0(3) = ((NN6_0(5))*(NN6_0(5))) + & ((NN6_0(6))*(NN6_0(6))) + & ((NN6_0(3))*(NN6_0(3))) NN26_0(4) = ((NN6_0(1))*(NN6_0(4))) + & ((NN6_0(4))*(NN6_0(2))) + & ((NN6_0(5))*(NN6_0(6))) NN26_0(5) = ((NN6_0(1))*(NN6_0(5))) + & ((NN6_0(4))*(NN6_0(6))) + & ((NN6_0(5))*(NN6_0(3))) NN26_0(6) = ((NN6_0(4))*(NN6_0(5))) + & ((NN6_0(2))*(NN6_0(6))) + & ((NN6_0(6))*(NN6_0(3))) ENDIF IF ((NX7_0).LT.(1.0E-12) ) THEN NN7_0(1:6) = 0.0D0 NN27_0(1:6) = 0.0D0 ELSE NN7_0(1:6) = X7_0(1:6)/(NX7_0) NN27_0(1) = ((NN7_0(1))*(NN7_0(1))) + & ((NN7_0(4))*(NN7_0(4))) + & ((NN7_0(5))*(NN7_0(5))) NN27_0(2) = ((NN7_0(4))*(NN7_0(4))) + & ((NN7_0(2))*(NN7_0(2))) + & ((NN7_0(6))*(NN7_0(6))) NN27_0(3) = ((NN7_0(5))*(NN7_0(5))) + & ((NN7_0(6))*(NN7_0(6))) + & ((NN7_0(3))*(NN7_0(3))) NN27_0(4) = ((NN7_0(1))*(NN7_0(4))) + & ((NN7_0(4))*(NN7_0(2))) + & ((NN7_0(5))*(NN7_0(6))) NN27_0(5) = ((NN7_0(1))*(NN7_0(5))) + & ((NN7_0(4))*(NN7_0(6))) + & ((NN7_0(5))*(NN7_0(3))) NN27_0(6) = ((NN7_0(4))*(NN7_0(5))) + & ((NN7_0(2))*(NN7_0(6))) + & ((NN7_0(6))*(NN7_0(3))) ENDIF IF ((NX8_0).LT.(1.0E-12) ) THEN NN8_0(1:6) = 0.0D0 NN28_0(1:6) = 0.0D0 ELSE NN8_0(1:6) = X8_0(1:6)/(NX8_0) NN28_0(1) = ((NN8_0(1))*(NN8_0(1))) + & ((NN8_0(4))*(NN8_0(4))) + & ((NN8_0(5))*(NN8_0(5))) NN28_0(2) = ((NN8_0(4))*(NN8_0(4))) + & ((NN8_0(2))*(NN8_0(2))) + & ((NN8_0(6))*(NN8_0(6))) NN28_0(3) = ((NN8_0(5))*(NN8_0(5))) + & ((NN8_0(6))*(NN8_0(6))) + & ((NN8_0(3))*(NN8_0(3))) NN28_0(4) = ((NN8_0(1))*(NN8_0(4))) + & ((NN8_0(4))*(NN8_0(2))) + & ((NN8_0(5))*(NN8_0(6))) NN28_0(5) = ((NN8_0(1))*(NN8_0(5))) + & ((NN8_0(4))*(NN8_0(6))) + & ((NN8_0(5))*(NN8_0(3))) NN28_0(6) = ((NN8_0(4))*(NN8_0(5))) + & ((NN8_0(2))*(NN8_0(6))) + & ((NN8_0(6))*(NN8_0(3))) ENDIF IF ((NX9_0).LT.(1.0E-12) ) THEN NN9_0(1:6) = 0.0D0 NN29_0(1:6) = 0.0D0 ELSE NN9_0(1:6) = X9_0(1:6)/(NX9_0) NN29_0(1) = ((NN9_0(1))*(NN9_0(1))) + & ((NN9_0(4))*(NN9_0(4))) + & ((NN9_0(5))*(NN9_0(5))) NN29_0(2) = ((NN9_0(4))*(NN9_0(4))) + & ((NN9_0(2))*(NN9_0(2))) + & ((NN9_0(6))*(NN9_0(6))) NN29_0(3) = ((NN9_0(5))*(NN9_0(5))) + & ((NN9_0(6))*(NN9_0(6))) + & ((NN9_0(3))*(NN9_0(3))) NN29_0(4) = ((NN9_0(1))*(NN9_0(4))) + & ((NN9_0(4))*(NN9_0(2))) + & ((NN9_0(5))*(NN9_0(6))) NN29_0(5) = ((NN9_0(1))*(NN9_0(5))) + & ((NN9_0(4))*(NN9_0(6))) + & ((NN9_0(5))*(NN9_0(3))) NN29_0(6) = ((NN9_0(4))*(NN9_0(5))) + & ((NN9_0(2))*(NN9_0(6))) + & ((NN9_0(6))*(NN9_0(3))) ENDIF IF ((NX10_0).LT.(1.0E-12) ) THEN NN10_0(1:6) = 0.0D0 NN210_0(1:6) = 0.0D0 ELSE NN10_0(1:6) = X10_0(1:6)/(NX10_0) NN210_0(1) = ((NN10_0(1))*(NN10_0(1))) + & ((NN10_0(4))*(NN10_0(4))) + & ((NN10_0(5))*(NN10_0(5))) NN210_0(2) = ((NN10_0(4))*(NN10_0(4))) + & ((NN10_0(2))*(NN10_0(2))) + & ((NN10_0(6))*(NN10_0(6))) NN210_0(3) = ((NN10_0(5))*(NN10_0(5))) + & ((NN10_0(6))*(NN10_0(6))) + & ((NN10_0(3))*(NN10_0(3))) NN210_0(4) = ((NN10_0(1))*(NN10_0(4))) + & ((NN10_0(4))*(NN10_0(2))) + & ((NN10_0(5))*(NN10_0(6))) NN210_0(5) = ((NN10_0(1))*(NN10_0(5))) + & ((NN10_0(4))*(NN10_0(6))) + & ((NN10_0(5))*(NN10_0(3))) NN210_0(6) = ((NN10_0(4))*(NN10_0(5))) + & ((NN10_0(2))*(NN10_0(6))) + & ((NN10_0(6))*(NN10_0(3))) ENDIF C C Calcul de cos(3th_i_0)=-sqrt(6)*trace(nn_i_0^3) - c depandance angle de Lode pour k=0 COS3TH1_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN1_0(1))*(NN21_0(1))) + & ((NN1_0(2))*(NN21_0(2))) + & ((NN1_0(3))*(NN21_0(3))) + & (2.0D0)*((NN1_0(4))*(NN21_0(4))) + & (2.0D0)*((NN1_0(5))*(NN21_0(5))) + & (2.0D0)*((NN1_0(6))*(NN21_0(6)))) COS3TH2_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN2_0(1))*(NN22_0(1))) + & ((NN2_0(2))*(NN22_0(2))) + & ((NN2_0(3))*(NN22_0(3))) + & (2.0D0)*((NN2_0(4))*(NN22_0(4))) + & (2.0D0)*((NN2_0(5))*(NN22_0(5))) + & (2.0D0)*((NN2_0(6))*(NN22_0(6)))) COS3TH3_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN3_0(1))*(NN23_0(1))) + & ((NN3_0(2))*(NN23_0(2))) + & ((NN3_0(3))*(NN23_0(3))) + & (2.0D0)*((NN3_0(4))*(NN23_0(4))) + & (2.0D0)*((NN3_0(5))*(NN23_0(5))) + & (2.0D0)*((NN3_0(6))*(NN23_0(6)))) COS3TH4_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN4_0(1))*(NN24_0(1))) + & ((NN4_0(2))*(NN24_0(2))) + & ((NN4_0(3))*(NN24_0(3))) + & (2.0D0)*((NN4_0(4))*(NN24_0(4))) + & (2.0D0)*((NN4_0(5))*(NN24_0(5))) + & (2.0D0)*((NN4_0(6))*(NN24_0(6)))) COS3TH5_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN5_0(1))*(NN25_0(1))) + & ((NN5_0(2))*(NN25_0(2))) + & ((NN5_0(3))*(NN25_0(3))) + & (2.0D0)*((NN5_0(4))*(NN25_0(4))) + & (2.0D0)*((NN5_0(5))*(NN25_0(5))) + & (2.0D0)*((NN5_0(6))*(NN25_0(6)))) COS3TH6_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN6_0(1))*(NN26_0(1))) + & ((NN6_0(2))*(NN26_0(2))) + & ((NN6_0(3))*(NN26_0(3))) + & (2.0D0)*((NN6_0(4))*(NN26_0(4))) + & (2.0D0)*((NN6_0(5))*(NN26_0(5))) + & (2.0D0)*((NN6_0(6))*(NN26_0(6)))) COS3TH7_0 = ((-1.0D0)*((6.0D0)**(0.5)))* & (((NN7_0(1))*(NN27_0(1))) + & ((NN7_0(2))*(NN27_0(2))) + & ((NN7_0(3))*(NN27_0(3))) + & (2.0D0)*((NN7_0(4))*(NN27_0(4))) + & (2.0D0)*((NN7_0(5))*(NN27_0(5))) + & (2.0D0)*((NN7_0(6))*(NN27_0(6)))) COS3TH8_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN8_0(1))*(NN28_0(1))) + & ((NN8_0(2))*(NN28_0(2))) + & ((NN8_0(3))*(NN28_0(3))) + & (2.0D0)*((NN8_0(4))*(NN28_0(4))) + & (2.0D0)*((NN8_0(5))*(NN28_0(5))) + & (2.0D0)*((NN8_0(6))*(NN28_0(6)))) COS3TH9_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN9_0(1))*(NN29_0(1))) + & ((NN9_0(2))*(NN29_0(2))) + & ((NN9_0(3))*(NN29_0(3))) + & (2.0D0)*((NN9_0(4))*(NN29_0(4))) + & (2.0D0)*((NN9_0(5))*(NN29_0(5))) + & (2.0D0)*((NN9_0(6))*(NN29_0(6)))) COS3TH10_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN10_0(1))*(NN210_0(1))) + & ((NN10_0(2))*(NN210_0(2))) + & ((NN10_0(3))*(NN210_0(3))) + & (2.0D0)*((NN10_0(4))*(NN210_0(4))) + & (2.0D0)*((NN10_0(5))*(NN210_0(5))) + & (2.0D0)*((NN10_0(6))*(NN210_0(6)))) C C Calcul du terme C R(th)_i_0=2k1/((1+k1)-(1-k1)*(cos(3th_i_0))) pour C l'iteration k=0 RTH1_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH1_0))) RTH2_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH2_0))) RTH3_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH3_0))) RTH4_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH4_0))) RTH5_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH5_0))) RTH6_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH6_0))) RTH7_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH7_0))) RTH8_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH8_0))) RTH9_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH9_0))) RTH10_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH10_0))) C C Calcul des criteres f_i_0 pour l'iteration k=0 F1_0 = NX1_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH1_0)) F2_0 = NX2_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH2_0)) F3_0 = NX3_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH3_0)) F4_0 = NX4_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH4_0)) F5_0 = NX5_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH5_0)) F6_0 = NX6_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_0 - XC1)*(RTH6_0)) F7_0 = NX7_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & ((P_0 - XC1)*(RTH7_0)) F8_0 = NX8_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))* & ((P_0 - XC1)*(RTH8_0)) F9_0 = NX9_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))* & ((P_0 - XC1)*(RTH9_0)) F10_0 = NX10_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))* & ((P_0 - XC1)*(RTH10_0)) C C Detectetion du critere activé pour l'iteration k=0 VET_TEST(1) = F1_0 VET_TEST(2) = F2_0 VET_TEST(3) = F3_0 VET_TEST(4) = F4_0 VET_TEST(5) = F5_0 VET_TEST(6) = F6_0 VET_TEST(7) = F7_0 VET_TEST(8) = F8_0 VET_TEST(9) = F9_0 VET_TEST(10) = F10_0 DO 102 II1 = 1,10 IF ((VET_TEST(II1).GT.(0.0D0)).OR. & ((ABS(VET_TEST(II1))).LT.(1.0E-8))) THEN VET_TEST2(II1) = INT(1) ELSE VET_TEST2(II1) = INT(0) ENDIF 102 CONTINUE I1_CRIT = INT(0) DO 103 II1 = 1,10 I1_CRIT = I1_CRIT + (INT(VET_TEST2(II1))) 103 CONTINUE I2_CRIT = I1_CRIT + INT(1) C C Choix des parametres selon le critere activé pour la C recherche de l'etat plastiquement admissible C XM m (inclinaison de la pente du critere activé) C XHC Hc (module plastique en compression pour crit activ) C XHE He (module plastique en exstension pour crit activ) C XETC eta_c (pente surf caracteristique en compress) C XETE eta_e (pente surf caracteristique en exstension) C XD D (parametre de controle de la dilatance) IF (I1_CRIT.EQ.(INT(1))) THEN BET_0(1:6) = BET1_0(1:6) XM = XM1 XHC = XHC1 XHE = XHE1 XETC = XETC1 XETE = XETE1 XD = XD1 ELSEIF (I1_CRIT.EQ.(INT(2))) THEN BET_0(1:6) = BET2_0(1:6) XM = XM2 XHC = XHC2 XHE = XHE2 XETC = XETC2 XETE = XETE2 XD = XD2 ELSEIF (I1_CRIT.EQ.(INT(3))) THEN BET_0(1:6) = BET3_0(1:6) XM = XM3 XHC = XHC3 XHE = XHE3 XETC = XETC3 XETE = XETE3 XD = XD3 ELSEIF (I1_CRIT.EQ.(INT(4))) THEN BET_0(1:6) = BET4_0(1:6) XM = XM4 XHC = XHC4 XHE = XHE4 XETC = XETC4 XETE = XETE4 XD = XD4 ELSEIF (I1_CRIT.EQ.(INT(5))) THEN BET_0(1:6) = BET5_0(1:6) XM = XM5 XHC = XHC5 XHE = XHE5 XETC = XETC5 XETE = XETE5 XD = XD5 ELSEIF (I1_CRIT.EQ.(INT(6))) THEN BET_0(1:6) = BET6_0(1:6) XM = XM6 XHC = XHC6 XHE = XHE6 XETC = XETC6 XETE = XETE6 XD = XD6 ELSEIF (I1_CRIT.EQ.(INT(7))) THEN BET_0(1:6) = BET7_0(1:6) XM = XM7 XHC = XHC7 XHE = XHE7 XETC = XETC7 XETE = XETE7 XD = XD7 ELSEIF (I1_CRIT.EQ.(INT(8))) THEN BET_0(1:6) = BET8_0(1:6) XM = XM8 XHC = XHC8 XHE = XHE8 XETC = XETC8 XETE = XETE8 XD = XD8 ELSEIF (I1_CRIT.EQ.(INT(9))) THEN BET_0(1:6) = BET9_0(1:6) XM = XM9 XHC = XHC9 XHE = XHE9 XETC = XETC9 XETE = XETE9 XD = XD9 ELSEIF (I1_CRIT.EQ.(INT(10))) THEN BET_0(1:6) = BET10_0(1:6) XM = XM10 XHC = XHC10 XHE = XHE10 XETC = XETC10 XETE = XETE10 XD = XD10 ELSEIF (I1_CRIT.EQ.(INT(0))) THEN BET_0(1:6) = BET1_0(1:6) XM = XM1 XHC = XHC1 XHE = XHE1 XETC = XETC1 XETE = XETE1 XD = XD1 ENDIF ENDIF C C Calcul des residues des contraintes et des derivé pour C l'instant n+1 à l'iteration k C Moidification V4 22-03-2016 IF ((ABS(XN1 - 0.0D0)).LT.(1.E-12)) THEN DGDP_0 = 0.0D0 DKDP_0 = 0.0D0 ELSE DGDP_0 = ((GMOD)*(((P_0)/(XPREF1))**(XN1 - 1.0D0)))* & ((XN1)/(XPREF1)) DKDP_0 = ((KMOD)*(((P_0)/(XPREF1))**(XN1 - 1.0D0)))* & ((XN1)/(XPREF1)) ENDIF GMOD_0 = ((GMOD)*(((P_0)/(XPREF1))**(XN1))) KMOD_0 = ((KMOD)*(((P_0)/(XPREF1))**(XN1))) c Determination residu pour l iteration k R_0(1:6) = ((-1.0D0)*(S_0)) + S_INI + & ((2.0D0)*(GMOD_0))*(DSE_TOT(1:6) - & (SEPLA_0(1:6) - SEPLA_INI(1:6))) IF (IFOUR.NE.2) THEN R_0(5:6) = 0.0D0 ENDIF R_0(7) = -P_0 + P_INI + & ((1.0D0)*(KMOD_0))*(DVE_TOT - & (VEPLA_0 - VEPLA_INI)) C Determination du terme xi pour l'instant n+1 à l'iteration k X_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET_0(1:6))) C Determination du terme |xi| pour l'instant n+1 à l'iteration k NX_0 = (((X_0(1)*X_0(1)) + & (X_0(2)*X_0(2)) + & (X_0(3)*X_0(3)) + & ((2.0D0)*(X_0(4)*X_0(4))) + & ((2.0D0)*(X_0(5)*X_0(5))) + & ((2.0D0)*(X_0(6)*X_0(6))))**(0.5D0)) C C Determination du terme nn=xi/|xi| et nn2 = nn*nn pour C l'instant n+1 à l'iteration k IF ((NX_0).LT.(1.0E-12) ) THEN NN_0(1:6) = 0.0D0 N2N_0(1:6) = 0.0D0 ELSE NN_0(1:6) = X_0(1:6)/(NX_0) N2N_0(1) = ((NN_0(1))*(NN_0(1))) + & ((NN_0(4))*(NN_0(4))) + & ((NN_0(5))*(NN_0(5))) N2N_0(2) = ((NN_0(4))*(NN_0(4))) + & ((NN_0(2))*(NN_0(2))) + & ((NN_0(6))*(NN_0(6))) N2N_0(3) = ((NN_0(5))*(NN_0(5))) + & ((NN_0(6))*(NN_0(6))) + & ((NN_0(3))*(NN_0(3))) N2N_0(4) = ((NN_0(1))*(NN_0(4))) + & ((NN_0(4))*(NN_0(2))) + & ((NN_0(5))*(NN_0(6))) N2N_0(5) = ((NN_0(1))*(NN_0(5))) + & ((NN_0(4))*(NN_0(6))) + & ((NN_0(5))*(NN_0(3))) N2N_0(6) = ((NN_0(4))*(NN_0(5))) + & ((NN_0(2))*(NN_0(6))) + & ((NN_0(6))*(NN_0(3))) ENDIF C C Determination du terme cos(3th) à l'instnt n+1 pour C l'iteration k COS3TH_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))* & (((NN_0(1))*(N2N_0(1))) + & ((NN_0(2))*(N2N_0(2))) + & ((NN_0(3))*(N2N_0(3))) + & (2.0D0)*((NN_0(4))*(N2N_0(4))) + & (2.0D0)*((NN_0(5))*(N2N_0(5))) + & (2.0D0)*((NN_0(6))*(N2N_0(6)))) C C Determination du terme R(th) à l'instant n+1 pour C l'iteration k RTH_0 = ((2.0D0)*(XK1))/ & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH_0))) C C Determination du terme eta_0= (((3/2)*(s_0*s_0))^0.5)/p_0 C à l'instant n+1 pour l'iteration k ETA_0 = (((((3.0D0)/(2.0D0))*(((S_0(1))*(S_0(1))) + & ((S_0(2))*(S_0(2))) + & ((S_0(3))*(S_0(3))) + & (2.0D0)*((S_0(4))*(S_0(4))) + & (2.0D0)*((S_0(5))*(S_0(5))) + & (2.0D0)*((S_0(6))*(S_0(6)))))**(0.5D0))) & /(P_0) C C Determination du terme de la loi d'ecoulement C P1_0 = D*(((eta/eta*)² - 1)/((eta/eta*)² + 1)) où C eta* = eta_c si cos3th=tr(n3)>0 C eta* = eta_e si cos3th=tr(n3)<0 C pour l'instant n+ 1 à l'iteration k C C Modification 22-03-2016 valeur d'exclusions IF ((COS3TH_0.GE.(0.0D0)).OR. & ((ABS(XK1 - 1.0D0)).LT.(1.0E-12))) THEN P1_0 = (XD)*(((((ETA_0)/(XETC))**(2.0D0)) - 1.0D0) & /((((ETA_0)/(XETC))**(2.0D0)) + 1.0D0)) IF (ETA_0.GT.(1.0E8)) THEN P1_0 = (XD)*(1.0D0) ENDIF ELSE P1_0 = (XD)*(((((ETA_0)/(XETE))**(2.0D0)) - 1.0D0) & /((((ETA_0)/(XETE))**(2.0D0)) + 1.0D0)) IF (ETA_0.GT.(1.0E8)) THEN P1_0 = (XD)*(1.0D0) ENDIF ENDIF IF ((ABS(XD - 0.0D0)).LT.(1.0E-12)) THEN P1_0 = 0.0D0 ENDIF c C C Determination du module plastique en fonction C de l'angle de lode de la pression hydrostatique: C H = H'*(p_0/p_ref)^n1 C H' = (Hc - He)/2*cos(3th) + (Hc + He)/2 C pour l'instant n+ 1 à l'iteration k IF ((ABS(XK1 - 1.0D0)).LT.(1.0E-12)) THEN HMOD_0 = XHC ELSE HMOD_0 = ((((XHC - XHE)/(2.0D0))*(COS3TH_0)) & + ((XHC + XHE)/(2.0D0)))*(((P_0)/(XPREF1))**(XN1)) ENDIF C C Determination du terme D2f pour l'instant n+1 à l'iteration k C D2f = 1/|xi|*(Id - nn_0^nn_0) D2F(1,1) = ((NN_0(1))*(NN_0(1))) D2F(1,2) = ((NN_0(1))*(NN_0(2))) D2F(1,3) = ((NN_0(1))*(NN_0(3))) D2F(1,4) = (2.0D0)*((NN_0(1))*(NN_0(4))) D2F(1,5) = (2.0D0)*((NN_0(1))*(NN_0(5))) D2F(1,6) = (2.0D0)*((NN_0(1))*(NN_0(6))) C D2F(2,1) = ((NN_0(2))*(NN_0(1))) D2F(2,2) = ((NN_0(2))*(NN_0(2))) D2F(2,3) = ((NN_0(2))*(NN_0(3))) D2F(2,4) = (2.0D0)*((NN_0(2))*(NN_0(4))) D2F(2,5) = (2.0D0)*((NN_0(2))*(NN_0(5))) D2F(2,6) = (2.0D0)*((NN_0(2))*(NN_0(6))) C D2F(3,1) = ((NN_0(3))*(NN_0(1))) D2F(3,2) = ((NN_0(3))*(NN_0(2))) D2F(3,3) = ((NN_0(3))*(NN_0(3))) D2F(3,4) = (2.0D0)*((NN_0(3))*(NN_0(4))) D2F(3,5) = (2.0D0)*((NN_0(3))*(NN_0(5))) D2F(3,6) = (2.0D0)*((NN_0(3))*(NN_0(6))) C D2F(4,1) = ((NN_0(4))*(NN_0(1))) D2F(4,2) = ((NN_0(4))*(NN_0(2))) D2F(4,3) = ((NN_0(4))*(NN_0(3))) D2F(4,4) = (2.0D0)*((NN_0(4))*(NN_0(4))) D2F(4,5) = (2.0D0)*((NN_0(4))*(NN_0(5))) D2F(4,6) = (2.0D0)*((NN_0(4))*(NN_0(6))) C D2F(5,1) = ((NN_0(5))*(NN_0(1))) D2F(5,2) = ((NN_0(5))*(NN_0(2))) D2F(5,3) = ((NN_0(5))*(NN_0(3))) D2F(5,4) = (2.0D0)*((NN_0(5))*(NN_0(4))) D2F(5,5) = (2.0D0)*((NN_0(5))*(NN_0(5))) D2F(5,6) = (2.0D0)*((NN_0(5))*(NN_0(6))) C D2F(6,1) = ((NN_0(6))*(NN_0(1))) D2F(6,2) = ((NN_0(6))*(NN_0(2))) D2F(6,3) = ((NN_0(6))*(NN_0(3))) D2F(6,4) = (2.0D0)*((NN_0(6))*(NN_0(4))) D2F(6,5) = (2.0D0)*((NN_0(6))*(NN_0(5))) D2F(6,6) = (2.0D0)*((NN_0(6))*(NN_0(6))) C D2F = ((-1.0D0)*(D2F)) D2F(1:6,1:6) = (XID2(1:6,1:6) + D2F(1:6,1:6))/(NX_0) C C Determination du verseur (direction dans la quelle le critere C evolue) mm_0 selon la relge d'ecrouissage de Morz S1M(1:6) = S_0(1:6) IF (I2_CRIT.EQ.(INT(2))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET2_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(3))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET3_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(4))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET4_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(5))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET5_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(6))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET6_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(7))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET7_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(8))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET8_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(9))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET9_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(10))) THEN S2SCAL = (-1.0D0)* & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))* & (P_0 - XC1))*(RTH_0)) S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET10_0(1:6))) MM_0(1:6) = (S2M(1:6)) - (S1M(1:6)) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0))) ELSEIF (I2_CRIT.EQ.(INT(11))) THEN XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) + & ((D2F(1,2))*(N2N_0(2))) + & ((D2F(1,3))*(N2N_0(3))) + & ((D2F(1,4))*(N2N_0(4))) + & ((D2F(1,5))*(N2N_0(5))) + & ((D2F(1,6))*(N2N_0(6))) XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) + & ((D2F(2,2))*(N2N_0(2))) + & ((D2F(2,3))*(N2N_0(3))) + & ((D2F(2,4))*(N2N_0(4))) + & ((D2F(2,5))*(N2N_0(5))) + & ((D2F(2,6))*(N2N_0(6))) XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) + & ((D2F(3,2))*(N2N_0(2))) + & ((D2F(3,3))*(N2N_0(3))) + & ((D2F(3,4))*(N2N_0(4))) + & ((D2F(3,5))*(N2N_0(5))) + & ((D2F(3,6))*(N2N_0(6))) XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) + & ((D2F(4,2))*(N2N_0(2))) + & ((D2F(4,3))*(N2N_0(3))) + & ((D2F(4,4))*(N2N_0(4))) + & ((D2F(4,5))*(N2N_0(5))) + & ((D2F(4,6))*(N2N_0(6))) XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) + & ((D2F(5,2))*(N2N_0(2))) + & ((D2F(5,3))*(N2N_0(3))) + & ((D2F(5,4))*(N2N_0(4))) + & ((D2F(5,5))*(N2N_0(5))) + & ((D2F(5,6))*(N2N_0(6))) XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) + & ((D2F(6,2))*(N2N_0(2))) + & ((D2F(6,3))*(N2N_0(3))) + & ((D2F(6,4))*(N2N_0(4))) + & ((D2F(6,5))*(N2N_0(5))) + & ((D2F(6,6))*(N2N_0(6))) MM_0(1:6) = (NN_0(1:6))*(P_0 - XC1) MM_0(1:6) = MM_0(1:6) + & ((((6.D0)*((P_0 - XC1)**(2.0D0)))* & ((XM10)*((RTH_0)**(2.0D0)))))* & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6))) XVAL2 = ((MM_0(1) + MM_0(2) + MM_0(3))/(3.0D0)) MM_0 = MM_0(1:6) - ((XVAL2)*(XID1(1:6))) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((MM_0(1:6))/(NMM_0)) ELSEIF (I2_CRIT.EQ.(INT(1))) THEN XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) + & ((D2F(1,2))*(N2N_0(2))) + & ((D2F(1,3))*(N2N_0(3))) + & ((D2F(1,4))*(N2N_0(4))) + & ((D2F(1,5))*(N2N_0(5))) + & ((D2F(1,6))*(N2N_0(6))) XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) + & ((D2F(2,2))*(N2N_0(2))) + & ((D2F(2,3))*(N2N_0(3))) + & ((D2F(2,4))*(N2N_0(4))) + & ((D2F(2,5))*(N2N_0(5))) + & ((D2F(2,6))*(N2N_0(6))) XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) + & ((D2F(3,2))*(N2N_0(2))) + & ((D2F(3,3))*(N2N_0(3))) + & ((D2F(3,4))*(N2N_0(4))) + & ((D2F(3,5))*(N2N_0(5))) + & ((D2F(3,6))*(N2N_0(6))) XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) + & ((D2F(4,2))*(N2N_0(2))) + & ((D2F(4,3))*(N2N_0(3))) + & ((D2F(4,4))*(N2N_0(4))) + & ((D2F(4,5))*(N2N_0(5))) + & ((D2F(4,6))*(N2N_0(6))) XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) + & ((D2F(5,2))*(N2N_0(2))) + & ((D2F(5,3))*(N2N_0(3))) + & ((D2F(5,4))*(N2N_0(4))) + & ((D2F(5,5))*(N2N_0(5))) + & ((D2F(5,6))*(N2N_0(6))) XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) + & ((D2F(6,2))*(N2N_0(2))) + & ((D2F(6,3))*(N2N_0(3))) + & ((D2F(6,4))*(N2N_0(4))) + & ((D2F(6,5))*(N2N_0(5))) + & ((D2F(6,6))*(N2N_0(6))) MM_0(1:6) = (NN_0(1:6))*(P_0 - XC1) MM_0(1:6) = MM_0(1:6) + & ((((6.D0)*((P_0 - XC1)**(2.0D0)))* & ((XM1)*((RTH_0)**(2.0D0)))))* & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6))) XVAL2 = ((MM_0(1) + MM_0(2) + MM_0(3))/(3.0D0)) MM_0 = MM_0(1:6) - ((XVAL2)*(XID1(1:6))) NMM_0 = (((MM_0(1))*(MM_0(1))) + & ((MM_0(2))*(MM_0(2))) + & ((MM_0(3))*(MM_0(3))) + & (2.0D0)*((MM_0(4))*(MM_0(4))) + & (2.0D0)*((MM_0(5))*(MM_0(5))) + & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0) MM_0(1:6) = ((MM_0(1:6))/(NMM_0)) ENDIF IF (IFOUR.NE.2) THEN MM_0(5:6) = 0.0D0 ENDIF C C Calcul du critere f_0 à l'instant n+1 pour l'iteration k F_0 = NX_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM))* & ((P_0 - XC1)*(RTH_0)) C C Veleurs de controle pour l'instant n + 1 à l'iteration k IF (I_ITER1.GT.(INT(1))) THEN c IF (F_0.GT.(0.0D0)) THEN IF (F_00.GT.(0.0D0)) THEN & ((R_0(2))*(R_0(2))) + & ((R_0(3))*(R_0(3))) + & ((R_0(4))*(R_0(4))) + & ((R_0(5))*(R_0(5))) + & ((R_0(6))*(R_0(6))) + & ((R_0(7))*(R_0(7))))**(0.5D0) ELSE CRIT1 = F_0 & ((R_0(2))*(R_0(2))) + & ((R_0(3))*(R_0(3))) + & ((R_0(4))*(R_0(4))) + & ((R_0(5))*(R_0(5))) + & ((R_0(6))*(R_0(6))) + & ((R_0(7))*(R_0(7))))**(0.5D0) ENDIF ELSE F_00 = F_0 CRIT1 = F_0 & ((R_0(2))*(R_0(2))) + & ((R_0(3))*(R_0(3))) + & ((R_0(4))*(R_0(4))) + & ((R_0(5))*(R_0(5))) + & ((R_0(6))*(R_0(6))) + & ((R_0(7))*(R_0(7))))**(0.5D0) ENDIF C C Controle pour activer le substepping - depassement de d'un C critere IF ((I1_CRIT.EQ.(INT(IINI_CRIT))).OR. & (IINI_CRIT.EQ.(INT(0)))) THEN c Je ne fais rien ELSE IF (I1_CRIT.GT.(INT(1))) THEN XCONT_CRI = ABS((VET_TEST(I2_CRIT)) - (VET_TEST(I1_CRIT))) IF ((XCONT_CRI).GT.(0.5D0)) THEN IF (IND_STEP3.LT.(INT(100))) THEN IND_STEP2 = INT(1) GOTO 200 ENDIF ENDIF ENDIF ENDIF IF (I_ITER1.GT.(INT(25))) THEN IF ((N_STEP.LT.(INT(100))).AND. & (IND_STEP3.LT.(INT(100)))) THEN IND_STEP1 = INT(1) GOTO 200 ELSE WRITE(IOIMP,10007) 10007 FORMAT('Warning On force la convergence') CRIT1 = 0.0D0 CRIT2 = 0.0D0 ENDIF ENDIF C C Controle de convergence C Etat convergée ETOT_FIN(1:6) = ETOT_INI(1:6) + DDET_ST(1:6) EPLA_FIN(1:6) = SEPLA_0(1:6) + & (((VEPLA_0)/(3.0D0))*(XID1(1:6))) SIG_FIN(1:6) = S_0(1:6) + ((P_0)*(XID1(1:6))) IF ((I1_CRIT).EQ.(INT(0))) THEN BET1_FIN(1:6) = BET_0(1:6) BET2_FIN(1:6) = BET2_INI(1:6) BET3_FIN(1:6) = BET3_INI(1:6) BET4_FIN(1:6) = BET4_INI(1:6) BET5_FIN(1:6) = BET5_INI(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(1))) THEN BET1_FIN(1:6) = BET_0(1:6) BET2_FIN(1:6) = BET2_INI(1:6) BET3_FIN(1:6) = BET3_INI(1:6) BET4_FIN(1:6) = BET4_INI(1:6) BET5_FIN(1:6) = BET5_INI(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(2))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET2_FIN(1:6) = BET_0(1:6) BET3_FIN(1:6) = BET3_INI(1:6) BET4_FIN(1:6) = BET4_INI(1:6) BET5_FIN(1:6) = BET5_INI(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(3))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET3_FIN(1:6) = BET_0(1:6) BET4_FIN(1:6) = BET4_INI(1:6) BET5_FIN(1:6) = BET5_INI(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(4))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET4_FIN(1:6) = BET_0(1:6) BET5_FIN(1:6) = BET5_INI(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(5))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET5_FIN(1:6) = BET_0(1:6) BET6_FIN(1:6) = BET6_INI(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(6))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET6_FIN(1:6) = BET_0(1:6) BET7_FIN(1:6) = BET7_INI(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(7))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET7_FIN(1:6) = BET_0(1:6) BET8_FIN(1:6) = BET8_INI(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(8))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET8_FIN(1:6) = BET_0(1:6) BET9_FIN(1:6) = BET9_INI(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(9))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET8_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET9_FIN(1:6) = BET_0(1:6) BET10_FIN(1:6) = BET10_INI(1:6) ELSEIF ((I1_CRIT).EQ.(INT(10))) THEN A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET8_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))* & ((P_0 - XC1)*(RTH_0))) XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6))) BET9_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1) BET10_FIN(1:6) = BET_0(1:6) ENDIF GOTO 200 ELSE C Etat non converge AE_0I(1:7,1:7) = 0.0D0 AE_0I(1:6,1:6) = XID2(1:6,1:6) AE_0I(1:6,7) = ((-2.0D0)*(DGDP_0))*(DSE_TOT(1:6) - & (SEPLA_0(1:6) - SEPLA_INI(1:6))) AE_0I(7,7) = 1.0D0 + ((-1.0D0)*(DKDP_0))*(DVE_TOT - & (VEPLA_0 - VEPLA_INI)) AE_0(1:7,1:7) = AE_0I C Resolution systeme elasticité non lineaire DTOT(1:7) = 0.0D0 DTOT(1) = ((AE_0(1,1))*(R_0(1))) + & ((AE_0(1,2))*(R_0(2))) + & ((AE_0(1,3))*(R_0(3))) + & ((AE_0(1,4))*(R_0(4))) + & ((AE_0(1,5))*(R_0(5))) + & ((AE_0(1,6))*(R_0(6))) + & ((AE_0(1,7))*(R_0(7))) DTOT(2) = ((AE_0(2,1))*(R_0(1))) + & ((AE_0(2,2))*(R_0(2))) + & ((AE_0(2,3))*(R_0(3))) + & ((AE_0(2,4))*(R_0(4))) + & ((AE_0(2,5))*(R_0(5))) + & ((AE_0(2,6))*(R_0(6))) + & ((AE_0(2,7))*(R_0(7))) DTOT(3) = ((AE_0(3,1))*(R_0(1))) + & ((AE_0(3,2))*(R_0(2))) + & ((AE_0(3,3))*(R_0(3))) + & ((AE_0(3,4))*(R_0(4))) + & ((AE_0(3,5))*(R_0(5))) + & ((AE_0(3,6))*(R_0(6))) + & ((AE_0(3,7))*(R_0(7))) DTOT(4) = ((AE_0(4,1))*(R_0(1))) + & ((AE_0(4,2))*(R_0(2))) + & ((AE_0(4,3))*(R_0(3))) + & ((AE_0(4,4))*(R_0(4))) + & ((AE_0(4,5))*(R_0(5))) + & ((AE_0(4,6))*(R_0(6))) + & ((AE_0(4,7))*(R_0(7))) DTOT(5) = ((AE_0(5,1))*(R_0(1))) + & ((AE_0(5,2))*(R_0(2))) + & ((AE_0(5,3))*(R_0(3))) + & ((AE_0(5,4))*(R_0(4))) + & ((AE_0(5,5))*(R_0(5))) + & ((AE_0(5,6))*(R_0(6))) + & ((AE_0(5,7))*(R_0(7))) DTOT(6) = ((AE_0(6,1))*(R_0(1))) + & ((AE_0(6,2))*(R_0(2))) + & ((AE_0(6,3))*(R_0(3))) + & ((AE_0(6,4))*(R_0(4))) + & ((AE_0(6,5))*(R_0(5))) + & ((AE_0(6,6))*(R_0(6))) + & ((AE_0(6,7))*(R_0(7))) DTOT(7) = ((AE_0(7,1))*(R_0(1))) + & ((AE_0(7,2))*(R_0(2))) + & ((AE_0(7,3))*(R_0(3))) + & ((AE_0(7,4))*(R_0(4))) + & ((AE_0(7,5))*(R_0(5))) + & ((AE_0(7,6))*(R_0(6))) + & ((AE_0(7,7))*(R_0(7))) C Increment Ds_0 et Dp_0 (elasticité non lineaire DS_0(1:6) = DTOT(1:6) DP_0 = DTOT(7) IF (IFOUR.NE.2) THEN DS_0(5:6) = 0.0D0 ENDIF C Calcul derivé df/ds (cutting plan) DFDS_0(1:6) = NN_0(1:6) XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) + & ((D2F(1,2))*(N2N_0(2))) + & ((D2F(1,3))*(N2N_0(3))) + & ((D2F(1,4))*(N2N_0(4))) + & ((D2F(1,5))*(N2N_0(5))) + & ((D2F(1,6))*(N2N_0(6))) XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) + & ((D2F(2,2))*(N2N_0(2))) + & ((D2F(2,3))*(N2N_0(3))) + & ((D2F(2,4))*(N2N_0(4))) + & ((D2F(2,5))*(N2N_0(5))) + & ((D2F(2,6))*(N2N_0(6))) XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) + & ((D2F(3,2))*(N2N_0(2))) + & ((D2F(3,3))*(N2N_0(3))) + & ((D2F(3,4))*(N2N_0(4))) + & ((D2F(3,5))*(N2N_0(5))) + & ((D2F(3,6))*(N2N_0(6))) XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) + & ((D2F(4,2))*(N2N_0(2))) + & ((D2F(4,3))*(N2N_0(3))) + & ((D2F(4,4))*(N2N_0(4))) + & ((D2F(4,5))*(N2N_0(5))) + & ((D2F(4,6))*(N2N_0(6))) XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) + & ((D2F(5,2))*(N2N_0(2))) + & ((D2F(5,3))*(N2N_0(3))) + & ((D2F(5,4))*(N2N_0(4))) + & ((D2F(5,5))*(N2N_0(5))) + & ((D2F(5,6))*(N2N_0(6))) XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) + & ((D2F(6,2))*(N2N_0(2))) + & ((D2F(6,3))*(N2N_0(3))) + & ((D2F(6,4))*(N2N_0(4))) + & ((D2F(6,5))*(N2N_0(5))) + & ((D2F(6,6))*(N2N_0(6))) DFDS_0(1:6) = DFDS_0(1:6) + & ((((6.D0)*((P_0 - XC1)))* & ((XM)*((RTH_0)**(2.0D0)))))* & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6))) C Calcul derivé df/ds (cutting plan) - partie deviatoire DFDS_0D(1:6) = DFDS_0(1:6) - & (((DFDS_0(1) + DFDS_0(2) + DFDS_0(3))/(3.0D0))*(XID1(1:6))) IF (IFOUR.NE.2) THEN DFDS_0D(5:6) = 0.0D0 ENDIF C Calcul derivé df/dp (cutting plan) DFDP_0 = ((NN_0(1))*(BET_0(1))) + & ((NN_0(2))*(BET_0(2))) + & ((NN_0(3))*(BET_0(3))) + & (2.0D0)*((NN_0(4))*(BET_0(4))) + & (2.0D0)*((NN_0(5))*(BET_0(5))) + & (2.0D0)*((NN_0(6))*(BET_0(6))) DFDP_0 = DFDP_0 + & (((((2.0D0)/(3.0D0))**(0.5D0))*(XM))*(RTH_0)) XVAL3(1) = ((D2F(1,1))*(BET_0(1))) + & ((D2F(1,2))*(BET_0(2))) + & ((D2F(1,3))*(BET_0(3))) + & ((D2F(1,4))*(BET_0(4))) + & ((D2F(1,5))*(BET_0(5))) + & ((D2F(1,6))*(BET_0(6))) XVAL3(2) = ((D2F(2,1))*(BET_0(1))) + & ((D2F(2,2))*(BET_0(2))) + & ((D2F(2,3))*(BET_0(3))) + & ((D2F(2,4))*(BET_0(4))) + & ((D2F(2,5))*(BET_0(5))) + & ((D2F(2,6))*(BET_0(6))) XVAL3(3) = ((D2F(3,1))*(BET_0(1))) + & ((D2F(3,2))*(BET_0(2))) + & ((D2F(3,3))*(BET_0(3))) + & ((D2F(3,4))*(BET_0(4))) + & ((D2F(3,5))*(BET_0(5))) + & ((D2F(3,6))*(BET_0(6))) XVAL3(4) = ((D2F(4,1))*(BET_0(1))) + & ((D2F(4,2))*(BET_0(2))) + & ((D2F(4,3))*(BET_0(3))) + & ((D2F(4,4))*(BET_0(4))) + & ((D2F(4,5))*(BET_0(5))) + & ((D2F(4,6))*(BET_0(6))) XVAL3(5) = ((D2F(5,1))*(BET_0(1))) + & ((D2F(5,2))*(BET_0(2))) + & ((D2F(5,3))*(BET_0(3))) + & ((D2F(5,4))*(BET_0(4))) + & ((D2F(5,5))*(BET_0(5))) + & ((D2F(5,6))*(BET_0(6))) XVAL3(6) = ((D2F(6,1))*(BET_0(1))) + & ((D2F(6,2))*(BET_0(2))) + & ((D2F(6,3))*(BET_0(3))) + & ((D2F(6,4))*(BET_0(4))) + & ((D2F(6,5))*(BET_0(5))) + & ((D2F(6,6))*(BET_0(6))) XVAL4 = ((XVAL3(1))*(N2N_0(1))) + & ((XVAL3(2))*(N2N_0(2))) + & ((XVAL3(3))*(N2N_0(3))) + & (2.0D0)*((XVAL3(4))*(N2N_0(4))) + & (2.0D0)*((XVAL3(5))*(N2N_0(5))) + & (2.0D0)*((XVAL3(6))*(N2N_0(6))) DFDP_0 = DFDP_0 + & ((((6.D0)*((P_0 - XC1)))* & ((XM)*((RTH_0)**(2.0D0)))))* & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL4)) C Calcul derivé df/dbeta (cutting plan) DFDBET_0(1:6) = ((NN_0(1:6))*(P_0-XC1)) DFDBET_0(1:6) = DFDBET_0(1:6) + & ((((6.D0)*((P_0 - XC1)**(2.0D0)))* & ((XM)*((RTH_0)**(2.0D0)))))* & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6))) C VAL1 = (((2.0D0)*(GMOD_0))*(((DFDS_0D(1))*(DFDS_0D(1))) + & ((DFDS_0D(2))*(DFDS_0D(2))) + & ((DFDS_0D(3))*(DFDS_0D(3))) + & (2.0D0)*((DFDS_0D(4))*(DFDS_0D(4))) + & (2.0D0)*((DFDS_0D(5))*(DFDS_0D(5))) + & (2.0D0)*((DFDS_0D(6))*(DFDS_0D(6))))) VAL2 = ((KMOD_0)*(DFDP_0))*(P1_0) VAL3 = (((2.0D0)/(3.0D0))*(HMOD_0)) & *(((DFDBET_0(1))*(MM_0(1))) + & ((DFDBET_0(2))*(MM_0(2))) + & ((DFDBET_0(3))*(MM_0(3))) + & (2.0D0)*((DFDBET_0(4))*(MM_0(4))) + & (2.0D0)*((DFDBET_0(5))*(MM_0(5))) + & (2.0D0)*((DFDBET_0(6))*(MM_0(6)))) IF ((F_00.LT.(0.0D0)).AND.(F_0.LT.(0.0D0))) THEN D2GAM = ((0.0D0)/(VAL1 + VAL2 + VAL3)) ELSE D2GAM = ((F_0)/(VAL1 + VAL2 + VAL3)) ENDIF DSEPLA_0(1:6) = ((D2GAM)*(DFDS_0D(1:6))) DVEPLA_0 = ((D2GAM)*(P1_0)) DBET_0(1:6) = (-1.0D0)*((((2.0D0)/(3.0D0)) & *(HMOD_0))*((D2GAM)*(MM_0(1:6)))) SEPLA_1(1:6) = SEPLA_0(1:6) + DSEPLA_0(1:6) VEPLA_1 = VEPLA_0 + DVEPLA_0 BET_1(1:6) = BET_0 + DBET_0(1:6) DGAM_1 = DGAM_0 + D2GAM C S_0(1:6) = S_0(1:6) + DS_0(1:6) & - (((2.0D0)*(GMOD_0))*(DSEPLA_0(1:6))) P_0 = P_0 + DP_0 - (((1.0D0)*(KMOD_0))*(DVEPLA_0)) ENDIF 101 CONTINUE C C---- FIN CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP --------------------- 200 CONTINUE C C---- CONTROLE SUR LA BOUCLE WHILE ------------------------------------- C---- SI ON ARRIVE À LA FIN DES N SUBSTEP ON TERMINE AVEC L'UPDATE ----- C---- DES CONTRAINTES, VARIABLES INTERNE ET DEFORMATIONS PLASTIQUES ---- C---- POUR LE TEMPS SUIVANT -------------------------------------------- C c I_STEP = I_STEP - (INT(1)) C IF ( (I_STEP.EQ.N_STEP) &.AND.(IND_STEP1.EQ.0) &.AND.(IND_STEP2.EQ.0)) THEN C Deformation totale finale EPSTF(1:6) = ETOT_FIN(1:6) EPSTF(4:6) = ((2.0D0)*(ETOT_FIN(4:6))) C Deformation plastique finale EPINF(1:6) = EPLA_FIN(1:6) EPINF(4:6) = ((2.0D0)*(EPLA_FIN(4:6))) C Contrainte Totale finale SIGF(1:6) = SIG_FIN(1:6) C Variable interne VARF(1) = DGAM_0 VARF(2:7) = BET1_FIN(1:6) VARF(8:13) = BET2_FIN(1:6) VARF(14:19) = BET3_FIN(1:6) VARF(20:25) = BET4_FIN(1:6) VARF(26:31) = BET5_FIN(1:6) VARF(32:37) = BET6_FIN(1:6) VARF(38:43) = BET7_FIN(1:6) VARF(44:49) = BET8_FIN(1:6) VARF(50:55) = BET9_FIN(1:6) VARF(56:61) = BET10_FIN(1:6) GOTO 11 ELSE C---- EN REVANCHE ON PREPARE LE DONNES POUR LE SUBSTEP N+1 ------------- c---- DANS CE PARTIE ON PEUT MODIFIER LES NOMBRES DE SOUSSTEP ---------- C---- ET ADAPTER L'ALGORITHME ------------------------------------------ IF ((IND_STEP2.NE.1).AND.(IND_STEP1.NE.1)) THEN C Deformation totale finale ETOT_INI(1:6) = ETOT_FIN(1:6) C Deformation plastique finale EPLA_INI(1:6) = EPLA_FIN(1:6) C Contrainte Totale finale SIG_INI(1:6) = SIG_FIN(1:6) C Variables internes BET1_INI(1:6) = BET1_FIN(1:6) BET2_INI(1:6) = BET2_FIN(1:6) BET3_INI(1:6) = BET3_FIN(1:6) BET4_INI(1:6) = BET4_FIN(1:6) BET5_INI(1:6) = BET5_FIN(1:6) BET6_INI(1:6) = BET6_FIN(1:6) BET7_INI(1:6) = BET7_FIN(1:6) BET8_INI(1:6) = BET8_FIN(1:6) BET9_INI(1:6) = BET9_FIN(1:6) BET10_INI(1:6) = BET10_FIN(1:6) ENDIF IF (IND_STEP1.EQ.1) THEN WRITE(IOIMP,10006) 10006 FORMAT('Warning pas de convergence - substepping') N_STEP2 = 2*N_STEP DDET_ST2(1:3) = (EPST0(1:3) + DEPST(1:3) - ETOT_INI(1:3))/ & (N_STEP2) DDET_ST2(4:6) = ((EPST0(4:6))/(2.0D0) + (DEPST(4:6))/(2.0D0) & - ETOT_INI(4:6))/ & (N_STEP2) IND_STEP1 = INT(0) N_STEP = N_STEP2 DDET_ST(1:6) = DDET_ST2(1:6) IND_STEP3 = IND_STEP3 + I_STEP - 1 + N_STEP GOTO 10 ENDIF IF (IND_STEP2.EQ.1) THEN N_STEP2 = INT(100) DDET_ST2(1:3) = (EPST0(1:3) + DEPST(1:3) - ETOT_INI(1:3))/ & (N_STEP2) DDET_ST2(4:6) = ((EPST0(4:6))/(2.0D0) + (DEPST(4:6))/(2.0D0) & - ETOT_INI(4:6))/ & (N_STEP2) IF (IFOUR.NE.2) THEN DDET_ST2(5:6) = 0.0D0 ENDIF IND_STEP2 = INT(0) N_STEP = N_STEP2 DDET_ST(1:6) = DDET_ST2(1:6) IND_STEP3 = IND_STEP3 + I_STEP - 1 + N_STEP GOTO 10 ENDIF ENDIF C C---- FIN CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP --------------------- 100 CONTINUE 11 CONTINUE C C RETURN C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales