Télécharger incl3d.eso

Retour à la liste

Numérotation des lignes :

incl3d
  1. C INCL3D SOURCE CB215821 25/04/08 21:15:23 12227
  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. c traitement ecoulement gel ds fissure
  510. real*8 dbgvg_actuel,dbgvg_maxi
  511. c gestion des affichages
  512. c***********************************************************************
  513. c affichage par defaut pour inclusion3d
  514. c***********************************************************************
  515.  
  516. logical AFFICHE,AFFICHE_DEFAULT
  517. parameter (AFFICHE_DEFAULT=.false.)
  518.  
  519. iter_aff=int(9*itermax/10)
  520.  
  521. affiche=AFFICHE_DEFAULT
  522. affiche_fluage=AFFICHE_DEFAULT
  523. affiche_jacobi=AFFICHE_DEFAULT
  524. affiche_reduc=AFFICHE_DEFAULT
  525. affiche_iter=AFFICHE_DEFAULT
  526. affiche_gel=AFFICHE_DEFAULT
  527.  
  528. c affiche_iter=.true.
  529. c affiche_gel=.true.
  530. c affiche_reduc=.true.
  531. c affiche_jacobi=.true.
  532.  
  533. c***********************************************************************
  534.  
  535. c***********************************************************************
  536. c test de compatibilite de declarations code EF -modele INCLUSION3D
  537. if(NBRINC.ne.NBRINC3D) then
  538. print*,'Pb NBRINC.ne.NBRINC3D dans INCL3D'
  539. ierr1=1
  540. return
  541. end if
  542. c position calculee dans idvar4 des variables internes
  543. c nombre total de variables globales
  544. NBVIND3D=NBVARISOG+6*NBVARTENG
  545. c nombre de variables par phase commune a toutes les phases
  546. NBVPARP3D=NBVARISOPP+6*NBVARTENPP
  547. c nombre total de variables propres aux interfaces
  548. NBVPARI3D=NBVARISOPI+6*NBVARTENPI
  549. c nombre de variables internes totales
  550. if(NVTOT1.ne.NBVIND3D+(NBRINC3D+1)*NBVPARP3D ) then
  551. print*,'Pb de dimension nvtot1 dans incl3d'
  552. ierr1=1
  553. return
  554. end if
  555. NBROBL=NVTOT1+NBVPARI3D*NBRINC
  556. if(NBROBL.ne.NVARI) then
  557. print*,'Pb de declaration de variables dans incl3d'
  558. ierr1=1
  559. return
  560. end if
  561.  
  562. c****** indicateur 1er passage *****************************************
  563. if (var0(1).eq.0.) then
  564. ppas=.true.
  565. else
  566. ppas=.false.
  567. end if
  568. c***********************************************************************
  569.  
  570.  
  571. c***********************************************************************
  572. c chargement des parametres materiau
  573. c***********************************************************************
  574.  
  575. c print*,'xmat',xmat
  576. c initialisation du compteur de position dans la table des xmat
  577. JGM0=NBELAS3D
  578.  
  579. c **** milieu homogeneise pour les matrices de rigidite des EF *****
  580.  
  581. c Module d young homogeneisé
  582. YOUNG(-1)=xmat(1)
  583. c coefficient de Poisson homogénéisé
  584. NU(-1)=xmat(2)
  585. c coeff de dilatation thermique homogénéisé
  586. ALP(-1)=xmat(3)
  587. c nombre d inclusions
  588. NINC=int(xmat(JGM0+1))
  589. if(NINC.gt.NBRINC) then
  590. print*,'Nombre maximum de types d inclusion depasse'
  591. print*,'Nombre d inclusions:', NINC,', Nb maxi:',NBRINC
  592. ierr1=1
  593. return
  594. else if (NINC.ne.1) then
  595. print*,'Implantation realisee pour un type d inclusion'
  596. print*,'dans incl3d : NINC doit etre de 1...'
  597. ierr1=1
  598. return
  599. end if
  600. c temperature de reference pour tous les parametres
  601. TTREF=xmat(JGM0+2)
  602. c verif de compatibilité teta chargement (teta1) et ttref materiau
  603. if(ppas.and.(abs(ttref-teta1).gt.precision3d)) then
  604. print*,'Inclusion3d: TTREF non egal a TETA1'
  605. print*,'teta1',teta1,' teta2',teta2,'ttref',ttref
  606. print*,'les temperatures de reference du modele et du code'
  607. print*,'different ce qui peut induire une dilatation imprévue'
  608. print*,'des phases'
  609. ierr1=1
  610. return
  611. end if
  612. c resistance du maillon faible
  613. RTP(-1)=xmat(JGM0+3)
  614. c resistance à la refermeture du maillon faible
  615. RTI(-1)=xmat(JGM0+4)
  616. c dimension hors plan en cas de calcul 2d
  617. if (NBRTAIL3D.eq.1) then
  618. DIM3=xmat(JGM0+NBPARC3D+NBRINC3D*NBPPARP3D+1)
  619. else if (NBRTAIL3D.ne.0) then
  620. print*,'Inclusion3d: pb sur NBRTAIL3D sur cette formulation'
  621. ierr1=1
  622. return
  623. end if
  624.  
  625. c **** donnees pour toutes les phases ******************************
  626.  
  627. do IPHASE=0,NINC
  628. c debut de la table
  629. idebut=JGM0+NBPARC3D+IPHASE*NBPPARP3D
  630. c fractions volumiques des phases
  631. FRAC(IPHASE)=xmat(idebut+1)
  632. c module elastique
  633. YOUNG(IPHASE)=xmat(idebut+2)
  634. c coeff de Poisson
  635. NU(IPHASE)=xmat(idebut+3)
  636. c Coefficient de dilatation thermique directionnel
  637. ALP(IPHASE)=xmat(idebut+4)
  638. c resistance a la traction
  639. RTP(IPHASE)=xmat(idebut+5)
  640. c resistance de l interface
  641. RTI(IPHASE)=xmat(idebut+6)
  642. c saturation en eau de la phase
  643. SRW(IPHASE)=xmat(idebut+7)
  644. c potentiel de gonflement chimique de l inclusion
  645. VCH(IPHASE)=xmat(idebut+8)
  646. c temps caracteristique de la reaction chimique de l inclusion
  647. TCH(IPHASE)=xmat(idebut+9)
  648. c energie d activation de la reaction chimique de l inclusion
  649. EAC(IPHASE)=xmat(idebut+10)
  650. c seuil de teneur en eau pour la reaction chimique
  651. SRS(IPHASE)=xmat(idebut+11)
  652. c avancement chimique seuil
  653. ACHS(IPHASE)=xmat(idebut+12)
  654. c temps caracteristique du fluage a ttref
  655. TFL(IPHASE)=xmat(idebut+13)
  656. c pour enlever le fluage mettre le temps caracteristique <=0
  657. if(TFL(IPHASE).le.0.) then
  658. FLUAGE(IPHASE)=.false.
  659. else
  660. FLUAGE(IPHASE)=.true.
  661. end if
  662. c energie d activation du fluage
  663. EAF(IPHASE)=xmat(idebut+14)
  664. c coeff de fluage de Maxwell
  665. KFLM(IPHASE)=xmat(idebut+15)
  666. c coeff de fluage de Kelvin
  667. KFLK(IPHASE)=xmat(idebut+16)
  668. c prorosite
  669. PORO(IPHASE)=xmat(idebut+17)
  670. c module de Van Genuchten
  671. MVG(IPHASE)=xmat(idebut+18)
  672. c exposant de Van Genuchten
  673. NVG(IPHASE)=xmat(idebut+19)
  674. c frottement Drucker Pragger
  675. DELTA(IPHASE)=xmat(idebut+20)
  676. c dilatance
  677. BETA(IPHASE)=xmat(idebut+21)
  678. c cohesion
  679. COHE(IPHASE)=xmat(idebut+22)
  680. c coeff de pression osmotique
  681. CPHY(IPHASE)=xmat(idebut+23)
  682. c coeff de compressibilite du produit chimique forme
  683. KCH(IPHASE)=xmat(idebut+24)
  684. c resistance a la refermeture de la phase
  685. RFP(IPHASE)=xmat(idebut+25)
  686. c resistance a la refermeture de l interface
  687. RFI(IPHASE)=xmat(idebut+26)
  688. end do
  689.  
  690. c *********verif completude volumique des phases********************
  691.  
  692. xtot=0.d0
  693. do i=0,ninc
  694. c print*,'Phase ',i, 'fraction volumique: ', FRAC(i)
  695. c print*,'FRAC(',i,')',FRAC(i)
  696. xtot=xtot+FRAC(i)
  697. end do
  698.  
  699. if(abs(xtot-1.d0).gt.precision3d) then
  700. print*,'Pour le modele inclusion3d'
  701. print*,'La somme des fractions volumiques des phases est '
  702. print*,'differente de 1 : Corriger les donnees pour inclusion3d'
  703. do i=0,ninc
  704. print*,'phase:',i,'->',FRAC(i)
  705. end do
  706. print*,'total=',xtot
  707. ierr1=1
  708. return
  709. end if
  710.  
  711. if(affiche) then
  712. do i=1,nmat
  713. write(*,'(A10,I2,A2,E10.3)') 'Parametre(',i,')=',xmat(i)
  714. end do
  715. end if
  716.  
  717. c *****coherence entre cohesion et traction ************************
  718.  
  719. do iphase=0,Ninc
  720. c il faut une cohesion minimale pour chaque phase
  721. t1 = sqrt(0.3D1)
  722. Ccmin = RTP(iphase) * delta(iphase) / 0.3D1 +
  723. # t1 * RTP(iphase) / 0.3D1
  724. if(COHE(iphase).lt.Ccmin) then
  725. print*,'Pb dans incl3d avec cohesion phase:',iphase
  726. write(*,'(A47,E10.3)')
  727. # 'Cohesion minimale a saturation pour cette phase:',Ccmin
  728. ierr1=1
  729. return
  730. end if
  731. end do
  732.  
  733. c **** definition de la tolerence locales **************************
  734.  
  735. Rmin=RTP(0)
  736. do iphase=0,ninc
  737. Rmin=min(Rmin,RTP(iphase),RTI(iphase),COHE(iphase))
  738. end do
  739. if(Rmin.le.0.d0) then
  740. print*,'La tolerance locale est nulle dans incl3d'
  741. print*,'car l une des RTP,RTI ou COHE d une phase est nulle'
  742. ierr1=1
  743. return
  744. else
  745. c la tolerance de convergence locale
  746. tolerance=prec_tol*Rmin
  747. end if
  748.  
  749. c****** fin de la recuperation des parametres materiaux ****************
  750.  
  751.  
  752. c***********************************************************************
  753. c Chargement increment de deformation imposee et deformation finale
  754. c***********************************************************************
  755.  
  756. if(nstrs.lt.6) then
  757. do i=1,nstrs
  758. DEPST6(i)=deps(i)
  759. epstf6(i)=epstf(i)
  760. end do
  761. do i=nstrs+1,6
  762. DEPST6(i)=0.d0
  763. epstf6(i)=0.d0
  764. end do
  765. else
  766. do i=1,6
  767. DEPST6(i)=deps(i)
  768. epstf6(i)=epstf(i)
  769. end do
  770. end if
  771. c passage des gammas en epsilons
  772. do i=4,6
  773. DEPST6(i)=0.5d0*depst6(i)
  774. epstf6(i)=0.5d0*epstf6(i)
  775. end do
  776. c directions principales du tenseur des increments de deformations
  777. c pour le predicteur visco elastique
  778. c passage gama-> epsilon
  779. do i=1,6
  780. X6(I)=DEPST6(I)
  781. end do
  782. c stockage matrice 33
  783. call x6x33(X6,X33)
  784. c vecteurs et valeurs propres
  785. call b3_v33(X33,X3,V33)
  786. c matrice de passage inverse
  787. call traps1(V33T,V33,3)
  788. c stockage provisoire des increments de deformations principales
  789. if(affiche) then
  790. print*,'Increment de deformation mecanique'
  791. end if
  792. c deformations imposees dans leur base principale
  793. do i=1,3
  794. DEPST3(i)=X3(i)
  795. if (affiche) then
  796. write(*,'(A7,1X,I1,1X,A2,1X,E10.3)') 'depsiH(',i,')=',DEPST3(i)
  797. end if
  798. end do
  799. c stockage de la base principale de l increment de deformation
  800. do i=1,3
  801. do j=1,3
  802. V33D(i,j)=V33(i,j)
  803. V33DT(i,j)=V33T(i,j)
  804. end do
  805. end do
  806. c affichage eventuel
  807. if(affiche) then
  808. print*,'incl3d matrices de passage'
  809. call afic33(V33)
  810. call afic33(V33T)
  811. end if
  812.  
  813.  
  814. c***********************************************************************
  815. c a cette etape V33 base principale de l increment de deformation
  816. c***********************************************************************
  817.  
  818.  
  819. c***********************************************************************
  820. c Debut de la resolution non lineaire
  821. c***********************************************************************
  822.  
  823. c initialisation des indicateurs de non linearite
  824. c traction
  825. PLASTT=.false.
  826. NBRACT=0
  827. do icr=1,NTMAX
  828. LNUMCRT(icr)=0
  829. FT(icr)=0.d0
  830. Log_RTG(icr)=.false.
  831. end do
  832. c initialisation de la liste des criteres de cisaillement
  833. PLASTC=.false.
  834. NBRACC=0
  835. do icr=1,NCMAX
  836. LNUMCRC(icr)=0
  837. FC(icr)=0.d0
  838. end do
  839. c initialisation de la liste des criteres de de decollement
  840. PLASTL=.false.
  841. NBRACL=0
  842. do icr=1,NLMAX
  843. LNUMCRL(icr)=0
  844. FL(icr)=0.d0
  845. end do
  846. c indicateur global de plasticite
  847. PLAST=.false.
  848.  
  849. c ******************************************************************
  850. c Chargement des variables internes tensorielles
  851. c ******************************************************************
  852.  
  853. c **** variables internes globales ********************************
  854. if (affiche) then
  855. print*,'Variable internes debut de pas'
  856. do i=1,nvari
  857. write(*,'(A5,I3,A2,E10.3,1X,A5,I3,A2,E10.3)')
  858. # 'VAR0(',i,')=',VAR0(i),'VARF(',i,')=',VARF(i)
  859. end do
  860. end if
  861.  
  862. c on charge les var0
  863.  
  864. c *** variables internes pour le milieu homogeneisé
  865. IPHASE=-1
  866. do ICOMP=1,6
  867. c contraintes effectives homogeneisees
  868. nv3d=NBVARISOG+ICOMP
  869. SEFFR(IPHASE,ICOMP,0)=var0(nv3d)
  870. c deformation plastique traction localisee
  871. nv3d=NBVARISOG+6+ICOMP
  872. EPSTR(IPHASE,ICOMP,0)=var0(nv3d)
  873. end do
  874.  
  875.  
  876. c *** Variables internes des phases *******************************
  877.  
  878. do IPHASE=0,NINC
  879. c avancement reaction chimique
  880. nv3d=NBVIND3D+IPHASE*NBVPARP3D+1
  881. ACH(IPHASE,0)=var0(nv3d)
  882. c volume chimique formee
  883. nv3d=NBVIND3D+IPHASE*NBVPARP3D+2
  884. VGT(IPHASE,0)=var0(nv3d)
  885. c deformation thermique imposee
  886. nv3d=NBVIND3D+IPHASE*NBVPARP3D+3
  887. ETH(IPHASE,0)=var0(nv3d)
  888. c contrainte hydrique imposee
  889. nv3d=NBVIND3D+IPHASE*NBVPARP3D+4
  890. SEW(IPHASE,0)=var0(nv3d)
  891. c deformation physique imposee
  892. nv3d=NBVIND3D+IPHASE*NBVPARP3D+5
  893. EPH(IPHASE,0)=var0(nv3d)
  894. c volume de gel dans les fissures
  895. nv3d=NBVIND3D+IPHASE*NBVPARP3D+6
  896. VGF(IPHASE,0)=var0(nv3d)
  897. c contrainte chemo mecanique due au gel
  898. nv3d=NBVIND3D+IPHASE*NBVPARP3D+7
  899. bgpg(IPHASE)=-var0(nv3d)
  900. c debut de la zone memoire des tenseurs
  901. IDEBUT=NBVIND3D+IPHASE*NBVPARP3D+NBVARISOPP
  902. do ICOMP=1,6
  903. c contrainte effective radiale dans la phase
  904. nv3d=IDEBUT+ICOMP
  905. SEFFR(IPHASE,ICOMP,0)=var0(nv3d)
  906. c deformation elastique (radiale pour inclusions infini pour matrice)
  907. nv3d=IDEBUT+6+ICOMP
  908. EPSER(IPHASE,ICOMP,0)=var0(nv3d)
  909. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  910. EPSER0(IPHASE,ICOMP,0)=var0(nv3d)
  911. c deformation maxwell (radiale pour inclusions infini pour matrice)
  912. nv3d=IDEBUT+12+ICOMP
  913. EPSMR(IPHASE,ICOMP,0)=var0(nv3d)
  914. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  915. EPSMR0(IPHASE,ICOMP,0)=var0(nv3d)
  916. c deformation Kelvin (radiale pour inclusions infini pour matrice)
  917. nv3d=IDEBUT+18+ICOMP
  918. EPSKR(IPHASE,ICOMP,0)=var0(nv3d)
  919. c stockage pour recalcul des coeffs de fluage dans les sous iterations
  920. EPSKR0(IPHASE,ICOMP,0)=var0(nv3d)
  921. c deformations plastiques de traction (radiale pour inclusions,infini pour matrice)
  922. nv3d=IDEBUT+24+ICOMP
  923. EPSTR(IPHASE,ICOMP,0)=var0(nv3d)
  924. c deformations plastiques de cisaillement (radiale pour inclusions,infini pour matrice)
  925. nv3d=IDEBUT+30+ICOMP
  926. EPSCR(IPHASE,ICOMP,0)=var0(nv3d)
  927. c deformations plastiques de traction localisee (decollement)
  928. nv3d=IDEBUT+36+ICOMP
  929. EPSLR(IPHASE,ICOMP,0)=var0(nv3d)
  930. c contrainte moyenne non endommagee (radiale pour inclusions,infini pour matrice)
  931. nv3d=IDEBUT+42+ICOMP
  932. STOTR(IPHASE,ICOMP,0)=var0(nv3d)
  933. end do
  934.  
  935. end do
  936.  
  937. c ********Variables internes des interfaces ***********************
  938.  
  939. do IPHASE=1,NINC
  940. do ICOMP=1,6
  941. c contraintes effectives radiales(radiale pour inclusions, infini pour matrice)
  942. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+ICOMP
  943. SEFFI(IPHASE,ICOMP,0)=var0(nv3d)
  944. c contraintes effectives orthoradiales(radiale pour inclusions infini pour matrice)
  945. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+6+ICOMP
  946. SEFFO(IPHASE,ICOMP,0)=var0(nv3d)
  947. c deformation radiale elastique a l interface
  948. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+12+ICOMP
  949. EPSEI(IPHASE,ICOMP,0)=var0(nv3d)
  950. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  951. EPSEI0(IPHASE,ICOMP,0)=var0(nv3d)
  952. c deformation orthoradiale elastique a l interface
  953. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+18+ICOMP
  954. EPSEO(IPHASE,ICOMP,0)=var0(nv3d)
  955. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  956. EPSEO0(IPHASE,ICOMP,0)=var0(nv3d)
  957. c deformation radiale maxwell a l interface
  958. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+24+ICOMP
  959. EPSMI(IPHASE,ICOMP,0)=var0(nv3d)
  960. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  961. EPSMI0(IPHASE,ICOMP,0)=var0(nv3d)
  962. c deformation orthoradiale maxwell a l interface
  963. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+30+ICOMP
  964. EPSMO(IPHASE,ICOMP,0)=var0(nv3d)
  965. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  966. EPSMO0(IPHASE,ICOMP,0)=var0(nv3d)
  967. c deformation kelvin radiale a l interface
  968. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+36+ICOMP
  969. EPSKI(IPHASE,ICOMP,0)=var0(nv3d)
  970. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  971. EPSKI0(IPHASE,ICOMP,0)=var0(nv3d)
  972. c deformation kelvin orthoradiale axisymetrique a l interface
  973. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+42+ICOMP
  974. EPSKO(IPHASE,ICOMP,0)=var0(nv3d)
  975. c* stockage pour recalul des coeffs de fluage dans les sous iterations
  976. EPSKO0(IPHASE,ICOMP,0)=var0(nv3d)
  977. c deformation plastique radiale traction a l interface
  978. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+48+ICOMP
  979. EPSTI(IPHASE,ICOMP,0)=var0(nv3d)
  980. c deformation plastique orthoradiale a l interface
  981. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+54+ICOMP
  982. EPSTO(IPHASE,ICOMP,0)=var0(nv3d)
  983. c deformation plastique cisaillement radiale axisymetrique a l interface
  984. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+60+ICOMP
  985. EPSCI(IPHASE,ICOMP,0)=var0(nv3d)
  986. c deformation plastique cisaillement orthoradiale a l interface
  987. nv3d=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI+66+ICOMP
  988. EPSCO(IPHASE,ICOMP,0)=var0(nv3d)
  989. end do
  990. end do
  991.  
  992. c ******************************************************************
  993. c Construction des Jacobiennes : deps elast/deps imp
  994. c ******************************************************************
  995.  
  996. if (NINC.eq.1) then
  997.  
  998. c ----- Module Elastiques-----------------------------------------
  999.  
  1000. do iphase=0,ninc
  1001. c module de compressibilite
  1002. MK(IPHASE)=YOUNG(IPHASE)/3.d0/(1.d0-2.d0*NU(IPHASE))
  1003. c module de cisaillement
  1004. MG(IPHASE)=YOUNG(IPHASE)/2.d0/(1.d0+NU(IPHASE))
  1005. end do
  1006.  
  1007. c ---- relation dsigma effectif/depse en variables generalisee ---
  1008. call jslc3d(NBRINC,NDIMG,NINC,MK,MG,FRAC,JSE,ERR1,AFFICHE)
  1009. if(err1.eq.1) then
  1010. print*,'Pb 2 dans incl3d lors du calcul de JSE'
  1011. ierr1=1
  1012. return
  1013. end if
  1014. if(affiche_jacobi) then
  1015. print*,'Dans incl3d, JSE pour 1 inclusion'
  1016. do i=1,12
  1017. write (*,12) (JSE(i,j),j=1,12)
  1018. 12 format (12E10.3)
  1019. end do
  1020. end if
  1021.  
  1022. else
  1023.  
  1024. print*,'Inclusion 3d limite a 1 type d inclusion:'
  1025. ierr1=1
  1026. return
  1027.  
  1028. end if
  1029.  
  1030.  
  1031. c ******************************************************************
  1032. c Calcul des variables physico-chimiques fin de pas de temps
  1033. c ******************************************************************
  1034.  
  1035. c recup temperature
  1036. c temperature moyenne sur la pas de temps
  1037. teta=0.5d0*(teta1+teta2)
  1038.  
  1039. c ----- variables scalaires propres aux phases ---------------------
  1040.  
  1041. do IPHASE=0,NINC
  1042.  
  1043.  
  1044.  
  1045. c --- avancement chimique --------------------------------------
  1046.  
  1047. call avch3d(VCH(IPHASE),TCH(IPHASE),EAC(IPHASE),
  1048. # TTREF,SRW(IPHASE),SRS(IPHASE),teta1,teta2,dt,
  1049. # ACH(IPHASE,0),ACH(IPHASE,1),ierr1)
  1050. if(ierr1.eq.1) then
  1051. print*,'Pb calcul chimique phase', IPHASE ,'ds incl3d'
  1052. return
  1053. end if
  1054. DACH(IPHASE)=ACH(IPHASE,1)-ACH(IPHASE,0)
  1055.  
  1056. c --- deformation chimique imposee fin de pas (Vg eff) ---------
  1057.  
  1058. if((ACH(IPHASE,1)-ACH(IPHASE,0)).gt.0.) then
  1059. if(ACH(IPHASE,0).gt.ACHS(IPHASE)) then
  1060. DVGT(IPHASE)=(ACH(IPHASE,1)-ACH(IPHASE,0))*VCH(IPHASE)
  1061. else if (ACH(IPHASE,1).gt.ACHS(IPHASE)) then
  1062. DVGT(IPHASE)=(ACH(IPHASE,1)-ACHS(IPHASE))*VCH(IPHASE)
  1063. else
  1064. DVGT(IPHASE)=0.d0
  1065. end if
  1066. else
  1067. DVGT(IPHASE)=0.d0
  1068. end if
  1069.  
  1070. if(DVGT(IPHASE).gt.0.d0) then
  1071. c normalisation de l increment
  1072. xnorm=(1.d0-ACHS(IPHASE))**(-1)
  1073. DVGT(IPHASE)=DVGT(IPHASE)*xnorm
  1074. else
  1075. DVGT(IPHASE)=0.d0
  1076. end if
  1077.  
  1078. c -- actualisation volume de gel ds les phases -----------------
  1079.  
  1080. c volume de gel cree par phase
  1081. VGT(IPHASE,1)=VGT(IPHASE,0)+DVGT(IPHASE)
  1082. c Approximation des coeffs de Biot des gels dans les phases
  1083. C bg(iphase,0)=2.d0*VGT(IPHASE,0)/(1.d0+VGT(IPHASE,0))
  1084. C bg(iphase,1)=2.d0*VGT(IPHASE,1)/(1.d0+VGT(IPHASE,1))
  1085. c calcul exact des coeffs de Biot pour le pas
  1086. call bitm3d(MK(IPHASE),MG(IPHASE),VGT(IPHASE,0),
  1087. # bg(iphase,0),err1,precision3d)
  1088. call bitm3d(MK(IPHASE),MG(IPHASE),VGT(IPHASE,1),
  1089. # bg(iphase,1),err1,precision3d)
  1090. c calcul exact des modules de Biot
  1091. call mbio3d(MK(IPHASE),VGT(IPHASE,0),bg(iphase,0),
  1092. # KCH(IPHASE),Mbg(Iphase,0),err1)
  1093. call mbio3d(MK(IPHASE),VGT(IPHASE,1),bg(iphase,1),
  1094. # KCH(IPHASE),Mbg(Iphase,1),err1)
  1095.  
  1096. c -- increments du volume poro-meca par phase -----------------
  1097. if(VGT(iphase,1).ne.0.d0) then
  1098. dbgVg(iphase)=(bg(iphase,1)*Mbg(Iphase,1)*VGT(iphase,1)
  1099. # -bg(iphase,0)*Mbg(Iphase,0)*VGT(IPHASE,0))/Mbg(Iphase,1)
  1100. else
  1101. dbgVg(iphase)=0.d0
  1102. end if
  1103. c variation de pression lors du tir viscoelastique
  1104. dbgpg(iphase)=Mbg(Iphase,1)*dbgVg(iphase)
  1105. bgpg(iphase)=bgpg(iphase)+dbgpg(iphase)
  1106.  
  1107. c - volume initial de gel ds les fissures ----------------------
  1108. VGF(iphase,1)=VGF(iphase,0)
  1109.  
  1110. c - indicateurs de prise en compte du couplage chemo-plastique -
  1111.  
  1112. if(VGT(IPHASE,1).eq.0.d0) then
  1113. c on desactive la migration vers les fissures pour cette phase
  1114. GCH(IPHASE)=0.d0
  1115. else
  1116. c la migration des produits chimiques vers les fissures est
  1117. c autorisee pour cette phase
  1118. GCH(IPHASE)=1.d0
  1119. end if
  1120. c dans les deux cas l increment de volume de fissure remplies de
  1121. c de gel est initialise a zero
  1122. dbgVd(iphase)=0.d0
  1123.  
  1124.  
  1125. c --- deformation thermique fin de pas--------------------------
  1126.  
  1127. c (attention même TTREF que pour le reste)
  1128. ETH(IPHASE,1)=(ALP(IPHASE)-ALP(-1))*(teta2-TTREF)
  1129. c increment de def thermique pour la phase
  1130. DETH(IPHASE)=ETH(IPHASE,1)-ETH(IPHASE,0)
  1131.  
  1132. c --- contrainte hydrique si non saturee -----------------------
  1133.  
  1134. call epsw3d(PORO(IPHASE),SRW(IPHASE),MVG(IPHASE),
  1135. # NVG(IPHASE),MK(IPHASE),MG(IPHASE),EPSMW,SEW(IPHASE,1),IERR1)
  1136. c sew=-biot*sw*pw=+biot*sw*pc si pg=0
  1137. if(err1.eq.1)then
  1138. print*,'Pb 1 calcul du retrait dans inclusion 3d'
  1139. ierr1=1
  1140. return
  1141. end if
  1142. c increment de def equivalente hydrique (attention c est bien
  1143. c une depression capillaire qui est appliquee niveau statique
  1144. DSEW(IPHASE)=SEW(IPHASE,1)-SEW(IPHASE,0)
  1145. dbwpw(IPHASE)=-DSEW(IPHASE)
  1146.  
  1147. c --- deformation physique liee la variation du volume d eau -----
  1148.  
  1149. EPH(IPHASE,1)=-CPHY(IPHASE)*
  1150. # PORO(IPHASE)*(1.d0-SRW(IPHASE))/3.d0
  1151. c increment de def osmotique
  1152. DEPH(IPHASE)=EPH(IPHASE,1)-EPH(IPHASE,0)
  1153.  
  1154. end do
  1155.  
  1156. c ----- fin d actualisation physico-chimique ----------------------
  1157.  
  1158. c ---- relation depse / depsa en variables generalisees -----------
  1159.  
  1160. call jelc3d(NBRINC,NINC,NDIMG,NDIMA,FRAC,MK,MG,MBG,JEA,
  1161. # affiche,err1)
  1162. if(affiche_jacobi) then
  1163. print*,'Dans incl3d, JEA pour 1 inclusion'
  1164. do i=1,NDIMG
  1165. write (*,11) (JEA(i,j),j=1,NDIMA)
  1166. 11 format (24E10.3)
  1167. end do
  1168. end if
  1169.  
  1170. c ------------------------------------------------------------------
  1171.  
  1172.  
  1173. c***********************************************************************
  1174. c CALCUL de L ECOULEMENT
  1175. c***********************************************************************
  1176.  
  1177.  
  1178. c ---- initialisation du compteur du nombre d iterations locale ----
  1179. iter=0
  1180. c choix de l etape de calcul (tir viso-elastique si ietap=0)
  1181. ietap=0
  1182. c reduction du residu lors du retour radial
  1183. reduc_resg=1.0d0
  1184. c residu global
  1185. resgp=0.d0
  1186. resga=0.d0
  1187. dresg=0.d0
  1188.  
  1189. c --- compteur d iterations pour l ecoulement local ----------------
  1190. 15 iter=iter+1
  1191.  
  1192.  
  1193. c --- gestion nombre maxi d iterations -----------------------------
  1194. if(iter.lt.itermax) then
  1195. c iteration normale pas de convergence forcee
  1196. CONV_FORCEE=.false.
  1197. if((iter.ge.iter_aff).and.(.not. affiche_iter))then
  1198. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  1199. # 'Inclusion3d Iteration :',iter,
  1200. # 'Residu global:',RESGP,
  1201. # 'D(RESG):',Dresg,
  1202. # 'Tolerance',tolerance
  1203. end if
  1204. if(iter.ge.(itermax-2))then
  1205. c la non convergence approche on commence a afficher des infos
  1206. affiche=.true.
  1207. end if
  1208. else if (iter.eq.itermax) then
  1209. print*,'Nbre max sous iterations atteint '
  1210. print*,'dans INCL3D',iter
  1211. print*,'Residus locaux',RESGP
  1212. affiche=.true.
  1213. c on passe en convergence forcee
  1214. CONV_FORCEE=.true.
  1215. plast=.false.
  1216. plastt=.false.
  1217. plastc=.false.
  1218. plastl=.false.
  1219. c on procede a un dernier calcul visco elastique avant de sortir
  1220. ietap=0
  1221. else
  1222. ierr1=1
  1223. return
  1224. end if
  1225.  
  1226. c ******************************************************************
  1227. c Decomposition des variables tensorielles en partie diagonale
  1228. c et partie complémentaire dans la base principale de travail : v33
  1229. c ******************************************************************
  1230.  
  1231. c niveau macro
  1232. iphase=-1
  1233. call dcmp3d(IPHASE,0,NBRINC,SEFFR,SEFFR_PRIN,SEFFR_COMP,
  1234. # v33,v33t,AFFICHE,'SEFFR')
  1235. call dcmp3d(IPHASE,0,NBRINC,EPSTR,EPSTR_PRIN,EPSTR_COMP,
  1236. # v33,v33t,AFFICHE,'EPSTR')
  1237. do iphase=0,ninc
  1238. c projection et decomposition par phase
  1239. call dcmp3d(IPHASE,0,NBRINC,SEFFR,SEFFR_PRIN,SEFFR_COMP,
  1240. # v33,v33t,AFFICHE,'SEFFR')
  1241. call dcmp3d(IPHASE,0,NBRINC,EPSER,EPSER_PRIN,EPSER_COMP,
  1242. # v33,v33t,AFFICHE,'EPSER')
  1243. call dcmp3d(IPHASE,0,NBRINC,EPSMR,EPSMR_PRIN,EPSMR_COMP,
  1244. # v33,v33t,AFFICHE,'EPSMR')
  1245. call dcmp3d(IPHASE,0,NBRINC,EPSKR,EPSKR_PRIN,EPSKR_COMP,
  1246. # v33,v33t,AFFICHE,'EPSKR')
  1247. call dcmp3d(IPHASE,0,NBRINC,EPSTR,EPSTR_PRIN,EPSTR_COMP,
  1248. # v33,v33t,AFFICHE,'EPSTR')
  1249. call dcmp3d(IPHASE,0,NBRINC,EPSCR,EPSCR_PRIN,EPSCR_COMP,
  1250. # v33,v33t,AFFICHE,'EPSCR')
  1251. call dcmp3d(IPHASE,0,NBRINC,EPSLR,EPSLR_PRIN,EPSLR_COMP,
  1252. # v33,v33t,AFFICHE,'EPSLR')
  1253. if(iphase.ge.1) then
  1254. c projection et decomposition des composantes radiales d interface
  1255. call dcmp3d(IPHASE,0,NBRINC,SEFFI,SEFFI_PRIN,SEFFI_COMP,
  1256. # v33,v33t,AFFICHE,'SEFFI')
  1257. call dcmp3d(IPHASE,0,NBRINC,EPSEI,EPSEI_PRIN,EPSEI_COMP,
  1258. # v33,v33t,AFFICHE,'EPSEI')
  1259. call dcmp3d(IPHASE,0,NBRINC,EPSMI,EPSMI_PRIN,EPSMI_COMP,
  1260. # v33,v33t,AFFICHE,'EPSMI')
  1261. call dcmp3d(IPHASE,0,NBRINC,EPSKI,EPSKI_PRIN,EPSKI_COMP,
  1262. # v33,v33t,AFFICHE,'EPSKI')
  1263. call dcmp3d(IPHASE,0,NBRINC,EPSTI,EPSTI_PRIN,EPSTI_COMP,
  1264. # v33,v33t,AFFICHE,'EPSTI')
  1265. call dcmp3d(IPHASE,0,NBRINC,EPSCI,EPSCI_PRIN,EPSCI_COMP,
  1266. # v33,v33t,AFFICHE,'EPSCI')
  1267. c projection et decomposition des composantes orthoradiales d interface
  1268. call dcmp3d(IPHASE,0,NBRINC,SEFFO,SEFFO_PRIN,SEFFO_COMP,
  1269. # v33,v33t,AFFICHE,'SEFFO')
  1270. call dcmp3d(IPHASE,0,NBRINC,EPSEO,EPSEO_PRIN,EPSEO_COMP,
  1271. # v33,v33t,AFFICHE,'EPSEO')
  1272. call dcmp3d(IPHASE,0,NBRINC,EPSMO,EPSMO_PRIN,EPSMO_COMP,
  1273. # v33,v33t,AFFICHE,'EPSMO')
  1274. call dcmp3d(IPHASE,0,NBRINC,EPSKO,EPSKO_PRIN,EPSKO_COMP,
  1275. # v33,v33t,AFFICHE,'EPSKO')
  1276. call dcmp3d(IPHASE,0,NBRINC,EPSTO,EPSTO_PRIN,EPSTO_COMP,
  1277. # v33,v33t,AFFICHE,'EPSTO')
  1278. call dcmp3d(IPHASE,0,NBRINC,EPSCO,EPSCO_PRIN,EPSCO_COMP,
  1279. # v33,v33t,AFFICHE,'EPSCO')
  1280. end if
  1281. end do
  1282.  
  1283. c ******************************************************************
  1284. c Coeffs de Fluage dans la base d ecoulement V33
  1285. c ******************************************************************
  1286.  
  1287. if((iter.eq.1).or.(ietap.ge.4).or.(CONV_FORCEE)) then
  1288.  
  1289. c reevaluation des coeff de fluage le cas echeant
  1290. LOG_FLU=.false.
  1291. do iphase=0,ninc
  1292.  
  1293. c indicateur de presence d au moins une phase visco elastique
  1294. LOG_FLU=LOG_FLU.or.FLUAGE(IPHASE)
  1295.  
  1296. c -- coeffs fluage dans les zones homogenes des phases--------
  1297.  
  1298. if(FLUAGE(IPHASE)) then
  1299.  
  1300. c --- Maxwell consolidant ----------------------------------
  1301.  
  1302. c - recuperation des deformation de maxwell et elastiques
  1303. c debut de pas de temps
  1304. do ICOMP=1,6
  1305. epse6(ICOMP)=EPSER0(IPHASE,ICOMP,0)
  1306. epsm6(ICOMP)=EPSMR0(IPHASE,ICOMP,0)
  1307. end do
  1308. c - initialisation des coeff modificateurs du potentiel
  1309. c - pas de fluage non lin a cette echelle
  1310. CMp(IPHASE)=1.d0
  1311. c - prise en compte de la saturation
  1312. VWp(IPHASE)=PORO(IPHASE)*SRW(IPHASE)
  1313. c -effet de l eau sur la vitesse de fluage
  1314. CWv(iphase)=SRW(IPHASE)
  1315. c le coeff d amplification hydrique est inactif
  1316. CWp(IPHASE)=1.d0
  1317. c - pas d endo thermique
  1318. DTH0=0.d0
  1319. DT80=0.d0
  1320. EADTH=0.d0
  1321. c - prise en compte de la temperature sur la vitesse
  1322. c calcul des coeff thermiques de fluage de Maxwell
  1323. c (tetas=81>80 evite de calculer dth)
  1324. call thrm3d(teta1,EADTH,81.,TTREF,DT80,
  1325. # DTH0,DTH1,CTHP(IPHASE),CTHV(IPHASE),PORO(IPHASE),
  1326. # VWp(IPHASE),EAF(IPHASE))
  1327. c activation de l affichage pour les coeffs de fluage
  1328. if(affiche_fluage) then
  1329. print*,'Calcul des coeffs de fluage dans incl3d'
  1330. write(*,'(A39,I2,1X,A3,E10.3)')
  1331. # 'Calcul coeffs fluage radial dans phase:',
  1332. # iphase,'Dt=',dt
  1333. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1334. # 'CTHP(',IPHASE,')=',CTHP(IPHASE),
  1335. # 'CTHV(',IPHASE,')=',CTHV(IPHASE)
  1336. end if
  1337. c - Consolidation de Maxwell-non-lineaire
  1338. call conso3d(keff,KFLM(IPHASE),1.d0,epsm6,epse6,cc3,
  1339. # v33,CMp(IPHASE),CTHp(IPHASE),CTHv(IPHASE),CWp(IPHASE))
  1340. if(affiche_fluage) then
  1341. write(*,'(2(A5,I2,A2,E10.3,1X),A5,E10.3)')
  1342. # 'CMP(',IPHASE,')=',CMp(IPHASE),
  1343. # 'CWv(',IPHASE,')=',CWv(IPHASE),
  1344. # 'Keff',keff
  1345. do i=1,3
  1346. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1347. end do
  1348. end if
  1349. c - temps caracteristique pour le fluage de Maxwell
  1350. tauflum=(TFL(IPHASE)*CWv(iphase))/CTHV(IPHASE)
  1351. do ICOMP=1,3
  1352. CCR(IPHASE,ICOMP)=cc3(ICOMP)
  1353. c coeff de fluage de Maxwell
  1354. AFLUMR1(IPHASE,ICOMP)=
  1355. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1356. if(affiche_fluage) then
  1357. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1358. # 'AFLUMR1(',IPHASE,',',ICOMP,')=',
  1359. # AFLUMR1(IPHASE,ICOMP)
  1360. end if
  1361. end do
  1362.  
  1363. c --- Kelvin -----------------------------------------------
  1364.  
  1365. c Temps caracteristique pour le fluage de Kelvin
  1366. taufluk=(TFL(IPHASE)*CWv(IPHASE))/CTHv(IPHASE)
  1367. BFLUKR1(IPHASE)=1.d0-exp(-dt/taufluk)
  1368. AFLUKR1(IPHASE)=KFLK(IPHASE)*BFLUKR1(IPHASE)
  1369. if(affiche_fluage) then
  1370. write(*,'(A8,I2,A2,E10.3)')
  1371. # 'AFLUKR1(',IPHASE,')=',AFLUKR1(IPHASE)
  1372. write(*,'(A8,I2,A2,E10.3)')
  1373. # 'BFLUKR1(',IPHASE,')=',BFLUKR1(IPHASE)
  1374. end if
  1375.  
  1376. else
  1377.  
  1378. c --- Pas de Maxwell pour cette phase ----------------------
  1379.  
  1380. do ICOMP=1,3
  1381. AFLUMR1(IPHASE,ICOMP)=0.d0
  1382. end do
  1383.  
  1384. c --- Pas de Kelvin pour cette phase -----------------------
  1385.  
  1386. BFLUKR1(IPHASE)=0.d0
  1387. AFLUKR1(IPHASE)=0.d0
  1388.  
  1389. end if
  1390.  
  1391. c --- coeffs fluage dans les zones homogenes des phases ------
  1392.  
  1393. if((IPHASE.ne.0).and.FLUAGE(0)) then
  1394.  
  1395. c -- composante radiale de la deformation a l interface -----
  1396.  
  1397. c -- Maxwell interfaces radiales-----------------------------
  1398.  
  1399. do ICOMP=1,6
  1400. epse6(ICOMP)=EPSEI0(IPHASE,ICOMP,0)
  1401. epsm6(ICOMP)=EPSMI0(IPHASE,ICOMP,0)
  1402. end do
  1403. c attention ici c est la matrice qui flue
  1404. if(affiche_fluage) then
  1405. write(*,'(A38,I2,1X,A3,E10.3)')
  1406. # 'Calcul coeffs fluage radial interface:',
  1407. # iphase,'Dt=',dt
  1408. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1409. # 'CTHP(',0,')=',CTHP(0),
  1410. # 'CTHV(',0,')=',CTHV(0)
  1411. end if
  1412. c - etat initial de consolidation de l interface radiale
  1413. call conso3d(keff,KFLM(0),1.d0,epsm6,epse6,cc3,
  1414. # V33,CMp(0),CTHp(0),CTHv(0),CWp(0))
  1415. if(affiche_fluage) then
  1416. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3,A4,1X,E10.3)')
  1417. # 'CMP(',0,')=',CMp(0),
  1418. # 'CWp(',0,')=',CWp(0),
  1419. # 'Keff',keff
  1420. do i=1,3
  1421. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1422. end do
  1423. end if
  1424. c - temps caracteristique pour le fluage de Maxwell
  1425. tauflum=(TFL(0)*CWv(0))/CTHV(0)
  1426. do ICOMP=1,3
  1427. CCI(IPHASE,ICOMP)=cc3(ICOMP)
  1428. c coeff de fluage de Maxwell
  1429. AFLUMI1(IPHASE,ICOMP)=
  1430. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1431. if(affiche_fluage) then
  1432. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1433. # 'AFLUMI1(',IPHASE,',',ICOMP,')=',AFLUMI1(IPHASE,ICOMP)
  1434. end if
  1435. end do
  1436.  
  1437. c --- Kelvin interfaces radiales-----------------------------
  1438.  
  1439. c Temps caracteristique pour le fluage de Kelvin
  1440. taufluk=(TFL(0)*CWv(0))/CTHv(0)
  1441. BFLUKI1(IPHASE)=1.d0-exp(-dt/taufluk)
  1442. AFLUKI1(IPHASE)=KFLK(0)*BFLUKI1(IPHASE)
  1443. if(affiche_fluage) then
  1444. write(*,'(A8,I2,A2,E10.3)')
  1445. # 'AFLUKI1(',IPHASE,')=',AFLUKI1(IPHASE)
  1446. write(*,'(A8,I2,A2,E10.3)')
  1447. # 'BFLUKI1(',IPHASE,')=',BFLUKI1(IPHASE)
  1448. end if
  1449.  
  1450. c -- Maxwell interface orthoradiale -------------------------
  1451.  
  1452. do ICOMP=1,6
  1453. epse6(ICOMP)=EPSEO0(IPHASE,ICOMP,0)
  1454. epsm6(ICOMP)=EPSMO0(IPHASE,ICOMP,0)
  1455. end do
  1456. c attention ici c est la matrice qui flue
  1457. c pas de fluage non lin aux interfaces
  1458. if(affiche_fluage) then
  1459. write(*,'(A42,I2,1X,A3,E10.3)')
  1460. # 'Calcul coeffs fluage orthoradial interface:',
  1461. # iphase,'Dt=',dt
  1462. write(*,'(A5,I2,A2,E10.3,1X,A5,I2,A2,E10.3)')
  1463. # 'CTHP(',0,')=',CTHP(0),
  1464. # 'CTHV(',0,')=',CTHV(0)
  1465. end if
  1466. c etat initial de consolidation orthoradiale de l interface
  1467. call conso3d(keff,KFLM(0),1.d0,epsm6,epse6,cc3,
  1468. # V33,CMp(0),CTHp(0),CTHv(0),CWp(0))
  1469. if(affiche_fluage) then
  1470. write(*,'(2(A5,I2,A2,E10.3,1X),A5,E10.3)')
  1471. # 'CMP(',0,')=',CMp(0),
  1472. # 'CWp(',0,')=',CWp(0),
  1473. # 'Keff',keff
  1474. do i=1,3
  1475. write(*,'(A3,I2,A2,E10.3)') 'CC(',i,')=',cc3(i)
  1476. end do
  1477. end if
  1478. do ICOMP=1,3
  1479. CCO(IPHASE,ICOMP)=cc3(ICOMP)
  1480. c coeff de fluage de Maxwell
  1481. AFLUMO1(IPHASE,ICOMP)=
  1482. # keff*log(1.d0+dt/(keff*tauflum*cc3(ICOMP)))
  1483. if(affiche_fluage) then
  1484. write(*,'(A8,I2,A1,I2,A2,E10.3)')
  1485. # 'AFLUMO1(',IPHASE,',',ICOMP,')=',
  1486. # AFLUMO1(IPHASE,ICOMP)
  1487. end if
  1488. end do
  1489.  
  1490. c --- Kelvin interface orthoradiale--------------------------
  1491.  
  1492. c - idem radial interface
  1493. BFLUKO1(IPHASE)=BFLUKI1(IPHASE)
  1494. AFLUKO1(IPHASE)=AFLUKI1(IPHASE)
  1495. if(affiche_fluage) then
  1496. write(*,'(A8,I2,A2,E10.3)')
  1497. # 'AFLUKO1(',IPHASE,')=',AFLUKO1(IPHASE)
  1498. write(*,'(A8,I2,A2,E10.3)')
  1499. # 'BFLUKO1(',IPHASE,')=',BFLUKO1(IPHASE)
  1500. end if
  1501.  
  1502. else if(.not.fluage(0)) then
  1503.  
  1504.  
  1505. do ICOMP=1,3
  1506.  
  1507. c - Pas de fluage de Maxwell aux interfaces --------------
  1508.  
  1509. AFLUMI1(IPHASE,ICOMP)=0.D0
  1510. AFLUMO1(IPHASE,ICOMP)=0.d0
  1511. end do
  1512.  
  1513. c - Pas de fluage de Kelvin aux interfaces ------------------
  1514.  
  1515. AFLUKI1(IPHASE)=0.D0
  1516. AFLUKO1(IPHASE)=0.d0
  1517. BFLUKI1(IPHASE)=0.D0
  1518. BFLUKO1(IPHASE)=0.d0
  1519.  
  1520. end if
  1521.  
  1522. c retour a l affichage par defaut
  1523. if(affiche_fluage.and.LOG_FLU) then
  1524. print*,'Dans incl3d Valider pour continuer'
  1525. read*
  1526. end if
  1527.  
  1528. end do
  1529.  
  1530.  
  1531. c -- passage des coefficients viscoelastique en espace generalise-
  1532.  
  1533. do IPHASE=0,NINC
  1534. c placement du pointeur
  1535. If(IPHASE.eq.0) then
  1536. IDEBUT=9*NINC
  1537. else
  1538. IDEBUT=(IPHASE-1)*9
  1539. end if
  1540. c remplissage des vecteurs
  1541. do ICOMP=1,3
  1542. c -phase
  1543. ak(IDEBUT+ICOMP)=AFLUKR1(IPHASE)
  1544. bk(IDEBUT+ICOMP)=BFLUKR1(IPHASE)
  1545. am(IDEBUT+ICOMP)=AFLUMR1(IPHASE,ICOMP)
  1546. if(iter.eq.1) then
  1547. ek0(IDEBUT+ICOMP)=EPSKR_PRIN(IPHASE,ICOMP)
  1548. ee0(IDEBUT+ICOMP)=EPSER_PRIN(IPHASE,ICOMP)
  1549. else
  1550. ek0(IDEBUT+ICOMP)=0.d0
  1551. ee0(IDEBUT+ICOMP)=0.d0
  1552. end if
  1553. if(IPHASE.ge.1) then
  1554. c -interface direction radiale
  1555. ak(IDEBUT+3+ICOMP)=AFLUKI1(IPHASE)
  1556. bk(IDEBUT+3+ICOMP)=BFLUKI1(IPHASE)
  1557. am(IDEBUT+3+ICOMP)=AFLUMI1(IPHASE,ICOMP)
  1558. if(iter.eq.1) then
  1559. ek0(IDEBUT+3+ICOMP)=EPSKI_PRIN(IPHASE,ICOMP)
  1560. ee0(IDEBUT+3+ICOMP)=EPSEI_PRIN(IPHASE,ICOMP)
  1561. else
  1562. ek0(IDEBUT+3+ICOMP)=0.d0
  1563. ee0(IDEBUT+3+ICOMP)=0.d0
  1564. end if
  1565. c -interface direction otho-radiale
  1566. ak(IDEBUT+6+ICOMP)=AFLUKO1(IPHASE)
  1567. bk(IDEBUT+6+ICOMP)=BFLUKO1(IPHASE)
  1568. am(IDEBUT+6+ICOMP)=AFLUMO1(IPHASE,ICOMP)
  1569. if(iter.eq.1) then
  1570. ek0(IDEBUT+6+ICOMP)=EPSKO_PRIN(IPHASE,ICOMP)
  1571. ee0(IDEBUT+6+ICOMP)=EPSEO_PRIN(IPHASE,ICOMP)
  1572. else
  1573. ek0(IDEBUT+6+ICOMP)=0.d0
  1574. ee0(IDEBUT+6+ICOMP)=0.d0
  1575. end if
  1576. end if
  1577. end do
  1578. end do
  1579. if(affiche_fluage) then
  1580. print*,'Coeff de couplage visco elastiques'
  1581. do icomp=1,NDIMG
  1582. write(*,'(A3,I2,A2,E10.3)') 'AK(',icomp,')=',ak(icomp)
  1583. end do
  1584. do icomp=1,NDIMG
  1585. write(*,'(A3,I2,A2,E10.3)') 'BK(',icomp,')=',bk(icomp)
  1586. end do
  1587. do icomp=1,NDIMG
  1588. write(*,'(A3,I2,A2,E10.3)') 'AM(',icomp,')=',am(icomp)
  1589. end do
  1590. do icomp=1,NDIMG
  1591. write(*,'(A3,I2,A2,E10.3)') 'EE(',icomp,')=',ee0(icomp)
  1592. end do
  1593. do icomp=1,NDIMG
  1594. write(*,'(A3,I2,A2,E10.3)') 'EK(',icomp,')=',ek0(icomp)
  1595. end do
  1596. end if
  1597. end if
  1598.  
  1599. c --- fin de l actualisation des coeff de fluage -------------------
  1600.  
  1601.  
  1602. c --- gonflement imposee homogene orthotrope des phases ------------
  1603.  
  1604. do iphase=0,NINC
  1605. if(affiche_gel) then
  1606. print*,'Inclusion3d GCH(',iphase,')=',GCH(iphase)
  1607. end if
  1608. end do
  1609.  
  1610. c --- fin maj gonflement imposee des phases ------------------------
  1611.  
  1612.  
  1613. c ******************************************************************
  1614. c Tir ou ecoulement pour le cas avec un seul type d inclusion
  1615. c ******************************************************************
  1616.  
  1617. if(affiche_gel) then
  1618. do iphase=0,ninc
  1619. write(*,'(A23,I2,A2,E10.3,2(1X,A10,I2,A2,E10.3))')
  1620. # 'Dans incl3d dbgvg(',iphase,')=',dbgvg(iphase),
  1621. # 'Gch(',iphase,')=',Gch(iphase),
  1622. # 'bg(',iphase,')=',bg(iphase,1)
  1623. end do
  1624. end if
  1625.  
  1626. c tir (ietap=0) ou ecoulement plastique (ietap =4)
  1627.  
  1628. call lcls3d(IETAP,NGF,ERR1,AA,XX,A2,BB,AAI,BBI,AAP,IPZERO,
  1629. # NBRINC,NINC,NDIMG,NDIMA,LOG_FLU,PLAST,ITER,DETH,DEPH,DEPST3,
  1630. # JEA,JSE,AK,BK,AM,EE0,EK0,DEPSE1,DEPSM1,DEPSK1,FRAC,DEPST1,
  1631. # NTMAX,FT,NBRACT,LNUMCRT,ACTIFT,PLASTT,DPFTDS,DGFTDS,REST,
  1632. # PFT_GRAD_PFT,PFT_GRAD_GFT,DEPSC1,NCMAX,NBRACC,FC,LNUMCRC,
  1633. # ACTIFC,PLASTC,DPFCDS,DGFCDS,RESC,PFC_GRAD_PFC,PFC_GRAD_GFC,
  1634. # DEPSL1,NLMAX,FL,NBRACL,LNUMCRL,ACTIFL,PLASTL,DPFLDS,DGFLDS,
  1635. # RESL,PFL_GRAD_PFL,PFL_GRAD_GFL,Gch,bg,dbgVg,dbgVd,dbwPw,
  1636. # reduc_resg,JSP,Je1epg,Mbg,NDIMPL,RgR,Jsgep,PFG_GRAD_PFG,
  1637. # PRECISION3D,AFFICHE,CONV_FORCEE)
  1638.  
  1639. c verif solution localisation
  1640. if(affiche) then
  1641. do i=1,NDIMG
  1642. write(*,'(A7,I2,A2,E10.3)') 'DEPSE1(',i,')=',depse1(i)
  1643. end do
  1644. end if
  1645.  
  1646. c traitement erreur lcls3d
  1647. if(err1.eq.1) ierr1=1
  1648. if(ierr1.eq.1) then
  1649. print*,'Pb dans incl3d apres lcls3d'
  1650. print*,'fluage:',LOG_FLU
  1651. print*,'plasticite:',plast
  1652. return
  1653. end if
  1654.  
  1655. c compteur de reduction par refermeture de fissure (epsplt>0)
  1656. iter_rf=1
  1657.  
  1658.  
  1659. c ******************************************************************
  1660. c Preparation Boucle de mise a jour conditionelle des deformations
  1661. c ******************************************************************
  1662.  
  1663. c variable logique pour savoir si on doit reinjecter du gel dans une
  1664. c phase suite aux reductions
  1665. LogReducGEL=.false.
  1666. c initialisation du volume de fissure accessible au gel par phase
  1667. do iphase=1,NINC
  1668. VGF(iphase,1)=VGF(iphase,0)
  1669. end do
  1670.  
  1671. c ******************************************************************
  1672. c point de redémarrage des test de refermeture et ecoulement
  1673. c chemo plastique en cas de refermture et d ecoulement simultanees
  1674. c ******************************************************************
  1675.  
  1676. c initialisation du coeff de reduction de retour radial
  1677. 40 reduc=1.d0
  1678. do idir=1,NDIMG
  1679. reduc_prov(idir)=1.d0
  1680. end do
  1681.  
  1682. c actualisation du volume de gel residuel
  1683.  
  1684. c ******************************************************************
  1685. c Tests d admissibilite des refermeture et mise a jour
  1686. c ******************************************************************
  1687.  
  1688. do iphase=0,ninc
  1689. if(iphase.eq.0) then
  1690. c matrice
  1691. idebut=9*ninc
  1692. else
  1693. c inclusion et interface
  1694. idebut=9*(iphase-1)
  1695. end if
  1696. c elastique dans la phase
  1697. do i=1,3
  1698. xp3(iphase,i)=DEPSE1(idebut+i)+EPSER_PRIN(iphase,i)
  1699. end do
  1700. call recm3d(iphase,1,EPSER_COMP,xp3,EPSER,v33,v33t)
  1701. c Maxwell dans la phase
  1702. do i=1,3
  1703. xp3(iphase,i)=DEPSM1(idebut+i)+EPSMR_PRIN(iphase,i)
  1704. end do
  1705. call recm3d(iphase,1,EPSMR_COMP,xp3,EPSMR,v33,v33t)
  1706. c Kelvin dans la phase
  1707. do i=1,3
  1708. xp3(iphase,i)=DEPSK1(idebut+i)+EPSKR_PRIN(iphase,i)
  1709. end do
  1710. call recm3d(iphase,1,EPSKR_COMP,xp3,EPSKR,v33,v33t)
  1711. C Plasticite en traction dans la phase
  1712. if(PLASTT) then
  1713. do i=1,3
  1714. xp3(iphase,i)=DEPST1(idebut+i)+EPSTR_PRIN(iphase,i)
  1715. if(Log_RTG(idebut+i)) then
  1716. if(xp3(iphase,i).lt.(-precision3d)) then
  1717.  
  1718. c --- test de refermeture radiale dans les phases --------
  1719.  
  1720. if(DEPST1(idebut+i).lt.(-precision3d)) then
  1721. reduc_prov(idebut+i)=
  1722. # (-EPSTR_PRIN(iphase,i))
  1723. # /(DEPST1(idebut+i))
  1724. end if
  1725. reduc=min(reduc,reduc_prov(idebut+i))
  1726. if(reduc.le.precision3d) then
  1727. print*,'Dans incl3d lors du calcul de reduc'
  1728. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1729. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1730. write(*,'(A11,E10.3)')
  1731. # 'EPSTR_PRIN=',EPSTR_PRIN(iphase,i)
  1732. write(*,'(A7,E10.3)')
  1733. # 'DEPST1=',DEPST1(idebut+i)
  1734. end if
  1735.  
  1736. c --------------------------------------------------------
  1737. end if
  1738. end if
  1739. end do
  1740. call recm3d(iphase,1,EPSTR_COMP,xp3,EPSTR,v33,v33t)
  1741. else
  1742. do i=1,6
  1743. EPSTR(iphase,i,1)=EPSTR(iphase,i,0)
  1744. end do
  1745. end if
  1746. C Plasticite en cisaillement dans la phase
  1747. do i=1,3
  1748. xp3(iphase,i)=DEPSC1(idebut+i)+EPSCR_PRIN(iphase,i)
  1749. end do
  1750. call recm3d(iphase,1,EPSCR_COMP,xp3,EPSCR,v33,v33t)
  1751.  
  1752. C Plasticite localisee dans la phase
  1753. if(PLASTL) then
  1754. do i=1,3
  1755. xp3(iphase,i)=DEPSL1(idebut+i)+EPSLR_PRIN(iphase,i)
  1756. if(Log_RLG(idebut+i)) then
  1757. if(xp3(iphase,i).lt.(-precision3d)) then
  1758.  
  1759. c --- test de refermeture radiale dans les interfaces ----
  1760.  
  1761. if(DEPSL1(idebut+i).lt.(-precision3d)) then
  1762. reduc_prov(idebut+i)=
  1763. # (-EPSLR_PRIN(iphase,i))
  1764. # /(DEPSL1(idebut+i))
  1765. end if
  1766. reduc=min(reduc,reduc_prov(idebut+i))
  1767. if(reduc.le.precision3d) then
  1768. print*,'Dans incl3d lors du calcul de reduc'
  1769. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1770. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1771. write(*,'(A11,E10.3)')
  1772. # 'EPSLR_PRIN=',EPSLR_PRIN(iphase,i)
  1773. write(*,'(A7,E10.3)')
  1774. # 'DEPSL1=',DEPSL1(idebut+i)
  1775. end if
  1776.  
  1777. c --------------------------------------------------------
  1778. end if
  1779. end if
  1780. end do
  1781. call recm3d(iphase,1,EPSLR_COMP,xp3,EPSLR,v33,v33t)
  1782. else
  1783. do i=1,6
  1784. EPSLR(iphase,i,1)=EPSLR(iphase,i,0)
  1785. end do
  1786. end if
  1787. c variable en + pour les interfaces
  1788. if (iphase.ge.1) then
  1789. c Elastique radiale dans l interface de l inclusion
  1790. do i=1,3
  1791. xp3(iphase,i)=DEPSE1(idebut+3+i)+EPSEI_PRIN(iphase,i)
  1792. end do
  1793. call recm3d(iphase,1,EPSEI_COMP,xp3,EPSEI,v33,v33t)
  1794. c Elastique orthoradiale dans l interface de l inclusion
  1795. do i=1,3
  1796. xp3(iphase,i)=DEPSE1(idebut+6+i)+EPSEO_PRIN(iphase,i)
  1797. end do
  1798. call recm3d(iphase,1,EPSEO_COMP,xp3,EPSEO,v33,v33t)
  1799. c Maxwell radial dans l interface de l inclusion
  1800. do i=1,3
  1801. xp3(iphase,i)=DEPSM1(idebut+3+i)+EPSMI_PRIN(iphase,i)
  1802. end do
  1803. call recm3d(iphase,1,EPSMI_COMP,xp3,EPSMI,v33,v33t)
  1804. c Maxwell orthoradiale dans l interface de l inclusion
  1805. do i=1,3
  1806. xp3(iphase,i)=DEPSM1(idebut+6+i)+EPSMO_PRIN(iphase,i)
  1807. end do
  1808. call recm3d(iphase,1,EPSMO_COMP,xp3,EPSMO,v33,v33t)
  1809. c Kelvin radial dans l interface de l inclusion
  1810. do i=1,3
  1811. xp3(iphase,i)=DEPSK1(idebut+3+i)+EPSKI_PRIN(iphase,i)
  1812. end do
  1813. call recm3d(iphase,1,EPSKI_COMP,xp3,EPSKI,v33,v33t)
  1814. c Kelvin orthoradiale dans l interface de l inclusion
  1815. do i=1,3
  1816. xp3(iphase,i)=DEPSK1(idebut+6+i)+EPSKO_PRIN(iphase,i)
  1817. end do
  1818. call recm3d(iphase,1,EPSKO_COMP,xp3,EPSKO,v33,v33t)
  1819. c Traction radiale dans l interface de l inclusion
  1820. if(PLASTT) then
  1821. do i=1,3
  1822. xp3(iphase,i)=DEPST1(idebut+3+i)+EPSTI_PRIN(iphase,i)
  1823. if(Log_RTG(idebut+3+i)) then
  1824. if(xp3(iphase,i).lt.(-precision3d)) then
  1825.  
  1826. c --- test de refermeture radiale dans ITZ ------------
  1827.  
  1828. if(DEPST1(idebut+3+i).lt.(-precision3d)) then
  1829. reduc_prov(idebut+3+i)=
  1830. # -EPSTI_PRIN(iphase,i)/DEPST1(idebut+3+i)
  1831. end if
  1832. reduc=min(reduc,reduc_prov(idebut+3+i))
  1833. if(reduc.le.precision3d) then
  1834. print*,'Dans incl3d lors du calcul de reduc'
  1835. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1836. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1837. write(*,'(A11,E10.3)')
  1838. # 'EPSTI_PRIN=',EPSTI_PRIN(iphase,i)
  1839. write(*,'(A7,E10.3)')
  1840. # 'DEPST1=',DEPST1(idebut+3+i)
  1841. end if
  1842.  
  1843. c -----------------------------------------------------
  1844.  
  1845. end if
  1846. end if
  1847. end do
  1848. call recm3d(iphase,1,EPSTI_COMP,xp3,EPSTI,v33,v33t)
  1849. else
  1850. do i=1,6
  1851. EPSTI(iphase,i,1)=EPSTI(iphase,i,0)
  1852. end do
  1853. end if
  1854. c Traction orthoradiale dans ITZ
  1855. if(PLASTT) then
  1856. do i=1,3
  1857. xp3(iphase,i)=DEPST1(idebut+6+i)+EPSTO_PRIN(iphase,i)
  1858. if(Log_RTG(idebut+6+i)) then
  1859. if(xp3(iphase,i).lt.(-precision3d)) then
  1860.  
  1861. c -test de refermeture orthoradiale dans ITZ ---------
  1862.  
  1863. if(DEPST1(idebut+6+i).lt.(-precision3d)) then
  1864. reduc_prov(idebut+6+i)=-EPSTO_PRIN(iphase,i)/
  1865. # DEPST1(idebut+6+i)
  1866. end if
  1867. reduc=min(reduc,reduc_prov(idebut+6+i))
  1868. if(reduc.le.precision3d) then
  1869. print*,'Dans incl3d lors du calcul de reduc'
  1870. write(*,'(A6,I2,1X,A6,I2,1X,A4,I2)')
  1871. # 'PHASE:',iphase,'debut:',idebut,'dir:',i
  1872. write(*,'(A11,E10.3)')
  1873. # 'EPSTO_PRIN=',EPSTO_PRIN(iphase,i)
  1874. write(*,'(A7,E10.3)')
  1875. # 'DEPST1=',DEPST1(idebut+6+i)
  1876. end if
  1877.  
  1878. c ----------------------------------------------------
  1879.  
  1880. end if
  1881. end if
  1882. end do
  1883. call recm3d(iphase,1,EPSTO_COMP,xp3,EPSTO,v33,v33t)
  1884. else
  1885. do i=1,6
  1886. EPSTO(iphase,i,1)=EPSTO(iphase,i,0)
  1887. end do
  1888. end if
  1889. c Cisaillement radial dans l interface de l inclusion
  1890. do i=1,3
  1891. xp3(iphase,i)=DEPSC1(idebut+3+i)+EPSCI_PRIN(iphase,i)
  1892. end do
  1893. call recm3d(iphase,1,EPSCI_COMP,xp3,EPSCI,v33,v33t)
  1894. c Cisaillement orthoradiale dans l interface de l inclusion
  1895. do i=1,3
  1896. xp3(iphase,i)=DEPSC1(idebut+6+i)+EPSCO_PRIN(iphase,i)
  1897. end do
  1898. call recm3d(iphase,1,EPSCO_COMP,xp3,EPSCO,v33,v33t)
  1899. end if
  1900. end do
  1901.  
  1902. C ***** Plasticite en traction localisee au niveau macro desactivee*
  1903.  
  1904. iphase=-1
  1905. do i=1,3
  1906. xp3(iphase,i)=0.d0+EPSTR_PRIN(iphase,i)
  1907. end do
  1908. call recm3d(iphase,1,EPSTR_COMP,xp3,EPSTR,v33,v33t)
  1909.  
  1910. c ***** test ecoulement gel dans les fissures **********************
  1911.  
  1912. do iphase=0,ninc
  1913. if((gch(iphase).eq.1.d0).and.(ietap.ne.0)) then
  1914. c volume de gel qui vient de s ecouler dans les fissures
  1915. c actualise par la reduction d ecoulement plastique par les
  1916. c conditions de refermeture
  1917. dbgvd_actuel=reduc*dbgVd(iphase)
  1918. c variation de pression dans le gel induite par l ecoulement
  1919. dbgpg(iphase)=-Mbg(iphase,1)*dbgvd_actuel
  1920. c nouvelle pression dans le gel
  1921. bgpg_actuel=bgpg(iphase)+dbgpg(iphase)
  1922. c le gel peut s ecouler dans les fissures s il est en surpression
  1923. if((bgpg_actuel.lt.0.d0).and.(dbgpg(iphase).ne.0.d0)) then
  1924. c la quantite de gel ecoulé ds les fissures est plus grande
  1925. c que le gel disponible, il faut reduire la fissuration pour
  1926. c limiter la chute de pression du gel dans cette phase
  1927. reduc_ch(iphase)=-bgpg(iphase)/dbgpg(iphase)
  1928. C if (dbgvd_actuel.gt.dbgvg(iphase)) then
  1929. C reduc_ch(iphase)=-dbgvg(iphase)/dbgvd_actuel
  1930. if(reduc_ch(iphase).gt.1.) then
  1931. print*,'Dans incl3d...'
  1932. print*,'Pb lors de la reduction de fissuration'
  1933. print*,'a cause du gel, reduc_ch(',iphase,')=',
  1934. # reduc_ch(iphase)
  1935. print*,'bgpg(',iphase,')=',bgpg(iphase)
  1936. print*,'dbgpg(',iphase,')=',dbgpg(iphase)
  1937. err1=1
  1938. return
  1939. else
  1940. LogReducGEL=.true.
  1941. if(reduc_ch(iphase).le.0.) then
  1942. c le gel passe en depression
  1943. if(affiche_gel.or.affiche_reduc) then
  1944. print*,'incl3d,le gel passe '
  1945. print*,'en depression, on reduit'
  1946. print*,'l increment de plasticite'
  1947. print*,'Avant la reduction on a :'
  1948. print*,'bgpg(',iphase,')=',bgpg(iphase)
  1949. print*,'dbgpg(',iphase,')=',dbgpg(iphase)
  1950. print*,'-> pression a 0 pour phase',iphase
  1951. ierr1=1
  1952. return
  1953. * read*
  1954. end if
  1955. reduc_ch(iphase)=0.d0
  1956. end if
  1957. Gch(iphase)=0.d0
  1958. end if
  1959. else
  1960. reduc_ch(iphase)=1.d0
  1961. end if
  1962. reduc=reduc*reduc_ch(iphase)
  1963. if((reduc.lt.1.d0).and.((Gch(1).ne.0.).or.(Gch(0).ne.0.)))
  1964. # then
  1965. LogReducGEL=.true.
  1966. if(affiche_reduc)then
  1967. print*,'Inc3d,Reduction de l ecoulement phase ',
  1968. # iphase,'=',reduc_ch(iphase),bgpg(iphase),
  1969. # dbgpg(iphase)
  1970. c read*
  1971. end if
  1972. end if
  1973. else
  1974. dbgpg(iphase)=0.d0
  1975. end if
  1976. end do
  1977.  
  1978. c ******************************************************************
  1979. c Traitement reduction d ecoulement plastique
  1980. c ******************************************************************
  1981.  
  1982. if(reduc.ne.1.d0) then
  1983. c compteur d iteration pour les refermetures
  1984. iter_rf=iter_rf+1
  1985.  
  1986. c reduction des increments et cumul des residus correctifs
  1987. call redu3d(NBRINC,NINC,NDIMG,DEPSE1,DEPSM1,DEPSK1,
  1988. # DEPST1,DEPSC1,DEPSL1,LogReducGEL,reduc,dbgvd,Mbg,dbgpg,
  1989. # precision3d,ierr1,affiche)
  1990.  
  1991. if(ierr1.ne.1) then
  1992. if(iter_rf.gt.3) then
  1993. print*,'Pb incl3d sous iteration fermeture',iter_rf
  1994. do j=0,ninc
  1995. print*,'Reduction chimique phase',j,'=',reduc_ch(iphase)
  1996. print*,'reduc:',reduc
  1997. print*,'reduc_prov',reduc_prov
  1998. end do
  1999. ierr1=1
  2000. return
  2001. else
  2002. c on va refaire une iteration pour la mise a jour des variables
  2003. goto 40
  2004. end if
  2005. else
  2006. print*,'Pb incl3d reduction / fermeture iter',iter_rf
  2007. return
  2008. end if
  2009. end if
  2010.  
  2011.  
  2012. c ******************************************************************
  2013. c Calcul des des contraintes effectives (G=notation globale (1->12))
  2014. c ******************************************************************
  2015.  
  2016. if(ninc.eq.1) then
  2017. do idir=1,NDIMG
  2018. DSEFFG(idir)=0.d0
  2019. c prise en compte solution elastique pour
  2020. c la contrainte effective (dans le solide et non endommagee)
  2021. do jdir=1,NDIMG
  2022. DSEFFG(idir)=DSEFFG(idir)+JSE(idir,jdir)*DEPSE1(jdir)
  2023. end do
  2024. if(affiche) then
  2025. write(*,'(A7,1X,I2,1X,A2,1X,E10.3)')
  2026. # 'dsigma(',idir,')=',DSEFFG(idir)
  2027. end if
  2028. end do
  2029. else
  2030. print*,'Dans incl3d JSE inaptee a ',ninc,' inclusions'
  2031. ierr1=1
  2032. return
  2033. end if
  2034.  
  2035. c **** stockage contraintes radiales dans base fixe ****************
  2036.  
  2037. c on a passe tous les tests de limitation de refermeture
  2038. c et tous les test de limitation d ecoulement chemo-plastique
  2039. c on peut donc conserver les vari et les contraintes
  2040. do iphase=-1,ninc
  2041. if(iphase.eq.-1) then
  2042. c milieu homogene
  2043. do idir=1,3
  2044. xp3(iphase,idir)=0.d0
  2045. c contribution de toutes les phase
  2046. do jphase=0,ninc
  2047. if(jphase.eq.0) then
  2048. idebut=9*ninc
  2049. else
  2050. idebut=9*(jphase-1)
  2051. end if
  2052. xp3(iphase,idir)=xp3(iphase,idir)+
  2053. # FRAC(jphase)*DSEFFG(idebut+idir)
  2054. end do
  2055. c mise a jour de la projection
  2056. xp3(iphase,idir)=xp3(iphase,idir)
  2057. # +SEFFR_PRIN(iphase,idir)
  2058. end do
  2059. else
  2060. if(iphase.eq.0) then
  2061. c sig matrice a l infini = sig moyen matrice
  2062. idebut=9*ninc
  2063. else
  2064. c sig 1er type d inclusion = sig moyen inclusion
  2065. idebut=9*(iphase-1)
  2066. end if
  2067. c combinaison avec le tenseur de contrainte effective macro
  2068. do idir=1,3
  2069. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2070. # +SEFFR_PRIN(iphase,idir)
  2071. end do
  2072. end if
  2073. c mise a jour du tenseur
  2074. call recm3d(iphase,1,SEFFR_COMP,xp3,SEFFR,v33,v33t)
  2075. end do
  2076.  
  2077. c **** stockage contrainte d interface dans base fixe *************
  2078.  
  2079. do iphase=1,ninc
  2080. c contrainte radiale dans l interface (constituee de matrice)
  2081. idebut=9*(iphase-1)+3
  2082. do idir=1,3
  2083. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2084. # +SEFFI_PRIN(iphase,idir)
  2085. end do
  2086. c combinaison avec le tenseur de contrainte totale precedent
  2087. call recm3d(iphase,1,SEFFI_COMP,xp3,SEFFI,v33,v33t)
  2088. c contraintes orthoradiales dans l interface
  2089. idebut=9*(iphase-1)+6
  2090. do idir=1,3
  2091. xp3(iphase,idir)=DSEFFG(idebut+idir)
  2092. # +SEFFO_PRIN(iphase,idir)
  2093. end do
  2094. c combinaison avec le tenseur de contrainte totale precedent
  2095. call recm3d(iphase,1,SEFFO_COMP,xp3,SEFFO,v33,v33t)
  2096. end do
  2097.  
  2098. c *** affichage des tables de contraintes fin d iteration *********
  2099.  
  2100. if(affiche) then
  2101. do iphase=-1,ninc
  2102. write(*,'(A52,I2)')
  2103. # 'Contraintes radiales dans phase :',iphase
  2104. do i=1,6
  2105. write(*,'(A6,I2,I2,A2,E10.3)')
  2106. # 'SEFFR(',iphase,i,')=',SEFFR(iphase,i,1)
  2107. end do
  2108. if(iphase.gt.0) then
  2109. write(*,'(A52,I2)')
  2110. # 'Contraintes radiales dans interface de :',iphase
  2111. do i=1,6
  2112. write(*,'(A6,I2,I2,A2,E10.3)')
  2113. # 'SEFFI(',iphase,i,')=',SEFFI(iphase,i,1)
  2114. end do
  2115. write(*,'(A52,I2)')
  2116. # 'Contraintes othoradiale radiales dans interface de :'
  2117. # ,iphase
  2118. do i=1,6
  2119. write(*,'(A6,I2,I2,A2,E10.3)')
  2120. # 'SEFFO(',iphase,i,')=',SEFFO(iphase,i,1)
  2121. end do
  2122. end if
  2123. end do
  2124. end if
  2125.  
  2126. c ---- Pression dans les pores -------------------------------------
  2127.  
  2128. do iphase=0,NINC
  2129. if(VGT(iphase,1).gt.0.d0) then
  2130. c actualisation de la contrainte chemo mecanique
  2131. bgpg(iphase)=bgpg(iphase)+dbgpg(iphase)
  2132. if(bgpg(iphase).lt.0.) then
  2133. print*,'pression de gel.lt.0 ds incl3d'
  2134. err1=1
  2135. return
  2136. end if
  2137. else
  2138. bgpg(iphase)=0.d0
  2139. end if
  2140. c actualisation du volume de gel dans les fissures
  2141. if(bg(iphase,1).gt.0.d0) then
  2142. VGF(iphase,1)=VGF(iphase,1)+dbgvd(iphase)/bg(iphase,1)
  2143. else
  2144. VGF(iphase,1)=VGF(iphase,0)
  2145. end if
  2146. c recuperation de la contrainte hydrique de la phase
  2147. bwpw(iphase)=-SEW(iphase,1)
  2148. end do
  2149.  
  2150. c ---- contraintes totales moyennes non endommagee par phase ------
  2151.  
  2152. do iphase=0,NINC
  2153. do idir=1,6
  2154. STOTR(IPHASE,IDIR,1)=SEFFR(IPHASE,IDIR,1)
  2155. if(idir.le.3) then
  2156. STOTR(iphase,idir,1)=STOTR(iphase,idir,1)
  2157. # -bwpw(iphase)-bgpg(iphase)
  2158. end if
  2159. end do
  2160. end do
  2161.  
  2162. c ******************************************************************
  2163. c Fin de mise a jour des variables internes LOCALES FINALES
  2164. c ******************************************************************
  2165.  
  2166. c les vari LOCALES FINALES sont les tableaux FIN de pas (ITPS=1),
  2167. c elles ne seront conservees et utilisees pour le prochain sous-pas
  2168. c que si on realise une mise a jour des variables internes LOCALES
  2169. c INITIALES avec la subroutine MJVR3D
  2170.  
  2171. call mjvr3d(NBRINC,NINC,ACH,VGT,VGF,ETH,SEW,EPH,
  2172. # SEFFR,EPSER,EPSMR,EPSKR,EPSTR,EPSCR,EPSLR,EPSRH,STOTR,
  2173. # SEFFI,EPSEI,EPSMI,EPSKI,EPSTI,EPSCI,
  2174. # SEFFO,EPSEO,EPSMO,EPSKO,EPSTO,EPSCO)
  2175.  
  2176. c les vari LOCALES ne deviendront des vari stockables dans la
  2177. c table du code que si on les stocke sur le tableau VARF ce qui
  2178. c ne peut etre fait qu apres convergence de la plasticite
  2179.  
  2180. c ******************************************************************
  2181. c Evaluation des criteres en base generalisee a la fin du sous pas
  2182. c ******************************************************************
  2183.  
  2184. c on evalue et classe les criteres du + grd au + petit
  2185. c la liste des numero des criteres a traiter est dans LNUMCRT
  2186. c idem pour les criteres de cisaillement NUMCR,NSUIVANTC,LNUMCRC...
  2187.  
  2188. c on evalue les criteres fin de pas que :
  2189. c lors du tir visco elastique : ietap=0
  2190. c lors des retours radiaux : ietap=4
  2191.  
  2192. if(.not.CONV_FORCEE) then
  2193.  
  2194. c evaluation des criteres en fin de sous pas
  2195.  
  2196. call CRER3D(NBRINC,NTYPC,NINC,NDIMG,RTP,RTI,DELTA,
  2197. # BETA,COHE,FRAC,GCH,bwPw,bgpg,SEFFR,SEFFI,SEFFO,EPSTR,EPSTI,
  2198. # EPSTO,EPSLR,V33,V33T,V33S,V33ST,EPSTG,EPSPLG,SEFFG,FTHG,
  2199. # NTMAX,FT,ACTIFT,DPFTDS,DGFTDS,LNUMCRT,NBRACT,PLASTT,Log_RTG,
  2200. # NCMAX,FC,ACTIFC,DPFCDS,DGFCDS,LNUMCRC,NBRACC,PLASTC,RFP,RFI,
  2201. # NLMAX,FL,ACTIFL,DPFLDS,DGFLDS,LNUMCRL,NBRACL,PLASTL,Log_RLG,
  2202. # STOTR,STOTG,RESGA,PLAST,RTG,RTLG,RFG,RFLG,reduc_resg,
  2203. # PRECISION3D,ERR1,AFFICHE)
  2204.  
  2205. c traitement erreur evaluation critere
  2206. if(affiche.or.(err1.eq.1)) then
  2207. if(err1.eq.1) then
  2208. print*,'Erreur dans incl3d lors de l appel'
  2209. print*,'a crer3d a l etape:',ietap
  2210. print*,'a l iteration:',iter
  2211. ierr1=1
  2212. return
  2213. end if
  2214. end if
  2215.  
  2216. else
  2217.  
  2218. c convergence locale forcee
  2219.  
  2220. plast=.false.
  2221. plastt=.false.
  2222. plastc=.false.
  2223. plastl=.false.
  2224.  
  2225. end if
  2226.  
  2227.  
  2228. c --- mise a zero du chargement si sous iteration necessaire -------
  2229.  
  2230. if(plast.or.LogReducGEL) then
  2231. c maj des residu de chargement
  2232. do idir=1,3
  2233. DEPST3(idir)=0.d0
  2234. end do
  2235. c residu en THCP impose
  2236. do iphase=0,NINC
  2237. DETH(iphase)=0.d0
  2238. DEPH(iphase)=0.d0
  2239. dbwpw(iphase)=0.d0
  2240. dbgvg(iphase)=0.d0
  2241. end do
  2242. c residu en relaxation de deformation elastique initiale
  2243. do idir=1,NDIMG
  2244. ek0(idir)=0.d0
  2245. ee0(idir)=0.d0
  2246. end do
  2247. c declaration etape de plasticite
  2248. ietap=4
  2249. if(iter.eq.1) then
  2250. goto 15
  2251. else
  2252. c evolution du residu entre deux pas
  2253. Dresg=abs(RESGA-RESGP)
  2254. c decalage du residu pour pas suivant
  2255. RESGP=RESGA
  2256. if(affiche_iter) then
  2257. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  2258. # 'Inclusion3d Iteration :',iter,
  2259. # 'Residu global:',RESGP,
  2260. # 'D(RESG):',Dresg,
  2261. # 'Tolerance',tolerance
  2262. end if
  2263. if(Dresg.gt.tolerance) then
  2264. c on poursuit le calcul que si l erreur diminue
  2265. goto 15
  2266. end if
  2267. end if
  2268. else
  2269. RESA=0.d0
  2270. c decalage du residu pour pas suivant
  2271. RESGP=RESGA
  2272. if(affiche_iter) then
  2273. write(*,'(A23,I4,1X,A14,E10.3,2(1X,A9,E10.3))')
  2274. # 'Inclusion3d Iteration :',iter,
  2275. # 'Residu global:',RESGP,
  2276. # 'D(RESG):',Dresg,
  2277. # 'Tolerance',tolerance
  2278. end if
  2279. end if
  2280.  
  2281. c***********************************************************************
  2282. c fin de la boucle de resolution nonlineaire et stockage
  2283. c***********************************************************************
  2284.  
  2285. c **** variables internes globales ********************************
  2286.  
  2287. c *** variables internes pour le milieu homogeneisé
  2288. IPHASE=-1
  2289. do ICOMP=1,6
  2290. c contraintes effectives homogeneisees
  2291. nv3d=NBVARISOG+ICOMP
  2292. varf(nv3d)=SEFFR(IPHASE,ICOMP,1)
  2293. c deformation plastique traction localisee
  2294. nv3d=NBVARISOG+6+ICOMP
  2295. varf(nv3d)=EPSTR(IPHASE,ICOMP,1)
  2296. end do
  2297.  
  2298. c *** variables internes des phases *******************************
  2299.  
  2300. do IPHASE=0,NINC
  2301. c avancement reaction chimique
  2302. nv3d=NBVIND3D+IPHASE*NBVPARP3D+1
  2303. varf(nv3d)=ACH(IPHASE,1)
  2304. c deformation chimique imposee
  2305. nv3d=NBVIND3D+IPHASE*NBVPARP3D+2
  2306. varf(nv3d)=VGT(IPHASE,1)
  2307. c deformation thermique imposee
  2308. nv3d=NBVIND3D+IPHASE*NBVPARP3D+3
  2309. varf(nv3d)=ETH(IPHASE,1)
  2310. c contrainte hydrique imposee
  2311. nv3d=NBVIND3D+IPHASE*NBVPARP3D+4
  2312. varf(nv3d)=SEW(IPHASE,1)
  2313. c deformation osmotique imposee
  2314. nv3d=NBVIND3D+IPHASE*NBVPARP3D+5
  2315. varf(nv3d)=EPH(IPHASE,1)
  2316. c deformation osmotique imposee
  2317. nv3d=NBVIND3D+IPHASE*NBVPARP3D+6
  2318. varf(nv3d)=VGF(IPHASE,1)
  2319. c contrainte chemo mecanique
  2320. nv3d=NBVIND3D+IPHASE*NBVPARP3D+7
  2321. varf(nv3d)=-bgpg(IPHASE)
  2322. c debut de la zone memoire pour les tenseurs
  2323. IDEBUT=NBVIND3D+IPHASE*NBVPARP3D+NBVARISOPP
  2324. do ICOMP=1,6
  2325. c contrainte effective radiale dans la phase
  2326. nv3d=IDEBUT+ICOMP
  2327. varf(nv3d)=SEFFR(IPHASE,ICOMP,1)
  2328. c deformation elastique (radiale pour inclusions infini pour matrice)
  2329. nv3d=IDEBUT+6+ICOMP
  2330. varf(nv3d)=EPSER(IPHASE,ICOMP,1)
  2331. c deformation maxwell (radiale pour inclusions infini pour matrice)
  2332. nv3d=IDEBUT+12+ICOMP
  2333. varf(nv3d)=EPSMR(IPHASE,ICOMP,1)
  2334. c deformation Kelvin (radiale pour inclusions infini pour matrice)
  2335. nv3d=IDEBUT+18+ICOMP
  2336. varf(nv3d)=EPSKR(IPHASE,ICOMP,1)
  2337. c deformations plastiques de traction (radiale pour inclusions,infini pour matrice)
  2338. nv3d=IDEBUT+24+ICOMP
  2339. varf(nv3d)=EPSTR(IPHASE,ICOMP,1)
  2340. c deformations plastiques de cisaillement (radiale pour inclusions,infini pour matrice)
  2341. nv3d=IDEBUT+30+ICOMP
  2342. varf(nv3d)=EPSCR(IPHASE,ICOMP,1)
  2343. c deformations plastiques de traction localisee (decollement)
  2344. nv3d=IDEBUT+36+ICOMP
  2345. varf(nv3d)=EPSLR(IPHASE,ICOMP,1)
  2346. c contrainte moyenne non endommagee (radiale pour inclusions,infini pour matrice)
  2347. nv3d=IDEBUT+42+ICOMP
  2348. varf(nv3d)=STOTR(IPHASE,ICOMP,1)
  2349. end do
  2350. end do
  2351.  
  2352. c *******variables internes des interfaces ************************
  2353.  
  2354. do IPHASE=1,NINC
  2355. IDEBUT=NVTOT1+(IPHASE-1)*NBVPARI3D+NBVARISOPI
  2356. do ICOMP=1,6
  2357. c contraintes effectives radiales(radiale pour inclusions infini pour matrice)
  2358. nv3d=IDEBUT+ICOMP
  2359. varf(nv3d)=SEFFI(IPHASE,ICOMP,1)
  2360. c contraintes effectives orthoradiales(radiale pour inclusions infini pour matrice)
  2361. nv3d=IDEBUT+6+ICOMP
  2362. varf(nv3d)=SEFFO(IPHASE,ICOMP,1)
  2363. c deformation radiale elastique a l interface
  2364. nv3d=IDEBUT+12+ICOMP
  2365. varf(nv3d)=EPSEI(IPHASE,ICOMP,1)
  2366. c deformation orthoradiale elastique a l interface
  2367. nv3d=IDEBUT+18+ICOMP
  2368. varf(nv3d)=EPSEO(IPHASE,ICOMP,1)
  2369. c deformation radiale maxwell a l interface
  2370. nv3d=IDEBUT+24+ICOMP
  2371. varf(nv3d)=EPSMI(IPHASE,ICOMP,1)
  2372. c deformation orthoradiale maxwell a l interface
  2373. nv3d=IDEBUT+30+ICOMP
  2374. varf(nv3d)=EPSMO(IPHASE,ICOMP,1)
  2375. c deformation kelvin radiale a l interface
  2376. nv3d=IDEBUT+36+ICOMP
  2377. varf(nv3d)=EPSKI(IPHASE,ICOMP,1)
  2378. c deformation kelvin orthoradiale axisymetrique a l interface
  2379. nv3d=IDEBUT+42+ICOMP
  2380. varf(nv3d)=EPSKO(IPHASE,ICOMP,1)
  2381. c deformation plastique radiale traction a l interface
  2382. nv3d=IDEBUT+48+ICOMP
  2383. varf(nv3d)=EPSTI(IPHASE,ICOMP,1)
  2384. c deformation plastique orthoradiale a l interface
  2385. nv3d=IDEBUT+54+ICOMP
  2386. varf(nv3d)=EPSTO(IPHASE,ICOMP,1)
  2387. c deformation plastique cisaillement radiale axisymetrique a l interface
  2388. nv3d=IDEBUT+60+ICOMP
  2389. varf(nv3d)=EPSCI(IPHASE,ICOMP,1)
  2390. c deformation plastique cisaillement orthoradiale a l interface
  2391. nv3d=IDEBUT+66+ICOMP
  2392. varf(nv3d)=EPSCO(IPHASE,ICOMP,1)
  2393. end do
  2394. end do
  2395.  
  2396. c***********************************************************************
  2397. c transfert des contraintes totales dans sigef6
  2398. c***********************************************************************
  2399.  
  2400. c -- contrainte totale macroscopiques non endommagee --------------
  2401.  
  2402. do idir=1,6
  2403. sigef6(idir)=0.d0
  2404. do iphase=0,NINC
  2405. sigef6(idir)=sigef6(idir)+
  2406. # FRAC(iphase)*STOTR(iphase,idir,1)
  2407. end do
  2408. end do
  2409.  
  2410. c --- fin contraintes macro totales non endommagee -----------------
  2411.  
  2412. c***********************************************************************
  2413. c prise en compte de l endommagement (non actif)
  2414. c***********************************************************************
  2415.  
  2416. do idir=1,6
  2417. sigf6(idir)=sigef6(idir)
  2418. end do
  2419.  
  2420. c***********************************************************************
  2421. c affectation dans le tableau de sortie des contraintes
  2422. c***********************************************************************
  2423.  
  2424. do i=1,nstrs
  2425. sigf(i)=sigf6(i)
  2426. if(affiche) then
  2427. write(*,'(A5,I1,A2,E10.3)') 'sigf(',i,')=',sigf(i)
  2428. end if
  2429. end do
  2430.  
  2431. c ** indicateur de passage du premier pas **************************
  2432.  
  2433. varf(1)=1.0d0
  2434. if(affiche) then
  2435. print*,'Inclusion3d: Valider pour continuer'
  2436. read*
  2437. end if
  2438.  
  2439.  
  2440. return
  2441. end
  2442. c***********************************************************************
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  

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