Télécharger pakzad.eso

Retour à la liste

Numérotation des lignes :

pakzad
  1. C PAKZAD SOURCE OF166741 25/11/04 21:15:58 12349
  2. SUBROUTINE PAKZAD(DEPST,NSTRS,NCOMAT,NVARI,
  3. . MFR1,IB,IGAU,
  4. . XMAT,SIG0,VAR0,SIGF,VARF,DEFP,KERRE,DSIGT,
  5. . SUCC1,SUCC2)
  6.  
  7. ***************************************************************
  8. *
  9. * Modèle d'argile de PAKZAD
  10. *
  11. ***************************************************************
  12. *
  13. *_________________________________________________________________
  14. *
  15. * ENTREES :
  16. * ---------
  17. *
  18. * DEPST = INCREMENT DE DEFORMATIONS TOTALES
  19. * NSTRS = NBRE DE COMPOSANTES DES DEFORMATIONS
  20. * NCOMAT= NBRE DE CARACTERISTIQUES MECANIQUES DU MATERIAU
  21. * NVARI = NBRE DE VARIABLES INTERNES
  22. * MFR1 = NUMERO DE LA FORMULATION
  23. * IB = NUMERO DE L ELEMENT COURANT
  24. * IGAU = NUMERO DU POINT COURANT
  25. * SIG0(NSTRS) = CONTRAINTES AU DEBUT DU PAS D'INTEGRATION
  26. * VAR0(NVARI) = VARIABLES INTERNES AU DEBUT DU PAS DE TEMPS
  27. * XMAT(NCOMAT) = CARACTERISTIQUES MECANIQUES DU MATERIAU
  28. * SUCC1 SUCCION AU DEBUT DU PAS
  29. * SUCC2 SUCCION A LA FIN DU PAS
  30. *
  31. * SORTIE :
  32. * --------
  33. *
  34. * SIGF(NSTRS) = CONTRAINTES FINALES
  35. * VARF(NVARI) = VARIALES INTERNES A LA FIN DU PAS D'INTEGRATION
  36. * DEFP(NSTRS) = INCREMENT DE DEFORMATION PLASTIQUE A LA FIN
  37. * DU PAS D'INTEGRATION
  38. * ============================================================
  39. * ICI IL FAUT PROGRAMMER EN FORTRAN PUR
  40. *=============================================================
  41.  
  42. IMPLICIT INTEGER(I-N)
  43. IMPLICIT REAL*8(A-H,O-Z)
  44.  
  45. -INC PPARAM
  46. -INC CCOPTIO
  47.  
  48. DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),SIGF(*),
  49. & VARF(*),DEFP(*),DSIGT(*)
  50. DIMENSION RSIG0(6),RDEPS0(6),RSIGF(6),RDEFP(6),RSIG1(6)
  51. DIMENSION DEVT(6),SIGT(6),DEFT(6)
  52. REAL*8 LS0,LS1
  53. *
  54. * Adaptation de l'option de calcul vers le 3D massif de SIG0 a RSIG0
  55. *====================================================================
  56. *
  57. IF (MFR1 .EQ. 1 .OR. MFR1 .EQ. 31) THEN
  58. *
  59. *---> 1 formulation massive
  60. *---> 2 formulation quasi incompressible
  61. *---> MASSIF 3D
  62. *
  63. IF (NSTRS .EQ. 6) THEN
  64. DO 110 I=1,NSTRS
  65. RSIG0(I)=SIG0(I)
  66. RDEPS0(I)=DEPST(I)
  67. 110 CONTINUE
  68. ELSE IF ( NSTRS .EQ. 4 .AND. ((IFOUR .EQ. 0)
  69. & .OR.(IFOUR .EQ. -1))) THEN
  70. *
  71. *---> Calcul en mode deformations planes ou axisymetrique
  72. *
  73. DO 115 I=1,NSTRS
  74. RSIG0(I)=SIG0(I)
  75. RDEPS0(I)=DEPST(I)
  76. 115 CONTINUE
  77. RSIG0(5)=0.D0
  78. RSIG0(6)=0.D0
  79. RDEPS0(5)=0.D0
  80. RDEPS0(6)=0.D0
  81. ENDIF
  82. ELSE
  83. KERRE = 99
  84. RETURN
  85. ENDIF
  86.  
  87. * Passage des deformations de cisaillement exprimées
  88. * en GAMA aux déformations de cisaillement exprimées
  89. * en déformations
  90. DO 116 I=4,6
  91. RDEPS0(I)=RDEPS0(I)*0.5D0
  92. 116 CONTINUE
  93.  
  94. * Données du materiau
  95. *===========================================================
  96. *
  97. YOUN0=XMAT(1)
  98. XNU0=XMAT(2)
  99. XN0=XMAT(5)
  100. XKA0=XMAT(6)
  101. XGA0=XMAT(7)
  102. XPA0=XMAT(8)
  103. XPC0=XMAT(9)
  104. XM0=XMAT(10)
  105. XBET1=XMAT(11)
  106. XA0=XMAT(12)
  107. XPCR0=XMAT(13)
  108. XS0=XMAT(14)
  109. XM1=XMAT(15)
  110. XM2=XMAT(16)
  111. XM3=XMAT(17)
  112. XBET2=XMAT(18)
  113. XTAU0=XMAT(19)
  114.  
  115. * Quelques initialisations
  116. *=============================================================
  117. *
  118. *---> Succion
  119. * . Succion initiale
  120. * . succion finale
  121. * . Succion de désaturation
  122. *
  123. ******************************
  124. * MODIFICATION POUR LA SUCCION
  125. *
  126. IF(SUCC1.LT.-1.E34.AND.SUCC2.LT.-1.E34) THEN
  127. *
  128. * cas à succion constante : on la prend dans var0
  129. *
  130. SUCI0=VAR0(3)
  131. SUCF0=SUCI0
  132. ELSE
  133. SUCI0=SUCC1
  134. SUCF0=SUCC2
  135. ENDIF
  136. *
  137. IF (VAR0(2).LE.1.D-10) VAR0(2)=XS0+XM1*(XPC0-XS0)
  138. SDT=VAR0(2)
  139. *
  140. *---> Pression de consolidation initiale dans le domaine saturé
  141. *
  142. IF (VAR0(4).LE.1.D-10) VAR0(4)=XPC0
  143. *
  144. *---> On est en train d'activer la surface de contact ou de gonflement
  145. *
  146. IF ((VAR0(21).LE.1.D-10).AND.(VAR0(22).LE.1.D-10)) THEN
  147. *
  148. * On active la surface de contact
  149. *
  150. IGONF=1
  151. ELSE
  152. *
  153. * On active la surface de gonflement
  154. *
  155. IGONF=0
  156. ENDIF
  157. *
  158. *---> On initialise les variables internes à leur valeur initiale
  159. *
  160. DO 49 I=1,NVARI
  161. VARF(I)=VAR0(I)
  162. 49 CONTINUE
  163. *
  164. *---> On initialise les déformations plastiques au cours du pas à
  165. * zéro
  166. *
  167. DO 48 I=1,6
  168. RDEFP(I)=0.D0
  169. 48 CONTINUE
  170.  
  171. * Sous incrémentations : définition du nombre de sous
  172. * incréments
  173. *=============================================================
  174. *
  175. nmax0=1
  176. iter2=0
  177. crit0=XKA0*(RDEPS0(1)+RDEPS0(2)+RDEPS0(3))
  178. crit0=ABS(crit0)
  179. IF (crit0.GT.1.D-2) nmax0=NINT(100.D0*crit0)+1
  180. IF (nmax0.GT.10000) nmax0=10000
  181. DO 50 I=1,6
  182. RDEPS0(I)=RDEPS0(I)/nmax0
  183. 50 CONTINUE
  184. *
  185. * Début de la boucle de sous incrémentation
  186. *=============================================================
  187. *
  188. 51 iter2=iter2+1
  189. *
  190. *---> Succion au début (SUC1) et à la fin (SUC2) du sous incrémént
  191. *
  192. SUC1=SUCI0+(SUCF0-SUCI0)*(iter2-1)/nmax0
  193. SUC2=SUCI0+(SUCF0-SUCI0)*iter2/nmax0
  194. *
  195. *---> Variable de test de la plasticité
  196. * . iplas vaut 1 si on plastifie sur la surface de contact
  197. *
  198. IPLAS=0
  199. *
  200. *---> Pression d'origine capillaire au début du sous incrément
  201. *
  202. LS0=SUC1-XM1*VARF(4)+(XM1-1.D0)*XS0
  203. IF (LS0.LE.0.D0) THEN
  204. *
  205. * Etat quasi saturé
  206. *
  207. PSAT0=SUC1
  208. ELSE
  209. *
  210. * Etat partiellement saturé
  211. *
  212. XK1=(1.D0+(SUC1-SDT)/((XM2-1.D0)*SDT))**2.D0
  213. XK1=1/XK1
  214. PSAT0=SDT+(XK1**(.5D0))*(SUC1-SDT)
  215. ENDIF
  216. *
  217. *---> Contraintes effectives au début du sous incrément
  218. *
  219. DO 9 I=1,6
  220. A=0.D0
  221. IF (I.LE.3) A=1.D0
  222. RSIG1(I)=RSIG0(I)-PSAT0*A
  223. 9 CONTINUE
  224. PRES00=-1.D0/3.D0*(RSIG1(1)+RSIG1(2)+RSIG1(3))
  225. *
  226. *---> Déformations élastiques test et déformation plastique
  227. *
  228. DO 10 I=1,6
  229. DEFT(I)=0.D0
  230. 10 CONTINUE
  231. TREPEL0=RDEPS0(1)+RDEPS0(2)+RDEPS0(3)
  232. *
  233. *---> Contraintes test: 2 cas suivant la valeur de XN0
  234. *
  235. dif0=ABS(XN0-1.D0)
  236. IF (dif0.LE.1.D-5) THEN
  237. *
  238. * Cas où XN0=1
  239. *
  240. PRES1=PRES00*EXP(-1.D0*XKA0*TREPEL0)
  241. DO 11 I=1,6
  242. A=0.D0
  243. IF (I.LE.3) A=1.D0
  244. DEVT(I)=RSIG1(I)+PRES00*A
  245. DEVT(I)=DEVT(I)+2.D0*XGA0*PRES00*(RDEPS0(I)-TREPEL0/3.D0*A)
  246. SIGT(I)=DEVT(I)-PRES1*A
  247. 11 CONTINUE
  248. ELSE
  249. *
  250. * Autres cas
  251. *
  252. XKA1=XKA0*XPA0*((PRES00/XPA0)**XN0)
  253. XGA1=XGA0*XPA0*((PRES00/XPA0)**XN0)
  254. PRES1=PRES00-(XKA1*TREPEL0)
  255. DO 21 I=1,6
  256. A=0.D0
  257. IF (I.LE.3) A=1.D0
  258. DEVT(I)=RSIG1(I)+PRES00*A
  259. DEVT(I)=DEVT(I)+2.D0*XGA1*(RDEPS0(I)-TREPEL0/3.D0*A)
  260. SIGT(I)=DEVT(I)-PRES1*A
  261. 21 CONTINUE
  262. ENDIF
  263. *
  264. *---> Pressions de consolidation test à la succion SUC2 et module plastique BET1
  265. * à la fin du sous incrément
  266. * PCT1 : pression de consolidation
  267. * PCT0 : pression de consolidation "fictive" dans le domaine
  268. * saturé ( = VARF(4))
  269. *
  270. LS1=SUC2-XM1*VARF(4)+(XM1-1.D0)*XS0
  271. PCT0=VARF(4)
  272. IF (LS1.LE.0.D0) THEN
  273. *
  274. * Etat quasi saturé
  275. *
  276. PCT1=PCT0
  277. BET1=XBET1
  278. ELSE
  279. *
  280. * Etat partiellement saturé
  281. *
  282. XK2=(1.D0+(SUC2-SDT)/(XM3*SDT))**2.D0
  283. XK2=1/XK2
  284. PCT1=PCT0+(XK2**.5D0)*(SUC2-SDT)
  285. BET1=XBET2-((XBET2-XBET1)*EXP(-1.D0*XTAU0*(SUC2-SDT)))
  286. *
  287. * Dans ce qui suit, on va négliger les variations de BET1 avec SDT
  288. * (et donc avec l'écoulement plastique)
  289. *
  290. ENDIF
  291. *
  292. *---> Si on est en recharge, on vérifie la condition de gonflement avant
  293. * la condition de contact
  294. * A condition de ne pas déja avoir active la surface de charge
  295. * (IGONF=0)
  296. *
  297. IF (((RDEPS0(1)+RDEPS0(2)+RDEPS0(3)).LE.0.D0)
  298. . .AND.(IGONF.EQ.0)) THEN
  299. CALL PAKGON(XMAT,SIGT,VARF,SIGT,DEFT,VARF,
  300. . RDEPS0,KERRE,IB,IGAU,PCT0,
  301. . SUC2,RSIG1)
  302. PRES1=-1.D0/3.D0*(SIGT(1)+SIGT(2)+SIGT(3))
  303. DO 52 I=1,6
  304. A=0.D0
  305. IF (I.LE.3) A=1.D0
  306. DEVT(I)=SIGT(I)+PRES1*A
  307. 52 CONTINUE
  308. IGONF=0
  309. ENDIF
  310. *
  311. *---> Contrainte équivalente
  312. *
  313. STEST2=1.5D0*PROCON(DEVT,DEVT,6)
  314. IF (STEST2.LE.(1.D-10*YOUN0)) STEST2=0.D0
  315. *
  316. *---> Fonction de charge
  317. *
  318. PHIT=Stest2+XM0*XM0*PRES1*(PRES1-PCT1)
  319. *
  320. * Vérification du critère de plasticité
  321. *=========================================================
  322. *
  323. *---> Erreur admise
  324. *
  325. ERR0=1.D-7*ABS(PHIT)
  326. ERR0=MAX(ERR0,1.D-10*YOUN0)
  327. *
  328. *---> Critère de plasticité
  329. *
  330. PHI0=PHIT
  331. iter0=0
  332. *
  333. 99 IF (PHI0.LE.ERR0) THEN
  334. *
  335. * On est élastique par rapport à la surface de contact
  336. *=========================================================
  337. *
  338. *
  339. *---> On vérifie la condition de gonflement
  340. *
  341. IF (IPLAS.EQ.0) THEN
  342. *
  343. * On a pas plastifié sur la surface de contact
  344. * Si on est en décharge, on vérifie la condition de gonflement
  345. * après la condition de contact
  346. * Cas particulier, le premier pas du calcul, IGONF peut valoir 1 car
  347. * toutes les valeurs de des variables internes ne sont peut etre pas
  348. * initialisées de facon adéquate.
  349. * Or on doit vérifier la surface de gonflement systématiquement
  350. * au premier pas du calcul et ce jusqu'a ce qu'on active
  351. * la surface de gonflement ou la surface de contact
  352. *
  353. *
  354. IF (((RDEPS0(1)+RDEPS0(2)+RDEPS0(3)).GT.0.D0).OR.
  355. . (IGONF.EQ.1)) THEN
  356. CALL PAKGON(XMAT,SIGT,VARF,SIGT,DEFT,VARF,
  357. . RDEPS0,KERRE,IB,IGAU,PCT0,
  358. . SUC2,RSIG1)
  359. IGONF=0
  360. ENDIF
  361. DO 53 I=1,6
  362. RDEFP(I)=RDEFP(I)+DEFT(I)
  363. RSIGF(I)=SIGT(I)
  364. 53 CONTINUE
  365. ELSE
  366. *
  367. * On a plastifié sur la surface de contact, on ré-initialise
  368. * les variables internes du gonflement
  369. * . le rayon est remis à sa valeur initiale
  370. * . le "Centre" de l'ellipse (P1,Q1) est mis à
  371. * la valeur courante des contraintes
  372. *
  373. VARF(5)=XA0
  374. VARF(6)=XA0
  375. VARF(7)=PRES1
  376. VARF(8)=PRES1
  377. VARF(21)=0.D0
  378. VARF(22)=0.D0
  379. DO 399 I=1,6
  380. RDEFP(I)=RDEFP(I)+DEFT(I)
  381. RSIGF(I)=SIGT(I)
  382. VARF(8+I)=DEVT(I)
  383. VARF(14+I)=DEVT(I)
  384. 399 CONTINUE
  385. ENDIF
  386. *
  387. *---> A la fin du sous incrémént: Est on saturé ou non ?
  388. *
  389. LS1=SUC2-XM1*PCT0+(XM1-1.D0)*XS0
  390. *
  391. *---> Mise à jour de la succion de désaturation à la fin di sous incrément
  392. *
  393. SDT=XS0+XM1*(PCT0-XS0)
  394. *
  395. *---> Pression d'origine capillaire à la fin de sous incrément
  396. *
  397. IF (LS1.LE.0.D0) THEN
  398. *
  399. * Etat quasi saturé
  400. *
  401. PSAT0=SUC2
  402. ELSE
  403. *
  404. * Etat partiellement saturé
  405. *
  406. XK1=(1.D0+(SUC2-SDT)/((XM2-1.D0)*SDT))**2.D0
  407. XK1=1/XK1
  408. PSAT0=SDT+(XK1**(.5D0))*(SUC2-SDT)
  409. ENDIF
  410. *
  411. *---> Grandeurs à la fin de sous incrément
  412. *
  413. DO 400 I=1,6
  414. A=0.D0
  415. IF (I.LE.3) A=1.D0
  416. RSIGF(I)=RSIGF(I)+PSAT0*A
  417. RSIG0(I)=RSIGF(I)
  418. DEFT(I)=RDEFP(I)-(RDEFP(1)+RDEFP(2)+RDEFP(3))/3.D0*A
  419. 400 CONTINUE
  420. EPSPT=PROCON(DEFT,DEFT,6)
  421. IF (EPSPT.LE.1.D-10) EPSPT=0.D0
  422. EPSPT=(2.D0/3.D0*EPSPT)**.5D0
  423. VARF(1)=VAR0(1)+EPSPT
  424. VARF(2)=SDT
  425. VARF(3)=SUCF0
  426. VARF(4)=PCT0
  427. *
  428. ELSE
  429. *
  430. * On plastifie
  431. *=========================================================
  432. *
  433. *---> Mise du flag IPLAS à 1: on plastifie en contact
  434. * Mise du flag IGONF à 1: on plastifie en contact
  435. *
  436. IPLAS=1
  437. IGONF=1
  438. *
  439. *---> Condition de consistance: calcul du paramètre plastique
  440. *
  441. IF (dif0.LE.1.D-5) THEN
  442. *
  443. * Cas où XN0=1
  444. *
  445. DF1=XM0*XM0*(2.D0*PRES1-PCT1)
  446. DF2=XM0*XM0*PCT1
  447. DF0=12.D0*XGA0*PRES00*Stest2
  448. denom0=DF0+XKA0*DF1*DF1*PRES1+PRES1*BET1*DF1*DF2
  449. *
  450. ELSE
  451. *
  452. * Autres cas
  453. *
  454. DF1=XM0*XM0*(2.D0*PRES1-PCT1)
  455. DF2=XM0*XM0*PCT1
  456. DF0=12.D0*XGA1*Stest2
  457. denom0=DF0+XKA1*DF1*DF1+PRES1*BET1*DF1*DF2
  458. ENDIF
  459. *
  460. dlam0=PHIT/denom0
  461. *
  462. *---> Mise à jour des contraintes
  463. *
  464. IF (dif0.LE.1.D-5) THEN
  465. *
  466. * Cas où XN0=1
  467. *
  468. PRES1=PRES1*EXP(-1.D0*XKA0*DF1*dlam0)
  469. DO 12 I=1,6
  470. A=0.D0
  471. IF (I.LE.3) A=1.D0
  472. DEVT(I)=DEVT(I)-6.D0*XGA0*PRES00*DEVT(I)*dlam0
  473. SIGT(I)=DEVT(I)-PRES1*A
  474. 12 CONTINUE
  475. ELSE
  476. *
  477. * Autres cas
  478. *
  479. PRES1=PRES1-(XKA1*DF1*dlam0)
  480. DO 22 I=1,6
  481. A=0.D0
  482. IF (I.LE.3) A=1.D0
  483. DEVT(I)=DEVT(I)-6.D0*XGA1*DEVT(I)*dlam0
  484. SIGT(I)=DEVT(I)-PRES1*A
  485. 22 CONTINUE
  486. ENDIF
  487. *
  488. *---> Mise à jour de la pression de consolidation à la succion finale
  489. *
  490. PCT1=PCT1*EXP(BET1*DF1*dlam0)
  491. PCT0=PCT0*EXP(XBET1*DF1*dlam0)
  492. *
  493. *---> Déformation élastiques et plastiques
  494. *
  495. IF (dif0.LE.1.D-5) THEN
  496. *
  497. * Cas où XN0=1
  498. *
  499. TREPEL0=-1.D0/XKA0*LOG(PRES1/PRES00)
  500. DO 13 I=1,6
  501. A=0.D0
  502. IF (I.LE.3) A=1.D0
  503. DEFT(I)=(DEVT(I)-RSIG1(I)-PRES00*A)/(2.D0*XGA0*PRES00)
  504. DEFT(I)=RDEPS0(I)-DEFT(I)-TREPEL0*A/3.D0
  505. 13 CONTINUE
  506. ELSE
  507. *
  508. * Autres cas
  509. *
  510. TREPEL0=-1.D0/XKA1*(PRES1-PRES00)
  511. DO 23 I=1,6
  512. A=0.D0
  513. IF (I.LE.3) A=1.D0
  514. DEFT(I)=(DEVT(I)-RSIG1(I)-PRES00*A)/(2.D0*XGA1)
  515. DEFT(I)=RDEPS0(I)-DEFT(I)-TREPEL0*A/3.D0
  516. 23 CONTINUE
  517. ENDIF
  518. *
  519. *---> Mise à jour de la contrainte équivalente
  520. *
  521. STEST2=1.5D0*PROCON(DEVT,DEVT,6)
  522. IF (STEST2.LE.(1.D-10*YOUN0)) STEST2=0.D0
  523. *
  524. *---> Mise à jour de la fonction de charge
  525. *
  526. PHIT=Stest2+XM0*XM0*PRES1*(PRES1-PCT1)
  527. PHI0=ABS(PHIT)
  528. *
  529. *---> Test de convergence ou itération suivante
  530. *
  531. iter0=iter0+1
  532. IF (iter0.LT.200) THEN
  533. GOTO 99
  534. ELSE
  535. PHI0=0.D0
  536. KERRE=460
  537. GOTO 99
  538. ENDIF
  539. *
  540. ENDIF
  541. *
  542. * Vérification des sous incrémentations
  543. *========================================================================
  544. *
  545. IF ((iter2.LT.nmax0).AND.(KERRE.EQ.0)) THEN
  546. GOTO 51
  547. ENDIF
  548. *
  549. *===========================================================================
  550. *
  551. * Passage des deformations de cisaillement exprimées
  552. * en déformations aux déformations de cisaillement exprimées
  553. * en GAMA
  554. DO 117 I=4,6
  555. RDEFP(I)=RDEFP(I)*2.D0
  556. 117 CONTINUE
  557. *
  558. * Passage a l'option de calcul pour les contraintes
  559. * Grandeurs finales
  560. *=========================================================
  561. *
  562. IF (MFR1 .EQ. 1 .OR. MFR1 .EQ. 31) THEN
  563. *---> MASSIF 3D
  564. *---> Calcul axisymétrique ou contraintes planes
  565. DO 170 I=1,NSTRS
  566. SIGF(I)=RSIGF(I)
  567. DEFP(I)=RDEFP(I)
  568. DSIGT(I)=RSIGF(I)-RSIG0(I)
  569. 170 CONTINUE
  570. ENDIF
  571. *
  572. RETURN
  573. END
  574.  
  575.  
  576.  

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