Télécharger iwpr3d.eso

Retour à la liste

Numérotation des lignes :

iwpr3D
  1. C IWPR3D SOURCE GF238795 18/02/01 21:15:44 9724
  2. C IWPR3D SOURCE AF221230 12/10/04 21:15:18 7520
  3. SUBROUTINE IWPR3D (XMAT,VAR0,VARF,SIG0,SIGF,DEPST,XCAR,
  4. & EPIN0,EPINF,EPST0,EPSTF)
  5. C
  6. C====&===1=========2=========3=========4=========5=========6=========7==
  7. C Commentaires : Loi d Iwan generalisée en 3D et basee sur les travaux
  8. C de Prevost
  9. C Traits : -
  10. C
  11. C Auteur : A. Frau (Ing.) - CEA/DEN/DANS/DM2S/SEMT/EMSI
  12. C====&===1=========2=========3=========4=========5=========6=========7==
  13. C
  14. C----DECLARATION GENERALES----------------------------------------------
  15. C
  16. IMPLICIT INTEGER(I-N)
  17. IMPLICIT REAL*8(A-H,O-Z)
  18.  
  19. -INC PPARAM
  20. -INC CCOPTIO
  21. C
  22. C----DECLARATION VARIABLES----------------------------------------------
  23. C
  24. REAL*8 XID1(6),XID2(6,6)
  25. C
  26. C
  27. REAL*8 XMAT(*),SIG0(*),SIGF(*),VAR0(*),VARF(*),DEPST(*),XCAR(*)
  28. REAL*8 EPIN0(*),EPINF(*),EPST0(*),EPSTF(*)
  29. C
  30. C Parametres materiaux
  31. REAL*8 XE1,XNU1,XE0,XA0,XC1,XN1,XPREF1,XK1
  32. REAL*8 XM1, XM2, XM3, XM4, XM5, XM6, XM7, XM8, XM9, XM10
  33. REAL*8 XHC1, XHC2, XHC3, XHC4, XHC5, XHC6, XHC7, XHC8, XHC9,XHC10
  34. REAL*8 XHE1, XHE2, XHE3, XHE4, XHE5, XHE6, XHE7, XHE8, XHE9,XHE10
  35. REAL*8 XD1, XD2, XD3, XD4, XD5, XD6, XD7, XD8, XD9, XD10
  36. REAL*8 XETC1,XETC2,XETC3,XETC4,XETC5,XETC6,XETC7,XETC8,XETC9
  37. REAL*8 XETC10
  38. REAL*8 XETE1,XETE2,XETE3,XETE4,XETE5,XETE6,XETE7,XETE8,XETE9
  39. REAL*8 XETE10
  40. C
  41. C Valeurs elastiques
  42. REAL*8 GMOD_E1,KMOD_E1,GMOD,KMOD
  43. C
  44. C tollerances
  45. REAL*8 XTOL1,XTOL2
  46. C
  47. C indicateurs de controle pour le substep
  48. INTEGER IND_TEST,IND_STEP1,IND_STEP2,IND_STEP3,N_STEP,N_STEP2
  49. C
  50. C variables deplacement
  51. REAL*8 DDET_ST(6),DDET_ST2(6),DE_TOT(6),DSE_TOT(6),DVE_TOT
  52. c
  53. c Valeurs pour contraintes, deformations et autres valeurs initiaux
  54. REAL*8 SIG_INI(6),S_INI(6),P_INI
  55. REAL*8 X1_INI(6),X2_INI(6),X3_INI(6),X4_INI(6),X5_INI(6)
  56. REAL*8 X6_INI(6),X7_INI(6),X8_INI(6),X9_INI(6),X10_INI(6)
  57. REAL*8 NX1_INI,NX2_INI,NX3_INI,NX4_INI,NX5_INI
  58. REAL*8 NX6_INI,NX7_INI,NX8_INI,NX9_INI,NX10_INI
  59. REAL*8 NN1_INI(6),NN2_INI(6),NN3_INI(6),NN4_INI(6),NN5_INI(6)
  60. REAL*8 NN6_INI(6),NN7_INI(6),NN8_INI(6),NN9_INI(6),NN10_INI(6)
  61. REAL*8 NN21_INI(6),NN22_INI(6),NN23_INI(6),NN24_INI(6),NN25_INI(6)
  62. REAL*8 NN26_INI(6),NN27_INI(6),NN28_INI(6),NN29_INI(6)
  63. REAL*8 NN210_INI(6)
  64. REAL*8 COS3TH1_INI,COS3TH2_INI,COS3TH3_INI,COS3TH4_INI
  65. REAL*8 COS3TH5_INI
  66. REAL*8 COS3TH6_INI,COS3TH7_INI,COS3TH8_INI,COS3TH9_INI
  67. REAL*8 COS3TH10_INI
  68. REAL*8 RTH1_INI,RTH2_INI,RTH3_INI,RTH4_INI,RTH5_INI
  69. REAL*8 RTH6_INI,RTH7_INI,RTH8_INI,RTH9_INI,RTH10_INI
  70. REAL*8 F1_INI,F2_INI,F3_INI,F4_INI,F5_INI
  71. REAL*8 F6_INI,F7_INI,F8_INI,F9_INI,F10_INI
  72. REAL*8 BET1_INI(6),BET2_INI(6),BET3_INI(6),BET4_INI(6),BET5_INI(6)
  73. REAL*8 BET6_INI(6),BET7_INI(6),BET8_INI(6),BET9_INI(6)
  74. REAL*8 BET10_INI(6)
  75. REAL*8 EPLA_INI(6),SEPLA_INI(6),VEPLA_INI,ETOT_INI(6)
  76. INTEGER IINI_CRIT
  77. C
  78. C
  79. INTEGER N_ITER1
  80. c
  81. c Valeurs pour contraintes, deformations et autres valeurs pour
  82. c l'instant n+1 au demarrage des boucles
  83. REAL*8 X1_0(6),X2_0(6),X3_0(6),X4_0(6),X5_0(6)
  84. REAL*8 X6_0(6),X7_0(6),X8_0(6),X9_0(6),X10_0(6)
  85. REAL*8 NX1_0,NX2_0,NX3_0,NX4_0,NX5_0
  86. REAL*8 NX6_0,NX7_0,NX8_0,NX9_0,NX10_0
  87. REAL*8 NN1_0(6),NN2_0(6),NN3_0(6),NN4_0(6),NN5_0(6)
  88. REAL*8 NN6_0(6),NN7_0(6),NN8_0(6),NN9_0(6),NN10_0(6)
  89. REAL*8 NN21_0(6),NN22_0(6),NN23_0(6),NN24_0(6),NN25_0(6)
  90. REAL*8 NN26_0(6),NN27_0(6),NN28_0(6),NN29_0(6)
  91. REAL*8 NN210_0(6)
  92. REAL*8 COS3TH1_0,COS3TH2_0,COS3TH3_0,COS3TH4_0
  93. REAL*8 COS3TH5_0
  94. REAL*8 COS3TH6_0,COS3TH7_0,COS3TH8_0,COS3TH9_0
  95. REAL*8 COS3TH10_0
  96. REAL*8 RTH1_0,RTH2_0,RTH3_0,RTH4_0,RTH5_0
  97. REAL*8 RTH6_0,RTH7_0,RTH8_0,RTH9_0,RTH10_0
  98. REAL*8 F1_0,F2_0,F3_0,F4_0,F5_0
  99. REAL*8 F6_0,F7_0,F8_0,F9_0,F10_0
  100. REAL*8 BET1_0(6),BET2_0(6),BET3_0(6),BET4_0(6),BET5_0(6)
  101. REAL*8 BET6_0(6),BET7_0(6),BET8_0(6),BET9_0(6)
  102. REAL*8 BET10_0(6)
  103. REAL*8 VET_TEST(10)
  104. INTEGER VET_TEST2(10)
  105. INTEGER I1_CRIT,I2_CRIT
  106. REAL*8 XCONT_CRI
  107.  
  108. c Valeurs pour contraintes, deformations et autres valeurs pour
  109. c l'instant n+1 au cours des iterations une fois que le critere
  110. C est detecté
  111. REAL*8 XM,XHC,XHE,XETC,XETE,XD
  112. REAL*8 S_0(6),P_0
  113. REAL*8 SEPLA_0(6),VEPLA_0
  114. REAL*8 DGAM_0
  115. REAL*8 BET_0(6),X_0(6),NX_0,NN_0(6),N2N_0(6)
  116. REAL*8 COS3TH_0,RTH_0
  117. REAL*8 HMOD_0
  118. REAL*8 ETA_0,P1_0
  119. REAL*8 S1M(6),S2M(6),S2SCAL,MM_0(6),NMM_0,XVAL1(6),XVAL2
  120. REAL*8 F_0,F_00
  121. C
  122. C criteres
  123. REAL*8 CRIT1
  124. REAL*8 CRIT2
  125. C
  126. C partie elastiques
  127. REAL*8 GMOD_0,KMOD_0,DGDP_0,DKDP_0
  128. REAL*8 R_0(7),DTOT(7)
  129. REAL*8 AE_0I(7,7),AE_0(7,7)
  130. C
  131. C partie iteration
  132. REAL*8 D2F(6,6),DS_0(6),DP_0
  133. REAL*8 DFDS_0(6),DFDS_0D(6),DFDP_0,VECT1,DFDBET_0(6)
  134. REAL*8 XVAL3(6),XVAL4
  135. REAL*8 VAL1,VAL2,VAL3
  136. REAL*8 D2GAM,DSEPLA_0(6),DVEPLA_0,DBET_0(6)
  137. REAL*8 SEPLA_1(6),VEPLA_1,BET_1(6),DGAM_1
  138.  
  139. c Valeurs suite à la convergence à chaque sous-step n+1
  140. REAL*8 EPLA_FIN(6),ETOT_FIN(6)
  141. REAL*8 SIG_FIN(6)
  142. REAL*8 A_CORR,XXI_CORR(6)
  143. REAL*8 BET1_FIN(6),BET2_FIN(6),BET3_FIN(6),BET4_FIN(6),BET5_FIN(6)
  144. REAL*8 BET6_FIN(6),BET7_FIN(6),BET8_FIN(6),BET9_FIN(6)
  145. REAL*8 BET10_FIN(6)
  146. C
  147. C Definition des matrices identité
  148. XID1(1:6) = 0.0D0
  149. XID2(1:6,1:6) = 0.0D0
  150. XID1(1:3) = 1.0D0
  151. XID2(1,1) = 1.0D0
  152. XID2(2,2) = 1.0D0
  153. XID2(3,3) = 1.0D0
  154. XID2(4,4) = 1.0D0
  155. XID2(5,5) = 1.0D0
  156. XID2(6,6) = 1.0D0
  157. C
  158. C----CONTROLE OPTION CALCUL --------------------------------------------
  159. IF ((IFOUR.NE.2).AND.(IFOUR.NE.0).AND.(IFOUR.NE.-1)) THEN
  160. WRITE(IOIMP,10000)
  161. 10000 FORMAT('Option calcul mauvais')
  162. WRITE(IOIMP,10001)
  163. 10001 FORMAT(' seulement:')
  164. WRITE(IOIMP,10002)
  165. 10002 FORMAT(' 3D MODE PLAN')
  166. WRITE(IOIMP,10003)
  167. 10003 FORMAT(' 2D MODE AXIS')
  168. WRITE(IOIMP,10004)
  169. 10004 FORMAT(' 2D MODE PLAN')
  170. STOP
  171. ENDIF
  172. C
  173. C----MISE EN DONNEES----------------------------------------------------
  174. C
  175. C Module de young et coef poisson
  176. XE1 = XMAT(1)
  177. XNU1 = XMAT(2)
  178. C
  179. C parametres alph0, c1, n1, pref, k1
  180. XE0 = XMAT(5)
  181. XA0 = XMAT(6)
  182. XC1 = XMAT(7)
  183. XN1 = XMAT(8)
  184. XPREF1 = XMAT(9)
  185. XK1 = XMAT(10)
  186. C
  187. C seuils m1, m2, m3, m4, m5, m6, m7, m8, m9, m10
  188. XM1 = XMAT(11)
  189. XM2 = XMAT(12)
  190. XM3 = XMAT(13)
  191. XM4 = XMAT(14)
  192. XM5 = XMAT(15)
  193. XM6 = XMAT(16)
  194. XM7 = XMAT(17)
  195. XM8 = XMAT(18)
  196. XM9 = XMAT(19)
  197. XM10 = XMAT(20)
  198. C
  199. C Modules plastiques Hc1, Hc2, Hc3, Hc4, Hc5, Hc6, Hc7, Hc8, Hc9
  200. C Hc10
  201. XHC1 = XMAT(21)
  202. XHC2 = XMAT(22)
  203. XHC3 = XMAT(23)
  204. XHC4 = XMAT(24)
  205. XHC5 = XMAT(25)
  206. XHC6 = XMAT(26)
  207. XHC7 = XMAT(27)
  208. XHC8 = XMAT(28)
  209. XHC9 = XMAT(29)
  210. XHC10 = 0.01D0*XMAT(29)
  211. C
  212. C Modules plastiques He1, He2, He3, He4, He5, He6, He7, He8, He9
  213. C He10
  214. XHE1 = XMAT(30)
  215. XHE2 = XMAT(31)
  216. XHE3 = XMAT(32)
  217. XHE4 = XMAT(33)
  218. XHE5 = XMAT(34)
  219. XHE6 = XMAT(35)
  220. XHE7 = XMAT(36)
  221. XHE8 = XMAT(37)
  222. XHE9 = XMAT(38)
  223. XHE10 = 0.01D0*XMAT(38)
  224. C
  225. C Modules plastiques D1, D2, D3, D4, D5, D6, D7, D8, D9, D10
  226. XD1 = XMAT(39)
  227. XD2 = XMAT(40)
  228. XD3 = XMAT(41)
  229. XD4 = XMAT(42)
  230. XD5 = XMAT(43)
  231. XD6 = XMAT(44)
  232. XD7 = XMAT(45)
  233. XD8 = XMAT(46)
  234. XD9 = XMAT(47)
  235. XD10 = 0.0D0
  236. C
  237. C Modules plastiques eta_c1, eta_c2, eta_c3, eta_c4, eta_c5
  238. C eta_c6, eta_c7, eta_c8, eta_c9, eta_c10
  239. XETC1 = XMAT(48)
  240. XETC2 = XMAT(49)
  241. XETC3 = XMAT(50)
  242. XETC4 = XMAT(51)
  243. XETC5 = XMAT(52)
  244. XETC6 = XMAT(53)
  245. XETC7 = XMAT(54)
  246. XETC8 = XMAT(55)
  247. XETC9 = XMAT(56)
  248. XETC10 = 1000.0D0
  249. C
  250. C Modules plastiques eta_e1, eta_e2, eta_e3, eta_e4, eta_e5
  251. C eta_e6, eta_e7, eta_e8, eta_e9, eta_e10
  252. XETE1 = XMAT(57)
  253. XETE2 = XMAT(58)
  254. XETE3 = XMAT(59)
  255. XETE4 = XMAT(60)
  256. XETE5 = XMAT(61)
  257. XETE6 = XMAT(62)
  258. XETE7 = XMAT(63)
  259. XETE8 = XMAT(64)
  260. XETE9 = XMAT(65)
  261. XETE10 = 1000.0D0
  262. C
  263. C----CONTROLE SUR LE VALEURS MATERIAUX ---------------------------------
  264. IF ((XM2.LT.XM1).OR.(XM3.LT.XM2).OR.(XM4.LT.XM3).OR.(XM5.LT.XM4)
  265. &.OR.(XM6.LT.XM5).OR.(XM7.LT.XM6).OR.(XM8.LT.XM7).OR.(XM9.LT.XM8)
  266. &.OR.(XM10.LT.XM9)) THEN
  267. WRITE(IOIMP,10005)
  268. 10005 FORMAT(' ERREUR DANS LES VALEURS M')
  269. STOP
  270. ENDIF
  271. C
  272. C---- DEFINITION DES VALEURS ELASTIQUES --------------------------------
  273. GMOD_E1 = ((XE1)/((2.0D0)*(1.0D0 + XNU1)))
  274. KMOD_E1 = ((XE1)/((3.0D0)*(1.0D0 - ((2.0D0)*(XNU1)))))
  275. GMOD = (((XA0)*(XE0))/((2.0D0)*(1.0D0 + XNU1)))
  276. KMOD = (((XA0)*(XE0))/((3.0D0)*(1.0D0 - ((2.0D0)*(XNU1)))))
  277. C
  278. C---- DEFINITION DES TOLLERANCES ---------------------------------------
  279. XTOL1 = 1.0E-8
  280. XTOL2 = 1.0E-8
  281. C
  282. C---- INITIALLIZZATION INTEGER POUR SUBSTEPPING ------------------------
  283. IND_TEST = INT(0)
  284. IND_STEP1 = INT(0)
  285. IND_STEP2 = INT(0)
  286. IND_STEP3 = INT(0)
  287. C
  288. C---- VALEUR INITIALES -------------------------------------------------
  289. SIG_INI(1:6) = SIG0(1:6)
  290. BET1_INI(1:6) = VAR0(2:7)
  291. BET2_INI(1:6) = VAR0(8:13)
  292. BET3_INI(1:6) = VAR0(14:19)
  293. BET4_INI(1:6) = VAR0(20:25)
  294. BET5_INI(1:6) = VAR0(26:31)
  295. BET6_INI(1:6) = VAR0(32:37)
  296. BET7_INI(1:6) = VAR0(38:43)
  297. BET8_INI(1:6) = VAR0(44:49)
  298. BET9_INI(1:6) = VAR0(50:55)
  299. BET10_INI(1:6) = VAR0(56:61)
  300. C
  301. ETOT_INI(1:6) = EPST0(1:6)
  302. EPLA_INI(1:6) = EPIN0(1:6)
  303. EPLA_INI(4:6) = (EPLA_INI(4:6))/(2.0D0)
  304. ETOT_INI(4:6) = (ETOT_INI(4:6))/(2.0D0)
  305. C
  306. N_STEP = INT(1)
  307. C
  308. C Modification 17-05-2016
  309. IF (IFOUR.NE.2) THEN
  310. DEPST(5:6) = 0.0D0
  311. DDET_ST(5:6) = 0.0D0
  312. ETOT_INI(5:6) = 0.0D0
  313. EPLA_INI(5:6) = 0.0D0
  314. ENDIF
  315. DDET_ST(1:6) = (DEPST(1:6))/(N_STEP)
  316. DDET_ST(4:6) = (DDET_ST(4:6))/(2.0D0)
  317.  
  318. C
  319. C---- ON COMMENCE LA BOUCLE WHILE POUR L ALGORITHME ADAPTATIVE ---------
  320.  
  321. 10 CONTINUE
  322. DO 100 I_STEP=1,N_STEP
  323. C
  324. C---- AU DEBUT DE CHAQUE STEP ON INTIALISE LES VARIABLE ET ------------
  325. C---- ON RECHERCHE LE CRITERE ACTIVE AU DERNIER PAS DE TEMP -----------
  326. c
  327. C Delta deformation totale pour le substep
  328. DE_TOT(1:6) = DDET_ST(1:6)
  329. c
  330. C Partie deviatore et volumique du Deps_tot
  331. DSE_TOT = DE_TOT(1:6) -
  332. & (((DE_TOT(1) + DE_TOT(2) + DE_TOT(3))/(3.0D0))*(XID1(1:6)))
  333. DVE_TOT = (DE_TOT(1) + DE_TOT(2) + DE_TOT(3))
  334. c
  335. C Partie deviatoire et hydrostatique de sig_ini
  336. S_INI = SIG_INI(1:6) -
  337. & (((SIG_INI(1) + SIG_INI(2) + SIG_INI(3))/(3.0D0))*(XID1(1:6)))
  338. P_INI = ((SIG_INI(1) + SIG_INI(2) + SIG_INI(3))/(3.0D0))
  339. c
  340. C PArtie deviatoire et volumiquue de e_pla_ini
  341. SEPLA_INI(1:6) = EPLA_INI -
  342. & (((EPLA_INI(1) + EPLA_INI(2) + EPLA_INI(3))/(3.0D0))*(XID1(1:6)))
  343. VEPLA_INI = (EPLA_INI(1) + EPLA_INI(2) + EPLA_INI(3))
  344. C
  345. C On determine le termes xi_i_ini = s_ini +(p_ini - c)*beta_i_ini
  346. C pour chaque critere
  347. X1_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET1_INI(1:6)))
  348. X2_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET2_INI(1:6)))
  349. X3_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET3_INI(1:6)))
  350. X4_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET4_INI(1:6)))
  351. X5_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET5_INI(1:6)))
  352. X6_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET6_INI(1:6)))
  353. X7_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET7_INI(1:6)))
  354. X8_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET8_INI(1:6)))
  355. X9_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET9_INI(1:6)))
  356. X10_INI(1:6) = S_INI(1:6) + ((P_INI - XC1)*(BET10_INI(1:6)))
  357. C
  358. C On determine lA norme |x_i_ini|
  359. NX1_INI = (((X1_INI(1)*X1_INI(1)) +
  360. & (X1_INI(2)*X1_INI(2)) +
  361. & (X1_INI(3)*X1_INI(3)) +
  362. & ((2.0D0)*(X1_INI(4)*X1_INI(4))) +
  363. & ((2.0D0)*(X1_INI(5)*X1_INI(5))) +
  364. & ((2.0D0)*(X1_INI(6)*X1_INI(6))))**(0.5D0))
  365. NX2_INI = (((X2_INI(1)*X2_INI(1)) +
  366. & (X2_INI(2)*X2_INI(2)) +
  367. & (X2_INI(3)*X2_INI(3)) +
  368. & ((2.0D0)*(X2_INI(4)*X2_INI(4))) +
  369. & ((2.0D0)*(X2_INI(5)*X2_INI(5))) +
  370. & ((2.0D0)*(X2_INI(6)*X2_INI(6))))**(0.5D0))
  371. NX3_INI = (((X3_INI(1)*X3_INI(1)) +
  372. & (X3_INI(2)*X3_INI(2)) +
  373. & (X3_INI(3)*X3_INI(3)) +
  374. & ((2.0D0)*(X3_INI(4)*X3_INI(4))) +
  375. & ((2.0D0)*(X3_INI(5)*X3_INI(5))) +
  376. & ((2.0D0)*(X3_INI(6)*X3_INI(6))))**(0.5D0))
  377. NX4_INI = (((X4_INI(1)*X4_INI(1)) +
  378. & (X4_INI(2)*X4_INI(2)) +
  379. & (X4_INI(3)*X4_INI(3)) +
  380. & ((2.0D0)*(X4_INI(4)*X4_INI(4))) +
  381. & ((2.0D0)*(X4_INI(5)*X4_INI(5))) +
  382. & ((2.0D0)*(X4_INI(6)*X4_INI(6))))**(0.5D0))
  383. NX5_INI = (((X5_INI(1)*X5_INI(1)) +
  384. & (X5_INI(2)*X5_INI(2)) +
  385. & (X5_INI(3)*X5_INI(3)) +
  386. & ((2.0D0)*(X5_INI(4)*X5_INI(4))) +
  387. & ((2.0D0)*(X5_INI(5)*X5_INI(5))) +
  388. & ((2.0D0)*(X5_INI(6)*X5_INI(6))))**(0.5D0))
  389. NX6_INI = (((X6_INI(1)*X6_INI(1)) +
  390. & (X6_INI(2)*X6_INI(2)) +
  391. & (X6_INI(3)*X6_INI(3)) +
  392. & ((2.0D0)*(X6_INI(4)*X6_INI(4))) +
  393. & ((2.0D0)*(X6_INI(5)*X6_INI(5))) +
  394. & ((2.0D0)*(X6_INI(6)*X6_INI(6))))**(0.5D0))
  395. NX7_INI = (((X7_INI(1)*X7_INI(1)) +
  396. & (X7_INI(2)*X7_INI(2)) +
  397. & (X7_INI(3)*X7_INI(3)) +
  398. & ((2.0D0)*(X7_INI(4)*X7_INI(4))) +
  399. & ((2.0D0)*(X7_INI(5)*X7_INI(5))) +
  400. & ((2.0D0)*(X7_INI(6)*X7_INI(6))))**(0.5D0))
  401. NX8_INI = (((X8_INI(1)*X8_INI(1)) +
  402. & (X8_INI(2)*X8_INI(2)) +
  403. & (X8_INI(3)*X8_INI(3)) +
  404. & ((2.0D0)*(X8_INI(4)*X8_INI(4))) +
  405. & ((2.0D0)*(X8_INI(5)*X8_INI(5))) +
  406. & ((2.0D0)*(X8_INI(6)*X8_INI(6))))**(0.5D0))
  407. NX9_INI = (((X9_INI(1)*X9_INI(1)) +
  408. & (X9_INI(2)*X9_INI(2)) +
  409. & (X9_INI(3)*X9_INI(3)) +
  410. & ((2.0D0)*(X9_INI(4)*X9_INI(4))) +
  411. & ((2.0D0)*(X9_INI(5)*X9_INI(5))) +
  412. & ((2.0D0)*(X9_INI(6)*X9_INI(6))))**(0.5D0))
  413. NX10_INI = (((X10_INI(1)*X10_INI(1)) +
  414. & (X10_INI(2)*X10_INI(2)) +
  415. & (X10_INI(3)*X10_INI(3)) +
  416. & ((2.0D0)*(X10_INI(4)*X10_INI(4))) +
  417. & ((2.0D0)*(X10_INI(5)*X10_INI(5))) +
  418. & ((2.0D0)*(X10_INI(6)*X10_INI(6))))**(0.5D0))
  419. C
  420. C Check sur |x_i_ini| et determination de nn_i_ini de nn2_i_ini
  421. IF ((NX1_INI).LT.(1.0E-12) ) THEN
  422. NN1_INI(1:6) = 0.0D0
  423. NN21_INI(1:6) = 0.0D0
  424. ELSE
  425. NN1_INI(1:6) = X1_INI(1:6)/(NX1_INI)
  426. NN21_INI(1) = ((NN1_INI(1))*(NN1_INI(1))) +
  427. & ((NN1_INI(4))*(NN1_INI(4))) +
  428. & ((NN1_INI(5))*(NN1_INI(5)))
  429. NN21_INI(2) = ((NN1_INI(4))*(NN1_INI(4))) +
  430. & ((NN1_INI(2))*(NN1_INI(2))) +
  431. & ((NN1_INI(6))*(NN1_INI(6)))
  432. NN21_INI(3) = ((NN1_INI(5))*(NN1_INI(5))) +
  433. & ((NN1_INI(6))*(NN1_INI(6))) +
  434. & ((NN1_INI(3))*(NN1_INI(3)))
  435. NN21_INI(4) = ((NN1_INI(1))*(NN1_INI(4))) +
  436. & ((NN1_INI(4))*(NN1_INI(2))) +
  437. & ((NN1_INI(5))*(NN1_INI(6)))
  438. NN21_INI(5) = ((NN1_INI(1))*(NN1_INI(5))) +
  439. & ((NN1_INI(4))*(NN1_INI(6))) +
  440. & ((NN1_INI(5))*(NN1_INI(3)))
  441. NN21_INI(6) = ((NN1_INI(4))*(NN1_INI(5))) +
  442. & ((NN1_INI(2))*(NN1_INI(6))) +
  443. & ((NN1_INI(6))*(NN1_INI(3)))
  444. ENDIF
  445. IF ((NX2_INI).LT.(1.0E-12) ) THEN
  446. NN2_INI(1:6) = 0.0D0
  447. NN22_INI(1:6) = 0.0D0
  448. ELSE
  449. NN2_INI(1:6) = X2_INI(1:6)/(NX2_INI)
  450. NN22_INI(1) = ((NN2_INI(1))*(NN2_INI(1))) +
  451. & ((NN2_INI(4))*(NN2_INI(4))) +
  452. & ((NN2_INI(5))*(NN2_INI(5)))
  453. NN22_INI(2) = ((NN2_INI(4))*(NN2_INI(4))) +
  454. & ((NN2_INI(2))*(NN2_INI(2))) +
  455. & ((NN2_INI(6))*(NN2_INI(6)))
  456. NN22_INI(3) = ((NN2_INI(5))*(NN2_INI(5))) +
  457. & ((NN2_INI(6))*(NN2_INI(6))) +
  458. & ((NN2_INI(3))*(NN2_INI(3)))
  459. NN22_INI(4) = ((NN2_INI(1))*(NN2_INI(4))) +
  460. & ((NN2_INI(4))*(NN2_INI(2))) +
  461. & ((NN2_INI(5))*(NN2_INI(6)))
  462. NN22_INI(5) = ((NN2_INI(1))*(NN2_INI(5))) +
  463. & ((NN2_INI(4))*(NN2_INI(6))) +
  464. & ((NN2_INI(5))*(NN2_INI(3)))
  465. NN22_INI(6) = ((NN2_INI(4))*(NN2_INI(5))) +
  466. & ((NN2_INI(2))*(NN2_INI(6))) +
  467. & ((NN2_INI(6))*(NN2_INI(3)))
  468. ENDIF
  469. IF ((NX3_INI).LT.(1.0E-12) ) THEN
  470. NN3_INI(1:6) = 0.0D0
  471. NN23_INI(1:6) = 0.0D0
  472. ELSE
  473. NN3_INI(1:6) = X3_INI(1:6)/(NX3_INI)
  474. NN23_INI(1) = ((NN3_INI(1))*(NN3_INI(1))) +
  475. & ((NN3_INI(4))*(NN3_INI(4))) +
  476. & ((NN3_INI(5))*(NN3_INI(5)))
  477. NN23_INI(2) = ((NN3_INI(4))*(NN3_INI(4))) +
  478. & ((NN3_INI(2))*(NN3_INI(2))) +
  479. & ((NN3_INI(6))*(NN3_INI(6)))
  480. NN23_INI(3) = ((NN3_INI(5))*(NN3_INI(5))) +
  481. & ((NN3_INI(6))*(NN3_INI(6))) +
  482. & ((NN3_INI(3))*(NN3_INI(3)))
  483. NN23_INI(4) = ((NN3_INI(1))*(NN3_INI(4))) +
  484. & ((NN3_INI(4))*(NN3_INI(2))) +
  485. & ((NN3_INI(5))*(NN3_INI(6)))
  486. NN23_INI(5) = ((NN3_INI(1))*(NN3_INI(5))) +
  487. & ((NN3_INI(4))*(NN3_INI(6))) +
  488. & ((NN3_INI(5))*(NN3_INI(3)))
  489. NN23_INI(6) = ((NN3_INI(4))*(NN3_INI(5))) +
  490. & ((NN3_INI(2))*(NN3_INI(6))) +
  491. & ((NN3_INI(6))*(NN3_INI(3)))
  492. ENDIF
  493. IF ((NX4_INI).LT.(1.0E-12) ) THEN
  494. NN4_INI(1:6) = 0.0D0
  495. NN24_INI(1:6) = 0.0D0
  496. ELSE
  497. NN4_INI(1:6) = X4_INI(1:6)/(NX4_INI)
  498. NN24_INI(1) = ((NN4_INI(1))*(NN4_INI(1))) +
  499. & ((NN4_INI(4))*(NN4_INI(4))) +
  500. & ((NN4_INI(5))*(NN4_INI(5)))
  501. NN24_INI(2) = ((NN4_INI(4))*(NN4_INI(4))) +
  502. & ((NN4_INI(2))*(NN4_INI(2))) +
  503. & ((NN4_INI(6))*(NN4_INI(6)))
  504. NN24_INI(3) = ((NN4_INI(5))*(NN4_INI(5))) +
  505. & ((NN4_INI(6))*(NN4_INI(6))) +
  506. & ((NN4_INI(3))*(NN4_INI(3)))
  507. NN24_INI(4) = ((NN4_INI(1))*(NN4_INI(4))) +
  508. & ((NN4_INI(4))*(NN4_INI(2))) +
  509. & ((NN4_INI(5))*(NN4_INI(6)))
  510. NN24_INI(5) = ((NN4_INI(1))*(NN4_INI(5))) +
  511. & ((NN4_INI(4))*(NN4_INI(6))) +
  512. & ((NN4_INI(5))*(NN4_INI(3)))
  513. NN24_INI(6) = ((NN4_INI(4))*(NN4_INI(5))) +
  514. & ((NN4_INI(2))*(NN4_INI(6))) +
  515. & ((NN4_INI(6))*(NN4_INI(3)))
  516. ENDIF
  517. IF ((NX5_INI).LT.(1.0E-12) ) THEN
  518. NN5_INI(1:6) = 0.0D0
  519. NN25_INI(1:6) = 0.0D0
  520. ELSE
  521. NN5_INI(1:6) = X5_INI(1:6)/(NX5_INI)
  522. NN25_INI(1) = ((NN5_INI(1))*(NN5_INI(1))) +
  523. & ((NN5_INI(4))*(NN5_INI(4))) +
  524. & ((NN5_INI(5))*(NN5_INI(5)))
  525. NN25_INI(2) = ((NN5_INI(4))*(NN5_INI(4))) +
  526. & ((NN5_INI(2))*(NN5_INI(2))) +
  527. & ((NN5_INI(6))*(NN5_INI(6)))
  528. NN25_INI(3) = ((NN5_INI(5))*(NN5_INI(5))) +
  529. & ((NN5_INI(6))*(NN5_INI(6))) +
  530. & ((NN5_INI(3))*(NN5_INI(3)))
  531. NN25_INI(4) = ((NN5_INI(1))*(NN5_INI(4))) +
  532. & ((NN5_INI(4))*(NN5_INI(2))) +
  533. & ((NN5_INI(5))*(NN5_INI(6)))
  534. NN25_INI(5) = ((NN5_INI(1))*(NN5_INI(5))) +
  535. & ((NN5_INI(4))*(NN5_INI(6))) +
  536. & ((NN5_INI(5))*(NN5_INI(3)))
  537. NN25_INI(6) = ((NN5_INI(4))*(NN5_INI(5))) +
  538. & ((NN5_INI(2))*(NN5_INI(6))) +
  539. & ((NN5_INI(6))*(NN5_INI(3)))
  540. ENDIF
  541. IF ((NX6_INI).LT.(1.0E-12) ) THEN
  542. NN6_INI(1:6) = 0.0D0
  543. NN26_INI(1:6) = 0.0D0
  544. ELSE
  545. NN6_INI(1:6) = X6_INI(1:6)/(NX6_INI)
  546. NN26_INI(1) = ((NN6_INI(1))*(NN6_INI(1))) +
  547. & ((NN6_INI(4))*(NN6_INI(4))) +
  548. & ((NN6_INI(5))*(NN6_INI(5)))
  549. NN26_INI(2) = ((NN6_INI(4))*(NN6_INI(4))) +
  550. & ((NN6_INI(2))*(NN6_INI(2))) +
  551. & ((NN6_INI(6))*(NN6_INI(6)))
  552. NN26_INI(3) = ((NN6_INI(5))*(NN6_INI(5))) +
  553. & ((NN6_INI(6))*(NN6_INI(6))) +
  554. & ((NN6_INI(3))*(NN6_INI(3)))
  555. NN26_INI(4) = ((NN6_INI(1))*(NN6_INI(4))) +
  556. & ((NN6_INI(4))*(NN6_INI(2))) +
  557. & ((NN6_INI(5))*(NN6_INI(6)))
  558. NN26_INI(5) = ((NN6_INI(1))*(NN6_INI(5))) +
  559. & ((NN6_INI(4))*(NN6_INI(6))) +
  560. & ((NN6_INI(5))*(NN6_INI(3)))
  561. NN26_INI(6) = ((NN6_INI(4))*(NN6_INI(5))) +
  562. & ((NN6_INI(2))*(NN6_INI(6))) +
  563. & ((NN6_INI(6))*(NN6_INI(3)))
  564. ENDIF
  565. IF ((NX7_INI).LT.(1.0E-12) ) THEN
  566. NN7_INI(1:6) = 0.0D0
  567. NN27_INI(1:6) = 0.0D0
  568. ELSE
  569. NN7_INI(1:6) = X7_INI(1:6)/(NX7_INI)
  570. NN27_INI(1) = ((NN7_INI(1))*(NN7_INI(1))) +
  571. & ((NN7_INI(4))*(NN7_INI(4))) +
  572. & ((NN7_INI(5))*(NN7_INI(5)))
  573. NN27_INI(2) = ((NN7_INI(4))*(NN7_INI(4))) +
  574. & ((NN7_INI(2))*(NN7_INI(2))) +
  575. & ((NN7_INI(6))*(NN7_INI(6)))
  576. NN27_INI(3) = ((NN7_INI(5))*(NN7_INI(5))) +
  577. & ((NN7_INI(6))*(NN7_INI(6))) +
  578. & ((NN7_INI(3))*(NN7_INI(3)))
  579. NN27_INI(4) = ((NN7_INI(1))*(NN7_INI(4))) +
  580. & ((NN7_INI(4))*(NN7_INI(2))) +
  581. & ((NN7_INI(5))*(NN7_INI(6)))
  582. NN27_INI(5) = ((NN7_INI(1))*(NN7_INI(5))) +
  583. & ((NN7_INI(4))*(NN7_INI(6))) +
  584. & ((NN7_INI(5))*(NN7_INI(3)))
  585. NN27_INI(6) = ((NN7_INI(4))*(NN7_INI(5))) +
  586. & ((NN7_INI(2))*(NN7_INI(6))) +
  587. & ((NN7_INI(6))*(NN7_INI(3)))
  588. ENDIF
  589. IF ((NX8_INI).LT.(1.0E-12) ) THEN
  590. NN8_INI(1:6) = 0.0D0
  591. NN28_INI(1:6) = 0.0D0
  592. ELSE
  593. NN8_INI(1:6) = X8_INI(1:6)/(NX8_INI)
  594. NN28_INI(1) = ((NN8_INI(1))*(NN8_INI(1))) +
  595. & ((NN8_INI(4))*(NN8_INI(4))) +
  596. & ((NN8_INI(5))*(NN8_INI(5)))
  597. NN28_INI(2) = ((NN8_INI(4))*(NN8_INI(4))) +
  598. & ((NN8_INI(2))*(NN8_INI(2))) +
  599. & ((NN8_INI(6))*(NN8_INI(6)))
  600. NN28_INI(3) = ((NN8_INI(5))*(NN8_INI(5))) +
  601. & ((NN8_INI(6))*(NN8_INI(6))) +
  602. & ((NN8_INI(3))*(NN8_INI(3)))
  603. NN28_INI(4) = ((NN8_INI(1))*(NN8_INI(4))) +
  604. & ((NN8_INI(4))*(NN8_INI(2))) +
  605. & ((NN8_INI(5))*(NN8_INI(6)))
  606. NN28_INI(5) = ((NN8_INI(1))*(NN8_INI(5))) +
  607. & ((NN8_INI(4))*(NN8_INI(6))) +
  608. & ((NN8_INI(5))*(NN8_INI(3)))
  609. NN28_INI(6) = ((NN8_INI(4))*(NN8_INI(5))) +
  610. & ((NN8_INI(2))*(NN8_INI(6))) +
  611. & ((NN8_INI(6))*(NN8_INI(3)))
  612. ENDIF
  613. IF ((NX9_INI).LT.(1.0E-12) ) THEN
  614. NN9_INI(1:6) = 0.0D0
  615. NN29_INI(1:6) = 0.0D0
  616. ELSE
  617. NN9_INI(1:6) = X9_INI(1:6)/(NX9_INI)
  618. NN29_INI(1) = ((NN9_INI(1))*(NN9_INI(1))) +
  619. & ((NN9_INI(4))*(NN9_INI(4))) +
  620. & ((NN9_INI(5))*(NN9_INI(5)))
  621. NN29_INI(2) = ((NN9_INI(4))*(NN9_INI(4))) +
  622. & ((NN9_INI(2))*(NN9_INI(2))) +
  623. & ((NN9_INI(6))*(NN9_INI(6)))
  624. NN29_INI(3) = ((NN9_INI(5))*(NN9_INI(5))) +
  625. & ((NN9_INI(6))*(NN9_INI(6))) +
  626. & ((NN9_INI(3))*(NN9_INI(3)))
  627. NN29_INI(4) = ((NN9_INI(1))*(NN9_INI(4))) +
  628. & ((NN9_INI(4))*(NN9_INI(2))) +
  629. & ((NN9_INI(5))*(NN9_INI(6)))
  630. NN29_INI(5) = ((NN9_INI(1))*(NN9_INI(5))) +
  631. & ((NN9_INI(4))*(NN9_INI(6))) +
  632. & ((NN9_INI(5))*(NN9_INI(3)))
  633. NN29_INI(6) = ((NN9_INI(4))*(NN9_INI(5))) +
  634. & ((NN9_INI(2))*(NN9_INI(6))) +
  635. & ((NN9_INI(6))*(NN9_INI(3)))
  636. ENDIF
  637. IF ((NX10_INI).LT.(1.0E-12) ) THEN
  638. NN10_INI(1:6) = 0.0D0
  639. NN210_INI(1:6) = 0.0D0
  640. ELSE
  641. NN10_INI(1:6) = X10_INI(1:6)/(NX10_INI)
  642. NN210_INI(1) = ((NN10_INI(1))*(NN10_INI(1))) +
  643. & ((NN10_INI(4))*(NN10_INI(4))) +
  644. & ((NN10_INI(5))*(NN10_INI(5)))
  645. NN210_INI(2) = ((NN10_INI(4))*(NN10_INI(4))) +
  646. & ((NN10_INI(2))*(NN10_INI(2))) +
  647. & ((NN10_INI(6))*(NN10_INI(6)))
  648. NN210_INI(3) = ((NN10_INI(5))*(NN10_INI(5))) +
  649. & ((NN10_INI(6))*(NN10_INI(6))) +
  650. & ((NN10_INI(3))*(NN10_INI(3)))
  651. NN210_INI(4) = ((NN10_INI(1))*(NN10_INI(4))) +
  652. & ((NN10_INI(4))*(NN10_INI(2))) +
  653. & ((NN10_INI(5))*(NN10_INI(6)))
  654. NN210_INI(5) = ((NN10_INI(1))*(NN10_INI(5))) +
  655. & ((NN10_INI(4))*(NN10_INI(6))) +
  656. & ((NN10_INI(5))*(NN10_INI(3)))
  657. NN210_INI(6) = ((NN10_INI(4))*(NN10_INI(5))) +
  658. & ((NN10_INI(2))*(NN10_INI(6))) +
  659. & ((NN10_INI(6))*(NN10_INI(3)))
  660. ENDIF
  661. C
  662. C Calcul de cos(3th_i_ini)=-sqrt(6)*trace(nn_i_ini^3) -
  663. c depandance angle de Lode
  664. COS3TH1_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  665. & (((NN1_INI(1))*(NN21_INI(1))) +
  666. & ((NN1_INI(2))*(NN21_INI(2))) +
  667. & ((NN1_INI(3))*(NN21_INI(3))) +
  668. & (2.0D0)*((NN1_INI(4))*(NN21_INI(4))) +
  669. & (2.0D0)*((NN1_INI(5))*(NN21_INI(5))) +
  670. & (2.0D0)*((NN1_INI(6))*(NN21_INI(6))))
  671. COS3TH2_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  672. & (((NN2_INI(1))*(NN22_INI(1))) +
  673. & ((NN2_INI(2))*(NN22_INI(2))) +
  674. & ((NN2_INI(3))*(NN22_INI(3))) +
  675. & (2.0D0)*((NN2_INI(4))*(NN22_INI(4))) +
  676. & (2.0D0)*((NN2_INI(5))*(NN22_INI(5))) +
  677. & (2.0D0)*((NN2_INI(6))*(NN22_INI(6))))
  678. COS3TH3_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  679. & (((NN3_INI(1))*(NN23_INI(1))) +
  680. & ((NN3_INI(2))*(NN23_INI(2))) +
  681. & ((NN3_INI(3))*(NN23_INI(3))) +
  682. & (2.0D0)*((NN3_INI(4))*(NN23_INI(4))) +
  683. & (2.0D0)*((NN3_INI(5))*(NN23_INI(5))) +
  684. & (2.0D0)*((NN3_INI(6))*(NN23_INI(6))))
  685. COS3TH4_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  686. & (((NN4_INI(1))*(NN24_INI(1))) +
  687. & ((NN4_INI(2))*(NN24_INI(2))) +
  688. & ((NN4_INI(3))*(NN24_INI(3))) +
  689. & (2.0D0)*((NN4_INI(4))*(NN24_INI(4))) +
  690. & (2.0D0)*((NN4_INI(5))*(NN24_INI(5))) +
  691. & (2.0D0)*((NN4_INI(6))*(NN24_INI(6))))
  692. COS3TH5_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  693. & (((NN5_INI(1))*(NN25_INI(1))) +
  694. & ((NN5_INI(2))*(NN25_INI(2))) +
  695. & ((NN5_INI(3))*(NN25_INI(3))) +
  696. & (2.0D0)*((NN5_INI(4))*(NN25_INI(4))) +
  697. & (2.0D0)*((NN5_INI(5))*(NN25_INI(5))) +
  698. & (2.0D0)*((NN5_INI(6))*(NN25_INI(6))))
  699. COS3TH6_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  700. & (((NN6_INI(1))*(NN26_INI(1))) +
  701. & ((NN6_INI(2))*(NN26_INI(2))) +
  702. & ((NN6_INI(3))*(NN26_INI(3))) +
  703. & (2.0D0)*((NN6_INI(4))*(NN26_INI(4))) +
  704. & (2.0D0)*((NN6_INI(5))*(NN26_INI(5))) +
  705. & (2.0D0)*((NN6_INI(6))*(NN26_INI(6))))
  706. COS3TH7_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  707. & (((NN7_INI(1))*(NN27_INI(1))) +
  708. & ((NN7_INI(2))*(NN27_INI(2))) +
  709. & ((NN7_INI(3))*(NN27_INI(3))) +
  710. & (2.0D0)*((NN7_INI(4))*(NN27_INI(4))) +
  711. & (2.0D0)*((NN7_INI(5))*(NN27_INI(5))) +
  712. & (2.0D0)*((NN7_INI(6))*(NN27_INI(6))))
  713. COS3TH8_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  714. & (((NN8_INI(1))*(NN28_INI(1))) +
  715. & ((NN8_INI(2))*(NN28_INI(2))) +
  716. & ((NN8_INI(3))*(NN28_INI(3))) +
  717. & (2.0D0)*((NN8_INI(4))*(NN28_INI(4))) +
  718. & (2.0D0)*((NN8_INI(5))*(NN28_INI(5))) +
  719. & (2.0D0)*((NN8_INI(6))*(NN28_INI(6))))
  720. COS3TH9_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  721. & (((NN9_INI(1))*(NN29_INI(1))) +
  722. & ((NN9_INI(2))*(NN29_INI(2))) +
  723. & ((NN9_INI(3))*(NN29_INI(3))) +
  724. & (2.0D0)*((NN9_INI(4))*(NN29_INI(4))) +
  725. & (2.0D0)*((NN9_INI(5))*(NN29_INI(5))) +
  726. & (2.0D0)*((NN9_INI(6))*(NN29_INI(6))))
  727. COS3TH10_INI = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  728. & (((NN10_INI(1))*(NN210_INI(1))) +
  729. & ((NN10_INI(2))*(NN210_INI(2))) +
  730. & ((NN10_INI(3))*(NN210_INI(3))) +
  731. & (2.0D0)*((NN10_INI(4))*(NN210_INI(4))) +
  732. & (2.0D0)*((NN10_INI(5))*(NN210_INI(5))) +
  733. & (2.0D0)*((NN10_INI(6))*(NN210_INI(6))))
  734. C
  735. C Calcul du terme R(th)_i_ini=2k1/((1+k1)-(1-k1)*(cos(3th_i_ini)))
  736. RTH1_INI = ((2.0D0)*(XK1))/
  737. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH1_INI)))
  738. RTH2_INI = ((2.0D0)*(XK1))/
  739. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH2_INI)))
  740. RTH3_INI = ((2.0D0)*(XK1))/
  741. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH3_INI)))
  742. RTH4_INI = ((2.0D0)*(XK1))/
  743. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH4_INI)))
  744. RTH5_INI = ((2.0D0)*(XK1))/
  745. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH5_INI)))
  746. RTH6_INI = ((2.0D0)*(XK1))/
  747. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH6_INI)))
  748. RTH7_INI = ((2.0D0)*(XK1))/
  749. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH7_INI)))
  750. RTH8_INI = ((2.0D0)*(XK1))/
  751. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH8_INI)))
  752. RTH9_INI = ((2.0D0)*(XK1))/
  753. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH9_INI)))
  754. RTH10_INI = ((2.0D0)*(XK1))/
  755. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH10_INI)))
  756. C
  757. C Calcul des criteres f_i_ini
  758. F1_INI = NX1_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  759. & ((P_INI - XC1)*(RTH1_INI))
  760. F2_INI = NX2_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  761. & ((P_INI - XC1)*(RTH2_INI))
  762. F3_INI = NX3_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  763. & ((P_INI - XC1)*(RTH3_INI))
  764. F4_INI = NX4_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  765. & ((P_INI - XC1)*(RTH4_INI))
  766. F5_INI = NX5_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  767. & ((P_INI - XC1)*(RTH5_INI))
  768. F6_INI = NX6_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  769. & ((P_INI - XC1)*(RTH6_INI))
  770. F7_INI = NX7_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  771. & ((P_INI - XC1)*(RTH7_INI))
  772. F8_INI = NX8_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))*
  773. & ((P_INI - XC1)*(RTH8_INI))
  774. F9_INI = NX9_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))*
  775. & ((P_INI - XC1)*(RTH9_INI))
  776. F10_INI = NX10_INI + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))*
  777. & ((P_INI - XC1)*(RTH10_INI))
  778. C
  779. C Determination du critere activé, si
  780. IINI_CRIT = INT(0)
  781. IF ((F1_INI.GT.(0.0D0)).OR.((ABS(F1_INI)).LT.(1.0E-8))) THEN
  782. IINI_CRIT = INT(1)
  783. ENDIF
  784. IF ((F2_INI.GT.(0.0D0)).OR.((ABS(F2_INI)).LT.(1.0E-8))) THEN
  785. IINI_CRIT = INT(2)
  786. ENDIF
  787. IF ((F3_INI.GT.(0.0D0)).OR.((ABS(F3_INI)).LT.(1.0E-8))) THEN
  788. IINI_CRIT = INT(3)
  789. ENDIF
  790. IF ((F4_INI.GT.(0.0D0)).OR.((ABS(F4_INI)).LT.(1.0E-8))) THEN
  791. IINI_CRIT = INT(4)
  792. ENDIF
  793. IF ((F5_INI.GT.(0.0D0)).OR.((ABS(F5_INI)).LT.(1.0E-8))) THEN
  794. IINI_CRIT = INT(5)
  795. ENDIF
  796. IF ((F6_INI.GT.(0.0D0)).OR.((ABS(F6_INI)).LT.(1.0E-8))) THEN
  797. IINI_CRIT = INT(6)
  798. ENDIF
  799. IF ((F7_INI.GT.(0.0D0)).OR.((ABS(F7_INI)).LT.(1.0E-8))) THEN
  800. IINI_CRIT = INT(7)
  801. ENDIF
  802. IF ((F8_INI.GT.(0.0D0)).OR.((ABS(F8_INI)).LT.(1.0E-8))) THEN
  803. IINI_CRIT = INT(8)
  804. ENDIF
  805. IF ((F9_INI.GT.(0.0D0)).OR.((ABS(F9_INI)).LT.(1.0E-8))) THEN
  806. IINI_CRIT = INT(9)
  807. ENDIF
  808. IF ((F10_INI.GT.(0.0D0)).OR.((ABS(F10_INI)).LT.(1.0E-8))) THEN
  809. IINI_CRIT = INT(10)
  810. ENDIF
  811. C---- FIN DE L INTIALISE LES VARIABLE ET DE LA -------------------------
  812. C---- ON RECHERCHE LE CRITERE ACTIVE AU DERNIER PAS DE TEMP -----------
  813. C
  814. C------ ITERATION POUR LA RECHERCHE DE L'ETAT PLASTIQUE ADMISSIBLE -----
  815. C
  816. C Initialissation deformations plastique
  817. SEPLA_0(1:6) = SEPLA_INI(1:6)
  818. VEPLA_0 = VEPLA_INI
  819. C
  820. C Initialissation back stress
  821. BET1_0(1:6) = BET1_INI(1:6)
  822. BET2_0(1:6) = BET2_INI(1:6)
  823. BET3_0(1:6) = BET3_INI(1:6)
  824. BET4_0(1:6) = BET4_INI(1:6)
  825. BET5_0(1:6) = BET5_INI(1:6)
  826. BET6_0(1:6) = BET6_INI(1:6)
  827. BET7_0(1:6) = BET7_INI(1:6)
  828. BET8_0(1:6) = BET8_INI(1:6)
  829. BET9_0(1:6) = BET9_INI(1:6)
  830. BET10_0(1:6) = BET10_INI(1:6)
  831. C
  832. C Initialissation Gamma_plastique
  833. DGAM_0 = 0.0D0
  834. C
  835. C Prevision Elastique des contraintes (etat trial)
  836. S_0(1:6) = S_INI(1:6) +
  837. & ((2.0D0)*(GMOD_E1))*(DSE_TOT(1:6) -
  838. & (SEPLA_0(1:6) - SEPLA_INI(1:6)))
  839. IF (IFOUR.NE.2) THEN
  840. S_0(5:6) = 0.0D0
  841. ENDIF
  842. P_0 = P_INI +
  843. & ((1.0D0)*(KMOD_E1))*(DVE_TOT -
  844. & (VEPLA_0 - VEPLA_INI))
  845. C
  846. N_ITER1 = 1000
  847. C
  848. C------ CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP -----------------------
  849. DO 101 I_ITER1=1,N_ITER1
  850. C Cas apres la premiere iteration k=1
  851. IF (I_ITER1.GT.(INT(1))) THEN
  852. C Mise a jour pour l'iteration k+1
  853. SEPLA_0(1:6) = SEPLA_1(1:6)
  854. VEPLA_0 = VEPLA_1
  855. BET_0(1:6) = BET_1(1:6)
  856. DGAM_0 = DGAM_1
  857. ELSE
  858. C Choix du critere activé des variables pour l'evolution
  859. C de l'etat plastique
  860. C
  861. C On determine le termes xi_i_0 = s_0 +(p_0 - c)*beta_i_0
  862. C pour chaque critere pour k=1
  863. X1_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET1_0(1:6)))
  864. X2_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET2_0(1:6)))
  865. X3_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET3_0(1:6)))
  866. X4_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET4_0(1:6)))
  867. X5_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET5_0(1:6)))
  868. X6_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET6_0(1:6)))
  869. X7_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET7_0(1:6)))
  870. X8_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET8_0(1:6)))
  871. X9_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET9_0(1:6)))
  872. X10_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET10_0(1:6)))
  873. C
  874. C On determine lA norme |x_i_ini|
  875. NX1_0 = (((X1_0(1)*X1_0(1)) +
  876. & (X1_0(2)*X1_0(2)) +
  877. & (X1_0(3)*X1_0(3)) +
  878. & ((2.0D0)*(X1_0(4)*X1_0(4))) +
  879. & ((2.0D0)*(X1_0(5)*X1_0(5))) +
  880. & ((2.0D0)*(X1_0(6)*X1_0(6))))**(0.5D0))
  881. NX2_0 = (((X2_0(1)*X2_0(1)) +
  882. & (X2_0(2)*X2_0(2)) +
  883. & (X2_0(3)*X2_0(3)) +
  884. & ((2.0D0)*(X2_0(4)*X2_0(4))) +
  885. & ((2.0D0)*(X2_0(5)*X2_0(5))) +
  886. & ((2.0D0)*(X2_0(6)*X2_0(6))))**(0.5D0))
  887. NX3_0 = (((X3_0(1)*X3_0(1)) +
  888. & (X3_0(2)*X3_0(2)) +
  889. & (X3_0(3)*X3_0(3)) +
  890. & ((2.0D0)*(X3_0(4)*X3_0(4))) +
  891. & ((2.0D0)*(X3_0(5)*X3_0(5))) +
  892. & ((2.0D0)*(X3_0(6)*X3_0(6))))**(0.5D0))
  893. NX4_0 = (((X4_0(1)*X4_0(1)) +
  894. & (X4_0(2)*X4_0(2)) +
  895. & (X4_0(3)*X4_0(3)) +
  896. & ((2.0D0)*(X4_0(4)*X4_0(4))) +
  897. & ((2.0D0)*(X4_0(5)*X4_0(5))) +
  898. & ((2.0D0)*(X4_0(6)*X4_0(6))))**(0.5D0))
  899. NX5_0 = (((X5_0(1)*X5_0(1)) +
  900. & (X5_0(2)*X5_0(2)) +
  901. & (X5_0(3)*X5_0(3)) +
  902. & ((2.0D0)*(X5_0(4)*X5_0(4))) +
  903. & ((2.0D0)*(X5_0(5)*X5_0(5))) +
  904. & ((2.0D0)*(X5_0(6)*X5_0(6))))**(0.5D0))
  905. NX6_0 = (((X6_0(1)*X6_0(1)) +
  906. & (X6_0(2)*X6_0(2)) +
  907. & (X6_0(3)*X6_0(3)) +
  908. & ((2.0D0)*(X6_0(4)*X6_0(4))) +
  909. & ((2.0D0)*(X6_0(5)*X6_0(5))) +
  910. & ((2.0D0)*(X6_0(6)*X6_0(6))))**(0.5D0))
  911. NX7_0 = (((X7_0(1)*X7_0(1)) +
  912. & (X7_0(2)*X7_0(2)) +
  913. & (X7_0(3)*X7_0(3)) +
  914. & ((2.0D0)*(X7_0(4)*X7_0(4))) +
  915. & ((2.0D0)*(X7_0(5)*X7_0(5))) +
  916. & ((2.0D0)*(X7_0(6)*X7_0(6))))**(0.5D0))
  917. NX8_0 = (((X8_0(1)*X8_0(1)) +
  918. & (X8_0(2)*X8_0(2)) +
  919. & (X8_0(3)*X8_0(3)) +
  920. & ((2.0D0)*(X8_0(4)*X8_0(4))) +
  921. & ((2.0D0)*(X8_0(5)*X8_0(5))) +
  922. & ((2.0D0)*(X8_0(6)*X8_0(6))))**(0.5D0))
  923. NX9_0 = (((X9_0(1)*X9_0(1)) +
  924. & (X9_0(2)*X9_0(2)) +
  925. & (X9_0(3)*X9_0(3)) +
  926. & ((2.0D0)*(X9_0(4)*X9_0(4))) +
  927. & ((2.0D0)*(X9_0(5)*X9_0(5))) +
  928. & ((2.0D0)*(X9_0(6)*X9_0(6))))**(0.5D0))
  929. NX10_0 = (((X10_0(1)*X10_0(1)) +
  930. & (X10_0(2)*X10_0(2)) +
  931. & (X10_0(3)*X10_0(3)) +
  932. & ((2.0D0)*(X10_0(4)*X10_0(4))) +
  933. & ((2.0D0)*(X10_0(5)*X10_0(5))) +
  934. & ((2.0D0)*(X10_0(6)*X10_0(6))))**(0.5D0))
  935. C
  936. C Check sur |x_i_0| et determination de nn_i_0 de nn2_i_0
  937. c pour l'iteration k=0
  938. IF ((NX1_0).LT.(1.0E-12) ) THEN
  939. NN1_0(1:6) = 0.0D0
  940. NN21_0(1:6) = 0.0D0
  941. ELSE
  942. NN1_0(1:6) = X1_0(1:6)/(NX1_0)
  943. NN21_0(1) = ((NN1_0(1))*(NN1_0(1))) +
  944. & ((NN1_0(4))*(NN1_0(4))) +
  945. & ((NN1_0(5))*(NN1_0(5)))
  946. NN21_0(2) = ((NN1_0(4))*(NN1_0(4))) +
  947. & ((NN1_0(2))*(NN1_0(2))) +
  948. & ((NN1_0(6))*(NN1_0(6)))
  949. NN21_0(3) = ((NN1_0(5))*(NN1_0(5))) +
  950. & ((NN1_0(6))*(NN1_0(6))) +
  951. & ((NN1_0(3))*(NN1_0(3)))
  952. NN21_0(4) = ((NN1_0(1))*(NN1_0(4))) +
  953. & ((NN1_0(4))*(NN1_0(2))) +
  954. & ((NN1_0(5))*(NN1_0(6)))
  955. NN21_0(5) = ((NN1_0(1))*(NN1_0(5))) +
  956. & ((NN1_0(4))*(NN1_0(6))) +
  957. & ((NN1_0(5))*(NN1_0(3)))
  958. NN21_0(6) = ((NN1_0(4))*(NN1_0(5))) +
  959. & ((NN1_0(2))*(NN1_0(6))) +
  960. & ((NN1_0(6))*(NN1_0(3)))
  961. ENDIF
  962. IF ((NX2_0).LT.(1.0E-12) ) THEN
  963. NN2_0(1:6) = 0.0D0
  964. NN22_0(1:6) = 0.0D0
  965. ELSE
  966. NN2_0(1:6) = X2_0(1:6)/(NX2_0)
  967. NN22_0(1) = ((NN2_0(1))*(NN2_0(1))) +
  968. & ((NN2_0(4))*(NN2_0(4))) +
  969. & ((NN2_0(5))*(NN2_0(5)))
  970. NN22_0(2) = ((NN2_0(4))*(NN2_0(4))) +
  971. & ((NN2_0(2))*(NN2_0(2))) +
  972. & ((NN2_0(6))*(NN2_0(6)))
  973. NN22_0(3) = ((NN2_0(5))*(NN2_0(5))) +
  974. & ((NN2_0(6))*(NN2_0(6))) +
  975. & ((NN2_0(3))*(NN2_0(3)))
  976. NN22_0(4) = ((NN2_0(1))*(NN2_0(4))) +
  977. & ((NN2_0(4))*(NN2_0(2))) +
  978. & ((NN2_0(5))*(NN2_0(6)))
  979. NN22_0(5) = ((NN2_0(1))*(NN2_0(5))) +
  980. & ((NN2_0(4))*(NN2_0(6))) +
  981. & ((NN2_0(5))*(NN2_0(3)))
  982. NN22_0(6) = ((NN2_0(4))*(NN2_0(5))) +
  983. & ((NN2_0(2))*(NN2_0(6))) +
  984. & ((NN2_0(6))*(NN2_0(3)))
  985. ENDIF
  986. IF ((NX3_0).LT.(1.0E-12) ) THEN
  987. NN3_0(1:6) = 0.0D0
  988. NN23_0(1:6) = 0.0D0
  989. ELSE
  990. NN3_0(1:6) = X3_0(1:6)/(NX3_0)
  991. NN23_0(1) = ((NN3_0(1))*(NN3_0(1))) +
  992. & ((NN3_0(4))*(NN3_0(4))) +
  993. & ((NN3_0(5))*(NN3_0(5)))
  994. NN23_0(2) = ((NN3_0(4))*(NN3_0(4))) +
  995. & ((NN3_0(2))*(NN3_0(2))) +
  996. & ((NN3_0(6))*(NN3_0(6)))
  997. NN23_0(3) = ((NN3_0(5))*(NN3_0(5))) +
  998. & ((NN3_0(6))*(NN3_0(6))) +
  999. & ((NN3_0(3))*(NN3_0(3)))
  1000. NN23_0(4) = ((NN3_0(1))*(NN3_0(4))) +
  1001. & ((NN3_0(4))*(NN3_0(2))) +
  1002. & ((NN3_0(5))*(NN3_0(6)))
  1003. NN23_0(5) = ((NN3_0(1))*(NN3_0(5))) +
  1004. & ((NN3_0(4))*(NN3_0(6))) +
  1005. & ((NN3_0(5))*(NN3_0(3)))
  1006. NN23_0(6) = ((NN3_0(4))*(NN3_0(5))) +
  1007. & ((NN3_0(2))*(NN3_0(6))) +
  1008. & ((NN3_0(6))*(NN3_0(3)))
  1009. ENDIF
  1010. IF ((NX4_0).LT.(1.0E-12) ) THEN
  1011. NN4_0(1:6) = 0.0D0
  1012. NN24_0(1:6) = 0.0D0
  1013. ELSE
  1014. NN4_0(1:6) = X4_0(1:6)/(NX4_0)
  1015. NN24_0(1) = ((NN4_0(1))*(NN4_0(1))) +
  1016. & ((NN4_0(4))*(NN4_0(4))) +
  1017. & ((NN4_0(5))*(NN4_0(5)))
  1018. NN24_0(2) = ((NN4_0(4))*(NN4_0(4))) +
  1019. & ((NN4_0(2))*(NN4_0(2))) +
  1020. & ((NN4_0(6))*(NN4_0(6)))
  1021. NN24_0(3) = ((NN4_0(5))*(NN4_0(5))) +
  1022. & ((NN4_0(6))*(NN4_0(6))) +
  1023. & ((NN4_0(3))*(NN4_0(3)))
  1024. NN24_0(4) = ((NN4_0(1))*(NN4_0(4))) +
  1025. & ((NN4_0(4))*(NN4_0(2))) +
  1026. & ((NN4_0(5))*(NN4_0(6)))
  1027. NN24_0(5) = ((NN4_0(1))*(NN4_0(5))) +
  1028. & ((NN4_0(4))*(NN4_0(6))) +
  1029. & ((NN4_0(5))*(NN4_0(3)))
  1030. NN24_0(6) = ((NN4_0(4))*(NN4_0(5))) +
  1031. & ((NN4_0(2))*(NN4_0(6))) +
  1032. & ((NN4_0(6))*(NN4_0(3)))
  1033. ENDIF
  1034. IF ((NX5_0).LT.(1.0E-12) ) THEN
  1035. NN5_0(1:6) = 0.0D0
  1036. NN25_0(1:6) = 0.0D0
  1037. ELSE
  1038. NN5_0(1:6) = X5_0(1:6)/(NX5_0)
  1039. NN25_0(1) = ((NN5_0(1))*(NN5_0(1))) +
  1040. & ((NN5_0(4))*(NN5_0(4))) +
  1041. & ((NN5_0(5))*(NN5_0(5)))
  1042. NN25_0(2) = ((NN5_0(4))*(NN5_0(4))) +
  1043. & ((NN5_0(2))*(NN5_0(2))) +
  1044. & ((NN5_0(6))*(NN5_0(6)))
  1045. NN25_0(3) = ((NN5_0(5))*(NN5_0(5))) +
  1046. & ((NN5_0(6))*(NN5_0(6))) +
  1047. & ((NN5_0(3))*(NN5_0(3)))
  1048. NN25_0(4) = ((NN5_0(1))*(NN5_0(4))) +
  1049. & ((NN5_0(4))*(NN5_0(2))) +
  1050. & ((NN5_0(5))*(NN5_0(6)))
  1051. NN25_0(5) = ((NN5_0(1))*(NN5_0(5))) +
  1052. & ((NN5_0(4))*(NN5_0(6))) +
  1053. & ((NN5_0(5))*(NN5_0(3)))
  1054. NN25_0(6) = ((NN5_0(4))*(NN5_0(5))) +
  1055. & ((NN5_0(2))*(NN5_0(6))) +
  1056. & ((NN5_0(6))*(NN5_0(3)))
  1057. ENDIF
  1058. IF ((NX6_0).LT.(1.0E-12) ) THEN
  1059. NN6_0(1:6) = 0.0D0
  1060. NN26_0(1:6) = 0.0D0
  1061. ELSE
  1062. NN6_0(1:6) = X6_0(1:6)/(NX6_0)
  1063. NN26_0(1) = ((NN6_0(1))*(NN6_0(1))) +
  1064. & ((NN6_0(4))*(NN6_0(4))) +
  1065. & ((NN6_0(5))*(NN6_0(5)))
  1066. NN26_0(2) = ((NN6_0(4))*(NN6_0(4))) +
  1067. & ((NN6_0(2))*(NN6_0(2))) +
  1068. & ((NN6_0(6))*(NN6_0(6)))
  1069. NN26_0(3) = ((NN6_0(5))*(NN6_0(5))) +
  1070. & ((NN6_0(6))*(NN6_0(6))) +
  1071. & ((NN6_0(3))*(NN6_0(3)))
  1072. NN26_0(4) = ((NN6_0(1))*(NN6_0(4))) +
  1073. & ((NN6_0(4))*(NN6_0(2))) +
  1074. & ((NN6_0(5))*(NN6_0(6)))
  1075. NN26_0(5) = ((NN6_0(1))*(NN6_0(5))) +
  1076. & ((NN6_0(4))*(NN6_0(6))) +
  1077. & ((NN6_0(5))*(NN6_0(3)))
  1078. NN26_0(6) = ((NN6_0(4))*(NN6_0(5))) +
  1079. & ((NN6_0(2))*(NN6_0(6))) +
  1080. & ((NN6_0(6))*(NN6_0(3)))
  1081. ENDIF
  1082. IF ((NX7_0).LT.(1.0E-12) ) THEN
  1083. NN7_0(1:6) = 0.0D0
  1084. NN27_0(1:6) = 0.0D0
  1085. ELSE
  1086. NN7_0(1:6) = X7_0(1:6)/(NX7_0)
  1087. NN27_0(1) = ((NN7_0(1))*(NN7_0(1))) +
  1088. & ((NN7_0(4))*(NN7_0(4))) +
  1089. & ((NN7_0(5))*(NN7_0(5)))
  1090. NN27_0(2) = ((NN7_0(4))*(NN7_0(4))) +
  1091. & ((NN7_0(2))*(NN7_0(2))) +
  1092. & ((NN7_0(6))*(NN7_0(6)))
  1093. NN27_0(3) = ((NN7_0(5))*(NN7_0(5))) +
  1094. & ((NN7_0(6))*(NN7_0(6))) +
  1095. & ((NN7_0(3))*(NN7_0(3)))
  1096. NN27_0(4) = ((NN7_0(1))*(NN7_0(4))) +
  1097. & ((NN7_0(4))*(NN7_0(2))) +
  1098. & ((NN7_0(5))*(NN7_0(6)))
  1099. NN27_0(5) = ((NN7_0(1))*(NN7_0(5))) +
  1100. & ((NN7_0(4))*(NN7_0(6))) +
  1101. & ((NN7_0(5))*(NN7_0(3)))
  1102. NN27_0(6) = ((NN7_0(4))*(NN7_0(5))) +
  1103. & ((NN7_0(2))*(NN7_0(6))) +
  1104. & ((NN7_0(6))*(NN7_0(3)))
  1105. ENDIF
  1106. IF ((NX8_0).LT.(1.0E-12) ) THEN
  1107. NN8_0(1:6) = 0.0D0
  1108. NN28_0(1:6) = 0.0D0
  1109. ELSE
  1110. NN8_0(1:6) = X8_0(1:6)/(NX8_0)
  1111. NN28_0(1) = ((NN8_0(1))*(NN8_0(1))) +
  1112. & ((NN8_0(4))*(NN8_0(4))) +
  1113. & ((NN8_0(5))*(NN8_0(5)))
  1114. NN28_0(2) = ((NN8_0(4))*(NN8_0(4))) +
  1115. & ((NN8_0(2))*(NN8_0(2))) +
  1116. & ((NN8_0(6))*(NN8_0(6)))
  1117. NN28_0(3) = ((NN8_0(5))*(NN8_0(5))) +
  1118. & ((NN8_0(6))*(NN8_0(6))) +
  1119. & ((NN8_0(3))*(NN8_0(3)))
  1120. NN28_0(4) = ((NN8_0(1))*(NN8_0(4))) +
  1121. & ((NN8_0(4))*(NN8_0(2))) +
  1122. & ((NN8_0(5))*(NN8_0(6)))
  1123. NN28_0(5) = ((NN8_0(1))*(NN8_0(5))) +
  1124. & ((NN8_0(4))*(NN8_0(6))) +
  1125. & ((NN8_0(5))*(NN8_0(3)))
  1126. NN28_0(6) = ((NN8_0(4))*(NN8_0(5))) +
  1127. & ((NN8_0(2))*(NN8_0(6))) +
  1128. & ((NN8_0(6))*(NN8_0(3)))
  1129. ENDIF
  1130. IF ((NX9_0).LT.(1.0E-12) ) THEN
  1131. NN9_0(1:6) = 0.0D0
  1132. NN29_0(1:6) = 0.0D0
  1133. ELSE
  1134. NN9_0(1:6) = X9_0(1:6)/(NX9_0)
  1135. NN29_0(1) = ((NN9_0(1))*(NN9_0(1))) +
  1136. & ((NN9_0(4))*(NN9_0(4))) +
  1137. & ((NN9_0(5))*(NN9_0(5)))
  1138. NN29_0(2) = ((NN9_0(4))*(NN9_0(4))) +
  1139. & ((NN9_0(2))*(NN9_0(2))) +
  1140. & ((NN9_0(6))*(NN9_0(6)))
  1141. NN29_0(3) = ((NN9_0(5))*(NN9_0(5))) +
  1142. & ((NN9_0(6))*(NN9_0(6))) +
  1143. & ((NN9_0(3))*(NN9_0(3)))
  1144. NN29_0(4) = ((NN9_0(1))*(NN9_0(4))) +
  1145. & ((NN9_0(4))*(NN9_0(2))) +
  1146. & ((NN9_0(5))*(NN9_0(6)))
  1147. NN29_0(5) = ((NN9_0(1))*(NN9_0(5))) +
  1148. & ((NN9_0(4))*(NN9_0(6))) +
  1149. & ((NN9_0(5))*(NN9_0(3)))
  1150. NN29_0(6) = ((NN9_0(4))*(NN9_0(5))) +
  1151. & ((NN9_0(2))*(NN9_0(6))) +
  1152. & ((NN9_0(6))*(NN9_0(3)))
  1153. ENDIF
  1154. IF ((NX10_0).LT.(1.0E-12) ) THEN
  1155. NN10_0(1:6) = 0.0D0
  1156. NN210_0(1:6) = 0.0D0
  1157. ELSE
  1158. NN10_0(1:6) = X10_0(1:6)/(NX10_0)
  1159. NN210_0(1) = ((NN10_0(1))*(NN10_0(1))) +
  1160. & ((NN10_0(4))*(NN10_0(4))) +
  1161. & ((NN10_0(5))*(NN10_0(5)))
  1162. NN210_0(2) = ((NN10_0(4))*(NN10_0(4))) +
  1163. & ((NN10_0(2))*(NN10_0(2))) +
  1164. & ((NN10_0(6))*(NN10_0(6)))
  1165. NN210_0(3) = ((NN10_0(5))*(NN10_0(5))) +
  1166. & ((NN10_0(6))*(NN10_0(6))) +
  1167. & ((NN10_0(3))*(NN10_0(3)))
  1168. NN210_0(4) = ((NN10_0(1))*(NN10_0(4))) +
  1169. & ((NN10_0(4))*(NN10_0(2))) +
  1170. & ((NN10_0(5))*(NN10_0(6)))
  1171. NN210_0(5) = ((NN10_0(1))*(NN10_0(5))) +
  1172. & ((NN10_0(4))*(NN10_0(6))) +
  1173. & ((NN10_0(5))*(NN10_0(3)))
  1174. NN210_0(6) = ((NN10_0(4))*(NN10_0(5))) +
  1175. & ((NN10_0(2))*(NN10_0(6))) +
  1176. & ((NN10_0(6))*(NN10_0(3)))
  1177. ENDIF
  1178. C
  1179. C Calcul de cos(3th_i_0)=-sqrt(6)*trace(nn_i_0^3) -
  1180. c depandance angle de Lode pour k=0
  1181. COS3TH1_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1182. & (((NN1_0(1))*(NN21_0(1))) +
  1183. & ((NN1_0(2))*(NN21_0(2))) +
  1184. & ((NN1_0(3))*(NN21_0(3))) +
  1185. & (2.0D0)*((NN1_0(4))*(NN21_0(4))) +
  1186. & (2.0D0)*((NN1_0(5))*(NN21_0(5))) +
  1187. & (2.0D0)*((NN1_0(6))*(NN21_0(6))))
  1188. COS3TH2_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1189. & (((NN2_0(1))*(NN22_0(1))) +
  1190. & ((NN2_0(2))*(NN22_0(2))) +
  1191. & ((NN2_0(3))*(NN22_0(3))) +
  1192. & (2.0D0)*((NN2_0(4))*(NN22_0(4))) +
  1193. & (2.0D0)*((NN2_0(5))*(NN22_0(5))) +
  1194. & (2.0D0)*((NN2_0(6))*(NN22_0(6))))
  1195. COS3TH3_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1196. & (((NN3_0(1))*(NN23_0(1))) +
  1197. & ((NN3_0(2))*(NN23_0(2))) +
  1198. & ((NN3_0(3))*(NN23_0(3))) +
  1199. & (2.0D0)*((NN3_0(4))*(NN23_0(4))) +
  1200. & (2.0D0)*((NN3_0(5))*(NN23_0(5))) +
  1201. & (2.0D0)*((NN3_0(6))*(NN23_0(6))))
  1202. COS3TH4_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1203. & (((NN4_0(1))*(NN24_0(1))) +
  1204. & ((NN4_0(2))*(NN24_0(2))) +
  1205. & ((NN4_0(3))*(NN24_0(3))) +
  1206. & (2.0D0)*((NN4_0(4))*(NN24_0(4))) +
  1207. & (2.0D0)*((NN4_0(5))*(NN24_0(5))) +
  1208. & (2.0D0)*((NN4_0(6))*(NN24_0(6))))
  1209. COS3TH5_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1210. & (((NN5_0(1))*(NN25_0(1))) +
  1211. & ((NN5_0(2))*(NN25_0(2))) +
  1212. & ((NN5_0(3))*(NN25_0(3))) +
  1213. & (2.0D0)*((NN5_0(4))*(NN25_0(4))) +
  1214. & (2.0D0)*((NN5_0(5))*(NN25_0(5))) +
  1215. & (2.0D0)*((NN5_0(6))*(NN25_0(6))))
  1216. COS3TH6_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1217. & (((NN6_0(1))*(NN26_0(1))) +
  1218. & ((NN6_0(2))*(NN26_0(2))) +
  1219. & ((NN6_0(3))*(NN26_0(3))) +
  1220. & (2.0D0)*((NN6_0(4))*(NN26_0(4))) +
  1221. & (2.0D0)*((NN6_0(5))*(NN26_0(5))) +
  1222. & (2.0D0)*((NN6_0(6))*(NN26_0(6))))
  1223. COS3TH7_0 = ((-1.0D0)*((6.0D0)**(0.5)))*
  1224. & (((NN7_0(1))*(NN27_0(1))) +
  1225. & ((NN7_0(2))*(NN27_0(2))) +
  1226. & ((NN7_0(3))*(NN27_0(3))) +
  1227. & (2.0D0)*((NN7_0(4))*(NN27_0(4))) +
  1228. & (2.0D0)*((NN7_0(5))*(NN27_0(5))) +
  1229. & (2.0D0)*((NN7_0(6))*(NN27_0(6))))
  1230. COS3TH8_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1231. & (((NN8_0(1))*(NN28_0(1))) +
  1232. & ((NN8_0(2))*(NN28_0(2))) +
  1233. & ((NN8_0(3))*(NN28_0(3))) +
  1234. & (2.0D0)*((NN8_0(4))*(NN28_0(4))) +
  1235. & (2.0D0)*((NN8_0(5))*(NN28_0(5))) +
  1236. & (2.0D0)*((NN8_0(6))*(NN28_0(6))))
  1237. COS3TH9_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1238. & (((NN9_0(1))*(NN29_0(1))) +
  1239. & ((NN9_0(2))*(NN29_0(2))) +
  1240. & ((NN9_0(3))*(NN29_0(3))) +
  1241. & (2.0D0)*((NN9_0(4))*(NN29_0(4))) +
  1242. & (2.0D0)*((NN9_0(5))*(NN29_0(5))) +
  1243. & (2.0D0)*((NN9_0(6))*(NN29_0(6))))
  1244. COS3TH10_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1245. & (((NN10_0(1))*(NN210_0(1))) +
  1246. & ((NN10_0(2))*(NN210_0(2))) +
  1247. & ((NN10_0(3))*(NN210_0(3))) +
  1248. & (2.0D0)*((NN10_0(4))*(NN210_0(4))) +
  1249. & (2.0D0)*((NN10_0(5))*(NN210_0(5))) +
  1250. & (2.0D0)*((NN10_0(6))*(NN210_0(6))))
  1251. C
  1252. C Calcul du terme
  1253. C R(th)_i_0=2k1/((1+k1)-(1-k1)*(cos(3th_i_0))) pour
  1254. C l'iteration k=0
  1255. RTH1_0 = ((2.0D0)*(XK1))/
  1256. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH1_0)))
  1257. RTH2_0 = ((2.0D0)*(XK1))/
  1258. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH2_0)))
  1259. RTH3_0 = ((2.0D0)*(XK1))/
  1260. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH3_0)))
  1261. RTH4_0 = ((2.0D0)*(XK1))/
  1262. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH4_0)))
  1263. RTH5_0 = ((2.0D0)*(XK1))/
  1264. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH5_0)))
  1265. RTH6_0 = ((2.0D0)*(XK1))/
  1266. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH6_0)))
  1267. RTH7_0 = ((2.0D0)*(XK1))/
  1268. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH7_0)))
  1269. RTH8_0 = ((2.0D0)*(XK1))/
  1270. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH8_0)))
  1271. RTH9_0 = ((2.0D0)*(XK1))/
  1272. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH9_0)))
  1273. RTH10_0 = ((2.0D0)*(XK1))/
  1274. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH10_0)))
  1275. C
  1276. C Calcul des criteres f_i_0 pour l'iteration k=0
  1277. F1_0 = NX1_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1278. & ((P_0 - XC1)*(RTH1_0))
  1279. F2_0 = NX2_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  1280. & ((P_0 - XC1)*(RTH2_0))
  1281. F3_0 = NX3_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  1282. & ((P_0 - XC1)*(RTH3_0))
  1283. F4_0 = NX4_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  1284. & ((P_0 - XC1)*(RTH4_0))
  1285. F5_0 = NX5_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  1286. & ((P_0 - XC1)*(RTH5_0))
  1287. F6_0 = NX6_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  1288. & ((P_0 - XC1)*(RTH6_0))
  1289. F7_0 = NX7_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  1290. & ((P_0 - XC1)*(RTH7_0))
  1291. F8_0 = NX8_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))*
  1292. & ((P_0 - XC1)*(RTH8_0))
  1293. F9_0 = NX9_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))*
  1294. & ((P_0 - XC1)*(RTH9_0))
  1295. F10_0 = NX10_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))*
  1296. & ((P_0 - XC1)*(RTH10_0))
  1297.  
  1298. C
  1299. C Detectetion du critere activé pour l'iteration k=0
  1300. VET_TEST(1) = F1_0
  1301. VET_TEST(2) = F2_0
  1302. VET_TEST(3) = F3_0
  1303. VET_TEST(4) = F4_0
  1304. VET_TEST(5) = F5_0
  1305. VET_TEST(6) = F6_0
  1306. VET_TEST(7) = F7_0
  1307. VET_TEST(8) = F8_0
  1308. VET_TEST(9) = F9_0
  1309. VET_TEST(10) = F10_0
  1310. DO 102 II1 = 1,10
  1311. IF ((VET_TEST(II1).GT.(0.0D0)).OR.
  1312. & ((ABS(VET_TEST(II1))).LT.(1.0E-8))) THEN
  1313. VET_TEST2(II1) = INT(1)
  1314. ELSE
  1315. VET_TEST2(II1) = INT(0)
  1316. ENDIF
  1317. 102 CONTINUE
  1318. I1_CRIT = INT(0)
  1319. DO 103 II1 = 1,10
  1320. I1_CRIT = I1_CRIT + (INT(VET_TEST2(II1)))
  1321. 103 CONTINUE
  1322. I2_CRIT = I1_CRIT + INT(1)
  1323. C
  1324. C Choix des parametres selon le critere activé pour la
  1325. C recherche de l'etat plastiquement admissible
  1326. C XM m (inclinaison de la pente du critere activé)
  1327. C XHC Hc (module plastique en compression pour crit activ)
  1328. C XHE He (module plastique en exstension pour crit activ)
  1329. C XETC eta_c (pente surf caracteristique en compress)
  1330. C XETE eta_e (pente surf caracteristique en exstension)
  1331. C XD D (parametre de controle de la dilatance)
  1332. IF (I1_CRIT.EQ.(INT(1))) THEN
  1333. BET_0(1:6) = BET1_0(1:6)
  1334. XM = XM1
  1335. XHC = XHC1
  1336. XHE = XHE1
  1337. XETC = XETC1
  1338. XETE = XETE1
  1339. XD = XD1
  1340. ELSEIF (I1_CRIT.EQ.(INT(2))) THEN
  1341. BET_0(1:6) = BET2_0(1:6)
  1342. XM = XM2
  1343. XHC = XHC2
  1344. XHE = XHE2
  1345. XETC = XETC2
  1346. XETE = XETE2
  1347. XD = XD2
  1348. ELSEIF (I1_CRIT.EQ.(INT(3))) THEN
  1349. BET_0(1:6) = BET3_0(1:6)
  1350. XM = XM3
  1351. XHC = XHC3
  1352. XHE = XHE3
  1353. XETC = XETC3
  1354. XETE = XETE3
  1355. XD = XD3
  1356. ELSEIF (I1_CRIT.EQ.(INT(4))) THEN
  1357. BET_0(1:6) = BET4_0(1:6)
  1358. XM = XM4
  1359. XHC = XHC4
  1360. XHE = XHE4
  1361. XETC = XETC4
  1362. XETE = XETE4
  1363. XD = XD4
  1364. ELSEIF (I1_CRIT.EQ.(INT(5))) THEN
  1365. BET_0(1:6) = BET5_0(1:6)
  1366. XM = XM5
  1367. XHC = XHC5
  1368. XHE = XHE5
  1369. XETC = XETC5
  1370. XETE = XETE5
  1371. XD = XD5
  1372. ELSEIF (I1_CRIT.EQ.(INT(6))) THEN
  1373. BET_0(1:6) = BET6_0(1:6)
  1374. XM = XM6
  1375. XHC = XHC6
  1376. XHE = XHE6
  1377. XETC = XETC6
  1378. XETE = XETE6
  1379. XD = XD6
  1380. ELSEIF (I1_CRIT.EQ.(INT(7))) THEN
  1381. BET_0(1:6) = BET7_0(1:6)
  1382. XM = XM7
  1383. XHC = XHC7
  1384. XHE = XHE7
  1385. XETC = XETC7
  1386. XETE = XETE7
  1387. XD = XD7
  1388. ELSEIF (I1_CRIT.EQ.(INT(8))) THEN
  1389. BET_0(1:6) = BET8_0(1:6)
  1390. XM = XM8
  1391. XHC = XHC8
  1392. XHE = XHE8
  1393. XETC = XETC8
  1394. XETE = XETE8
  1395. XD = XD8
  1396. ELSEIF (I1_CRIT.EQ.(INT(9))) THEN
  1397. BET_0(1:6) = BET9_0(1:6)
  1398. XM = XM9
  1399. XHC = XHC9
  1400. XHE = XHE9
  1401. XETC = XETC9
  1402. XETE = XETE9
  1403. XD = XD9
  1404. ELSEIF (I1_CRIT.EQ.(INT(10))) THEN
  1405. BET_0(1:6) = BET10_0(1:6)
  1406. XM = XM10
  1407. XHC = XHC10
  1408. XHE = XHE10
  1409. XETC = XETC10
  1410. XETE = XETE10
  1411. XD = XD10
  1412. ELSEIF (I1_CRIT.EQ.(INT(0))) THEN
  1413. BET_0(1:6) = BET1_0(1:6)
  1414. XM = XM1
  1415. XHC = XHC1
  1416. XHE = XHE1
  1417. XETC = XETC1
  1418. XETE = XETE1
  1419. XD = XD1
  1420. ENDIF
  1421. ENDIF
  1422. C
  1423. C Calcul des residues des contraintes et des derivé pour
  1424. C l'instant n+1 à l'iteration k
  1425. C Moidification V4 22-03-2016
  1426. IF ((ABS(XN1 - 0.0D0)).LT.(1.E-12)) THEN
  1427. DGDP_0 = 0.0D0
  1428. DKDP_0 = 0.0D0
  1429. ELSE
  1430. DGDP_0 = ((GMOD)*(((P_0)/(XPREF1))**(XN1 - 1.0D0)))*
  1431. & ((XN1)/(XPREF1))
  1432. DKDP_0 = ((KMOD)*(((P_0)/(XPREF1))**(XN1 - 1.0D0)))*
  1433. & ((XN1)/(XPREF1))
  1434. ENDIF
  1435. GMOD_0 = ((GMOD)*(((P_0)/(XPREF1))**(XN1)))
  1436. KMOD_0 = ((KMOD)*(((P_0)/(XPREF1))**(XN1)))
  1437. c Determination residu pour l iteration k
  1438. R_0(1:6) = ((-1.0D0)*(S_0)) + S_INI +
  1439. & ((2.0D0)*(GMOD_0))*(DSE_TOT(1:6) -
  1440. & (SEPLA_0(1:6) - SEPLA_INI(1:6)))
  1441. IF (IFOUR.NE.2) THEN
  1442. R_0(5:6) = 0.0D0
  1443. ENDIF
  1444.  
  1445. R_0(7) = -P_0 + P_INI +
  1446. & ((1.0D0)*(KMOD_0))*(DVE_TOT -
  1447. & (VEPLA_0 - VEPLA_INI))
  1448. C Determination du terme xi pour l'instant n+1 à l'iteration k
  1449. X_0(1:6) = S_0(1:6) + ((P_0 - XC1)*(BET_0(1:6)))
  1450. C Determination du terme |xi| pour l'instant n+1 à l'iteration k
  1451. NX_0 = (((X_0(1)*X_0(1)) +
  1452. & (X_0(2)*X_0(2)) +
  1453. & (X_0(3)*X_0(3)) +
  1454. & ((2.0D0)*(X_0(4)*X_0(4))) +
  1455. & ((2.0D0)*(X_0(5)*X_0(5))) +
  1456. & ((2.0D0)*(X_0(6)*X_0(6))))**(0.5D0))
  1457. C
  1458. C Determination du terme nn=xi/|xi| et nn2 = nn*nn pour
  1459. C l'instant n+1 à l'iteration k
  1460. IF ((NX_0).LT.(1.0E-12) ) THEN
  1461. NN_0(1:6) = 0.0D0
  1462. N2N_0(1:6) = 0.0D0
  1463. ELSE
  1464. NN_0(1:6) = X_0(1:6)/(NX_0)
  1465. N2N_0(1) = ((NN_0(1))*(NN_0(1))) +
  1466. & ((NN_0(4))*(NN_0(4))) +
  1467. & ((NN_0(5))*(NN_0(5)))
  1468. N2N_0(2) = ((NN_0(4))*(NN_0(4))) +
  1469. & ((NN_0(2))*(NN_0(2))) +
  1470. & ((NN_0(6))*(NN_0(6)))
  1471. N2N_0(3) = ((NN_0(5))*(NN_0(5))) +
  1472. & ((NN_0(6))*(NN_0(6))) +
  1473. & ((NN_0(3))*(NN_0(3)))
  1474. N2N_0(4) = ((NN_0(1))*(NN_0(4))) +
  1475. & ((NN_0(4))*(NN_0(2))) +
  1476. & ((NN_0(5))*(NN_0(6)))
  1477. N2N_0(5) = ((NN_0(1))*(NN_0(5))) +
  1478. & ((NN_0(4))*(NN_0(6))) +
  1479. & ((NN_0(5))*(NN_0(3)))
  1480. N2N_0(6) = ((NN_0(4))*(NN_0(5))) +
  1481. & ((NN_0(2))*(NN_0(6))) +
  1482. & ((NN_0(6))*(NN_0(3)))
  1483. ENDIF
  1484. C
  1485. C Determination du terme cos(3th) à l'instnt n+1 pour
  1486. C l'iteration k
  1487. COS3TH_0 = ((-1.0D0)*((6.0D0)**(0.5D0)))*
  1488. & (((NN_0(1))*(N2N_0(1))) +
  1489. & ((NN_0(2))*(N2N_0(2))) +
  1490. & ((NN_0(3))*(N2N_0(3))) +
  1491. & (2.0D0)*((NN_0(4))*(N2N_0(4))) +
  1492. & (2.0D0)*((NN_0(5))*(N2N_0(5))) +
  1493. & (2.0D0)*((NN_0(6))*(N2N_0(6))))
  1494.  
  1495. C
  1496. C Determination du terme R(th) à l'instant n+1 pour
  1497. C l'iteration k
  1498. RTH_0 = ((2.0D0)*(XK1))/
  1499. & ((1.0D0 + XK1) - ((1.0D0 - XK1)*(COS3TH_0)))
  1500.  
  1501. C
  1502. C Determination du terme eta_0= (((3/2)*(s_0*s_0))^0.5)/p_0
  1503. C à l'instant n+1 pour l'iteration k
  1504. ETA_0 = (((((3.0D0)/(2.0D0))*(((S_0(1))*(S_0(1))) +
  1505. & ((S_0(2))*(S_0(2))) +
  1506. & ((S_0(3))*(S_0(3))) +
  1507. & (2.0D0)*((S_0(4))*(S_0(4))) +
  1508. & (2.0D0)*((S_0(5))*(S_0(5))) +
  1509. & (2.0D0)*((S_0(6))*(S_0(6)))))**(0.5D0)))
  1510. & /(P_0)
  1511. C
  1512. C Determination du terme de la loi d'ecoulement
  1513. C P1_0 = D*(((eta/eta*)² - 1)/((eta/eta*)² + 1)) où
  1514. C eta* = eta_c si cos3th=tr(n3)>0
  1515. C eta* = eta_e si cos3th=tr(n3)<0
  1516. C pour l'instant n+ 1 à l'iteration k
  1517. C
  1518. C Modification 22-03-2016 valeur d'exclusions
  1519. IF ((COS3TH_0.GE.(0.0D0)).OR.
  1520. & ((ABS(XK1 - 1.0D0)).LT.(1.0E-12))) THEN
  1521. P1_0 = (XD)*(((((ETA_0)/(XETC))**(2.0D0)) - 1.0D0)
  1522. & /((((ETA_0)/(XETC))**(2.0D0)) + 1.0D0))
  1523. IF (ETA_0.GT.(1.0E8)) THEN
  1524. P1_0 = (XD)*(1.0D0)
  1525. ENDIF
  1526. ELSE
  1527. P1_0 = (XD)*(((((ETA_0)/(XETE))**(2.0D0)) - 1.0D0)
  1528. & /((((ETA_0)/(XETE))**(2.0D0)) + 1.0D0))
  1529. IF (ETA_0.GT.(1.0E8)) THEN
  1530. P1_0 = (XD)*(1.0D0)
  1531. ENDIF
  1532. ENDIF
  1533. IF ((ABS(XD - 0.0D0)).LT.(1.0E-12)) THEN
  1534. P1_0 = 0.0D0
  1535. ENDIF
  1536. c
  1537. C
  1538. C Determination du module plastique en fonction
  1539. C de l'angle de lode de la pression hydrostatique:
  1540. C H = H'*(p_0/p_ref)^n1
  1541. C H' = (Hc - He)/2*cos(3th) + (Hc + He)/2
  1542. C pour l'instant n+ 1 à l'iteration k
  1543. IF ((ABS(XK1 - 1.0D0)).LT.(1.0E-12)) THEN
  1544. HMOD_0 = XHC
  1545. ELSE
  1546. HMOD_0 = ((((XHC - XHE)/(2.0D0))*(COS3TH_0))
  1547. & + ((XHC + XHE)/(2.0D0)))*(((P_0)/(XPREF1))**(XN1))
  1548. ENDIF
  1549. C
  1550. C Determination du terme D2f pour l'instant n+1 à l'iteration k
  1551. C D2f = 1/|xi|*(Id - nn_0^nn_0)
  1552. D2F(1,1) = ((NN_0(1))*(NN_0(1)))
  1553. D2F(1,2) = ((NN_0(1))*(NN_0(2)))
  1554. D2F(1,3) = ((NN_0(1))*(NN_0(3)))
  1555. D2F(1,4) = (2.0D0)*((NN_0(1))*(NN_0(4)))
  1556. D2F(1,5) = (2.0D0)*((NN_0(1))*(NN_0(5)))
  1557. D2F(1,6) = (2.0D0)*((NN_0(1))*(NN_0(6)))
  1558. C
  1559. D2F(2,1) = ((NN_0(2))*(NN_0(1)))
  1560. D2F(2,2) = ((NN_0(2))*(NN_0(2)))
  1561. D2F(2,3) = ((NN_0(2))*(NN_0(3)))
  1562. D2F(2,4) = (2.0D0)*((NN_0(2))*(NN_0(4)))
  1563. D2F(2,5) = (2.0D0)*((NN_0(2))*(NN_0(5)))
  1564. D2F(2,6) = (2.0D0)*((NN_0(2))*(NN_0(6)))
  1565. C
  1566. D2F(3,1) = ((NN_0(3))*(NN_0(1)))
  1567. D2F(3,2) = ((NN_0(3))*(NN_0(2)))
  1568. D2F(3,3) = ((NN_0(3))*(NN_0(3)))
  1569. D2F(3,4) = (2.0D0)*((NN_0(3))*(NN_0(4)))
  1570. D2F(3,5) = (2.0D0)*((NN_0(3))*(NN_0(5)))
  1571. D2F(3,6) = (2.0D0)*((NN_0(3))*(NN_0(6)))
  1572. C
  1573. D2F(4,1) = ((NN_0(4))*(NN_0(1)))
  1574. D2F(4,2) = ((NN_0(4))*(NN_0(2)))
  1575. D2F(4,3) = ((NN_0(4))*(NN_0(3)))
  1576. D2F(4,4) = (2.0D0)*((NN_0(4))*(NN_0(4)))
  1577. D2F(4,5) = (2.0D0)*((NN_0(4))*(NN_0(5)))
  1578. D2F(4,6) = (2.0D0)*((NN_0(4))*(NN_0(6)))
  1579. C
  1580. D2F(5,1) = ((NN_0(5))*(NN_0(1)))
  1581. D2F(5,2) = ((NN_0(5))*(NN_0(2)))
  1582. D2F(5,3) = ((NN_0(5))*(NN_0(3)))
  1583. D2F(5,4) = (2.0D0)*((NN_0(5))*(NN_0(4)))
  1584. D2F(5,5) = (2.0D0)*((NN_0(5))*(NN_0(5)))
  1585. D2F(5,6) = (2.0D0)*((NN_0(5))*(NN_0(6)))
  1586. C
  1587. D2F(6,1) = ((NN_0(6))*(NN_0(1)))
  1588. D2F(6,2) = ((NN_0(6))*(NN_0(2)))
  1589. D2F(6,3) = ((NN_0(6))*(NN_0(3)))
  1590. D2F(6,4) = (2.0D0)*((NN_0(6))*(NN_0(4)))
  1591. D2F(6,5) = (2.0D0)*((NN_0(6))*(NN_0(5)))
  1592. D2F(6,6) = (2.0D0)*((NN_0(6))*(NN_0(6)))
  1593. C
  1594. D2F = ((-1.0D0)*(D2F))
  1595. D2F(1:6,1:6) = (XID2(1:6,1:6) + D2F(1:6,1:6))/(NX_0)
  1596. C
  1597. C Determination du verseur (direction dans la quelle le critere
  1598. C evolue) mm_0 selon la relge d'ecrouissage de Morz
  1599. S1M(1:6) = S_0(1:6)
  1600. IF (I2_CRIT.EQ.(INT(2))) THEN
  1601. S2SCAL = (-1.0D0)*
  1602. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  1603. & (P_0 - XC1))*(RTH_0))
  1604. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET2_0(1:6)))
  1605. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1606. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1607. & ((MM_0(2))*(MM_0(2))) +
  1608. & ((MM_0(3))*(MM_0(3))) +
  1609. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1610. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1611. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1612. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1613. ELSEIF (I2_CRIT.EQ.(INT(3))) THEN
  1614. S2SCAL = (-1.0D0)*
  1615. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  1616. & (P_0 - XC1))*(RTH_0))
  1617. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET3_0(1:6)))
  1618. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1619. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1620. & ((MM_0(2))*(MM_0(2))) +
  1621. & ((MM_0(3))*(MM_0(3))) +
  1622. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1623. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1624. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1625. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1626. ELSEIF (I2_CRIT.EQ.(INT(4))) THEN
  1627. S2SCAL = (-1.0D0)*
  1628. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  1629. & (P_0 - XC1))*(RTH_0))
  1630. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET4_0(1:6)))
  1631. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1632. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1633. & ((MM_0(2))*(MM_0(2))) +
  1634. & ((MM_0(3))*(MM_0(3))) +
  1635. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1636. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1637. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1638. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1639. ELSEIF (I2_CRIT.EQ.(INT(5))) THEN
  1640. S2SCAL = (-1.0D0)*
  1641. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  1642. & (P_0 - XC1))*(RTH_0))
  1643. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET5_0(1:6)))
  1644. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1645. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1646. & ((MM_0(2))*(MM_0(2))) +
  1647. & ((MM_0(3))*(MM_0(3))) +
  1648. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1649. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1650. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1651. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1652. ELSEIF (I2_CRIT.EQ.(INT(6))) THEN
  1653. S2SCAL = (-1.0D0)*
  1654. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  1655. & (P_0 - XC1))*(RTH_0))
  1656. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET6_0(1:6)))
  1657. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1658. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1659. & ((MM_0(2))*(MM_0(2))) +
  1660. & ((MM_0(3))*(MM_0(3))) +
  1661. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1662. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1663. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1664. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1665. ELSEIF (I2_CRIT.EQ.(INT(7))) THEN
  1666. S2SCAL = (-1.0D0)*
  1667. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  1668. & (P_0 - XC1))*(RTH_0))
  1669. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET7_0(1:6)))
  1670. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1671. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1672. & ((MM_0(2))*(MM_0(2))) +
  1673. & ((MM_0(3))*(MM_0(3))) +
  1674. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1675. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1676. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1677. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1678. ELSEIF (I2_CRIT.EQ.(INT(8))) THEN
  1679. S2SCAL = (-1.0D0)*
  1680. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))*
  1681. & (P_0 - XC1))*(RTH_0))
  1682. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET8_0(1:6)))
  1683. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1684. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1685. & ((MM_0(2))*(MM_0(2))) +
  1686. & ((MM_0(3))*(MM_0(3))) +
  1687. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1688. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1689. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1690. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1691. ELSEIF (I2_CRIT.EQ.(INT(9))) THEN
  1692. S2SCAL = (-1.0D0)*
  1693. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))*
  1694. & (P_0 - XC1))*(RTH_0))
  1695. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET9_0(1:6)))
  1696. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1697. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1698. & ((MM_0(2))*(MM_0(2))) +
  1699. & ((MM_0(3))*(MM_0(3))) +
  1700. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1701. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1702. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1703. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1704. ELSEIF (I2_CRIT.EQ.(INT(10))) THEN
  1705. S2SCAL = (-1.0D0)*
  1706. & ((((((2.0D0)/(3.0D0))**(0.5D0))*(XM10))*
  1707. & (P_0 - XC1))*(RTH_0))
  1708. S2M(1:6) = ((S2SCAL)*(NN_0)) - ((P_0 - XC1)*(BET10_0(1:6)))
  1709. MM_0(1:6) = (S2M(1:6)) - (S1M(1:6))
  1710. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1711. & ((MM_0(2))*(MM_0(2))) +
  1712. & ((MM_0(3))*(MM_0(3))) +
  1713. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1714. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1715. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1716. MM_0(1:6) = ((-1.0D0)*((MM_0(1:6))/(NMM_0)))
  1717. ELSEIF (I2_CRIT.EQ.(INT(11))) THEN
  1718. XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) +
  1719. & ((D2F(1,2))*(N2N_0(2))) +
  1720. & ((D2F(1,3))*(N2N_0(3))) +
  1721. & ((D2F(1,4))*(N2N_0(4))) +
  1722. & ((D2F(1,5))*(N2N_0(5))) +
  1723. & ((D2F(1,6))*(N2N_0(6)))
  1724. XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) +
  1725. & ((D2F(2,2))*(N2N_0(2))) +
  1726. & ((D2F(2,3))*(N2N_0(3))) +
  1727. & ((D2F(2,4))*(N2N_0(4))) +
  1728. & ((D2F(2,5))*(N2N_0(5))) +
  1729. & ((D2F(2,6))*(N2N_0(6)))
  1730. XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) +
  1731. & ((D2F(3,2))*(N2N_0(2))) +
  1732. & ((D2F(3,3))*(N2N_0(3))) +
  1733. & ((D2F(3,4))*(N2N_0(4))) +
  1734. & ((D2F(3,5))*(N2N_0(5))) +
  1735. & ((D2F(3,6))*(N2N_0(6)))
  1736. XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) +
  1737. & ((D2F(4,2))*(N2N_0(2))) +
  1738. & ((D2F(4,3))*(N2N_0(3))) +
  1739. & ((D2F(4,4))*(N2N_0(4))) +
  1740. & ((D2F(4,5))*(N2N_0(5))) +
  1741. & ((D2F(4,6))*(N2N_0(6)))
  1742. XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) +
  1743. & ((D2F(5,2))*(N2N_0(2))) +
  1744. & ((D2F(5,3))*(N2N_0(3))) +
  1745. & ((D2F(5,4))*(N2N_0(4))) +
  1746. & ((D2F(5,5))*(N2N_0(5))) +
  1747. & ((D2F(5,6))*(N2N_0(6)))
  1748. XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) +
  1749. & ((D2F(6,2))*(N2N_0(2))) +
  1750. & ((D2F(6,3))*(N2N_0(3))) +
  1751. & ((D2F(6,4))*(N2N_0(4))) +
  1752. & ((D2F(6,5))*(N2N_0(5))) +
  1753. & ((D2F(6,6))*(N2N_0(6)))
  1754. MM_0(1:6) = (NN_0(1:6))*(P_0 - XC1)
  1755. MM_0(1:6) = MM_0(1:6) +
  1756. & ((((6.D0)*((P_0 - XC1)**(2.0D0)))*
  1757. & ((XM10)*((RTH_0)**(2.0D0)))))*
  1758. & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6)))
  1759. XVAL2 = ((MM_0(1) + MM_0(2) + MM_0(3))/(3.0D0))
  1760. MM_0 = MM_0(1:6) - ((XVAL2)*(XID1(1:6)))
  1761. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1762. & ((MM_0(2))*(MM_0(2))) +
  1763. & ((MM_0(3))*(MM_0(3))) +
  1764. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1765. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1766. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1767. MM_0(1:6) = ((MM_0(1:6))/(NMM_0))
  1768. ELSEIF (I2_CRIT.EQ.(INT(1))) THEN
  1769. XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) +
  1770. & ((D2F(1,2))*(N2N_0(2))) +
  1771. & ((D2F(1,3))*(N2N_0(3))) +
  1772. & ((D2F(1,4))*(N2N_0(4))) +
  1773. & ((D2F(1,5))*(N2N_0(5))) +
  1774. & ((D2F(1,6))*(N2N_0(6)))
  1775. XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) +
  1776. & ((D2F(2,2))*(N2N_0(2))) +
  1777. & ((D2F(2,3))*(N2N_0(3))) +
  1778. & ((D2F(2,4))*(N2N_0(4))) +
  1779. & ((D2F(2,5))*(N2N_0(5))) +
  1780. & ((D2F(2,6))*(N2N_0(6)))
  1781. XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) +
  1782. & ((D2F(3,2))*(N2N_0(2))) +
  1783. & ((D2F(3,3))*(N2N_0(3))) +
  1784. & ((D2F(3,4))*(N2N_0(4))) +
  1785. & ((D2F(3,5))*(N2N_0(5))) +
  1786. & ((D2F(3,6))*(N2N_0(6)))
  1787. XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) +
  1788. & ((D2F(4,2))*(N2N_0(2))) +
  1789. & ((D2F(4,3))*(N2N_0(3))) +
  1790. & ((D2F(4,4))*(N2N_0(4))) +
  1791. & ((D2F(4,5))*(N2N_0(5))) +
  1792. & ((D2F(4,6))*(N2N_0(6)))
  1793. XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) +
  1794. & ((D2F(5,2))*(N2N_0(2))) +
  1795. & ((D2F(5,3))*(N2N_0(3))) +
  1796. & ((D2F(5,4))*(N2N_0(4))) +
  1797. & ((D2F(5,5))*(N2N_0(5))) +
  1798. & ((D2F(5,6))*(N2N_0(6)))
  1799. XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) +
  1800. & ((D2F(6,2))*(N2N_0(2))) +
  1801. & ((D2F(6,3))*(N2N_0(3))) +
  1802. & ((D2F(6,4))*(N2N_0(4))) +
  1803. & ((D2F(6,5))*(N2N_0(5))) +
  1804. & ((D2F(6,6))*(N2N_0(6)))
  1805. MM_0(1:6) = (NN_0(1:6))*(P_0 - XC1)
  1806. MM_0(1:6) = MM_0(1:6) +
  1807. & ((((6.D0)*((P_0 - XC1)**(2.0D0)))*
  1808. & ((XM1)*((RTH_0)**(2.0D0)))))*
  1809. & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6)))
  1810. XVAL2 = ((MM_0(1) + MM_0(2) + MM_0(3))/(3.0D0))
  1811. MM_0 = MM_0(1:6) - ((XVAL2)*(XID1(1:6)))
  1812. NMM_0 = (((MM_0(1))*(MM_0(1))) +
  1813. & ((MM_0(2))*(MM_0(2))) +
  1814. & ((MM_0(3))*(MM_0(3))) +
  1815. & (2.0D0)*((MM_0(4))*(MM_0(4))) +
  1816. & (2.0D0)*((MM_0(5))*(MM_0(5))) +
  1817. & (2.0D0)*((MM_0(6))*(MM_0(6))))**(0.5D0)
  1818. MM_0(1:6) = ((MM_0(1:6))/(NMM_0))
  1819. ENDIF
  1820. IF (IFOUR.NE.2) THEN
  1821. MM_0(5:6) = 0.0D0
  1822. ENDIF
  1823. C
  1824. C Calcul du critere f_0 à l'instant n+1 pour l'iteration k
  1825. F_0 = NX_0 + ((((2.0D0)/(3.0D0))**(0.5D0))*(XM))*
  1826. & ((P_0 - XC1)*(RTH_0))
  1827. C
  1828. C Veleurs de controle pour l'instant n + 1 à l'iteration k
  1829. IF (I_ITER1.GT.(INT(1))) THEN
  1830. c IF (F_0.GT.(0.0D0)) THEN
  1831. IF (F_00.GT.(0.0D0)) THEN
  1832. CRIT1 = ABS(F_0)
  1833. CRIT2 = (((R_0(1))*(R_0(1))) +
  1834. & ((R_0(2))*(R_0(2))) +
  1835. & ((R_0(3))*(R_0(3))) +
  1836. & ((R_0(4))*(R_0(4))) +
  1837. & ((R_0(5))*(R_0(5))) +
  1838. & ((R_0(6))*(R_0(6))) +
  1839. & ((R_0(7))*(R_0(7))))**(0.5D0)
  1840. ELSE
  1841. CRIT1 = F_0
  1842. CRIT2 = (((R_0(1))*(R_0(1))) +
  1843. & ((R_0(2))*(R_0(2))) +
  1844. & ((R_0(3))*(R_0(3))) +
  1845. & ((R_0(4))*(R_0(4))) +
  1846. & ((R_0(5))*(R_0(5))) +
  1847. & ((R_0(6))*(R_0(6))) +
  1848. & ((R_0(7))*(R_0(7))))**(0.5D0)
  1849.  
  1850. ENDIF
  1851. ELSE
  1852. F_00 = F_0
  1853. CRIT1 = F_0
  1854. CRIT2 = (((R_0(1))*(R_0(1))) +
  1855. & ((R_0(2))*(R_0(2))) +
  1856. & ((R_0(3))*(R_0(3))) +
  1857. & ((R_0(4))*(R_0(4))) +
  1858. & ((R_0(5))*(R_0(5))) +
  1859. & ((R_0(6))*(R_0(6))) +
  1860. & ((R_0(7))*(R_0(7))))**(0.5D0)
  1861. ENDIF
  1862. C
  1863. C Controle pour activer le substepping - depassement de d'un
  1864. C critere
  1865. IF ((I1_CRIT.EQ.(INT(IINI_CRIT))).OR.
  1866. & (IINI_CRIT.EQ.(INT(0)))) THEN
  1867. c Je ne fais rien
  1868. ELSE
  1869. IF (I1_CRIT.GT.(INT(1))) THEN
  1870. XCONT_CRI = ABS((VET_TEST(I2_CRIT)) - (VET_TEST(I1_CRIT)))
  1871. IF ((XCONT_CRI).GT.(0.5D0)) THEN
  1872. IF (IND_STEP3.LT.(INT(100))) THEN
  1873. IND_STEP2 = INT(1)
  1874. GOTO 200
  1875. ENDIF
  1876. ENDIF
  1877. ENDIF
  1878. ENDIF
  1879. IF (I_ITER1.GT.(INT(25))) THEN
  1880. IF ((N_STEP.LT.(INT(100))).AND.
  1881. & (IND_STEP3.LT.(INT(100)))) THEN
  1882. IND_STEP1 = INT(1)
  1883. GOTO 200
  1884. ELSE
  1885. WRITE(IOIMP,10007)
  1886. 10007 FORMAT('Warning On force la convergence')
  1887. CRIT1 = 0.0D0
  1888. CRIT2 = 0.0D0
  1889. ENDIF
  1890. ENDIF
  1891. C
  1892. C Controle de convergence
  1893. IF ((CRIT1.LT.XTOL1).AND.(CRIT2.LT.XTOL1)) THEN
  1894. C Etat convergée
  1895. ETOT_FIN(1:6) = ETOT_INI(1:6) + DDET_ST(1:6)
  1896. EPLA_FIN(1:6) = SEPLA_0(1:6) +
  1897. & (((VEPLA_0)/(3.0D0))*(XID1(1:6)))
  1898. SIG_FIN(1:6) = S_0(1:6) + ((P_0)*(XID1(1:6)))
  1899. IF ((I1_CRIT).EQ.(INT(0))) THEN
  1900. BET1_FIN(1:6) = BET_0(1:6)
  1901. BET2_FIN(1:6) = BET2_INI(1:6)
  1902. BET3_FIN(1:6) = BET3_INI(1:6)
  1903. BET4_FIN(1:6) = BET4_INI(1:6)
  1904. BET5_FIN(1:6) = BET5_INI(1:6)
  1905. BET6_FIN(1:6) = BET6_INI(1:6)
  1906. BET7_FIN(1:6) = BET7_INI(1:6)
  1907. BET8_FIN(1:6) = BET8_INI(1:6)
  1908. BET9_FIN(1:6) = BET9_INI(1:6)
  1909. BET10_FIN(1:6) = BET10_INI(1:6)
  1910. ELSEIF ((I1_CRIT).EQ.(INT(1))) THEN
  1911. BET1_FIN(1:6) = BET_0(1:6)
  1912. BET2_FIN(1:6) = BET2_INI(1:6)
  1913. BET3_FIN(1:6) = BET3_INI(1:6)
  1914. BET4_FIN(1:6) = BET4_INI(1:6)
  1915. BET5_FIN(1:6) = BET5_INI(1:6)
  1916. BET6_FIN(1:6) = BET6_INI(1:6)
  1917. BET7_FIN(1:6) = BET7_INI(1:6)
  1918. BET8_FIN(1:6) = BET8_INI(1:6)
  1919. BET9_FIN(1:6) = BET9_INI(1:6)
  1920. BET10_FIN(1:6) = BET10_INI(1:6)
  1921. ELSEIF ((I1_CRIT).EQ.(INT(2))) THEN
  1922. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1923. & ((P_0 - XC1)*(RTH_0)))
  1924. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1925. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1926. BET2_FIN(1:6) = BET_0(1:6)
  1927. BET3_FIN(1:6) = BET3_INI(1:6)
  1928. BET4_FIN(1:6) = BET4_INI(1:6)
  1929. BET5_FIN(1:6) = BET5_INI(1:6)
  1930. BET6_FIN(1:6) = BET6_INI(1:6)
  1931. BET7_FIN(1:6) = BET7_INI(1:6)
  1932. BET8_FIN(1:6) = BET8_INI(1:6)
  1933. BET9_FIN(1:6) = BET9_INI(1:6)
  1934. BET10_FIN(1:6) = BET10_INI(1:6)
  1935. ELSEIF ((I1_CRIT).EQ.(INT(3))) THEN
  1936. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1937. & ((P_0 - XC1)*(RTH_0)))
  1938. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1939. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1940. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  1941. & ((P_0 - XC1)*(RTH_0)))
  1942. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1943. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1944. BET3_FIN(1:6) = BET_0(1:6)
  1945. BET4_FIN(1:6) = BET4_INI(1:6)
  1946. BET5_FIN(1:6) = BET5_INI(1:6)
  1947. BET6_FIN(1:6) = BET6_INI(1:6)
  1948. BET7_FIN(1:6) = BET7_INI(1:6)
  1949. BET8_FIN(1:6) = BET8_INI(1:6)
  1950. BET9_FIN(1:6) = BET9_INI(1:6)
  1951. BET10_FIN(1:6) = BET10_INI(1:6)
  1952. ELSEIF ((I1_CRIT).EQ.(INT(4))) THEN
  1953. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1954. & ((P_0 - XC1)*(RTH_0)))
  1955. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1956. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1957. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  1958. & ((P_0 - XC1)*(RTH_0)))
  1959. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1960. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1961. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  1962. & ((P_0 - XC1)*(RTH_0)))
  1963. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1964. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1965. BET4_FIN(1:6) = BET_0(1:6)
  1966. BET5_FIN(1:6) = BET5_INI(1:6)
  1967. BET6_FIN(1:6) = BET6_INI(1:6)
  1968. BET7_FIN(1:6) = BET7_INI(1:6)
  1969. BET8_FIN(1:6) = BET8_INI(1:6)
  1970. BET9_FIN(1:6) = BET9_INI(1:6)
  1971. BET10_FIN(1:6) = BET10_INI(1:6)
  1972. ELSEIF ((I1_CRIT).EQ.(INT(5))) THEN
  1973. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1974. & ((P_0 - XC1)*(RTH_0)))
  1975. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1976. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1977. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  1978. & ((P_0 - XC1)*(RTH_0)))
  1979. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1980. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1981. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  1982. & ((P_0 - XC1)*(RTH_0)))
  1983. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1984. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1985. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  1986. & ((P_0 - XC1)*(RTH_0)))
  1987. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1988. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  1989. BET5_FIN(1:6) = BET_0(1:6)
  1990. BET6_FIN(1:6) = BET6_INI(1:6)
  1991. BET7_FIN(1:6) = BET7_INI(1:6)
  1992. BET8_FIN(1:6) = BET8_INI(1:6)
  1993. BET9_FIN(1:6) = BET9_INI(1:6)
  1994. BET10_FIN(1:6) = BET10_INI(1:6)
  1995. ELSEIF ((I1_CRIT).EQ.(INT(6))) THEN
  1996. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  1997. & ((P_0 - XC1)*(RTH_0)))
  1998. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  1999. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2000. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  2001. & ((P_0 - XC1)*(RTH_0)))
  2002. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2003. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2004. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  2005. & ((P_0 - XC1)*(RTH_0)))
  2006. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2007. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2008. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  2009. & ((P_0 - XC1)*(RTH_0)))
  2010. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2011. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2012. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  2013. & ((P_0 - XC1)*(RTH_0)))
  2014. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2015. BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2016. BET6_FIN(1:6) = BET_0(1:6)
  2017. BET7_FIN(1:6) = BET7_INI(1:6)
  2018. BET8_FIN(1:6) = BET8_INI(1:6)
  2019. BET9_FIN(1:6) = BET9_INI(1:6)
  2020. BET10_FIN(1:6) = BET10_INI(1:6)
  2021. ELSEIF ((I1_CRIT).EQ.(INT(7))) THEN
  2022. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  2023. & ((P_0 - XC1)*(RTH_0)))
  2024. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2025. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2026. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  2027. & ((P_0 - XC1)*(RTH_0)))
  2028. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2029. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2030. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  2031. & ((P_0 - XC1)*(RTH_0)))
  2032. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2033. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2034. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  2035. & ((P_0 - XC1)*(RTH_0)))
  2036. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2037. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2038. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  2039. & ((P_0 - XC1)*(RTH_0)))
  2040. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2041. BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2042. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  2043. & ((P_0 - XC1)*(RTH_0)))
  2044. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2045. BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2046. BET7_FIN(1:6) = BET_0(1:6)
  2047. BET8_FIN(1:6) = BET8_INI(1:6)
  2048. BET9_FIN(1:6) = BET9_INI(1:6)
  2049. BET10_FIN(1:6) = BET10_INI(1:6)
  2050. ELSEIF ((I1_CRIT).EQ.(INT(8))) THEN
  2051. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  2052. & ((P_0 - XC1)*(RTH_0)))
  2053. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2054. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2055. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  2056. & ((P_0 - XC1)*(RTH_0)))
  2057. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2058. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2059. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  2060. & ((P_0 - XC1)*(RTH_0)))
  2061. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2062. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2063. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  2064. & ((P_0 - XC1)*(RTH_0)))
  2065. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2066. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2067. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  2068. & ((P_0 - XC1)*(RTH_0)))
  2069. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2070. BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2071. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  2072. & ((P_0 - XC1)*(RTH_0)))
  2073. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2074. BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2075. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  2076. & ((P_0 - XC1)*(RTH_0)))
  2077. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2078. BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2079. BET8_FIN(1:6) = BET_0(1:6)
  2080. BET9_FIN(1:6) = BET9_INI(1:6)
  2081. BET10_FIN(1:6) = BET10_INI(1:6)
  2082. ELSEIF ((I1_CRIT).EQ.(INT(9))) THEN
  2083. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  2084. & ((P_0 - XC1)*(RTH_0)))
  2085. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2086. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2087. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  2088. & ((P_0 - XC1)*(RTH_0)))
  2089. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2090. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2091. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  2092. & ((P_0 - XC1)*(RTH_0)))
  2093. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2094. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2095. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  2096. & ((P_0 - XC1)*(RTH_0)))
  2097. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2098. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2099. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  2100. & ((P_0 - XC1)*(RTH_0)))
  2101. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2102. BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2103. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  2104. & ((P_0 - XC1)*(RTH_0)))
  2105. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2106. BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2107. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  2108. & ((P_0 - XC1)*(RTH_0)))
  2109. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2110. BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2111. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))*
  2112. & ((P_0 - XC1)*(RTH_0)))
  2113. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2114. BET8_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2115. BET9_FIN(1:6) = BET_0(1:6)
  2116. BET10_FIN(1:6) = BET10_INI(1:6)
  2117. ELSEIF ((I1_CRIT).EQ.(INT(10))) THEN
  2118. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM1))*
  2119. & ((P_0 - XC1)*(RTH_0)))
  2120. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2121. BET1_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2122. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM2))*
  2123. & ((P_0 - XC1)*(RTH_0)))
  2124. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2125. BET2_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2126. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM3))*
  2127. & ((P_0 - XC1)*(RTH_0)))
  2128. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2129. BET3_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2130. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM4))*
  2131. & ((P_0 - XC1)*(RTH_0)))
  2132. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2133. BET4_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2134. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM5))*
  2135. & ((P_0 - XC1)*(RTH_0)))
  2136. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2137. BET5_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2138. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM6))*
  2139. & ((P_0 - XC1)*(RTH_0)))
  2140. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2141. BET6_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2142. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM7))*
  2143. & ((P_0 - XC1)*(RTH_0)))
  2144. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2145. BET7_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2146. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM8))*
  2147. & ((P_0 - XC1)*(RTH_0)))
  2148. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2149. BET8_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2150. A_CORR = (-1.0D0)*(((((2.0D0)/(3.0D0))**(0.5D0))*(XM9))*
  2151. & ((P_0 - XC1)*(RTH_0)))
  2152. XXI_CORR(1:6) = ((A_CORR)*(NN_0(1:6)))
  2153. BET9_FIN(1:6) = (XXI_CORR(1:6) - S_0(1:6))/(P_0 -XC1)
  2154. BET10_FIN(1:6) = BET_0(1:6)
  2155. ENDIF
  2156. GOTO 200
  2157. ELSE
  2158. C Etat non converge
  2159. AE_0I(1:7,1:7) = 0.0D0
  2160. AE_0I(1:6,1:6) = XID2(1:6,1:6)
  2161. AE_0I(1:6,7) = ((-2.0D0)*(DGDP_0))*(DSE_TOT(1:6) -
  2162. & (SEPLA_0(1:6) - SEPLA_INI(1:6)))
  2163. AE_0I(7,7) = 1.0D0 + ((-1.0D0)*(DKDP_0))*(DVE_TOT -
  2164. & (VEPLA_0 - VEPLA_INI))
  2165. AE_0(1:7,1:7) = AE_0I
  2166. CALL INVERT9 (AE_0,7,7)
  2167. C Resolution systeme elasticité non lineaire
  2168. DTOT(1:7) = 0.0D0
  2169. DTOT(1) = ((AE_0(1,1))*(R_0(1))) +
  2170. & ((AE_0(1,2))*(R_0(2))) +
  2171. & ((AE_0(1,3))*(R_0(3))) +
  2172. & ((AE_0(1,4))*(R_0(4))) +
  2173. & ((AE_0(1,5))*(R_0(5))) +
  2174. & ((AE_0(1,6))*(R_0(6))) +
  2175. & ((AE_0(1,7))*(R_0(7)))
  2176. DTOT(2) = ((AE_0(2,1))*(R_0(1))) +
  2177. & ((AE_0(2,2))*(R_0(2))) +
  2178. & ((AE_0(2,3))*(R_0(3))) +
  2179. & ((AE_0(2,4))*(R_0(4))) +
  2180. & ((AE_0(2,5))*(R_0(5))) +
  2181. & ((AE_0(2,6))*(R_0(6))) +
  2182. & ((AE_0(2,7))*(R_0(7)))
  2183. DTOT(3) = ((AE_0(3,1))*(R_0(1))) +
  2184. & ((AE_0(3,2))*(R_0(2))) +
  2185. & ((AE_0(3,3))*(R_0(3))) +
  2186. & ((AE_0(3,4))*(R_0(4))) +
  2187. & ((AE_0(3,5))*(R_0(5))) +
  2188. & ((AE_0(3,6))*(R_0(6))) +
  2189. & ((AE_0(3,7))*(R_0(7)))
  2190. DTOT(4) = ((AE_0(4,1))*(R_0(1))) +
  2191. & ((AE_0(4,2))*(R_0(2))) +
  2192. & ((AE_0(4,3))*(R_0(3))) +
  2193. & ((AE_0(4,4))*(R_0(4))) +
  2194. & ((AE_0(4,5))*(R_0(5))) +
  2195. & ((AE_0(4,6))*(R_0(6))) +
  2196. & ((AE_0(4,7))*(R_0(7)))
  2197. DTOT(5) = ((AE_0(5,1))*(R_0(1))) +
  2198. & ((AE_0(5,2))*(R_0(2))) +
  2199. & ((AE_0(5,3))*(R_0(3))) +
  2200. & ((AE_0(5,4))*(R_0(4))) +
  2201. & ((AE_0(5,5))*(R_0(5))) +
  2202. & ((AE_0(5,6))*(R_0(6))) +
  2203. & ((AE_0(5,7))*(R_0(7)))
  2204. DTOT(6) = ((AE_0(6,1))*(R_0(1))) +
  2205. & ((AE_0(6,2))*(R_0(2))) +
  2206. & ((AE_0(6,3))*(R_0(3))) +
  2207. & ((AE_0(6,4))*(R_0(4))) +
  2208. & ((AE_0(6,5))*(R_0(5))) +
  2209. & ((AE_0(6,6))*(R_0(6))) +
  2210. & ((AE_0(6,7))*(R_0(7)))
  2211. DTOT(7) = ((AE_0(7,1))*(R_0(1))) +
  2212. & ((AE_0(7,2))*(R_0(2))) +
  2213. & ((AE_0(7,3))*(R_0(3))) +
  2214. & ((AE_0(7,4))*(R_0(4))) +
  2215. & ((AE_0(7,5))*(R_0(5))) +
  2216. & ((AE_0(7,6))*(R_0(6))) +
  2217. & ((AE_0(7,7))*(R_0(7)))
  2218. C Increment Ds_0 et Dp_0 (elasticité non lineaire
  2219. DS_0(1:6) = DTOT(1:6)
  2220. DP_0 = DTOT(7)
  2221. IF (IFOUR.NE.2) THEN
  2222. DS_0(5:6) = 0.0D0
  2223. ENDIF
  2224. C Calcul derivé df/ds (cutting plan)
  2225. DFDS_0(1:6) = NN_0(1:6)
  2226. XVAL1(1) = ((D2F(1,1))*(N2N_0(1))) +
  2227. & ((D2F(1,2))*(N2N_0(2))) +
  2228. & ((D2F(1,3))*(N2N_0(3))) +
  2229. & ((D2F(1,4))*(N2N_0(4))) +
  2230. & ((D2F(1,5))*(N2N_0(5))) +
  2231. & ((D2F(1,6))*(N2N_0(6)))
  2232. XVAL1(2) = ((D2F(2,1))*(N2N_0(1))) +
  2233. & ((D2F(2,2))*(N2N_0(2))) +
  2234. & ((D2F(2,3))*(N2N_0(3))) +
  2235. & ((D2F(2,4))*(N2N_0(4))) +
  2236. & ((D2F(2,5))*(N2N_0(5))) +
  2237. & ((D2F(2,6))*(N2N_0(6)))
  2238. XVAL1(3) = ((D2F(3,1))*(N2N_0(1))) +
  2239. & ((D2F(3,2))*(N2N_0(2))) +
  2240. & ((D2F(3,3))*(N2N_0(3))) +
  2241. & ((D2F(3,4))*(N2N_0(4))) +
  2242. & ((D2F(3,5))*(N2N_0(5))) +
  2243. & ((D2F(3,6))*(N2N_0(6)))
  2244. XVAL1(4) = ((D2F(4,1))*(N2N_0(1))) +
  2245. & ((D2F(4,2))*(N2N_0(2))) +
  2246. & ((D2F(4,3))*(N2N_0(3))) +
  2247. & ((D2F(4,4))*(N2N_0(4))) +
  2248. & ((D2F(4,5))*(N2N_0(5))) +
  2249. & ((D2F(4,6))*(N2N_0(6)))
  2250. XVAL1(5) = ((D2F(5,1))*(N2N_0(1))) +
  2251. & ((D2F(5,2))*(N2N_0(2))) +
  2252. & ((D2F(5,3))*(N2N_0(3))) +
  2253. & ((D2F(5,4))*(N2N_0(4))) +
  2254. & ((D2F(5,5))*(N2N_0(5))) +
  2255. & ((D2F(5,6))*(N2N_0(6)))
  2256. XVAL1(6) = ((D2F(6,1))*(N2N_0(1))) +
  2257. & ((D2F(6,2))*(N2N_0(2))) +
  2258. & ((D2F(6,3))*(N2N_0(3))) +
  2259. & ((D2F(6,4))*(N2N_0(4))) +
  2260. & ((D2F(6,5))*(N2N_0(5))) +
  2261. & ((D2F(6,6))*(N2N_0(6)))
  2262. DFDS_0(1:6) = DFDS_0(1:6) +
  2263. & ((((6.D0)*((P_0 - XC1)))*
  2264. & ((XM)*((RTH_0)**(2.0D0)))))*
  2265. & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6)))
  2266.  
  2267. C Calcul derivé df/ds (cutting plan) - partie deviatoire
  2268. DFDS_0D(1:6) = DFDS_0(1:6) -
  2269. & (((DFDS_0(1) + DFDS_0(2) + DFDS_0(3))/(3.0D0))*(XID1(1:6)))
  2270. IF (IFOUR.NE.2) THEN
  2271. DFDS_0D(5:6) = 0.0D0
  2272. ENDIF
  2273. C Calcul derivé df/dp (cutting plan)
  2274. DFDP_0 = ((NN_0(1))*(BET_0(1))) +
  2275. & ((NN_0(2))*(BET_0(2))) +
  2276. & ((NN_0(3))*(BET_0(3))) +
  2277. & (2.0D0)*((NN_0(4))*(BET_0(4))) +
  2278. & (2.0D0)*((NN_0(5))*(BET_0(5))) +
  2279. & (2.0D0)*((NN_0(6))*(BET_0(6)))
  2280. DFDP_0 = DFDP_0 +
  2281. & (((((2.0D0)/(3.0D0))**(0.5D0))*(XM))*(RTH_0))
  2282. XVAL3(1) = ((D2F(1,1))*(BET_0(1))) +
  2283. & ((D2F(1,2))*(BET_0(2))) +
  2284. & ((D2F(1,3))*(BET_0(3))) +
  2285. & ((D2F(1,4))*(BET_0(4))) +
  2286. & ((D2F(1,5))*(BET_0(5))) +
  2287. & ((D2F(1,6))*(BET_0(6)))
  2288. XVAL3(2) = ((D2F(2,1))*(BET_0(1))) +
  2289. & ((D2F(2,2))*(BET_0(2))) +
  2290. & ((D2F(2,3))*(BET_0(3))) +
  2291. & ((D2F(2,4))*(BET_0(4))) +
  2292. & ((D2F(2,5))*(BET_0(5))) +
  2293. & ((D2F(2,6))*(BET_0(6)))
  2294. XVAL3(3) = ((D2F(3,1))*(BET_0(1))) +
  2295. & ((D2F(3,2))*(BET_0(2))) +
  2296. & ((D2F(3,3))*(BET_0(3))) +
  2297. & ((D2F(3,4))*(BET_0(4))) +
  2298. & ((D2F(3,5))*(BET_0(5))) +
  2299. & ((D2F(3,6))*(BET_0(6)))
  2300. XVAL3(4) = ((D2F(4,1))*(BET_0(1))) +
  2301. & ((D2F(4,2))*(BET_0(2))) +
  2302. & ((D2F(4,3))*(BET_0(3))) +
  2303. & ((D2F(4,4))*(BET_0(4))) +
  2304. & ((D2F(4,5))*(BET_0(5))) +
  2305. & ((D2F(4,6))*(BET_0(6)))
  2306. XVAL3(5) = ((D2F(5,1))*(BET_0(1))) +
  2307. & ((D2F(5,2))*(BET_0(2))) +
  2308. & ((D2F(5,3))*(BET_0(3))) +
  2309. & ((D2F(5,4))*(BET_0(4))) +
  2310. & ((D2F(5,5))*(BET_0(5))) +
  2311. & ((D2F(5,6))*(BET_0(6)))
  2312. XVAL3(6) = ((D2F(6,1))*(BET_0(1))) +
  2313. & ((D2F(6,2))*(BET_0(2))) +
  2314. & ((D2F(6,3))*(BET_0(3))) +
  2315. & ((D2F(6,4))*(BET_0(4))) +
  2316. & ((D2F(6,5))*(BET_0(5))) +
  2317. & ((D2F(6,6))*(BET_0(6)))
  2318. XVAL4 = ((XVAL3(1))*(N2N_0(1))) +
  2319. & ((XVAL3(2))*(N2N_0(2))) +
  2320. & ((XVAL3(3))*(N2N_0(3))) +
  2321. & (2.0D0)*((XVAL3(4))*(N2N_0(4))) +
  2322. & (2.0D0)*((XVAL3(5))*(N2N_0(5))) +
  2323. & (2.0D0)*((XVAL3(6))*(N2N_0(6)))
  2324. DFDP_0 = DFDP_0 +
  2325. & ((((6.D0)*((P_0 - XC1)))*
  2326. & ((XM)*((RTH_0)**(2.0D0)))))*
  2327. & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL4))
  2328. C Calcul derivé df/dbeta (cutting plan)
  2329. DFDBET_0(1:6) = ((NN_0(1:6))*(P_0-XC1))
  2330. DFDBET_0(1:6) = DFDBET_0(1:6) +
  2331. & ((((6.D0)*((P_0 - XC1)**(2.0D0)))*
  2332. & ((XM)*((RTH_0)**(2.0D0)))))*
  2333. & (((XK1 - 1.0D0)/((2.0D0)*(XK1)))*(XVAL1(1:6)))
  2334. C
  2335. VAL1 = (((2.0D0)*(GMOD_0))*(((DFDS_0D(1))*(DFDS_0D(1))) +
  2336. & ((DFDS_0D(2))*(DFDS_0D(2))) +
  2337. & ((DFDS_0D(3))*(DFDS_0D(3))) +
  2338. & (2.0D0)*((DFDS_0D(4))*(DFDS_0D(4))) +
  2339. & (2.0D0)*((DFDS_0D(5))*(DFDS_0D(5))) +
  2340. & (2.0D0)*((DFDS_0D(6))*(DFDS_0D(6)))))
  2341. VAL2 = ((KMOD_0)*(DFDP_0))*(P1_0)
  2342. VAL3 = (((2.0D0)/(3.0D0))*(HMOD_0))
  2343. & *(((DFDBET_0(1))*(MM_0(1))) +
  2344. & ((DFDBET_0(2))*(MM_0(2))) +
  2345. & ((DFDBET_0(3))*(MM_0(3))) +
  2346. & (2.0D0)*((DFDBET_0(4))*(MM_0(4))) +
  2347. & (2.0D0)*((DFDBET_0(5))*(MM_0(5))) +
  2348. & (2.0D0)*((DFDBET_0(6))*(MM_0(6))))
  2349. IF ((F_00.LT.(0.0D0)).AND.(F_0.LT.(0.0D0))) THEN
  2350. D2GAM = ((0.0D0)/(VAL1 + VAL2 + VAL3))
  2351. ELSE
  2352. D2GAM = ((F_0)/(VAL1 + VAL2 + VAL3))
  2353. ENDIF
  2354. DSEPLA_0(1:6) = ((D2GAM)*(DFDS_0D(1:6)))
  2355. DVEPLA_0 = ((D2GAM)*(P1_0))
  2356. DBET_0(1:6) = (-1.0D0)*((((2.0D0)/(3.0D0))
  2357. & *(HMOD_0))*((D2GAM)*(MM_0(1:6))))
  2358.  
  2359. SEPLA_1(1:6) = SEPLA_0(1:6) + DSEPLA_0(1:6)
  2360. VEPLA_1 = VEPLA_0 + DVEPLA_0
  2361. BET_1(1:6) = BET_0 + DBET_0(1:6)
  2362. DGAM_1 = DGAM_0 + D2GAM
  2363. C
  2364. S_0(1:6) = S_0(1:6) + DS_0(1:6)
  2365. & - (((2.0D0)*(GMOD_0))*(DSEPLA_0(1:6)))
  2366. P_0 = P_0 + DP_0 - (((1.0D0)*(KMOD_0))*(DVEPLA_0))
  2367. ENDIF
  2368. 101 CONTINUE
  2369. C
  2370. C---- FIN CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP ---------------------
  2371. 200 CONTINUE
  2372. C
  2373. C---- CONTROLE SUR LA BOUCLE WHILE -------------------------------------
  2374. C---- SI ON ARRIVE À LA FIN DES N SUBSTEP ON TERMINE AVEC L'UPDATE -----
  2375. C---- DES CONTRAINTES, VARIABLES INTERNE ET DEFORMATIONS PLASTIQUES ----
  2376. C---- POUR LE TEMPS SUIVANT --------------------------------------------
  2377. C
  2378. c I_STEP = I_STEP - (INT(1))
  2379. C
  2380. IF ( (I_STEP.EQ.N_STEP)
  2381. &.AND.(IND_STEP1.EQ.0)
  2382. &.AND.(IND_STEP2.EQ.0)) THEN
  2383. C Deformation totale finale
  2384. EPSTF(1:6) = ETOT_FIN(1:6)
  2385. EPSTF(4:6) = ((2.0D0)*(ETOT_FIN(4:6)))
  2386. C Deformation plastique finale
  2387. EPINF(1:6) = EPLA_FIN(1:6)
  2388. EPINF(4:6) = ((2.0D0)*(EPLA_FIN(4:6)))
  2389. C Contrainte Totale finale
  2390. SIGF(1:6) = SIG_FIN(1:6)
  2391. C Variable interne
  2392. VARF(1) = DGAM_0
  2393. VARF(2:7) = BET1_FIN(1:6)
  2394. VARF(8:13) = BET2_FIN(1:6)
  2395. VARF(14:19) = BET3_FIN(1:6)
  2396. VARF(20:25) = BET4_FIN(1:6)
  2397. VARF(26:31) = BET5_FIN(1:6)
  2398. VARF(32:37) = BET6_FIN(1:6)
  2399. VARF(38:43) = BET7_FIN(1:6)
  2400. VARF(44:49) = BET8_FIN(1:6)
  2401. VARF(50:55) = BET9_FIN(1:6)
  2402. VARF(56:61) = BET10_FIN(1:6)
  2403. GOTO 11
  2404. ELSE
  2405. C---- EN REVANCHE ON PREPARE LE DONNES POUR LE SUBSTEP N+1 -------------
  2406. c---- DANS CE PARTIE ON PEUT MODIFIER LES NOMBRES DE SOUSSTEP ----------
  2407. C---- ET ADAPTER L'ALGORITHME ------------------------------------------
  2408. IF ((IND_STEP2.NE.1).AND.(IND_STEP1.NE.1)) THEN
  2409. C Deformation totale finale
  2410. ETOT_INI(1:6) = ETOT_FIN(1:6)
  2411. C Deformation plastique finale
  2412. EPLA_INI(1:6) = EPLA_FIN(1:6)
  2413. C Contrainte Totale finale
  2414. SIG_INI(1:6) = SIG_FIN(1:6)
  2415. C Variables internes
  2416. BET1_INI(1:6) = BET1_FIN(1:6)
  2417. BET2_INI(1:6) = BET2_FIN(1:6)
  2418. BET3_INI(1:6) = BET3_FIN(1:6)
  2419. BET4_INI(1:6) = BET4_FIN(1:6)
  2420. BET5_INI(1:6) = BET5_FIN(1:6)
  2421. BET6_INI(1:6) = BET6_FIN(1:6)
  2422. BET7_INI(1:6) = BET7_FIN(1:6)
  2423. BET8_INI(1:6) = BET8_FIN(1:6)
  2424. BET9_INI(1:6) = BET9_FIN(1:6)
  2425. BET10_INI(1:6) = BET10_FIN(1:6)
  2426. ENDIF
  2427. IF (IND_STEP1.EQ.1) THEN
  2428. WRITE(IOIMP,10006)
  2429. 10006 FORMAT('Warning pas de convergence - substepping')
  2430. N_STEP2 = 2*N_STEP
  2431. DDET_ST2(1:3) = (EPST0(1:3) + DEPST(1:3) - ETOT_INI(1:3))/
  2432. & (N_STEP2)
  2433. DDET_ST2(4:6) = ((EPST0(4:6))/(2.0D0) + (DEPST(4:6))/(2.0D0)
  2434. & - ETOT_INI(4:6))/
  2435. & (N_STEP2)
  2436. IND_STEP1 = INT(0)
  2437. N_STEP = N_STEP2
  2438. DDET_ST(1:6) = DDET_ST2(1:6)
  2439. IND_STEP3 = IND_STEP3 + I_STEP - 1 + N_STEP
  2440. GOTO 10
  2441. ENDIF
  2442. IF (IND_STEP2.EQ.1) THEN
  2443.  
  2444. N_STEP2 = INT(100)
  2445. DDET_ST2(1:3) = (EPST0(1:3) + DEPST(1:3) - ETOT_INI(1:3))/
  2446. & (N_STEP2)
  2447. DDET_ST2(4:6) = ((EPST0(4:6))/(2.0D0) + (DEPST(4:6))/(2.0D0)
  2448. & - ETOT_INI(4:6))/
  2449. & (N_STEP2)
  2450. IF (IFOUR.NE.2) THEN
  2451. DDET_ST2(5:6) = 0.0D0
  2452. ENDIF
  2453. IND_STEP2 = INT(0)
  2454. N_STEP = N_STEP2
  2455. DDET_ST(1:6) = DDET_ST2(1:6)
  2456. IND_STEP3 = IND_STEP3 + I_STEP - 1 + N_STEP
  2457. GOTO 10
  2458. ENDIF
  2459.  
  2460.  
  2461. ENDIF
  2462. C
  2463. C---- FIN CICLE DE CONVERGENCE POUR CHAQUE SUBSTEP ---------------------
  2464. 100 CONTINUE
  2465. 11 CONTINUE
  2466. C
  2467. C
  2468. RETURN
  2469. C
  2470. END
  2471.  
  2472.  
  2473.  
  2474.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales