Télécharger incl3d.eso

Retour à la liste

Numérotation des lignes :

incl3d
  1. C INCL3D SOURCE FD218221 24/02/07 21:15:15 11834
  2. subroutine incl3d(xmat,NMAT,sig0,sigf,deps,NSTRS,var0,
  3. # varf,NVARI,NBELAS3D,teta1,teta2,dt,ierr1,iso,MFR,local,NMAT1,
  4. # ifou,istep,epst0,epstf,NBRTAIL3D,NBNMAX3D,NBNB3D,IDIMB3D,XE3D,
  5. # NBRINC3D,NBPARC3D,NBPPARP3D,NBVARISOG,NBVARTENG,NBVARISOPP,
  6. # NBVARTENPP,NVTOT1,NBVARISOPI,NBVARTENPI)
  7.  
  8. c 2014/03/01 calcul de l ecoulement pour inclusion3d : A.Sellier et al.
  9. c 2021/02/25
  10. c 2022/02/02 (sur la base de Maple Homogenisation_v3 pour 1 inclusion)
  11. c 2022/02/07 reorganisation des parametres et des vari pour 1 inclusion
  12. c 2022/02/17 Correction d ecoulement v3 vers ecoulement v4/v5 (maple)
  13. c 2022/06/02 passage des def chimiques aux pressions chimiques
  14.  
  15. c***********************************************************************
  16. c ATTENTION: epst0,epstf ne contiennen PAS le deformation thermique
  17. c epst0,epstf contiennent des GAMMA hors digonale
  18. c TTREF chargé dans les parametres materiau doit etre le
  19. c meme que celui declaré dans les procedures de chargement
  20. c***********************************************************************
  21.  
  22. c tables de dimension fixe pour resolution des systemes lineaires
  23. implicit real*8 (a-h,o-z)
  24. implicit integer (i-n)
  25.  
  26. c***************** iteration de controle des criteres actifs ***********
  27. integer itermax
  28. parameter (itermax=1000)
  29. c residu global actuel et precedent
  30. real*8 RESGA,RESGP
  31.  
  32. c**************** precision relative a RTP pour la verif des criteres ***
  33. real*8 precision3d,prec_tol
  34. c precision sur les criteres individuel
  35. parameter(precision3d=1.0d-6)
  36. c precision sur la minimisation du residu global des criteres
  37. parameter(prec_tol=precision3d)
  38.  
  39. c******** declaration des variables externes ***************************
  40. integer nmat,nstrs,nvari,nbelas3d,ierr1,mfr
  41. real*8 xmat(nmat),sig0(nstrs),sigf(nstrs),deps(nstrs)
  42. real*8 epst0(nstrs),epstf(nstrs)
  43. real*8 var0(nvari),varf(nvari)
  44. real*8 dt,teta1,teta2
  45.  
  46. c *********** nombre maxi d inclusions *****************************
  47. integer NBRINC3D
  48.  
  49. c *** nombre de parametres materiaux *******************************
  50. c nombre de parametre communs (cf. idvisc et cinclusion)
  51. integer NBPARC3D
  52. c nombre de parametres materiaux par phase (cf. idvisc et cinclusion)
  53. integer NBPPARP3D
  54. c nombre max de parametres de taille de l element
  55. c (cf. idvisc et cinclusion)
  56. integer NBRTAIL3D
  57.  
  58. c *** nombre de variables internes *********************************
  59. c nombre de vari iso globales, tensorielle globales
  60. integer NBVARISOG,NBVARTENG
  61. c nombre de vari iso par phase, tensoreille par phase
  62. integer NBVARISOPP,NBVARTENPP
  63. c sous total des vari globales et par phase (sans les interfaces)
  64. integer NVTOT1
  65. c nombre de vari iso par interface, tensorielle par interface
  66. integer NBVARISOPI,NBVARTENPI
  67.  
  68. c **** tableau des coordonnees des noeuds de l element *************
  69. integer NBNMAX3D,NBNB3D,idimb3d
  70. real*8 XE3D(3,NBNMAX3D)
  71.  
  72. c **** variables de controle ***************************************
  73. c variable logique pour activer le traitement local et l elasticite isotrope
  74. logical local,iso
  75. c taille de xmat sans les caracteristiques geometriques nmat1
  76. c (cf idvisc et cinclusion)
  77. integer nmat1
  78. c ifou numero de la formulation, istep etape non locale
  79. integer ifou,istep
  80.  
  81. c*****fin de declaration des parametres externes ***********************
  82.  
  83.  
  84.  
  85. c***********************************************************************
  86. c declarations locales pour le modele
  87. c***********************************************************************
  88.  
  89.  
  90. c ******************************************************************
  91. c declaration des parametres locaux
  92. c ******************************************************************
  93.  
  94. c * nombre maxi d inclusion consideree pour les declarations locales
  95. integer NBRINC
  96. parameter (NBRINC=1)
  97. c * nombre de tenseur de def elastique par inclusion (ere,eie,eoe)
  98. c * c est aussi le nombre de point d interet par phase (NBR PT Interet)
  99. integer NBRPTI
  100. parameter (NBRPTI=3)
  101. c * nombre de contraintes cinematiques au niveau des deformations desactive
  102. c * interfaces d une inclusion
  103. integer NBR_RELA
  104. parameter(NBR_RELA=3)
  105. c * nombre de type de deformation generalisee (ee,ept,epc,epv)
  106. integer NDIM_EP
  107. parameter (NDIM_EP=4)
  108. c * nombre de variables de controle poro_mecanique par phase (bwPw,bgVg,bgVd)
  109. integer NDIM_PM
  110. parameter (NDIM_PM=3)
  111. c * plus 2 deformations orthotropes imposees ( dans la matrice et a
  112. c l infini (eca et e inf) )
  113.  
  114.  
  115. c * dimension de la base generalisee pour la resolution de localisation
  116. integer NDIMG
  117. parameter (NDIMG=3*(NBRINC*NBRPTI+1))
  118. c table locale pour la resolution systeme lineaires
  119. integer ngf,err1
  120. c cf lcls3d pour dimension maxi de la matrice de couplage AA et
  121. c nombre de paramètres de chargement Poro meca par phase pour JEA
  122. parameter(ngf=NDIMG)
  123. real*8 aa(ngf,ngf+1),bb(ngf),xx(ngf),a2(ngf*ngf)
  124. real*8 aai(ngf,ngf+1),bbi(ngf)
  125. integer ipzero(ngf)
  126.  
  127. c * dimension du chargement dans la base des deformations imposees
  128. parameter (NDIMA=NDIMG+6+NDIM_PM*(NBRINC+1))
  129.  
  130. c Res residus des criteres (somme Rsesi **2 )**0.5
  131. real*8 Rest
  132.  
  133. c **** NOMBRE DE TYPES DE PLASTICITE *******************************
  134. integer NTYP_PLAST
  135. c traction diffuse, cisaillement, traction localise
  136. parameter(NTYP_PLAST=3)
  137. c dimension de l espace d ecoulement plastique
  138. integer NDIMPL
  139. c chaque type de plasticite existe sur toutes les composantes de l espace des deformations generalisees
  140. parameter (NDIMPL=NTYP_PLAST*NDIMG)
  141. c matrice d -bgpg / d ea ds l espace de minimisation
  142. real*8 Jsgep(NDIMG,NDIMPL)
  143. c Vecteur R.grad(R) dans l espace de minimisation
  144. real*8 RgR(NDIMPL)
  145. c jacobienne Je1epg dans la base des ecoulements plastiques
  146. real*8 Je1epg(NDIMG,NDIMPL)
  147. c matrice inv(A).Jea pour resdir3d
  148. real*8 AAP(NDIMG,NDIMPL)
  149. c matrice jsp=dseff g/deps p (base ecoulement plastique)
  150. real*8 jsp(NDIMG,NDIMPL)
  151. c ******************************************************************
  152.  
  153.  
  154. c *** NOMBRE DE CRITERES DE TRACTION DIFFUSES **********************
  155. c 1 tenseur dans l inclusion, 1 radial et 1 orthoradial = 3 par
  156. c inclusion +1 a l infini
  157. integer NTYPT
  158. parameter(NTYPT=3)
  159. c on enleve les 3 relations cinematiques entre deformations orthoradiales
  160. integer NTMAX
  161. parameter(NTMAX=NBRINC*NTYPT*3+3)
  162. c criteres des fissures de traction diffuses
  163. real*8 FT(NTMAX)
  164. c activite des criteres
  165. logical ACTIFT(NTMAX)
  166. c numero des criteres retenus pour les tensions refermeture
  167. integer LNUMCRT(NTMAX)
  168. c derivee du seuil plastique par rapport à la contrainte (Petit F)
  169. real*8 DPFTDS(NTMAX,NDIMG)
  170. c derivee du potentiel plastique par rapport à la contrainte (Grand F)
  171. real*8 DGFTDS(NTMAX,NDIMG)
  172. c nombre de criteres actif traction, numero d ordre du dernier traitement
  173. integer NBRACT
  174. c gradients ponderes dans l espace de l ecoulement generalise
  175. real*8 PFT_GRAD_PFT(NDIMPL),PFT_GRAD_GFT(NDIMPL)
  176. c gradient pondéré des fonctions seuil et pseudo potentiels pour les critères de Cisaillement diffus
  177. real*8 PFC_GRAD_PFC(NDIMPL),PFC_GRAD_GFC(NDIMPL)
  178. c indicateur de plasticite elementaire
  179. logical PLASTT
  180. logical Log_RTG(NTMAX)
  181. c ******************************************************************
  182.  
  183.  
  184. c *** NBR DE CRITERE DE CISAILLEMENT *******************************
  185. c 2 tenseurs par inclusion (plus 1 a l infini)
  186. integer NTYPC
  187. parameter(NTYPC=2)
  188. c nbr max de tenseur compte tenu du nbr d inclusions
  189. integer NCMAX
  190. parameter(NCMAX=NBRINC*NTYPC+1)
  191. c criteres de cisaillement
  192. real*8 FC(NCMAX)
  193. c activite des criteres de cisaillement
  194. logical ACTIFC(NCMAX)
  195. c graidant des citeres et de leur pseudo potentiels
  196. real*8 DPFCDS(NCMAX,NDIMG),DGFCDS(NCMAX,NDIMG)
  197. c liste classee des numeros des criteres de cisaillement actifs
  198. integer LNUMCRC(NCMAX)
  199. c nombre de criteres actif cisaillement, numero d ordre du dernier traitement
  200. integer NBRACC
  201. real*8 GFC_GRAD_GFC(NDIMPL),GFC_GRAD_PFC(NDIMPL)
  202. c indicateur de plasticite elementaire
  203. logical PLASTC
  204. c ******************************************************************
  205.  
  206. c *** NBR DE CRITERES POUR LE DECOLLEMENT LOCALISE *****************
  207. c * nombre de types de criteres localise par inclusion 3 plus 1a l infini
  208. integer NBTYPL
  209. parameter (NBTYPL=1)
  210. c on enleve les 3 relations cinematiques entre deformations orthoradiales
  211. integer NLMAX
  212. parameter(NLMAX=NBRINC*NBTYPL*3+3)
  213. c criteres de fissures localisees
  214. real*8 FL(NLMAX),DEPSL1(NDIMG),RESL
  215. integer NBRACL,LNUMCRL(NLMAX)
  216. logical ACTIFL(NLMAX)
  217. real*8 DPFLDS(NLMAX,NDIMG),DGFLDS(NLMAX,NDIMG)
  218. real*8 PFL_GRAD_PFL(NDIMPL),PFL_GRAD_GFL(NDIMPL)
  219. c par de fgradf due a la pression de gel pour les criteres de decollement
  220. real*8 PFG_GRAD_PFG(NDIMPL)
  221. c indicateur de plasticite elementaire
  222. logical PLASTL
  223. logical Log_RLG(NLMAX)
  224. c ******************************************************************
  225.  
  226.  
  227. c *** parametres materiau **************************************
  228.  
  229. c nombre reel d inclusion
  230. integer NINC
  231. c temperature de reference
  232. real*8 TTREF
  233. c fractions volumiques des phases
  234. real*8 FRAC(0:NBRINC)
  235. c module elastique
  236. real*8 YOUNG(-1:NBRINC)
  237. c coeff de Poisson
  238. real*8 NU(-1:NBRINC)
  239. c Coefficient de dilatation thermique directionnel
  240. real*8 ALP(-1:NBRINC)
  241. c resistance a la traction de la phase
  242. real*8 RTP(-1:NBRINC)
  243. c resistance a la traction de l interface
  244. real*8 RTI(-1:NBRINC)
  245. c resistance a la refermeture de la phase
  246. real*8 RFP(-1:NBRINC)
  247. c resistance a la refermeture de l interface
  248. real*8 RFI(-1:NBRINC)
  249. c saturation en eau de la phase
  250. real*8 SRW(0:NBRINC)
  251. c potentiel de gonflement chimique de l inclusion
  252. real*8 VCH(0:NBRINC)
  253. c temps caracteristique de la reaction chimique de l inclusion
  254. real*8 TCH(0:NBRINC)
  255. c energie d activation de la reaction chimique de l inclusion
  256. real*8 EAC(0:NBRINC)
  257. c seuil de teneur en eau pour la reaction chimique
  258. real*8 SRS(0:NBRINC)
  259. c avancement chimique seuil
  260. real*8 ACHS(0:NBRINC)
  261. c temps caracteristique du fluage a ttref
  262. real*8 TFL(0:NBRINC)
  263. c energie d activation du fluage
  264. real*8 EAF(0:NBRINC)
  265. c coeff de fluage de Maxwell
  266. real*8 KFLM(0:NBRINC)
  267. c coeff de fluage de Kelvin
  268. real*8 KFLK(0:NBRINC)
  269. c prorosite
  270. real*8 PORO(0:NBRINC)
  271. c module de Van Genuchten
  272. real*8 MVG(0:NBRINC)
  273. c exposant de Van Genuchten
  274. real*8 NVG(0:NBRINC)
  275. c proprite pour Drucker Pragger
  276. real*8 DELTA(0:NBRINC),BETA(0:NBRINC),COHE(0:NBRINC)
  277. c constante de variation de volume par pression osmotique
  278. real*8 CPHY(0:NBRINC)
  279. c resistances en base generalisee
  280. real*8 RTG(NDIMG),RTLG(NDIMG),RFG(NDIMG),RFLG(NDIMG)
  281. c image des resistances dans la base des forces thermodynamiques
  282. real*8 FTRAC(NDIMG)
  283. c donnes poro-mechaniques (eau, gel, dechrage)
  284. real*8 dbwPw(0:NBRINC),dbgVg(0:NBRINC),dbgVd(0:NBRINC)
  285. c coeff de biot et module de biot des gels
  286. real*8 bg(0:NBRINC,0:1),Mbg(0:NBRINC,0:1)
  287. c poro mecanique
  288. real*8 bwPw(0:NBRINC),bgPg(0:NBRINC),bgVg(0:NBRINC)
  289.  
  290.  
  291. c parametres geometriques en cas de calcul 2d (axi et def plane) ***
  292. c dimension hors plan en cas de calcul 2d
  293. real*8 DIM3
  294.  
  295. c parametres deduits directement
  296. c modules elastiques
  297. real*8 MK(0:NBRINC),MG(0:NBRINC)
  298.  
  299. c ******* variables internes ************************************
  300.  
  301. c indicateur premier pas
  302. logical PPAS
  303. c avancement des reactions chimique par phase DEBUT DE PAS
  304. real*8 ACH(0:NBRINC,0:1)
  305. real*8 DVGT(0:NBRINC),DACH(0:NBRINC)
  306. c compressibilite du produit neo forme
  307. real*8 KCH(0:NBRINC)
  308. c indicateur de diffusion produits chimiques dans fissure
  309. real*8 GCH(0:NBRINC)
  310. c differentiel de deformation thermique isotrope imposee/ttref
  311. real*8 ETH(0:NBRINC,0:1),DETH(0:NBRINC)
  312. c contrainte effective hydrique
  313. real*8 SEW(0:NBRINC,0:1),DSEW(0:NBRINC)
  314. c deformation osmotique
  315. real*8 EPH(0:NBRINC,0:1),DEPH(0:NBRINC)
  316. c reduction pour cause d ecoulement chemoplastique
  317. real*8 reduc_ch(0:NBRINC)
  318.  
  319.  
  320. c remarque (le dimensionnement a -1 des phases et interfaces est
  321. c necessaire pour pouvoir utiliser dcmp3d et recm3d
  322.  
  323. c contraintes totale non endommagee (radiale pour inclusions, infini pour matrice)
  324. real*8 STOTR(-1:NBRINC,6,0:1),STOTG(NDIMG)
  325. real*8 STOTR_PRIN(-1:NBRINC,3),STOTR_COMP(-1:NBRINC,6)
  326. c contraintes effectives(radiale pour inclusions, infini pour matrice)
  327. real*8 SEFFR(-1:NBRINC,6,0:1)
  328. real*8 SEFFR_PRIN(-1:NBRINC,3),SEFFR_COMP(-1:NBRINC,6)
  329. c deformation elastique (radiale pour inclusions infini pour matrice)
  330. real*8 EPSER(-1:NBRINC,6,0:1),EPSER0(-1:NBRINC,6,0:1)
  331. real*8 EPSER_PRIN(-1:NBRINC,3),EPSER_COMP(-1:NBRINC,6)
  332. c deformation maxwell (radiale pour inclusions infini pour matrice)
  333. real*8 EPSMR(-1:NBRINC,6,0:1),EPSMR0(-1:NBRINC,6,0:1)
  334. real*8 EPSMR_PRIN(-1:NBRINC,3),EPSMR_COMP(-1:NBRINC,6)
  335. c deformation Kelvin (radiale pour inclusions infini pour matrice)
  336. real*8 EPSKR(-1:NBRINC,6,0:1),EPSKR0(-1:NBRINC,6,0:1)
  337. real*8 EPSKR_PRIN(-1:NBRINC,3),EPSKR_COMP(-1:NBRINC,6)
  338. c deformations plastiques de traction (radiale pour inclusions,infini pour matrice)
  339. real*8 EPSTR(-1:NBRINC,6,0:1)
  340. real*8 EPSTR_PRIN(-1:NBRINC,3),EPSTR_COMP(-1:NBRINC,6)
  341. c deformations plastiques de cisaillement (radiale pour inclusions,infini pour matrice)
  342. real*8 EPSCR(-1:NBRINC,6,0:1)
  343. real*8 EPSCR_PRIN(-1:NBRINC,3),EPSCR_COMP(-1:NBRINC,6)
  344. c deformations plastiques de traction localisee (decollement)
  345. real*8 EPSLR(-1:NBRINC,6,0:1)
  346. real*8 EPSLR_PRIN(-1:NBRINC,3),EPSLR_COMP(-1:NBRINC,6)
  347. c contraintes effectives radiales(radiale pour interface pour matrice)
  348. real*8 SEFFI(-1:NBRINC,6,0:1)
  349. real*8 SEFFI_PRIN(-1:NBRINC,3),SEFFI_COMP(-1:NBRINC,6)
  350. c contraintes effectives orthoradiales(radiale pour inclusions infini pour matrice)
  351. real*8 SEFFO(-1:NBRINC,6,0:1)
  352. real*8 SEFFO_PRIN(-1:NBRINC,3),SEFFO_COMP(-1:NBRINC,6)
  353. c deformation radiale elastique a l interface
  354. real*8 EPSEI(-1:NBRINC,6,0:1),EPSEI0(-1:NBRINC,6,0:1)
  355. real*8 EPSEI_PRIN(-1:NBRINC,3),EPSEI_COMP(-1:NBRINC,6)
  356. c deformation orthoradiale elastique a l interface
  357. real*8 EPSEO(-1:NBRINC,6,0:1),EPSEO0(-1:NBRINC,6,0:1)
  358. real*8 EPSEO_PRIN(-1:NBRINC,3),EPSEO_COMP(-1:NBRINC,6)
  359. c deformation radiale maxwell a l interface
  360. real*8 EPSMI(-1:NBRINC,6,0:1),EPSMI0(-1:NBRINC,6,0:1)
  361. real*8 EPSMI_PRIN(-1:NBRINC,3),EPSMI_COMP(-1:NBRINC,6)
  362. c deformation orthoradiale maxwell a l interface
  363. real*8 EPSMO(-1:NBRINC,6,0:1),EPSMO0(-1:NBRINC,6,0:1)
  364. real*8 EPSMO_PRIN(-1:NBRINC,3),EPSMO_COMP(-1:NBRINC,6)
  365. c deformation kelvin radiale axisymetrique a l interface
  366. real*8 EPSKI(-1:NBRINC,6,0:1),EPSKI0(-1:NBRINC,6,0:1)
  367. real*8 EPSKI_PRIN(-1:NBRINC,3),EPSKI_COMP(-1:NBRINC,6)
  368. c deformation kelvin orthoradiale axisymetrique a l interface
  369. real*8 EPSKO(-1:NBRINC,6,0:1),EPSKO0(-1:NBRINC,6,0:1)
  370. real*8 EPSKO_PRIN(-1:NBRINC,3),EPSKO_COMP(-1:NBRINC,6)
  371. c deformation plastique radiale axisymetrique a l interface
  372. real*8 EPSTI(-1:NBRINC,6,0:1)
  373. real*8 EPSTI_PRIN(-1:NBRINC,3),EPSTI_COMP(-1:NBRINC,6)
  374. c deformation plastique orthoradiale a l interface
  375. real*8 EPSTO(-1:NBRINC,6,0:1)
  376. real*8 EPSTO_PRIN(-1:NBRINC,3),EPSTO_COMP(-1:NBRINC,6)
  377. c deformation plastique cisaillement radiale axisymetrique a l interface
  378. real*8 EPSCI(-1:NBRINC,6,0:1)
  379. real*8 EPSCI_PRIN(-1:NBRINC,3),EPSCI_COMP(-1:NBRINC,6)
  380. c deformation plastique cisaillement orthoradiale a l interface
  381. real*8 EPSCO(-1:NBRINC,6,0:1)
  382. real*8 EPSCO_PRIN(-1:NBRINC,3),EPSCO_COMP(-1:NBRINC,6)
  383. C c deformation plastique en volume radiale axisymetrique a l interface
  384. C real*8 EPSVI(-1:NBRINC,6,0:1)
  385. C real*8 EPSVI_PRIN(-1:NBRINC,3),EPSVI_COMP(-1:NBRINC,6)
  386. C c deformation plastique en volume orthoradiale a l interface
  387. C real*8 EPSVO(-1:NBRINC,6,0:1)
  388. C real*8 EPSVO_PRIN(-1:NBRINC,3),EPSVO_COMP(-1:NBRINC,6)
  389. c deformation chemo-plastique homogene
  390. real*8 EPSRH(-1:NBRINC,6,0:1)
  391. real*8 EPSRH_PRIN(-1:NBRINC,3),EPSRH_COMP(-1:NBRINC,6)
  392. c increment cumule sur le pas de la deformation chemo-plastique homogene
  393. real*8 DEPSRH(-1:NBRINC,6,0:1)
  394. real*8 DEPSRH_PRIN(-1:NBRINC,3),DEPSRH_COMP(-1:NBRINC,6)
  395. c residu de gonflement pour correction ecoulement de gel
  396. real*8 ResDEPSG(-1:NBRINC,6,0:1)
  397. real*8 ResDEPSG_PRIN(-1:NBRINC,3),ResDEPSG_COMP(-1:NBRINC,6)
  398. c volume neoforme et part de ce volume dans les fissures
  399. real*8 VGT(0:NBRINC,0:1),VGF(0:NBRINC,0:1)
  400.  
  401. c ***** tables provisoires pour les changements de base ************
  402.  
  403. real*8 x6(6),x33(3,3),x3(3),v33(3,3),v33t(3,3)
  404. real*8 xtot
  405. c increments de deformations principales
  406. real*8 depst3(3),depst6(6),epstf6(6)
  407. c base principale de l increment de deformation totale
  408. real*8 v33d(3,3),v33dt(3,3)
  409. c base principale de la contrainte effective moyenne
  410. real*8 v33s(3,3),v33st(3,3)
  411. c deformation elastique libre de depression capillaire
  412. real*8 EPSMW
  413. c temperature moyenne sur le passage
  414. real*8 teta
  415. c entiers de parametratge des tables de stockage
  416. integer JGM0,IPHASE,ICOMP,nv3d,IDEBUT
  417. integer NBVIND3D,NBVPARP3D,NBVPARI3D,NBROBL
  418. c jacobienne depse/depsimp si un seul type dinclusion
  419. real*8 JEA(NDIMG,NDIMA)
  420. c jacobienne d sigma / d epse
  421. real*8 JSE(NDIMG,NDIMG)
  422. c gestion de la boucle iterative
  423. integer ITER
  424. logical affiche_iter
  425. c variables logiques pour le traitement des non lineraites
  426. logical plast
  427. c indicateur de calcul du fluage dans la phase
  428. logical FLUAGE(0:NBRINC),LOG_FLU,affiche_fluage,affiche_jacobi
  429. logical affiche_reduc,affiche_gel
  430. c variable complementaires pour modif du temps de fluage
  431. real*8 DTH0,DTH1
  432. c coeff pour le fluage
  433. real*8 CMp(0:NBRINC),CTHp(0:NBRINC),CTHv(0:NBRINC)
  434. real*8 VWp(0:NBRINC),CWp(0:NBRINC),CWv(0:NBRINC)
  435. c coeff de consolidation pour Maxwell-non-lineaire
  436. c (cf Sellier, A., Vidal, T., Lacarriere, L., Cagnon, H.,
  437. c 2019. Modelling of prestressed concrete behaviour in the
  438. c range 20-40°C, in: Framcos’10. pp. 1–10.
  439. c https://doi.org/10.21012/FC10.235516)
  440. real*8 CCR(0:NBRINC,3),CCI(0:NBRINC,3),CCO(0:NBRINC,3)
  441. c coeffs de fluage pour le suysteme lineaire
  442. real*8 AFLUMR1(0:NBRINC,3),AFLUKR1(0:NBRINC),BFLUKR1(0:NBRINC)
  443. real*8 AFLUMI1(0:NBRINC,3),AFLUKI1(0:NBRINC),BFLUKI1(0:NBRINC)
  444. real*8 AFLUMO1(0:NBRINC,3),AFLUKO1(0:NBRINC),BFLUKO1(0:NBRINC)
  445. c vecteurs pour le tor viscoelastique
  446. real*8 ak(NDIMG),bk(NDIMG),am(NDIMG)
  447. real*8 ek0(NDIMG),ee0(NDIMG)
  448. c variable d echanges lors du calcul des consolidations
  449. real*8 keff,taufluk,tauflum
  450. real*8 epsm6(6),epse6(6),cc3(3)
  451. c table d echange pour les tables d increments
  452. real*8 xp3(-1:NBRINC,3)
  453. c pour les deformation anelastiques on rajoute la localisee en dernier
  454. C EPS(1-3)=INCLUSION
  455. C EPS(4-6)=INTERFACE RADIALE
  456. C EPS(7-9)=INTERFACE ORTHORADIALE
  457. C EPS(10-12)=INFINI MATRICE
  458. c vecteur deformations solutions
  459. real*8 DEPSE1(NDIMG),DEPSM1(NDIMG),DEPSK1(NDIMG)
  460. c pour les deformation anelastiques on rajoute la localisee en dernier
  461. C EPS(1-3)=INCLUSION
  462. C EPS(4-6)=INTERFACE RADIALE
  463. C EPS(7-9)=INTERFACE ORTHORADIALE
  464. C EPS(10-12)=INFINI MATRICE
  465. C EPS(13-15)=CONSTANTE MATRICE
  466. C EPS(16-18)=LOCALISEE NIVEAU HOMOGENE
  467. c vecteur solution def anelastiques
  468. real*8 DEPST1(NDIMG),DEPSC1(NDIMG)
  469. c pointeur de point et de type de contrainte
  470. integer idir
  471. c contrainte totale fin de passage
  472. real*8 sigef6(6),sigf6(6)
  473. c contrainte en base generalisees
  474. real*8 SEFFG(NDIMG),FTHG(NDIMG)
  475. c deformation plastique de traction generalisee
  476. real*8 EPSTG(NDIMG),EPSPLG(NDIMG)
  477. c increment de contrainte effective dans la matrice
  478. real*8 DSEFFG(NDIMG)
  479. c gestion du retour radial lors des refermetures de fissures
  480. real*8 reduc
  481. real*8 reduc_prov(NDIMG)
  482.  
  483.  
  484. c contrainte hydrique moyenne dans la zone non endommagee
  485. real*8 SWM
  486. c indicateur d etape de calcul plastique
  487. integer ietap
  488. c ietap=0 tir elastique, ietap=4 retour plastique
  489. integer posi
  490. c posi=0 debut d ecoulement actuel
  491. c posi=1 fin fin d ecoulement actuel
  492. c Numero de criteres actifs
  493. integer naux,numa
  494. c logique pour savoir si reduction ecoulement de gel dans fissures
  495. logical LogReducGEL
  496. c deformation chemo-chimique imposee
  497. real*8 DEPSG3(0:NBRINC,3)
  498. c convergence locale forcee
  499. logical CONV_FORCEE
  500. c poro meca gels
  501. real*8 dbgPg(0:NBRINC)
  502. c variable auxiliaire pour les directions d ecoulement
  503. real*8 AUX_DIRT(NDIMG),AUX_DFDST(NDIMG)
  504. c coeff de relaxation du residu
  505. real*8 reduc_resg
  506. c calcul de la convergence pour la difference entre 2 iterations
  507. real*8 tolerance,Rmin,Dresg
  508. integer iter_aff
  509. parameter (iter_aff=int(9*itermax/10))
  510. c traitement ecoulement gel ds fissure
  511. real*8 dbgvg_actuel,dbgvg_maxi
  512. c gestion des affichages
  513. c***********************************************************************
  514. c affichage par defaut pour inclusion3d
  515. c***********************************************************************
  516.  
  517. logical AFFICHE,AFFICHE_DEFAULT
  518. parameter (AFFICHE_DEFAULT=.false.)
  519. affiche=AFFICHE_DEFAULT
  520. affiche_fluage=AFFICHE_DEFAULT
  521. affiche_jacobi=AFFICHE_DEFAULT
  522. affiche_reduc=AFFICHE_DEFAULT
  523. affiche_iter=AFFICHE_DEFAULT
  524. affiche_gel=AFFICHE_DEFAULT
  525.  
  526. c affiche_iter=.true.
  527. c affiche_gel=.true.
  528. c affiche_reduc=.true.
  529. c affiche_jacobi=.true.
  530.  
  531. c***********************************************************************
  532.  
  533. c***********************************************************************
  534. c test de compatibilite de declarations code EF -modele INCLUSION3D
  535. if(NBRINC.ne.NBRINC3D) then
  536. print*,'Pb NBRINC.ne.NBRINC3D dans INCL3D'
  537. ierr1=1
  538. return
  539. end if
  540. c position calculee dans idvar4 des variables internes
  541. c nombre total de variables globales
  542. NBVIND3D=NBVARISOG+6*NBVARTENG
  543. c nombre de variables par phase commune a toutes les phases
  544. NBVPARP3D=NBVARISOPP+6*NBVARTENPP
  545. c nombre total de variables propres aux interfaces
  546. NBVPARI3D=NBVARISOPI+6*NBVARTENPI
  547. c nombre de variables internes totales
  548. if(NVTOT1.ne.NBVIND3D+(NBRINC3D+1)*NBVPARP3D ) then
  549. print*,'Pb de dimension nvtot1 dans incl3d'
  550. ierr1=1
  551. return
  552. end if
  553. NBROBL=NVTOT1+NBVPARI3D*NBRINC
  554. if(NBROBL.ne.NVARI) then
  555. print*,'Pb de declaration de variables dans incl3d'
  556. ierr1=1
  557. return
  558. end if
  559.  
  560. c****** indicateur 1er passage *****************************************
  561. if (var0(1).eq.0.) then
  562. ppas=.true.
  563. else
  564. ppas=.false.
  565. end if
  566. c***********************************************************************
  567.  
  568.  
  569. c***********************************************************************
  570. c chargement des parametres materiau
  571. c***********************************************************************
  572.  
  573. c print*,'xmat',xmat
  574. c initialisation du compteur de position dans la table des xmat
  575. JGM0=NBELAS3D
  576.  
  577. c **** milieu homogeneise pour les matrices de rigidite des EF *****
  578.  
  579. c Module d young homogeneisé
  580. YOUNG(-1)=xmat(1)
  581. c coefficient de Poisson homogénéisé
  582. NU(-1)=xmat(2)
  583. c coeff de dilatation thermique homogénéisé
  584. ALP(-1)=xmat(3)
  585. c nombre d inclusions
  586. NINC=int(xmat(JGM0+1))
  587. if(NINC.gt.NBRINC) then
  588. print*,'Nombre maximum de types d inclusion depasse'
  589. print*,'Nombre d inclusions:', NINC,', Nb maxi:',NBRINC
  590. ierr1=1
  591. return
  592. else if (NINC.ne.1) then
  593. print*,'Implantation realisee pour un type d inclusion'
  594. print*,'dans incl3d : NINC doit etre de 1...'
  595. ierr1=1
  596. return
  597. end if
  598. c temperature de reference pour tous les parametres
  599. TTREF=xmat(JGM0+2)
  600. c verif de compatibilité teta chargement (teta1) et ttref materiau
  601. if(ppas.and.(abs(ttref-teta1).gt.precision3d)) then
  602. print*,'Inclusion3d: TTREF non egal a TETA1'
  603. print*,'teta1',teta1,' teta2',teta2,'ttref',ttref
  604. print*,'les temperatures de reference du modele et du code'
  605. print*,'different ce qui peut induire une dilatation imprévue'
  606. print*,'des phases'
  607. ierr1=1
  608. return
  609. end if
  610. c resistance du maillon faible
  611. RTP(-1)=xmat(JGM0+3)
  612. c resistance à la refermeture du maillon faible
  613. RTI(-1)=xmat(JGM0+4)
  614. c dimension hors plan en cas de calcul 2d
  615. if (NBRTAIL3D.eq.1) then
  616. DIM3=xmat(JGM0+NBPARC3D+NBRINC3D*NBPPARP3D+1)
  617. else if (NBRTAIL3D.ne.0) then
  618. print*,'Inclusion3d: pb sur NBRTAIL3D sur cette formulation'
  619. ierr1=1
  620. return
  621. end if
  622.  
  623. c **** donnees pour toutes les phases ******************************
  624.  
  625. do IPHASE=0,NINC
  626. c debut de la table
  627. idebut=JGM0+NBPARC3D+IPHASE*NBPPARP3D
  628. c fractions volumiques des phases
  629. FRAC(IPHASE)=xmat(idebut+1)
  630. c module elastique
  631. YOUNG(IPHASE)=xmat(idebut+2)
  632. c coeff de Poisson
  633. NU(IPHASE)=xmat(idebut+3)
  634. c Coefficient de dilatation thermique directionnel
  635. ALP(IPHASE)=xmat(idebut+4)
  636. c resistance a la traction
  637. RTP(IPHASE)=xmat(idebut+5)
  638. c resistance de l interface
  639. RTI(IPHASE)=xmat(idebut+6)
  640. c saturation en eau de la phase
  641. SRW(IPHASE)=xmat(idebut+7)
  642. c potentiel de gonflement chimique de l inclusion
  643. VCH(IPHASE)=xmat(idebut+8)
  644. c temps caracteristique de la reaction chimique de l inclusion
  645. TCH(IPHASE)=xmat(idebut+9)
  646. c energie d activation de la reaction chimique de l inclusion
  647. EAC(IPHASE)=xmat(idebut+10)
  648. c seuil de teneur en eau pour la reaction chimique
  649. SRS(IPHASE)=xmat(idebut+11)
  650. c avancement chimique seuil
  651. ACHS(IPHASE)=xmat(idebut+12)
  652. c temps caracteristique du fluage a ttref
  653. TFL(IPHASE)=xmat(idebut+13)
  654. c pour enlever le fluage mettre le temps caracteristique <=0
  655. if(TFL(IPHASE).le.0.) then
  656. FLUAGE(IPHASE)=.false.
  657. else
  658. FLUAGE(IPHASE)=.true.
  659. end if
  660. c energie d activation du fluage
  661. EAF(IPHASE)=xmat(idebut+14)
  662. c coeff de fluage de Maxwell
  663. KFLM(IPHASE)=xmat(idebut+15)
  664. c coeff de fluage de Kelvin
  665. KFLK(IPHASE)=xmat(idebut+16)
  666. c prorosite
  667. PORO(IPHASE)=xmat(idebut+17)
  668. c module de Van Genuchten
  669. MVG(IPHASE)=xmat(idebut+18)
  670. c exposant de Van Genuchten
  671. NVG(IPHASE)=xmat(idebut+19)
  672. c frottement Drucker Pragger
  673. DELTA(IPHASE)=xmat(idebut+20)
  674. c dilatance
  675. BETA(IPHASE)=xmat(idebut+21)
  676. c cohesion
  677. COHE(IPHASE)=xmat(idebut+22)
  678. c coeff de pression osmotique
  679. CPHY(IPHASE)=xmat(idebut+23)
  680. c coeff de compressibilite du produit chimique forme
  681. KCH(IPHASE)=xmat(idebut+24)
  682. c resistance a la refermeture de la phase
  683. RFP(IPHASE)=xmat(idebut+25)
  684. c resistance a la refermeture de l interface
  685. RFI(IPHASE)=xmat(idebut+26)
  686. end do
  687.  
  688. c *********verif completude volumique des phases********************
  689.  
  690. xtot=0.d0
  691. do i=0,ninc
  692. c print*,'Phase ',i, 'fraction volumique: ', FRAC(i)
  693. c print*,'FRAC(',i,')',FRAC(i)
  694. xtot=xtot+FRAC(i)
  695. end do
  696.  
  697. if(abs(xtot-1.d0).gt.precision3d) then
  698. print*,'Pour le modele inclusion3d'
  699. print*,'La somme des fractions volumiques des phases est '
  700. print*,'differente de 1 : Corriger les donnees pour inclusion3d'
  701. do i=0,ninc
  702. print*,'phase:',i,'->',FRAC(i)
  703. end do
  704. print*,'total=',xtot
  705. ierr1=1
  706. return
  707. end if
  708.  
  709. if(affiche) then
  710. do i=1,nmat
  711. write(*,'(A10,I2,A2,E10.3)') 'Parametre(',i,')=',xmat(i)
  712. end do
  713. end if
  714.  
  715. c *****coherence entre cohesion et traction ************************
  716.  
  717. do iphase=0,Ninc
  718. c il faut une cohesion minimale pour chaque phase
  719. t1 = sqrt(0.3D1)
  720. Ccmin = RTP(iphase) * delta(iphase) / 0.3D1 +
  721. # t1 * RTP(iphase) / 0.3D1
  722. if(COHE(iphase).lt.Ccmin) then
  723. print*,'Pb dans incl3d avec cohesion phase:',iphase
  724. write(*,'(A47,E10.3)')
  725. # 'Cohesion minimale a saturation pour cette phase:',Ccmin
  726. ierr1=1
  727. return
  728. end if
  729. end do
  730.  
  731. c **** definition de la tolerence locales **************************
  732.  
  733. Rmin=RTP(0)
  734. do iphase=0,ninc
  735. Rmin=min(Rmin,RTP(iphase),RTI(iphase),COHE(iphase))
  736. end do
  737. if(Rmin.le.0.d0) then
  738. print*,'La tolerance locale est nulle dans incl3d'
  739. print*,'car l une des RTP,RTI ou COHE d une phase est nulle'
  740. ierr1=1
  741. return
  742. else
  743. c la tolerance de convergence locale
  744. tolerance=prec_tol*Rmin
  745. end if
  746.  
  747. c****** fin de la recuperation des parametres materiaux ****************
  748.  
  749.  
  750. c***********************************************************************
  751. c Chargement increment de deformation imposee et deformation finale
  752. c***********************************************************************
  753.  
  754. if(nstrs.lt.6) then
  755. do i=1,nstrs
  756. DEPST6(i)=deps(i)
  757. epstf6(i)=epstf(i)
  758. end do
  759. do i=nstrs+1,6
  760. DEPST6(i)=0.d0
  761. epstf6(i)=0.d0
  762. end do
  763. else
  764. do i=1,6
  765. DEPST6(i)=deps(i)
  766. epstf6(i)=epstf(i)
  767. end do
  768. end if
  769. c passage des gammas en epsilons
  770. do i=4,6
  771. DEPST6(i)=0.5d0*depst6(i)
  772. epstf6(i)=0.5d0*epstf6(i)
  773. end do
  774. c directions principales du tenseur des increments de deformations
  775. c pour le predicteur visco elastique
  776. c passage gama-> epsilon
  777. do i=1,6
  778. X6(I)=DEPST6(I)
  779. end do
  780. c stockage matrice 33
  781. call x6x33(X6,X33)
  782. c vecteurs et valeurs propres
  783. call b3_v33(X33,X3,V33)
  784. c matrice de passage inverse
  785. call traps1(V33T,V33,3)
  786. c stockage provisoire des increments de deformations principales
  787. if(affiche) then
  788. print*,'Increment de deformation mecanique'
  789. end if
  790. c deformations imposees dans leur base principale
  791. do i=1,3
  792. DEPST3(i)=X3(i)
  793. if (affiche) then
  794. write(*,'(A7,1X,I1,1X,A2,1X,E10.3)') 'depsiH(',i,')=',DEPST3(i)
  795. end if
  796. end do
  797. c stockage de la base principale de l increment de deformation
  798. do i=1,3
  799. do j=1,3
  800. V33D(i,j)=V33(i,j)
  801. V33DT(i,j)=V33T(i,j)
  802. end do
  803. end do
  804. c affichage eventuel
  805. if(affiche) then
  806. print*,'incl3d matrices de passage'
  807. call afic33(V33)
  808. call afic33(V33T)
  809. end if
  810.  
  811.  
  812. c***********************************************************************
  813. c a cette etape V33 base principale de l increment de deformation
  814. c***********************************************************************
  815.  
  816.  
  817. c***********************************************************************
  818. c Debut de la resolution non lineaire
  819. c***********************************************************************
  820.  
  821. c initialisation des indicateurs de non linearite
  822. c traction
  823. PLASTT=.false.
  824. NBRACT=0
  825. do icr=1,NTMAX
  826. LNUMCRT(icr)=0
  827. FT(icr)=0.d0
  828. Log_RTG(icr)=.false.
  829. end do
  830. c initialisation de la liste des criteres de cisaillement
  831. PLASTC=.false.
  832. NBRACC=0
  833. do icr=1,NCMAX
  834. LNUMCRC(icr)=0
  835. FC(icr)=0.d0
  836. end do
  837. c initialisation de la liste des criteres de de decollement
  838. PLASTL=.false.
  839. NBRACL=0
  840. do icr=1,NLMAX
  841. LNUMCRL(icr)=0
  842. FL(icr)=0.d0
  843. end do
  844. c indicateur global de plasticite
  845. PLAST=.false.
  846.  
  847. c ******************************************************************
  848. c Chargement des variables internes tensorielles
  849. c ******************************************************************
  850.  
  851. c **** variables internes globales ********************************
  852. if (affiche) then
  853. print*,'Variable internes debut de pas'
  854. do i=1,nvari
  855. write(*,'(A5,I3,A2,E10.3,1X,A5,I3,A2,E10.3)')
  856. # 'VAR0(',i,')=',VAR0(i),'VARF(',i,')=',VARF(i)
  857. end do
  858. end if
  859.  
  860. c on charge les var0
  861.  
  862. c *** variables internes pour le milieu homogeneisé
  863. IPHASE=-1
  864. do ICOMP=1,6
  865. c contraintes effectives homogeneisees
  866. nv3d=NBVARISOG+ICOMP
  867. SEFFR(IPHASE,ICOMP,0)=var0(nv3d)
  868. c deformation plastique traction localisee
  869. nv3d=NBVARISOG+6+ICOMP
  870. EPSTR(IPHASE,ICOMP,0)=var0(nv3d)
  871. end do
  872.  
  873.  
  874. c *** Variables internes des phases *******************************
  875.  
  876. do IPHASE=0,NINC
  877. c avancement reaction chimique
  878. nv3d=NBVIND3D+IPHASE*NBVPARP3D+1
  879. ACH(IPHASE,0)=var0(nv3d)
  880. c volume chimique formee
  881. nv3d=NBVIND3D+IPHASE*NBVPARP3D+2
  882. VGT(IPHASE,0)=var0(nv3d)
  883. c deformation thermique imposee
  884. nv3d=NBVIND3D+IPHASE*NBVPARP3D+3
  885. ETH(IPHASE,0)=var0(nv3d)
  886. c contrainte hydrique imposee
  887. nv3d=NBVIND3D+IPHASE*NBVPARP3D+4
  888. SEW(IPHASE,0)=var0(nv3d)
  889. c deformation physique imposee
  890. nv3d=NBVIND3D+IPHASE*NBVPARP3D+5
  891. EPH(IPHASE,0)=var0(nv3d)
  892. c volume de gel dans les fissures
  893. nv3d=NBVIND3D+IPHASE*NBVPARP3D+6
  894. VGF(IPHASE,0)=var0(nv3d)
  895. c contrainte chemo mecanique due au gel
  896. nv3d=NBVIND3D+IPHASE*NBVPARP3D+7
  897. bgpg(IPHASE)=-var0(nv3d)
  898. c debut de la zone memoire des tenseurs
  899. IDEBUT=NBVIND3D+IPHASE*NBVPARP3D+NBVARISOPP
  900. do ICOMP=1,6
  901. c contrainte effective radiale dans la phase
  902. nv3d=IDEBUT+ICOMP
  903. SEFFR(IPHASE,ICOMP,0)=var0(nv3d)
  904. c deformation elastique (radiale pour inclusions infini pour matrice)
  905. nv3d=IDEBUT+6+ICOMP
  906. EPSER(IPHASE,ICOMP,0)=var0(nv3d)
  907. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  908. EPSER0(IPHASE,ICOMP,0)=var0(nv3d)
  909. c deformation maxwell (radiale pour inclusions infini pour matrice)
  910. nv3d=IDEBUT+12+ICOMP
  911. EPSMR(IPHASE,ICOMP,0)=var0(nv3d)
  912. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  913. EPSMR0(IPHASE,ICOMP,0)=var0(nv3d)
  914. c deformation Kelvin (radiale pour inclusions infini pour matrice)
  915. nv3d=IDEBUT+18+ICOMP
  916. EPSKR(IPHASE,ICOMP,0)=var0(nv3d)
  917. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  918. EPSKR0(IPHASE,ICOMP,0)=var0(nv3d)
  919. c deformations plastiques de traction (radiale pour inclusions,infini pour matrice)
  920. nv3d=IDEBUT+24+ICOMP
  921. EPSTR(IPHASE,ICOMP,0)=var0(nv3d)
  922. c deformations plastiques de cisaillement (radiale pour inclusions,infini pour matrice)
  923. nv3d=IDEBUT+30+ICOMP
  924. EPSCR(IPHASE,ICOMP,0)=var0(nv3d)
  925. c deformations plastiques de traction localisee (decollement)
  926. nv3d=IDEBUT+36+ICOMP
  927. EPSLR(IPHASE,ICOMP,0)=var0(nv3d)
  928. c contrainte moyenne non endommagee (radiale pour inclusions,infini pour matrice)
  929. nv3d=IDEBUT+42+ICOMP
  930. STOTR(IPHASE,ICOMP,0)=var0(nv3d)
  931. end do
  932.  
  933. end do
  934.  
  935. c ********Variables internes des interfaces ***********************
  936.  
  937. do IPHASE=1,NINC
  938. do ICOMP=1,6
  939. c contraintes effectives radiales(radiale pour inclusions, infini pour matrice)
  940. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+ICOMP
  941. SEFFI(IPHASE,ICOMP,0)=var0(nv3d)
  942. c contraintes effectives orthoradiales(radiale pour inclusions infini pour matrice)
  943. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+6+ICOMP
  944. SEFFO(IPHASE,ICOMP,0)=var0(nv3d)
  945. c deformation radiale elastique a l interface
  946. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+12+ICOMP
  947. EPSEI(IPHASE,ICOMP,0)=var0(nv3d)
  948. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  949. EPSEI0(IPHASE,ICOMP,0)=var0(nv3d)
  950. c deformation orthoradiale elastique a l interface
  951. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+18+ICOMP
  952. EPSEO(IPHASE,ICOMP,0)=var0(nv3d)
  953. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  954. EPSEO0(IPHASE,ICOMP,0)=var0(nv3d)
  955. c deformation radiale maxwell a l interface
  956. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+24+ICOMP
  957. EPSMI(IPHASE,ICOMP,0)=var0(nv3d)
  958. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  959. EPSMI0(IPHASE,ICOMP,0)=var0(nv3d)
  960. c deformation orthoradiale maxwell a l interface
  961. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+30+ICOMP
  962. EPSMO(IPHASE,ICOMP,0)=var0(nv3d)
  963. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  964. EPSMO0(IPHASE,ICOMP,0)=var0(nv3d)
  965. c deformation kelvin radiale a l interface
  966. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+36+ICOMP
  967. EPSKI(IPHASE,ICOMP,0)=var0(nv3d)
  968. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  969. EPSKI0(IPHASE,ICOMP,0)=var0(nv3d)
  970. c deformation kelvin orthoradiale axisymetrique a l interface
  971. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+42+ICOMP
  972. EPSKO(IPHASE,ICOMP,0)=var0(nv3d)
  973. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  974. EPSKO0(IPHASE,ICOMP,0)=var0(nv3d)
  975. c deformation plastique radiale traction a l interface
  976. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+48+ICOMP
  977. EPSTI(IPHASE,ICOMP,0)=var0(nv3d)
  978. c deformation plastique orthoradiale a l interface
  979. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+54+ICOMP
  980. EPSTO(IPHASE,ICOMP,0)=var0(nv3d)
  981. c deformation plastique cisaillement radiale axisymetrique a l interface
  982. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+60+ICOMP
  983. EPSCI(IPHASE,ICOMP,0)=var0(nv3d)
  984. c deformation plastique cisaillement orthoradiale a l interface
  985. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+66+ICOMP
  986. EPSCO(IPHASE,ICOMP,0)=var0(nv3d)
  987. end do
  988. end do
  989.  
  990. c ******************************************************************
  991. c Construction des Jacobiennes : deps elast/deps imp
  992. c ******************************************************************
  993.  
  994. if (NINC.eq.1) then
  995.  
  996. c ----- Module Elastiques-----------------------------------------
  997.  
  998. do iphase=0,ninc
  999. c module de compressibilite
  1000. MK(IPHASE)=YOUNG(IPHASE)/3.d0/(1.d0-2.d0*NU(IPHASE))
  1001. c module de cisaillement
  1002. MG(IPHASE)=YOUNG(IPHASE)/2.d0/(1.d0+NU(IPHASE))
  1003. end do
  1004.  
  1005. c ---- relation dsigma effectif/depse en variables generalisee ---
  1006. call jslc3d(NBRINC,NDIMG,NINC,MK,MG,FRAC,JSE,ERR1,AFFICHE)
  1007. if(err1.eq.1) then
  1008. print*,'Pb 2 dans incl3d lors du calcul de JSE'
  1009. ierr1=1
  1010. return
  1011. end if
  1012. if(affiche_jacobi) then
  1013. print*,'Dans incl3d, JSE pour 1 inclusion'
  1014. do i=1,12
  1015. write (*,12) (JSE(i,j),j=1,12)
  1016. 12 format (12E10.3)
  1017. end do
  1018. end if
  1019.  
  1020. else
  1021.  
  1022. print*,'Inclusion 3d limite a 1 type d inclusion:'
  1023. ierr1=1
  1024. return
  1025.  
  1026. end if
  1027.  
  1028.  
  1029. c ******************************************************************
  1030. c Calcul des variables physico-chimiques fin de pas de temps
  1031. c ******************************************************************
  1032.  
  1033. c recup temperature
  1034. c temperature moyenne sur la pas de temps
  1035. teta=0.5d0*(teta1+teta2)
  1036.  
  1037. c ----- variables scalaires propres aux phases ---------------------
  1038.  
  1039. do IPHASE=0,NINC
  1040.  
  1041.  
  1042.  
  1043. c --- avancement chimique --------------------------------------
  1044.  
  1045. call avch3d(VCH(IPHASE),TCH(IPHASE),EAC(IPHASE),
  1046. # TTREF,SRW(IPHASE),SRS(IPHASE),teta1,teta2,dt,
  1047. # ACH(IPHASE,0),ACH(IPHASE,1),ierr1)
  1048. if(ierr1.eq.1) then
  1049. print*,'Pb calcul chimique phase', IPHASE ,'ds incl3d'
  1050. return
  1051. end if
  1052. DACH(IPHASE)=ACH(IPHASE,1)-ACH(IPHASE,0)
  1053.  
  1054. c --- deformation chimique imposee fin de pas (Vg eff) ---------
  1055.  
  1056. if((ACH(IPHASE,1)-ACH(IPHASE,0)).gt.0.) then
  1057. if(ACH(IPHASE,0).gt.ACHS(IPHASE)) then
  1058. DVGT(IPHASE)=(ACH(IPHASE,1)-ACH(IPHASE,0))*VCH(IPHASE)
  1059. else if (ACH(IPHASE,1).gt.ACHS(IPHASE)) then
  1060. DVGT(IPHASE)=(ACH(IPHASE,1)-ACHS(IPHASE))*VCH(IPHASE)
  1061. else
  1062. DVGT(IPHASE)=0.d0
  1063. end if
  1064. else
  1065. DVGT(IPHASE)=0.d0
  1066. end if
  1067.  
  1068. if(DVGT(IPHASE).gt.0.d0) then
  1069. c normalisation de l increment
  1070. xnorm=(1.d0-ACHS(IPHASE))**(-1)
  1071. DVGT(IPHASE)=DVGT(IPHASE)*xnorm
  1072. else
  1073. DVGT(IPHASE)=0.d0
  1074. end if
  1075.  
  1076. c -- actualisation volume de gel ds les phases -----------------
  1077.  
  1078. c volume de gel cree par phase
  1079. VGT(IPHASE,1)=VGT(IPHASE,0)+DVGT(IPHASE)
  1080. c Approximation des coeffs de Biot des gels dans les phases
  1081. C bg(iphase,0)=2.d0*VGT(IPHASE,0)/(1.d0+VGT(IPHASE,0))
  1082. C bg(iphase,1)=2.d0*VGT(IPHASE,1)/(1.d0+VGT(IPHASE,1))
  1083. c calcul exact des coeffs de Biot pour le pas
  1084. call bitm3d(MK(IPHASE),MG(IPHASE),VGT(IPHASE,0),
  1085. # bg(iphase,0),err1,precision3d)
  1086. call bitm3d(MK(IPHASE),MG(IPHASE),VGT(IPHASE,1),
  1087. # bg(iphase,1),err1,precision3d)
  1088. c calcul exact des modules de Biot
  1089. call mbio3d(MK(IPHASE),VGT(IPHASE,0),bg(iphase,0),
  1090. # KCH(IPHASE),Mbg(Iphase,0),err1)
  1091. call mbio3d(MK(IPHASE),VGT(IPHASE,1),bg(iphase,1),
  1092. # KCH(IPHASE),Mbg(Iphase,1),err1)
  1093.  
  1094. c -- increments du volume poro-meca par phase -----------------
  1095. if(VGT(iphase,1).ne.0.d0) then
  1096. dbgVg(iphase)=(bg(iphase,1)*Mbg(Iphase,1)*VGT(iphase,1)
  1097. # -bg(iphase,0)*Mbg(Iphase,0)*VGT(IPHASE,0))/Mbg(Iphase,1)
  1098. else
  1099. dbgVg(iphase)=0.d0
  1100. end if
  1101. c variation de pression lors du tir viscoelastique
  1102. dbgpg(iphase)=Mbg(Iphase,1)*dbgVg(iphase)
  1103. bgpg(iphase)=bgpg(iphase)+dbgpg(iphase)
  1104.  
  1105. c - volume initial de gel ds les fissures ----------------------
  1106. VGF(iphase,1)=VGF(iphase,0)
  1107.  
  1108. c - indicateurs de prise en compte du couplage chemo-plastique -
  1109.  
  1110. if(VGT(IPHASE,1).eq.0.d0) then
  1111. c on desactive la migration vers les fissures pour cette phase
  1112. GCH(IPHASE)=0.d0
  1113. else
  1114. c la migration des produits chimiques vers les fissures est
  1115. c autorisee pour cette phase
  1116. GCH(IPHASE)=1.d0
  1117. end if
  1118. c dans les deux cas l increment de volume de fissure remplies de
  1119. c de gel est initialise a zero
  1120. dbgVd(iphase)=0.d0
  1121.  
  1122.  
  1123. c --- deformation thermique fin de pas--------------------------
  1124.  
  1125. c (attention même TTREF que pour le reste)
  1126. ETH(IPHASE,1)=(ALP(IPHASE)-ALP(-1))*(teta2-TTREF)
  1127. c increment de def thermique pour la phase
  1128. DETH(IPHASE)=ETH(IPHASE,1)-ETH(IPHASE,0)
  1129.  
  1130. c --- contrainte hydrique si non saturee -----------------------
  1131.  
  1132. call epsw3d(PORO(IPHASE),SRW(IPHASE),MVG(IPHASE),
  1133. # NVG(IPHASE),MK(IPHASE),MG(IPHASE),EPSMW,SEW(IPHASE,1),IERR1)
  1134. c sew=-biot*sw*pw=+biot*sw*pc si pg=0
  1135. if(err1.eq.1)then
  1136. print*,'Pb 1 calcul du retrait dans inclusion 3d'
  1137. ierr1=1
  1138. return
  1139. end if
  1140. c increment de def equivalente hydrique (attention c est bien
  1141. c une depression capillaire qui est appliquee niveau statique
  1142. DSEW(IPHASE)=SEW(IPHASE,1)-SEW(IPHASE,0)
  1143. dbwpw(IPHASE)=-DSEW(IPHASE)
  1144.  
  1145. c --- deformation physique liee la variation du volume d eau -----
  1146.  
  1147. EPH(IPHASE,1)=-CPHY(IPHASE)*
  1148. # PORO(IPHASE)*(1.d0-SRW(IPHASE))/3.d0
  1149. c increment de def osmotique
  1150. DEPH(IPHASE)=EPH(IPHASE,1)-EPH(IPHASE,0)
  1151.  
  1152. end do
  1153.  
  1154. c ----- fin d actualisation physico-chimique ----------------------
  1155.  
  1156. c ---- relation depse / depsa en variables generalisees -----------
  1157.  
  1158. call jelc3d(NBRINC,NINC,NDIMG,NDIMA,FRAC,MK,MG,MBG,JEA,
  1159. # affiche,err1)
  1160. if(affiche_jacobi) then
  1161. print*,'Dans incl3d, JEA pour 1 inclusion'
  1162. do i=1,NDIMG
  1163. write (*,11) (JEA(i,j),j=1,NDIMA)
  1164. 11 format (24E10.3)
  1165. end do
  1166. end if
  1167.  
  1168. c ------------------------------------------------------------------
  1169.  
  1170.  
  1171. c***********************************************************************
  1172. c CALCUL de L ECOULEMENT
  1173. c***********************************************************************
  1174.  
  1175.  
  1176. c ---- initialisation du compteur du nombre d iterations locale ----
  1177. iter=0
  1178. c choix de l etape de calcul (tir viso-elastique si ietap=0)
  1179. ietap=0
  1180. c reduction du residu lors du retour radial
  1181. reduc_resg=1.0d0
  1182. c residu global
  1183. resgp=0.d0
  1184. resga=0.d0
  1185. dresg=0.d0
  1186.  
  1187. c --- compteur d iterations pour l ecoulement local ----------------
  1188. 15 iter=iter+1
  1189.  
  1190.  
  1191. c --- gestion nombre maxi d iterations -----------------------------
  1192. if(iter.lt.itermax) then
  1193. c iteration normale pas de convergence forcee
  1194. CONV_FORCEE=.false.
  1195. if((iter.ge.iter_aff).and.(.not. affiche_iter))then
  1196. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  1197. # 'Inclusion3d Iteration :',iter,
  1198. # 'Residu global:',RESGP,
  1199. # 'D(RESG):',Dresg,
  1200. # 'Tolerance',tolerance
  1201. end if
  1202. if(iter.ge.(itermax-2))then
  1203. c la non convergence approche on commence a afficher des infos
  1204. affiche=.true.
  1205. end if
  1206. else if (iter.eq.itermax) then
  1207. print*,'Nbre max sous iterations atteint '
  1208. print*,'dans INCL3D',iter
  1209. print*,'Residus locaux',RESGP
  1210. affiche=.true.
  1211. c on passe en convergence forcee
  1212. CONV_FORCEE=.true.
  1213. plast=.false.
  1214. plastt=.false.
  1215. plastc=.false.
  1216. plastl=.false.
  1217. c on procede a un dernier calcul visco elastique avant de sortir
  1218. ietap=0
  1219. else
  1220. ierr1=1
  1221. return
  1222. end if
  1223.  
  1224. c ******************************************************************
  1225. c Decomposition des variables tensorielles en partie diagonale
  1226. c et partie complémentaire dans la base principale de travail : v33
  1227. c ******************************************************************
  1228.  
  1229. c niveau macro
  1230. iphase=-1
  1231. call dcmp3d(IPHASE,0,NBRINC,SEFFR,SEFFR_PRIN,SEFFR_COMP,
  1232. # v33,v33t,AFFICHE,'SEFFR')
  1233. call dcmp3d(IPHASE,0,NBRINC,EPSTR,EPSTR_PRIN,EPSTR_COMP,
  1234. # v33,v33t,AFFICHE,'EPSTR')
  1235. do iphase=0,ninc
  1236. c projection et decomposition par phase
  1237. call dcmp3d(IPHASE,0,NBRINC,SEFFR,SEFFR_PRIN,SEFFR_COMP,
  1238. # v33,v33t,AFFICHE,'SEFFR')
  1239. call dcmp3d(IPHASE,0,NBRINC,EPSER,EPSER_PRIN,EPSER_COMP,
  1240. # v33,v33t,AFFICHE,'EPSER')
  1241. call dcmp3d(IPHASE,0,NBRINC,EPSMR,EPSMR_PRIN,EPSMR_COMP,
  1242. # v33,v33t,AFFICHE,'EPSMR')
  1243. call dcmp3d(IPHASE,0,NBRINC,EPSKR,EPSKR_PRIN,EPSKR_COMP,
  1244. # v33,v33t,AFFICHE,'EPSKR')
  1245. call dcmp3d(IPHASE,0,NBRINC,EPSTR,EPSTR_PRIN,EPSTR_COMP,
  1246. # v33,v33t,AFFICHE,'EPSTR')
  1247. call dcmp3d(IPHASE,0,NBRINC,EPSCR,EPSCR_PRIN,EPSCR_COMP,
  1248. # v33,v33t,AFFICHE,'EPSCR')
  1249. call dcmp3d(IPHASE,0,NBRINC,EPSLR,EPSLR_PRIN,EPSLR_COMP,
  1250. # v33,v33t,AFFICHE,'EPSLR')
  1251. if(iphase.ge.1) then
  1252. c projection et decomposition des composantes radiales d interface
  1253. call dcmp3d(IPHASE,0,NBRINC,SEFFI,SEFFI_PRIN,SEFFI_COMP,
  1254. # v33,v33t,AFFICHE,'SEFFI')
  1255. call dcmp3d(IPHASE,0,NBRINC,EPSEI,EPSEI_PRIN,EPSEI_COMP,
  1256. # v33,v33t,AFFICHE,'EPSEI')
  1257. call dcmp3d(IPHASE,0,NBRINC,EPSMI,EPSMI_PRIN,EPSMI_COMP,
  1258. # v33,v33t,AFFICHE,'EPSMI')
  1259. call dcmp3d(IPHASE,0,NBRINC,EPSKI,EPSKI_PRIN,EPSKI_COMP,
  1260. # v33,v33t,AFFICHE,'EPSKI')
  1261. call dcmp3d(IPHASE,0,NBRINC,EPSTI,EPSTI_PRIN,EPSTI_COMP,
  1262. # v33,v33t,AFFICHE,'EPSTI')
  1263. call dcmp3d(IPHASE,0,NBRINC,EPSCI,EPSCI_PRIN,EPSCI_COMP,
  1264. # v33,v33t,AFFICHE,'EPSCI')
  1265. c projection et decomposition des composantes orthoradiales d interface
  1266. call dcmp3d(IPHASE,0,NBRINC,SEFFO,SEFFO_PRIN,SEFFO_COMP,
  1267. # v33,v33t,AFFICHE,'SEFFO')
  1268. call dcmp3d(IPHASE,0,NBRINC,EPSEO,EPSEO_PRIN,EPSEO_COMP,
  1269. # v33,v33t,AFFICHE,'EPSEO')
  1270. call dcmp3d(IPHASE,0,NBRINC,EPSMO,EPSMO_PRIN,EPSMO_COMP,
  1271. # v33,v33t,AFFICHE,'EPSMO')
  1272. call dcmp3d(IPHASE,0,NBRINC,EPSKO,EPSKO_PRIN,EPSKO_COMP,
  1273. # v33,v33t,AFFICHE,'EPSKO')
  1274. call dcmp3d(IPHASE,0,NBRINC,EPSTO,EPSTO_PRIN,EPSTO_COMP,
  1275. # v33,v33t,AFFICHE,'EPSTO')
  1276. call dcmp3d(IPHASE,0,NBRINC,EPSCO,EPSCO_PRIN,EPSCO_COMP,
  1277. # v33,v33t,AFFICHE,'EPSCO')
  1278. end if
  1279. end do
  1280.  
  1281. c ******************************************************************
  1282. c Coeffs de Fluage dans la base d ecoulement V33
  1283. c ******************************************************************
  1284.  
  1285. if((iter.eq.1).or.(ietap.ge.4).or.(CONV_FORCEE)) then
  1286.  
  1287. c reevaluation des coeff de fluage le cas echeant
  1288. LOG_FLU=.false.
  1289. do iphase=0,ninc
  1290.  
  1291. c indicateur de presence d au moins une phase visco elastique
  1292. LOG_FLU=LOG_FLU.or.FLUAGE(IPHASE)
  1293.  
  1294. c -- coeffs fluage dans les zones homogenes des phases--------
  1295.  
  1296. if(FLUAGE(IPHASE)) then
  1297.  
  1298. c --- Maxwell consolidant ----------------------------------
  1299.  
  1300. c - recuperation des deformation de maxwell et elastiques
  1301. c debut de pas de temps
  1302. do ICOMP=1,6
  1303. epse6(ICOMP)=EPSER0(IPHASE,ICOMP,0)
  1304. epsm6(ICOMP)=EPSMR0(IPHASE,ICOMP,0)
  1305. end do
  1306. c - initialisation des coeff modificateurs du potentiel
  1307. c - pas de fluage non lin a cette echelle
  1308. CMp(IPHASE)=1.d0
  1309. c - prise en compte de la saturation
  1310. VWp(IPHASE)=PORO(IPHASE)*SRW(IPHASE)
  1311. c -effet de l eau sur la vitesse de fluage
  1312. CWv(iphase)=SRW(IPHASE)
  1313. c le coeff d amplification hydrique est inactif
  1314. CWp(IPHASE)=1.d0
  1315. c - pas d endo thermique
  1316. DTH0=0.d0
  1317. DT80=0.d0
  1318. EADTH=0.d0
  1319. c - prise en compte de la temperature sur la vitesse
  1320. c calcul des coeff thermiques de fluage de Maxwell
  1321. c (tetas=81>80 evite de calculer dth)
  1322. call thrm3d(teta1,EADTH,81.,TTREF,DT80,
  1323. # DTH0,DTH1,CTHP(IPHASE),CTHV(IPHASE),PORO(IPHASE),
  1324. # VWp(IPHASE),EAF(IPHASE))
  1325. c activation de l affichage pour les coeffs de fluage
  1326. if(affiche_fluage) then
  1327. print*,'Calcul des coeffs de fluage dans incl3d'
  1328. write(*,'(A39,I2,1X,A3,E10.3)')
  1329. # 'Calcul coeffs fluage radial dans phase:',
  1330. # iphase,'Dt=',dt
  1331. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1332. # 'CTHP(',IPHASE,')=',CTHP(IPHASE),
  1333. # 'CTHV(',IPHASE,')=',CTHV(IPHASE)
  1334. end if
  1335. c - Consolidation de Maxwell-non-lineaire
  1336. call conso3d(keff,KFLM(IPHASE),1.d0,epsm6,epse6,cc3,
  1337. # v33,CMp(IPHASE),CTHp(IPHASE),CTHv(IPHASE),CWp(IPHASE))
  1338. if(affiche_fluage) then
  1339. write(*,'(2(A5,I2,A2,E10.3,1X),A5,E10.3)')
  1340. # 'CMP(',IPHASE,')=',CMp(IPHASE),
  1341. # 'CWv(',IPHASE,')=',CWv(IPHASE),
  1342. # 'Keff',keff
  1343. do i=1,3
  1344. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1345. end do
  1346. end if
  1347. c - temps caracteristique pour le fluage de Maxwell
  1348. tauflum=(TFL(IPHASE)*CWv(iphase))/CTHV(IPHASE)
  1349. do ICOMP=1,3
  1350. CCR(IPHASE,ICOMP)=cc3(ICOMP)
  1351. c coeff de fluage de Maxwell
  1352. AFLUMR1(IPHASE,ICOMP)=
  1353. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1354. if(affiche_fluage) then
  1355. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1356. # 'AFLUMR1(',IPHASE,',',ICOMP,')=',
  1357. # AFLUMR1(IPHASE,ICOMP)
  1358. end if
  1359. end do
  1360.  
  1361. c --- Kelvin -----------------------------------------------
  1362.  
  1363. c Temps caracteristique pour le fluage de Kelvin
  1364. taufluk=(TFL(IPHASE)*CWv(IPHASE))/CTHv(IPHASE)
  1365. BFLUKR1(IPHASE)=1.d0-exp(-dt/taufluk)
  1366. AFLUKR1(IPHASE)=KFLK(IPHASE)*BFLUKR1(IPHASE)
  1367. if(affiche_fluage) then
  1368. write(*,'(A8,I2,A2,E10.3)')
  1369. # 'AFLUKR1(',IPHASE,')=',AFLUKR1(IPHASE)
  1370. write(*,'(A8,I2,A2,E10.3)')
  1371. # 'BFLUKR1(',IPHASE,')=',BFLUKR1(IPHASE)
  1372. end if
  1373.  
  1374. else
  1375.  
  1376. c --- Pas de Maxwell pour cette phase ----------------------
  1377.  
  1378. do ICOMP=1,3
  1379. AFLUMR1(IPHASE,ICOMP)=0.d0
  1380. end do
  1381.  
  1382. c --- Pas de Kelvin pour cette phase -----------------------
  1383.  
  1384. BFLUKR1(IPHASE)=0.d0
  1385. AFLUKR1(IPHASE)=0.d0
  1386.  
  1387. end if
  1388.  
  1389. c --- coeffs fluage dans les zones homogenes des phases ------
  1390.  
  1391. if((IPHASE.ne.0).and.FLUAGE(0)) then
  1392.  
  1393. c -- composante radiale de la deformation a l interface -----
  1394.  
  1395. c -- Maxwell interfaces radiales-----------------------------
  1396.  
  1397. do ICOMP=1,6
  1398. epse6(ICOMP)=EPSEI0(IPHASE,ICOMP,0)
  1399. epsm6(ICOMP)=EPSMI0(IPHASE,ICOMP,0)
  1400. end do
  1401. c attention ici c est la matrice qui flue
  1402. if(affiche_fluage) then
  1403. write(*,'(A38,I2,1X,A3,E10.3)')
  1404. # 'Calcul coeffs fluage radial interface:',
  1405. # iphase,'Dt=',dt
  1406. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1407. # 'CTHP(',0,')=',CTHP(0),
  1408. # 'CTHV(',0,')=',CTHV(0)
  1409. end if
  1410. c - etat initial de consolidation de l interface radiale
  1411. call conso3d(keff,KFLM(0),1.d0,epsm6,epse6,cc3,
  1412. # V33,CMp(0),CTHp(0),CTHv(0),CWp(0))
  1413. if(affiche_fluage) then
  1414. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3,A4,1X,E10.3)')
  1415. # 'CMP(',0,')=',CMp(0),
  1416. # 'CWp(',0,')=',CWp(0),
  1417. # 'Keff',keff
  1418. do i=1,3
  1419. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1420. end do
  1421. end if
  1422. c - temps caracteristique pour le fluage de Maxwell
  1423. tauflum=(TFL(0)*CWv(0))/CTHV(0)
  1424. do ICOMP=1,3
  1425. CCI(IPHASE,ICOMP)=cc3(ICOMP)
  1426. c coeff de fluage de Maxwell
  1427. AFLUMI1(IPHASE,ICOMP)=
  1428. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1429. if(affiche_fluage) then
  1430. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1431. # 'AFLUMI1(',IPHASE,',',ICOMP,')=',AFLUMI1(IPHASE,ICOMP)
  1432. end if
  1433. end do
  1434.  
  1435. c --- Kelvin interfaces radiales-----------------------------
  1436.  
  1437. c Temps caracteristique pour le fluage de Kelvin
  1438. taufluk=(TFL(0)*CWv(0))/CTHv(0)
  1439. BFLUKI1(IPHASE)=1.d0-exp(-dt/taufluk)
  1440. AFLUKI1(IPHASE)=KFLK(0)*BFLUKI1(IPHASE)
  1441. if(affiche_fluage) then
  1442. write(*,'(A8,I2,A2,E10.3)')
  1443. # 'AFLUKI1(',IPHASE,')=',AFLUKI1(IPHASE)
  1444. write(*,'(A8,I2,A2,E10.3)')
  1445. # 'BFLUKI1(',IPHASE,')=',BFLUKI1(IPHASE)
  1446. end if
  1447.  
  1448. c -- Maxwell interface orthoradiale -------------------------
  1449.  
  1450. do ICOMP=1,6
  1451. epse6(ICOMP)=EPSEO0(IPHASE,ICOMP,0)
  1452. epsm6(ICOMP)=EPSMO0(IPHASE,ICOMP,0)
  1453. end do
  1454. c attention ici c est la matrice qui flue
  1455. c pas de fluage non lin aux interfaces
  1456. if(affiche_fluage) then
  1457. write(*,'(A42,I2,1X,A3,E10.3)')
  1458. # 'Calcul coeffs fluage orthoradial interface:',
  1459. # iphase,'Dt=',dt
  1460. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1461. # 'CTHP(',0,')=',CTHP(0),
  1462. # 'CTHV(',0,')=',CTHV(0)
  1463. end if
  1464. c etat initial de consolidation orthoradiale de l interface
  1465. call conso3d(keff,KFLM(0),1.d0,epsm6,epse6,cc3,
  1466. # V33,CMp(0),CTHp(0),CTHv(0),CWp(0))
  1467. if(affiche_fluage) then
  1468. write(*,'(2(A5,I2,A2,E10.3,1X),A5,E10.3)')
  1469. # 'CMP(',0,')=',CMp(0),
  1470. # 'CWp(',0,')=',CWp(0),
  1471. # 'Keff',keff
  1472. do i=1,3
  1473. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1474. end do
  1475. end if
  1476. do ICOMP=1,3
  1477. CCO(IPHASE,ICOMP)=cc3(ICOMP)
  1478. c coeff de fluage de Maxwell
  1479. AFLUMO1(IPHASE,ICOMP)=
  1480. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1481. if(affiche_fluage) then
  1482. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1483. # 'AFLUMO1(',IPHASE,',',ICOMP,')=',
  1484. # AFLUMO1(IPHASE,ICOMP)
  1485. end if
  1486. end do
  1487.  
  1488. c --- Kelvin interface orthoradiale--------------------------
  1489.  
  1490. c - idem radial interface
  1491. BFLUKO1(IPHASE)=BFLUKI1(IPHASE)
  1492. AFLUKO1(IPHASE)=AFLUKI1(IPHASE)
  1493. if(affiche_fluage) then
  1494. write(*,'(A8,I2,A2,E10.3)')
  1495. # 'AFLUKO1(',IPHASE,')=',AFLUKO1(IPHASE)
  1496. write(*,'(A8,I2,A2,E10.3)')
  1497. # 'BFLUKO1(',IPHASE,')=',BFLUKO1(IPHASE)
  1498. end if
  1499.  
  1500. else if(.not.fluage(0)) then
  1501.  
  1502.  
  1503. do ICOMP=1,3
  1504.  
  1505. c - Pas de fluage de Maxwell aux interfaces --------------
  1506.  
  1507. AFLUMI1(IPHASE,ICOMP)=0.D0
  1508. AFLUMO1(IPHASE,ICOMP)=0.d0
  1509. end do
  1510.  
  1511. c - Pas de fluage de Kelvin aux interfaces ------------------
  1512.  
  1513. AFLUKI1(IPHASE)=0.D0
  1514. AFLUKO1(IPHASE)=0.d0
  1515. BFLUKI1(IPHASE)=0.D0
  1516. BFLUKO1(IPHASE)=0.d0
  1517.  
  1518. end if
  1519.  
  1520. c retour a l affichage par defaut
  1521. if(affiche_fluage.and.LOG_FLU) then
  1522. print*,'Dans incl3d Valider pour continuer'
  1523. read*
  1524. end if
  1525.  
  1526. end do
  1527.  
  1528.  
  1529. c -- passage des coefficients viscoelastique en espace generalise-
  1530.  
  1531. do IPHASE=0,NINC
  1532. c placement du pointeur
  1533. If(IPHASE.eq.0) then
  1534. IDEBUT=9*NINC
  1535. else
  1536. IDEBUT=(IPHASE-1)*9
  1537. end if
  1538. c remplissage des vecteurs
  1539. do ICOMP=1,3
  1540. c -phase
  1541. ak(IDEBUT+ICOMP)=AFLUKR1(IPHASE)
  1542. bk(IDEBUT+ICOMP)=BFLUKR1(IPHASE)
  1543. am(IDEBUT+ICOMP)=AFLUMR1(IPHASE,ICOMP)
  1544. if(iter.eq.1) then
  1545. ek0(IDEBUT+ICOMP)=EPSKR_PRIN(IPHASE,ICOMP)
  1546. ee0(IDEBUT+ICOMP)=EPSER_PRIN(IPHASE,ICOMP)
  1547. else
  1548. ek0(IDEBUT+ICOMP)=0.d0
  1549. ee0(IDEBUT+ICOMP)=0.d0
  1550. end if
  1551. if(IPHASE.ge.1) then
  1552. c -interface direction radiale
  1553. ak(IDEBUT+3+ICOMP)=AFLUKI1(IPHASE)
  1554. bk(IDEBUT+3+ICOMP)=BFLUKI1(IPHASE)
  1555. am(IDEBUT+3+ICOMP)=AFLUMI1(IPHASE,ICOMP)
  1556. if(iter.eq.1) then
  1557. ek0(IDEBUT+3+ICOMP)=EPSKI_PRIN(IPHASE,ICOMP)
  1558. ee0(IDEBUT+3+ICOMP)=EPSEI_PRIN(IPHASE,ICOMP)
  1559. else
  1560. ek0(IDEBUT+3+ICOMP)=0.d0
  1561. ee0(IDEBUT+3+ICOMP)=0.d0
  1562. end if
  1563. c -interface direction otho-radiale
  1564. ak(IDEBUT+6+ICOMP)=AFLUKO1(IPHASE)
  1565. bk(IDEBUT+6+ICOMP)=BFLUKO1(IPHASE)
  1566. am(IDEBUT+6+ICOMP)=AFLUMO1(IPHASE,ICOMP)
  1567. if(iter.eq.1) then
  1568. ek0(IDEBUT+6+ICOMP)=EPSKO_PRIN(IPHASE,ICOMP)
  1569. ee0(IDEBUT+6+ICOMP)=EPSEO_PRIN(IPHASE,ICOMP)
  1570. else
  1571. ek0(IDEBUT+6+ICOMP)=0.d0
  1572. ee0(IDEBUT+6+ICOMP)=0.d0
  1573. end if
  1574. end if
  1575. end do
  1576. end do
  1577. if(affiche_fluage) then
  1578. print*,'Coeff de couplage visco elastiques'
  1579. do icomp=1,NDIMG
  1580. write(*,'(A3,I2,A2,E10.3)') 'AK(',icomp,')=',ak(icomp)
  1581. end do
  1582. do icomp=1,NDIMG
  1583. write(*,'(A3,I2,A2,E10.3)') 'BK(',icomp,')=',bk(icomp)
  1584. end do
  1585. do icomp=1,NDIMG
  1586. write(*,'(A3,I2,A2,E10.3)') 'AM(',icomp,')=',am(icomp)
  1587. end do
  1588. do icomp=1,NDIMG
  1589. write(*,'(A3,I2,A2,E10.3)') 'EE(',icomp,')=',ee0(icomp)
  1590. end do
  1591. do icomp=1,NDIMG
  1592. write(*,'(A3,I2,A2,E10.3)') 'EK(',icomp,')=',ek0(icomp)
  1593. end do
  1594. end if
  1595. end if
  1596.  
  1597. c --- fin de l actualisation des coeff de fluage -------------------
  1598.  
  1599.  
  1600. c --- gonflement imposee homogene orthotrope des phases ------------
  1601.  
  1602. do iphase=0,NINC
  1603. if(affiche_gel) then
  1604. print*,'Inclusion3d GCH(',iphase,')=',GCH(iphase)
  1605. end if
  1606. end do
  1607.  
  1608. c --- fin maj gonflement imposee des phases ------------------------
  1609.  
  1610.  
  1611. c ******************************************************************
  1612. c Tir ou ecoulement pour le cas avec un seul type d inclusion
  1613. c ******************************************************************
  1614.  
  1615. if(affiche_gel) then
  1616. do iphase=0,ninc
  1617. write(*,'(A23,I2,A2,E10.3,2(1X,A10,I2,A2,E10.3))')
  1618. # 'Dans incl3d dbgvg(',iphase,')=',dbgvg(iphase),
  1619. # 'Gch(',iphase,')=',Gch(iphase),
  1620. # 'bg(',iphase,')=',bg(iphase,1)
  1621. end do
  1622. end if
  1623.  
  1624. c tir (ietap=0) ou ecoulement plastique (ietap =4)
  1625.  
  1626. call lcls3d(IETAP,NGF,ERR1,AA,XX,A2,BB,AAI,BBI,AAP,IPZERO,
  1627. # NBRINC,NINC,NDIMG,NDIMA,LOG_FLU,PLAST,ITER,DETH,DEPH,DEPST3,
  1628. # JEA,JSE,AK,BK,AM,EE0,EK0,DEPSE1,DEPSM1,DEPSK1,FRAC,DEPST1,
  1629. # NTMAX,FT,NBRACT,LNUMCRT,ACTIFT,PLASTT,DPFTDS,DGFTDS,REST,
  1630. # PFT_GRAD_PFT,PFT_GRAD_GFT,DEPSC1,NCMAX,NBRACC,FC,LNUMCRC,
  1631. # ACTIFC,PLASTC,DPFCDS,DGFCDS,RESC,PFC_GRAD_PFC,PFC_GRAD_GFC,
  1632. # DEPSL1,NLMAX,FL,NBRACL,LNUMCRL,ACTIFL,PLASTL,DPFLDS,DGFLDS,
  1633. # RESL,PFL_GRAD_PFL,PFL_GRAD_GFL,Gch,bg,dbgVg,dbgVd,dbwPw,
  1634. # reduc_resg,JSP,Je1epg,Mbg,NDIMPL,RgR,Jsgep,PFG_GRAD_PFG,
  1635. # PRECISION3D,AFFICHE,CONV_FORCEE)
  1636.  
  1637. c verif solution localisation
  1638. if(affiche) then
  1639. do i=1,NDIMG
  1640. write(*,'(A7,I2,A2,E10.3)') 'DEPSE1(',i,')=',depse1(i)
  1641. end do
  1642. end if
  1643.  
  1644. c traitement erreur lcls3d
  1645. if(err1.eq.1) ierr1=1
  1646. if(ierr1.eq.1) then
  1647. print*,'Pb dans incl3d apres lcls3d'
  1648. print*,'fluage:',LOG_FLU
  1649. print*,'plasticite:',plast
  1650. return
  1651. end if
  1652.  
  1653. c compteur de reduction par refermeture de fissure (epsplt>0)
  1654. iter_rf=1
  1655.  
  1656.  
  1657. c ******************************************************************
  1658. c Preparation Boucle de mise a jour conditionelle des deformations
  1659. c ******************************************************************
  1660.  
  1661. c variable logique pour savoir si on doit reinjecter du gel dans une
  1662. c phase suite aux reductions
  1663. LogReducGEL=.false.
  1664. c initialisation du volume de fissure accessible au gel par phase
  1665. do iphase=1,NINC
  1666. VGF(iphase,1)=VGF(iphase,0)
  1667. end do
  1668.  
  1669. c ******************************************************************
  1670. c point de redémarrage des test de refermeture et ecoulement
  1671. c chemo plastique en cas de refermture et d ecoulement simultanees
  1672. c ******************************************************************
  1673.  
  1674. c initialisation du coeff de reduction de retour radial
  1675. 40 reduc=1.d0
  1676. do idir=1,NDIMG
  1677. reduc_prov(idir)=1.d0
  1678. end do
  1679.  
  1680. c actualisation du volume de gel residuel
  1681.  
  1682. c ******************************************************************
  1683. c Tests d admissibilite des refermeture et mise a jour
  1684. c ******************************************************************
  1685.  
  1686. do iphase=0,ninc
  1687. if(iphase.eq.0) then
  1688. c matrice
  1689. idebut=9*ninc
  1690. else
  1691. c inclusion et interface
  1692. idebut=9*(iphase-1)
  1693. end if
  1694. c elastique dans la phase
  1695. do i=1,3
  1696. xp3(iphase,i)=DEPSE1(idebut+i)+EPSER_PRIN(iphase,i)
  1697. end do
  1698. call recm3d(iphase,1,EPSER_COMP,xp3,EPSER,v33,v33t)
  1699. c Maxwell dans la phase
  1700. do i=1,3
  1701. xp3(iphase,i)=DEPSM1(idebut+i)+EPSMR_PRIN(iphase,i)
  1702. end do
  1703. call recm3d(iphase,1,EPSMR_COMP,xp3,EPSMR,v33,v33t)
  1704. c Kelvin dans la phase
  1705. do i=1,3
  1706. xp3(iphase,i)=DEPSK1(idebut+i)+EPSKR_PRIN(iphase,i)
  1707. end do
  1708. call recm3d(iphase,1,EPSKR_COMP,xp3,EPSKR,v33,v33t)
  1709. C Plasticite en traction dans la phase
  1710. if(PLASTT) then
  1711. do i=1,3
  1712. xp3(iphase,i)=DEPST1(idebut+i)+EPSTR_PRIN(iphase,i)
  1713. if(Log_RTG(idebut+i)) then
  1714. if(xp3(iphase,i).lt.(-precision3d)) then
  1715.  
  1716. c --- test de refermeture radiale dans les phases --------
  1717.  
  1718. if(DEPST1(idebut+i).lt.(-precision3d)) then
  1719. reduc_prov(idebut+i)=
  1720. # (-EPSTR_PRIN(iphase,i))
  1721. # /(DEPST1(idebut+i))
  1722. end if
  1723. reduc=min(reduc,reduc_prov(idebut+i))
  1724. if(reduc.le.precision3d) then
  1725. print*,'Dans incl3d lors du calcul de reduc'
  1726. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1727. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1728. write(*,'(A11,E10.3)')
  1729. # 'EPSTR_PRIN=',EPSTR_PRIN(iphase,i)
  1730. write(*,'(A7,E10.3)')
  1731. # 'DEPST1=',DEPST1(idebut+i)
  1732. end if
  1733.  
  1734. c --------------------------------------------------------
  1735. end if
  1736. end if
  1737. end do
  1738. call recm3d(iphase,1,EPSTR_COMP,xp3,EPSTR,v33,v33t)
  1739. else
  1740. do i=1,6
  1741. EPSTR(iphase,i,1)=EPSTR(iphase,i,0)
  1742. end do
  1743. end if
  1744. C Plasticite en cisaillement dans la phase
  1745. do i=1,3
  1746. xp3(iphase,i)=DEPSC1(idebut+i)+EPSCR_PRIN(iphase,i)
  1747. end do
  1748. call recm3d(iphase,1,EPSCR_COMP,xp3,EPSCR,v33,v33t)
  1749.  
  1750. C Plasticite localisee dans la phase
  1751. if(PLASTL) then
  1752. do i=1,3
  1753. xp3(iphase,i)=DEPSL1(idebut+i)+EPSLR_PRIN(iphase,i)
  1754. if(Log_RLG(idebut+i)) then
  1755. if(xp3(iphase,i).lt.(-precision3d)) then
  1756.  
  1757. c --- test de refermeture radiale dans les interfaces ----
  1758.  
  1759. if(DEPSL1(idebut+i).lt.(-precision3d)) then
  1760. reduc_prov(idebut+i)=
  1761. # (-EPSLR_PRIN(iphase,i))
  1762. # /(DEPSL1(idebut+i))
  1763. end if
  1764. reduc=min(reduc,reduc_prov(idebut+i))
  1765. if(reduc.le.precision3d) then
  1766. print*,'Dans incl3d lors du calcul de reduc'
  1767. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1768. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1769. write(*,'(A11,E10.3)')
  1770. # 'EPSLR_PRIN=',EPSLR_PRIN(iphase,i)
  1771. write(*,'(A7,E10.3)')
  1772. # 'DEPSL1=',DEPSL1(idebut+i)
  1773. end if
  1774.  
  1775. c --------------------------------------------------------
  1776. end if
  1777. end if
  1778. end do
  1779. call recm3d(iphase,1,EPSLR_COMP,xp3,EPSLR,v33,v33t)
  1780. else
  1781. do i=1,6
  1782. EPSLR(iphase,i,1)=EPSLR(iphase,i,0)
  1783. end do
  1784. end if
  1785. c variable en + pour les interfaces
  1786. if (iphase.ge.1) then
  1787. c Elastique radiale dans l interface de l inclusion
  1788. do i=1,3
  1789. xp3(iphase,i)=DEPSE1(idebut+3+i)+EPSEI_PRIN(iphase,i)
  1790. end do
  1791. call recm3d(iphase,1,EPSEI_COMP,xp3,EPSEI,v33,v33t)
  1792. c Elastique orthoradiale dans l interface de l inclusion
  1793. do i=1,3
  1794. xp3(iphase,i)=DEPSE1(idebut+6+i)+EPSEO_PRIN(iphase,i)
  1795. end do
  1796. call recm3d(iphase,1,EPSEO_COMP,xp3,EPSEO,v33,v33t)
  1797. c Maxwell radial dans l interface de l inclusion
  1798. do i=1,3
  1799. xp3(iphase,i)=DEPSM1(idebut+3+i)+EPSMI_PRIN(iphase,i)
  1800. end do
  1801. call recm3d(iphase,1,EPSMI_COMP,xp3,EPSMI,v33,v33t)
  1802. c Maxwell orthoradiale dans l interface de l inclusion
  1803. do i=1,3
  1804. xp3(iphase,i)=DEPSM1(idebut+6+i)+EPSMO_PRIN(iphase,i)
  1805. end do
  1806. call recm3d(iphase,1,EPSMO_COMP,xp3,EPSMO,v33,v33t)
  1807. c Kelvin radial dans l interface de l inclusion
  1808. do i=1,3
  1809. xp3(iphase,i)=DEPSK1(idebut+3+i)+EPSKI_PRIN(iphase,i)
  1810. end do
  1811. call recm3d(iphase,1,EPSKI_COMP,xp3,EPSKI,v33,v33t)
  1812. c Kelvin orthoradiale dans l interface de l inclusion
  1813. do i=1,3
  1814. xp3(iphase,i)=DEPSK1(idebut+6+i)+EPSKO_PRIN(iphase,i)
  1815. end do
  1816. call recm3d(iphase,1,EPSKO_COMP,xp3,EPSKO,v33,v33t)
  1817. c Traction radiale dans l interface de l inclusion
  1818. if(PLASTT) then
  1819. do i=1,3
  1820. xp3(iphase,i)=DEPST1(idebut+3+i)+EPSTI_PRIN(iphase,i)
  1821. if(Log_RTG(idebut+3+i)) then
  1822. if(xp3(iphase,i).lt.(-precision3d)) then
  1823.  
  1824. c --- test de refermeture radiale dans ITZ ------------
  1825.  
  1826. if(DEPST1(idebut+3+i).lt.(-precision3d)) then
  1827. reduc_prov(idebut+3+i)=
  1828. # -EPSTI_PRIN(iphase,i)/DEPST1(idebut+3+i)
  1829. end if
  1830. reduc=min(reduc,reduc_prov(idebut+3+i))
  1831. if(reduc.le.precision3d) then
  1832. print*,'Dans incl3d lors du calcul de reduc'
  1833. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1834. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1835. write(*,'(A11,E10.3)')
  1836. # 'EPSTI_PRIN=',EPSTI_PRIN(iphase,i)
  1837. write(*,'(A7,E10.3)')
  1838. # 'DEPST1=',DEPST1(idebut+3+i)
  1839. end if
  1840.  
  1841. c -----------------------------------------------------
  1842.  
  1843. end if
  1844. end if
  1845. end do
  1846. call recm3d(iphase,1,EPSTI_COMP,xp3,EPSTI,v33,v33t)
  1847. else
  1848. do i=1,6
  1849. EPSTI(iphase,i,1)=EPSTI(iphase,i,0)
  1850. end do
  1851. end if
  1852. c Traction orthoradiale dans ITZ
  1853. if(PLASTT) then
  1854. do i=1,3
  1855. xp3(iphase,i)=DEPST1(idebut+6+i)+EPSTO_PRIN(iphase,i)
  1856. if(Log_RTG(idebut+6+i)) then
  1857. if(xp3(iphase,i).lt.(-precision3d)) then
  1858.  
  1859. c -test de refermeture orthoradiale dans ITZ ---------
  1860.  
  1861. if(DEPST1(idebut+6+i).lt.(-precision3d)) then
  1862. reduc_prov(idebut+6+i)=-EPSTO_PRIN(iphase,i)/
  1863. # DEPST1(idebut+6+i)
  1864. end if
  1865. reduc=min(reduc,reduc_prov(idebut+6+i))
  1866. if(reduc.le.precision3d) then
  1867. print*,'Dans incl3d lors du calcul de reduc'
  1868. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1869. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1870. write(*,'(A11,E10.3)')
  1871. # 'EPSTO_PRIN=',EPSTO_PRIN(iphase,i)
  1872. write(*,'(A7,E10.3)')
  1873. # 'DEPST1=',DEPST1(idebut+6+i)
  1874. end if
  1875.  
  1876. c ----------------------------------------------------
  1877.  
  1878. end if
  1879. end if
  1880. end do
  1881. call recm3d(iphase,1,EPSTO_COMP,xp3,EPSTO,v33,v33t)
  1882. else
  1883. do i=1,6
  1884. EPSTO(iphase,i,1)=EPSTO(iphase,i,0)
  1885. end do
  1886. end if
  1887. c Cisaillement radial dans l interface de l inclusion
  1888. do i=1,3
  1889. xp3(iphase,i)=DEPSC1(idebut+3+i)+EPSCI_PRIN(iphase,i)
  1890. end do
  1891. call recm3d(iphase,1,EPSCI_COMP,xp3,EPSCI,v33,v33t)
  1892. c Cisaillement orthoradiale dans l interface de l inclusion
  1893. do i=1,3
  1894. xp3(iphase,i)=DEPSC1(idebut+6+i)+EPSCO_PRIN(iphase,i)
  1895. end do
  1896. call recm3d(iphase,1,EPSCO_COMP,xp3,EPSCO,v33,v33t)
  1897. end if
  1898. end do
  1899.  
  1900. C ***** Plasticite en traction localisee au niveau macro desactivee*
  1901.  
  1902. iphase=-1
  1903. do i=1,3
  1904. xp3(iphase,i)=0.d0+EPSTR_PRIN(iphase,i)
  1905. end do
  1906. call recm3d(iphase,1,EPSTR_COMP,xp3,EPSTR,v33,v33t)
  1907.  
  1908. c ***** test ecoulement gel dans les fissures **********************
  1909.  
  1910. do iphase=0,ninc
  1911. if((gch(iphase).eq.1.d0).and.(ietap.ne.0)) then
  1912. c volume de gel qui vient de s ecouler dans les fissures
  1913. c actualise par la reduction d ecoulement plastique par les
  1914. c conditions de refermeture
  1915. dbgvd_actuel=reduc*dbgVd(iphase)
  1916. c variation de pression dans le gel induite par l ecoulement
  1917. dbgpg(iphase)=-Mbg(iphase,1)*dbgvd_actuel
  1918. c nouvelle pression dans le gel
  1919. bgpg_actuel=bgpg(iphase)+dbgpg(iphase)
  1920. c le gel peut s ecouler dans les fissures s il est en surpression
  1921. if((bgpg_actuel.lt.0.d0).and.(dbgpg(iphase).ne.0.d0)) then
  1922. c la quantite de gel ecoulé ds les fissures est plus grande
  1923. c que le gel disponible, il faut reduire la fissuration pour
  1924. c limiter la chute de pression du gel dans cette phase
  1925. reduc_ch(iphase)=-bgpg(iphase)/dbgpg(iphase)
  1926. C if (dbgvd_actuel.gt.dbgvg(iphase)) then
  1927. C reduc_ch(iphase)=-dbgvg(iphase)/dbgvd_actuel
  1928. if(reduc_ch(iphase).gt.1.) then
  1929. print*,'Dans incl3d...'
  1930. print*,'Pb lors de la reduction de fissuration'
  1931. print*,'a cause du gel, reduc_ch(',iphase,')=',
  1932. # reduc_ch(iphase)
  1933. print*,'bgpg(',iphase,')=',bgpg(iphase)
  1934. print*,'dbgpg(',iphase,')=',dbgpg(iphase)
  1935. err1=1
  1936. return
  1937. else
  1938. LogReducGEL=.true.
  1939. if(reduc_ch(iphase).le.0.) then
  1940. c le gel passe en depression
  1941. if(affiche_gel.or.affiche_reduc) then
  1942. print*,'incl3d,le gel passe '
  1943. print*,'en depression, on reduit'
  1944. print*,'l increment de plasticite'
  1945. print*,'Avant la reduction on a :'
  1946. print*,'bgpg(',iphase,')=',bgpg(iphase)
  1947. print*,'dbgpg(',iphase,')=',dbgpg(iphase)
  1948. print*,'-> pression a 0 pour phase',iphase
  1949. ierr1=1
  1950. return
  1951. * read*
  1952. end if
  1953. reduc_ch(iphase)=0.d0
  1954. end if
  1955. Gch(iphase)=0.d0
  1956. end if
  1957. else
  1958. reduc_ch(iphase)=1.d0
  1959. end if
  1960. reduc=reduc*reduc_ch(iphase)
  1961. if((reduc.lt.1.d0).and.((Gch(1).ne.0.).or.(Gch(0).ne.0.)))
  1962. # then
  1963. LogReducGEL=.true.
  1964. if(affiche_reduc)then
  1965. print*,'Inc3d,Reduction de l ecoulement phase ',
  1966. # iphase,'=',reduc_ch(iphase),bgpg(iphase),
  1967. # dbgpg(iphase)
  1968. c read*
  1969. end if
  1970. end if
  1971. else
  1972. dbgpg(iphase)=0.d0
  1973. end if
  1974. end do
  1975.  
  1976. c ******************************************************************
  1977. c Traitement reduction d ecoulement plastique
  1978. c ******************************************************************
  1979.  
  1980. if(reduc.ne.1.d0) then
  1981. c compteur d iteration pour les refermetures
  1982. iter_rf=iter_rf+1
  1983.  
  1984. c reduction des increments et cumul des residus correctifs
  1985. call redu3d(NBRINC,NINC,NDIMG,DEPSE1,DEPSM1,DEPSK1,
  1986. # DEPST1,DEPSC1,DEPSL1,LogReducGEL,reduc,dbgvd,Mbg,dbgpg,
  1987. # precision3d,ierr1,affiche)
  1988.  
  1989. if(ierr1.ne.1) then
  1990. if(iter_rf.gt.3) then
  1991. print*,'Pb incl3d sous iteration fermeture',iter_rf
  1992. do j=0,ninc
  1993. print*,'Reduction chimique phase',j,'=',reduc_ch(iphase)
  1994. print*,'reduc:',reduc
  1995. print*,'reduc_prov',reduc_prov
  1996. end do
  1997. ierr1=1
  1998. return
  1999. else
  2000. c on va refaire une iteration pour la mise a jour des variables
  2001. goto 40
  2002. end if
  2003. else
  2004. print*,'Pb incl3d reduction / fermeture iter',iter_rf
  2005. return
  2006. end if
  2007. end if
  2008.  
  2009.  
  2010. c ******************************************************************
  2011. c Calcul des des contraintes effectives (G=notation globale (1->12))
  2012. c ******************************************************************
  2013.  
  2014. if(ninc.eq.1) then
  2015. do idir=1,NDIMG
  2016. DSEFFG(idir)=0.d0
  2017. c prise en compte solution elastique pour
  2018. c la contrainte effective (dans le solide et non endommagee)
  2019. do jdir=1,NDIMG
  2020. DSEFFG(idir)=DSEFFG(idir)+JSE(idir,jdir)*DEPSE1(jdir)
  2021. end do
  2022. if(affiche) then
  2023. write(*,'(A7,1X,I2,1X,A2,1X,E10.3)')
  2024. # 'dsigma(',idir,')=',DSEFFG(idir)
  2025. end if
  2026. end do
  2027. else
  2028. print*,'Dans incl3d JSE inaptee a ',ninc,' inclusions'
  2029. ierr1=1
  2030. return
  2031. end if
  2032.  
  2033. c **** stockage contraintes radiales dans base fixe ****************
  2034.  
  2035. c on a passe tous les tests de limitation de refermeture
  2036. c et tous les test de limitation d ecoulement chemo-plastique
  2037. c on peut donc conserver les vari et les contraintes
  2038. do iphase=-1,ninc
  2039. if(iphase.eq.-1) then
  2040. c milieu homogene
  2041. do idir=1,3
  2042. xp3(iphase,idir)=0.d0
  2043. c contribution de toutes les phase
  2044. do jphase=0,ninc
  2045. if(jphase.eq.0) then
  2046. idebut=9*ninc
  2047. else
  2048. idebut=9*(jphase-1)
  2049. end if
  2050. xp3(iphase,idir)=xp3(iphase,idir)+
  2051. # FRAC(jphase)*DSEFFG(idebut+idir)
  2052. end do
  2053. c mise a jour de la projection
  2054. xp3(iphase,idir)=xp3(iphase,idir)
  2055. # +SEFFR_PRIN(iphase,idir)
  2056. end do
  2057. else
  2058. if(iphase.eq.0) then
  2059. c sig matrice a l infini = sig moyen matrice
  2060. idebut=9*ninc
  2061. else
  2062. c sig 1er type d inclusion = sig moyen inclusion
  2063. idebut=9*(iphase-1)
  2064. end if
  2065. c combinaison avec le tenseur de contrainte effective macro
  2066. do idir=1,3
  2067. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2068. # +SEFFR_PRIN(iphase,idir)
  2069. end do
  2070. end if
  2071. c mise a jour du tenseur
  2072. call recm3d(iphase,1,SEFFR_COMP,xp3,SEFFR,v33,v33t)
  2073. end do
  2074.  
  2075. c **** stockage contrainte d interface dans base fixe *************
  2076.  
  2077. do iphase=1,ninc
  2078. c contrainte radiale dans l interface (constituee de matrice)
  2079. idebut=9*(iphase-1)+3
  2080. do idir=1,3
  2081. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2082. # +SEFFI_PRIN(iphase,idir)
  2083. end do
  2084. c combinaison avec le tenseur de contrainte totale precedent
  2085. call recm3d(iphase,1,SEFFI_COMP,xp3,SEFFI,v33,v33t)
  2086. c contraintes orthoradiales dans l interface
  2087. idebut=9*(iphase-1)+6
  2088. do idir=1,3
  2089. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2090. # +SEFFO_PRIN(iphase,idir)
  2091. end do
  2092. c combinaison avec le tenseur de contrainte totale precedent
  2093. call recm3d(iphase,1,SEFFO_COMP,xp3,SEFFO,v33,v33t)
  2094. end do
  2095.  
  2096. c *** affichage des tables de contraintes fin d iteration *********
  2097.  
  2098. if(affiche) then
  2099. do iphase=-1,ninc
  2100. write(*,'(A52,I2)')
  2101. # 'Contraintes radiales dans phase :',iphase
  2102. do i=1,6
  2103. write(*,'(A6,I2,I2,A2,E10.3)')
  2104. # 'SEFFR(',iphase,i,')=',SEFFR(iphase,i,1)
  2105. end do
  2106. if(iphase.gt.0) then
  2107. write(*,'(A52,I2)')
  2108. # 'Contraintes radiales dans interface de :',iphase
  2109. do i=1,6
  2110. write(*,'(A6,I2,I2,A2,E10.3)')
  2111. # 'SEFFI(',iphase,i,')=',SEFFI(iphase,i,1)
  2112. end do
  2113. write(*,'(A52,I2)')
  2114. # 'Contraintes othoradiale radiales dans interface de :'
  2115. # ,iphase
  2116. do i=1,6
  2117. write(*,'(A6,I2,I2,A2,E10.3)')
  2118. # 'SEFFO(',iphase,i,')=',SEFFO(iphase,i,1)
  2119. end do
  2120. end if
  2121. end do
  2122. end if
  2123.  
  2124. c ---- Pression dans les pores -------------------------------------
  2125.  
  2126. do iphase=0,NINC
  2127. if(VGT(iphase,1).gt.0.d0) then
  2128. c actualisation de la contrainte chemo mecanique
  2129. bgpg(iphase)=bgpg(iphase)+dbgpg(iphase)
  2130. if(bgpg(iphase).lt.0.) then
  2131. print*,'pression de gel.lt.0 ds incl3d'
  2132. err1=1
  2133. return
  2134. end if
  2135. else
  2136. bgpg(iphase)=0.d0
  2137. end if
  2138. c actualisation du volume de gel dans les fissures
  2139. if(bg(iphase,1).gt.0.d0) then
  2140. VGF(iphase,1)=VGF(iphase,1)+dbgvd(iphase)/bg(iphase,1)
  2141. else
  2142. VGF(iphase,1)=VGF(iphase,0)
  2143. end if
  2144. c recuperation de la contrainte hydrique de la phase
  2145. bwpw(iphase)=-SEW(iphase,1)
  2146. end do
  2147.  
  2148. c ---- contraintes totales moyennes non endommagee par phase ------
  2149.  
  2150. do iphase=0,NINC
  2151. do idir=1,6
  2152. STOTR(IPHASE,IDIR,1)=SEFFR(IPHASE,IDIR,1)
  2153. if(idir.le.3) then
  2154. STOTR(iphase,idir,1)=STOTR(iphase,idir,1)
  2155. # -bwpw(iphase)-bgpg(iphase)
  2156. end if
  2157. end do
  2158. end do
  2159.  
  2160. c ******************************************************************
  2161. c Fin de mise a jour des variables internes LOCALES FINALES
  2162. c ******************************************************************
  2163.  
  2164. c les vari LOCALES FINALES sont les tableaux FIN de pas (ITPS=1),
  2165. c elles ne seront conservees et utilisees pour le prochain sous-pas
  2166. c que si on realise une mise a jour des variables internes LOCALES
  2167. c INITIALES avec la subroutine MJVR3D
  2168.  
  2169. call mjvr3d(NBRINC,NINC,ACH,VGT,VGF,ETH,SEW,EPH,
  2170. # SEFFR,EPSER,EPSMR,EPSKR,EPSTR,EPSCR,EPSLR,EPSRH,STOTR,
  2171. # SEFFI,EPSEI,EPSMI,EPSKI,EPSTI,EPSCI,
  2172. # SEFFO,EPSEO,EPSMO,EPSKO,EPSTO,EPSCO)
  2173.  
  2174. c les vari LOCALES ne deviendront des vari stockables dans la
  2175. c table du code que si on les stocke sur le tableau VARF ce qui
  2176. c ne peut etre fait qu apres convergence de la plasticite
  2177.  
  2178. c ******************************************************************
  2179. c Evaluation des criteres en base generalisee a la fin du sous pas
  2180. c ******************************************************************
  2181.  
  2182. c on evalue et classe les criteres du + grd au + petit
  2183. c la liste des numero des criteres a traiter est dans LNUMCRT
  2184. c idem pour les criteres de cisaillement NUMCR,NSUIVANTC,LNUMCRC...
  2185.  
  2186. c on evalue les criteres fin de pas que :
  2187. c lors du tir visco elastique : ietap=0
  2188. c lors des retours radiaux : ietap=4
  2189.  
  2190. if(.not.CONV_FORCEE) then
  2191.  
  2192. c evaluation des criteres en fin de sous pas
  2193.  
  2194. call CRER3D(NBRINC,NTYPC,NINC,NDIMG,RTP,RTI,DELTA,
  2195. # BETA,COHE,FRAC,GCH,bwPw,bgpg,SEFFR,SEFFI,SEFFO,EPSTR,EPSTI,
  2196. # EPSTO,EPSLR,V33,V33T,V33S,V33ST,EPSTG,EPSPLG,SEFFG,FTHG,
  2197. # NTMAX,FT,ACTIFT,DPFTDS,DGFTDS,LNUMCRT,NBRACT,PLASTT,Log_RTG,
  2198. # NCMAX,FC,ACTIFC,DPFCDS,DGFCDS,LNUMCRC,NBRACC,PLASTC,RFP,RFI,
  2199. # NLMAX,FL,ACTIFL,DPFLDS,DGFLDS,LNUMCRL,NBRACL,PLASTL,Log_RLG,
  2200. # STOTR,STOTG,RESGA,PLAST,RTG,RTLG,RFG,RFLG,reduc_resg,
  2201. # PRECISION3D,ERR1,AFFICHE)
  2202.  
  2203. c traitement erreur evaluation critere
  2204. if(affiche.or.(err1.eq.1)) then
  2205. if(err1.eq.1) then
  2206. print*,'Erreur dans incl3d lors de l appel'
  2207. print*,'a crer3d a l etape:',ietap
  2208. print*,'a l iteration:',iter
  2209. ierr1=1
  2210. return
  2211. end if
  2212. end if
  2213.  
  2214. else
  2215.  
  2216. c convergence locale forcee
  2217.  
  2218. plast=.false.
  2219. plastt=.false.
  2220. plastc=.false.
  2221. plastl=.false.
  2222.  
  2223. end if
  2224.  
  2225.  
  2226. c --- mise a zero du chargement si sous iteration necessaire -------
  2227.  
  2228. if(plast.or.LogReducGEL) then
  2229. c maj des residu de chargement
  2230. do idir=1,3
  2231. DEPST3(idir)=0.d0
  2232. end do
  2233. c residu en THCP impose
  2234. do iphase=0,NINC
  2235. DETH(iphase)=0.d0
  2236. DEPH(iphase)=0.d0
  2237. dbwpw(iphase)=0.d0
  2238. dbgvg(iphase)=0.d0
  2239. end do
  2240. c residu en relaxation de deformation elastique initiale
  2241. do idir=1,NDIMG
  2242. ek0(idir)=0.d0
  2243. ee0(idir)=0.d0
  2244. end do
  2245. c declaration etape de plasticite
  2246. ietap=4
  2247. if(iter.eq.1) then
  2248. goto 15
  2249. else
  2250. c evolution du residu entre deux pas
  2251. Dresg=abs(RESGA-RESGP)
  2252. c decalage du residu pour pas suivant
  2253. RESGP=RESGA
  2254. if(affiche_iter) then
  2255. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  2256. # 'Inclusion3d Iteration :',iter,
  2257. # 'Residu global:',RESGP,
  2258. # 'D(RESG):',Dresg,
  2259. # 'Tolerance',tolerance
  2260. end if
  2261. if(Dresg.gt.tolerance) then
  2262. c on poursuit le calcul que si l erreur diminue
  2263. goto 15
  2264. end if
  2265. end if
  2266. else
  2267. RESA=0.d0
  2268. c decalage du residu pour pas suivant
  2269. RESGP=RESGA
  2270. if(affiche_iter) then
  2271. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  2272. # 'Inclusion3d Iteration :',iter,
  2273. # 'Residu global:',RESGP,
  2274. # 'D(RESG):',Dresg,
  2275. # 'Tolerance',tolerance
  2276. end if
  2277. end if
  2278.  
  2279. c***********************************************************************
  2280. c fin de la boucle de resolution nonlineaire et stockage
  2281. c***********************************************************************
  2282.  
  2283. c **** variables internes globales ********************************
  2284.  
  2285. c *** variables internes pour le milieu homogeneisé
  2286. IPHASE=-1
  2287. do ICOMP=1,6
  2288. c contraintes effectives homogeneisees
  2289. nv3d=NBVARISOG+ICOMP
  2290. varf(nv3d)=SEFFR(IPHASE,ICOMP,1)
  2291. c deformation plastique traction localisee
  2292. nv3d=NBVARISOG+6+ICOMP
  2293. varf(nv3d)=EPSTR(IPHASE,ICOMP,1)
  2294. end do
  2295.  
  2296. c *** variables internes des phases *******************************
  2297.  
  2298. do IPHASE=0,NINC
  2299. c avancement reaction chimique
  2300. nv3d=NBVIND3D+IPHASE*NBVPARP3D+1
  2301. varf(nv3d)=ACH(IPHASE,1)
  2302. c deformation chimique imposee
  2303. nv3d=NBVIND3D+IPHASE*NBVPARP3D+2
  2304. varf(nv3d)=VGT(IPHASE,1)
  2305. c deformation thermique imposee
  2306. nv3d=NBVIND3D+IPHASE*NBVPARP3D+3
  2307. varf(nv3d)=ETH(IPHASE,1)
  2308. c contrainte hydrique imposee
  2309. nv3d=NBVIND3D+IPHASE*NBVPARP3D+4
  2310. varf(nv3d)=SEW(IPHASE,1)
  2311. c deformation osmotique imposee
  2312. nv3d=NBVIND3D+IPHASE*NBVPARP3D+5
  2313. varf(nv3d)=EPH(IPHASE,1)
  2314. c deformation osmotique imposee
  2315. nv3d=NBVIND3D+IPHASE*NBVPARP3D+6
  2316. varf(nv3d)=VGF(IPHASE,1)
  2317. c contrainte chemo mecanique
  2318. nv3d=NBVIND3D+IPHASE*NBVPARP3D+7
  2319. varf(nv3d)=-bgpg(IPHASE)
  2320. c debut de la zone memoire pour les tenseurs
  2321. IDEBUT=NBVIND3D+IPHASE*NBVPARP3D+NBVARISOPP
  2322. do ICOMP=1,6
  2323. c contrainte effective radiale dans la phase
  2324. nv3d=IDEBUT+ICOMP
  2325. varf(nv3d)=SEFFR(IPHASE,ICOMP,1)
  2326. c deformation elastique (radiale pour inclusions infini pour matrice)
  2327. nv3d=IDEBUT+6+ICOMP
  2328. varf(nv3d)=EPSER(IPHASE,ICOMP,1)
  2329. c deformation maxwell (radiale pour inclusions infini pour matrice)
  2330. nv3d=IDEBUT+12+ICOMP
  2331. varf(nv3d)=EPSMR(IPHASE,ICOMP,1)
  2332. c deformation Kelvin (radiale pour inclusions infini pour matrice)
  2333. nv3d=IDEBUT+18+ICOMP
  2334. varf(nv3d)=EPSKR(IPHASE,ICOMP,1)
  2335. c deformations plastiques de traction (radiale pour inclusions,infini pour matrice)
  2336. nv3d=IDEBUT+24+ICOMP
  2337. varf(nv3d)=EPSTR(IPHASE,ICOMP,1)
  2338. c deformations plastiques de cisaillement (radiale pour inclusions,infini pour matrice)
  2339. nv3d=IDEBUT+30+ICOMP
  2340. varf(nv3d)=EPSCR(IPHASE,ICOMP,1)
  2341. c deformations plastiques de traction localisee (decollement)
  2342. nv3d=IDEBUT+36+ICOMP
  2343. varf(nv3d)=EPSLR(IPHASE,ICOMP,1)
  2344. c contrainte moyenne non endommagee (radiale pour inclusions,infini pour matrice)
  2345. nv3d=IDEBUT+42+ICOMP
  2346. varf(nv3d)=STOTR(IPHASE,ICOMP,1)
  2347. end do
  2348. end do
  2349.  
  2350. c *******variables internes des interfaces ************************
  2351.  
  2352. do IPHASE=1,NINC
  2353. IDEBUT=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI
  2354. do ICOMP=1,6
  2355. c contraintes effectives radiales(radiale pour inclusions infini pour matrice)
  2356. nv3d=IDEBUT+ICOMP
  2357. varf(nv3d)=SEFFI(IPHASE,ICOMP,1)
  2358. c contraintes effectives orthoradiales(radiale pour inclusions infini pour matrice)
  2359. nv3d=IDEBUT+6+ICOMP
  2360. varf(nv3d)=SEFFO(IPHASE,ICOMP,1)
  2361. c deformation radiale elastique a l interface
  2362. nv3d=IDEBUT+12+ICOMP
  2363. varf(nv3d)=EPSEI(IPHASE,ICOMP,1)
  2364. c deformation orthoradiale elastique a l interface
  2365. nv3d=IDEBUT+18+ICOMP
  2366. varf(nv3d)=EPSEO(IPHASE,ICOMP,1)
  2367. c deformation radiale maxwell a l interface
  2368. nv3d=IDEBUT+24+ICOMP
  2369. varf(nv3d)=EPSMI(IPHASE,ICOMP,1)
  2370. c deformation orthoradiale maxwell a l interface
  2371. nv3d=IDEBUT+30+ICOMP
  2372. varf(nv3d)=EPSMO(IPHASE,ICOMP,1)
  2373. c deformation kelvin radiale a l interface
  2374. nv3d=IDEBUT+36+ICOMP
  2375. varf(nv3d)=EPSKI(IPHASE,ICOMP,1)
  2376. c deformation kelvin orthoradiale axisymetrique a l interface
  2377. nv3d=IDEBUT+42+ICOMP
  2378. varf(nv3d)=EPSKO(IPHASE,ICOMP,1)
  2379. c deformation plastique radiale traction a l interface
  2380. nv3d=IDEBUT+48+ICOMP
  2381. varf(nv3d)=EPSTI(IPHASE,ICOMP,1)
  2382. c deformation plastique orthoradiale a l interface
  2383. nv3d=IDEBUT+54+ICOMP
  2384. varf(nv3d)=EPSTO(IPHASE,ICOMP,1)
  2385. c deformation plastique cisaillement radiale axisymetrique a l interface
  2386. nv3d=IDEBUT+60+ICOMP
  2387. varf(nv3d)=EPSCI(IPHASE,ICOMP,1)
  2388. c deformation plastique cisaillement orthoradiale a l interface
  2389. nv3d=IDEBUT+66+ICOMP
  2390. varf(nv3d)=EPSCO(IPHASE,ICOMP,1)
  2391. end do
  2392. end do
  2393.  
  2394. c***********************************************************************
  2395. c transfert des contraintes totales dans sigef6
  2396. c***********************************************************************
  2397.  
  2398. c -- contrainte totale macroscopiques non endommagee --------------
  2399.  
  2400. do idir=1,6
  2401. sigef6(idir)=0.d0
  2402. do iphase=0,NINC
  2403. sigef6(idir)=sigef6(idir)+
  2404. # FRAC(iphase)*STOTR(iphase,idir,1)
  2405. end do
  2406. end do
  2407.  
  2408. c --- fin contraintes macro totales non endommagee -----------------
  2409.  
  2410. c***********************************************************************
  2411. c prise en compte de l endommagement (non actif)
  2412. c***********************************************************************
  2413.  
  2414. do idir=1,6
  2415. sigf6(idir)=sigef6(idir)
  2416. end do
  2417.  
  2418. c***********************************************************************
  2419. c affectation dans le tableau de sortie des contraintes
  2420. c***********************************************************************
  2421.  
  2422. do i=1,nstrs
  2423. sigf(i)=sigf6(i)
  2424. if(affiche) then
  2425. write(*,'(A5,I1,A2,E10.3)') 'sigf(',i,')=',sigf(i)
  2426. end if
  2427. end do
  2428.  
  2429. c ** indicateur de passage du premier pas **************************
  2430.  
  2431. varf(1)=1.0d0
  2432. if(affiche) then
  2433. print*,'Inclusion3d: Valider pour continuer'
  2434. read*
  2435. end if
  2436.  
  2437.  
  2438. return
  2439. end
  2440. c***********************************************************************
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  

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