Télécharger flui3d.eso

Retour à la liste

Numérotation des lignes :

flui3d
  1. C FLUI3D SOURCE FD218221 24/02/07 21:15:12 11834
  2. subroutine flui3d(XMAT,NMAT,sig0,sigf,deps,nstrs,VAR0,VARF,
  3. # NVARI,teta1,teta2,dt,ierr1,iso,mfr,ifou,istep,epst0,epstf,
  4. # tetaref,NBELAS3D,NB_MAT_BASE,NB_MAT_SUPP,NB_VAR_BASE,NB_VAR_SUPP,
  5. # NB_DECAL,NBNMAX3D,NBNB3D,IDIMB3D,XE3D,NBVIA3D,INLVIA3D,
  6. # NMAT0,NMAT1,NMAT2,NMAT3,NVAR0,NVAR1,NVAR2,NVAR3,NB_PARA_FIBRE_U)
  7.  
  8. c A Sellier Nov 2023
  9.  
  10. C MFR = NUMERO DE LA FORMULATION DE L'ELEMENT FINI
  11. C = 1 MASSIF
  12. C = 33 POREUX
  13. C IFOU INDICE DU TYPE DE PROBLEME
  14. C -1 DEFORMATIONS PLANES
  15. C 0 AXISYMETRIQUE
  16. C 2 TRIDIMENSIONNEL
  17.  
  18. C ISTEP=0 : CALCUL LOCAL
  19. C ISTEP=1 : PREPARATION DU 1ER PASSGE NON LOCAL
  20. C ISTEP=2 : DERNIER PASSAGE NON LOCAL EFFECTUE
  21. C ISTEP=3 : PASSAGE NON LOCAL INTERMEDIAIRE EN NON LOCAL ITERATIF
  22.  
  23. C TABLES DE DIMENSION FIXE POUR RESOLUTION DES SYTEMES LINEAIRES
  24. IMPLICIT REAL*8 (A-H,O-Z)
  25. IMPLICIT INTEGER (I-N)
  26.  
  27. C***********************************************************************
  28. C PARAMETRES OBLIGATOIRES POUR POINTER CORRECTEMENT
  29.  
  30. C NMAT0 FIN DES PARAMETRES ELASTIQUES
  31. C NMAT1 FIN DU MODELE DE LA MATRICE
  32. C NMAT2 FIN DES PARAMETRES POUR LES MODULES COMPLEMENTAIRES
  33. C NMAT3 FIN DES PARAMETRES POUR LES RENFORTS REPARTIS
  34. C NMAT FIN DES PARAMETRES POUR LES CHAMPS DE PHASE VIA HELMHOLTZ
  35. INTEGER NMAT0,NMAT1,NMAT2,NMAT3,NMAT
  36.  
  37. C NVAR0 0
  38. C NVAR1 FIN DES VARIABLES INTERNES POUR LA MATRICE
  39. C NVAR2 FIN DES VARIABLES INTERNES POUR LES MODULES COMPLEMENTAIRES
  40. C NVAR3 FIN DES VARIABLES INTERNES POUR LES RENFORTS REPARTIS
  41. C NVARI FIN DES VARIABLES INTERNES POUR LES CHAMPS DE PHASES VIA HELMHOLTZ
  42. INTEGER NVAR0,NVAR1,NVAR2,NVAR3,NVARI
  43. C***********************************************************************
  44.  
  45. C******** DECLARATION DES VARIABLES EXTERNES ***************************
  46. INTEGER NSTRS,NBELAS3D,IERR1,MFR
  47. REAL*8 XMAT(NMAT),SIG0(NSTRS),SIGF(NSTRS),DEPS(NSTRS)
  48. REAL*8 EPST0(NSTRS),EPSTF(NSTRS)
  49. REAL*8 VAR0(NVARI),VARF(NVARI)
  50. REAL*8 DT,TETA1,TETA2,TETAREF
  51. C VARIABLE LOGIQUE POUR MATRICE INIT ISOTROPE
  52. LOGICAL ISO
  53. INTEGER IFOU,ISTEP
  54.  
  55. C *** NOMBRE DE PARAMETRES MATERIAUX *******************************
  56. INTEGER NB_MAT_BASE,NB_MAT_SUPP
  57.  
  58. C *** NOMBRE DE VARIABLES INTERNES *********************************
  59. C NOMBRE DE VARIABLES INTERNES
  60. INTEGER NB_VAR_BASE,NB_VAR_SUPP
  61.  
  62. C *** NOMBRE DE VARIABLES FACULTATIVE ENTRE LES OBLIGATOIRES ET LES
  63. c HELMHOLTZ
  64. INTEGER NB_DECAL
  65.  
  66. C *********COORDONNES DES NOEUDS DE L ELEMENT FINI *****************
  67. C LIGNE A INCLURE DANS LES MODELES UTILISANT LES NOEUDS
  68. INTEGER NBNMAX3D,NBNB3D,IDIMB3D
  69. REAL*8 XE3D(3,NBNMAX3D)
  70.  
  71. c *********nombre de sous types de modeles a coupler ***************
  72. c nombre de sous type de modele et de variable par tenseur (cf idvar4)
  73. integer NSTYPE,NDTENS
  74. parameter (NSTYPE=9,NDTENS=12)
  75. c nombre de parametres scalaires par sous type de modele
  76. integer VNMAT(NSTYPE)
  77. c nombre de vari scalaires par sous type de modele
  78. integer VNVARI(NSTYPE,2)
  79.  
  80. C***********************************************************************
  81.  
  82. c***********************************************************************
  83. c declarations locales
  84. c indicateur 1er pas
  85. logical PPAS
  86. c teneur en eau3d
  87. real*8 vw0,vwf
  88. c module 1er passage
  89. real*8 E,nu,k0,mu0,k1,mu1
  90. c numero vari
  91. integer ivar,numx,numk,numm,nx
  92. c matrices de Hoocke debut et fin de pas
  93. real*8 raideur66(6,6),souplesse66(6,6)
  94. c contraintes initiales dans la matrice
  95. real*8 sigm03(3),vsigm033(3,3)
  96. c invariant contraintes initiales
  97. real*8 sigm0d3(3),devis0,tracs0
  98. c contraintes effectives
  99. real*8 sigeff6(6)
  100. c influence de la temperature
  101. real*8 dtherm,kthermv,kthermp
  102. c increment total de deformation mecanique
  103. real*8 epst06(6),epstf6(6),deps6(6)
  104. c influence de l eau capillaire et nano
  105. real*8 keau,knanov,kmecap
  106. c coeff de fluage de Maxwell
  107. real*8 kflum
  108. c consolidation et temps de maxwell
  109. real*8 taumc3(3),taum,CC3(3)
  110. c increment deformation totale
  111. real*8 deps33(3,3),deps3(3),Vdeps33(3,3)
  112. c tenseur d orientations
  113. real*8 O333(3,3,3),DX3(3),VDX33(3,3)
  114. c increment de deformations elastiques et de contraintes
  115. real*8 depse3(3),dsig3(3)
  116. c contraintes
  117. real*8 sigm06(6),sigmf6(6)
  118. c increments de deformations anelastiques
  119. real*8 depsx3(NSTYPE,3)
  120. c coeff de fluage
  121. real*8 cflux3(NSTYPE,3)
  122.  
  123.  
  124. C************* PARAMETRES POUR LES RENFORTS ****************************
  125. c lignes a inclure dans les modeles utilisants les renforts
  126. c nb_renf
  127. c nb_para_par_renf
  128. c nb_para_renf
  129. c nb_vari_par_renf
  130. c nb_vari_renf
  131. C-INC HNBRREN
  132. C ADAPTE POUR MC3D
  133. PARAMETER(NB_RENF=0)
  134. PARAMETER(NB_PARA_PAR_RENF=0)
  135. PARAMETER(NB_PARA_RENF=0)
  136. PARAMETER(NB_VARI_PAR_RENF=0)
  137. PARAMETER(NB_VARI_RENF=0)
  138. c declaration des renforts du fluendo3d si on veut les utiliser
  139. C-INC HDECREN
  140. C***********************************************************************
  141.  
  142.  
  143. C************** DECLARATIONS POUR LES FIBRES ROMAIN ********************
  144. c declaration des fibres de romain gontero si on veut les utiliser
  145. C-INC HDECFIB
  146. C***********************************************************************
  147.  
  148.  
  149. C************** PARAMETRES POUR HELMHOLTZ ******************************
  150. c lignes a inclure dans les modeles utilisant helmholtz
  151. c recuperation des dimensions des tableaux pour helmholtz
  152. -INC HNBRHEL
  153. c declaration des tableaux pour helmholtz
  154. -INC HDECHEL
  155. c recuperation des parametres d helmholtz
  156. -INC HMATHEL
  157. DO NL=1,NB_HELM
  158. c lecture des variable internes et rangements dans helm0(nl,ii)
  159. c et helm1(nl,ii) avec ii=1,nb_vari_par_helm
  160. -INC HLVIHEL
  161. END DO
  162. C***********************************************************************
  163.  
  164.  
  165. c******recuperation des parametres pour les fibres si modele de fibre***
  166. C-INC HMATFIB
  167. c***********************************************************************
  168.  
  169.  
  170. c*************** recuperation des parametres pour les renforts *********
  171. c-INC HMATREN
  172. c***********************************************************************
  173.  
  174.  
  175. c*************** NOMBRE DE PARAMETRES PAR SOUS TYPE ********************
  176.  
  177. c a actualiser en fonction du contenu de idvisc
  178. c numero du sous type de modele 1 2 3 4 5 6 7 8 9
  179. c type de sous modele : ELA,MAX,FLU,KEL,TRA,DP,CC,RAG,RSI
  180. data VNMAT /8 ,6 ,4 ,2 ,5 ,6 ,3 ,9 ,9 /
  181.  
  182. c************** NOMBRE DE VARI ET TYPE DE VARI PAR SOUS TYPE ***********
  183.  
  184. c nombre de variables scalaire par sous type
  185. c numero du sous type de modele 1 2 3 4 5 6 7 8 9
  186. c type de sous modele : ELA,MAX,FLU,KEL,TRA,DP,CC,RAG,RSI
  187. data (VNVARI(I,1),I=1,NSTYPE) /9 ,0 ,2 ,0 ,3 ,2 ,3 ,5 ,5 /,
  188. c nombre de variables tensorielles par sous type
  189. c numero du sous type de modele 1 2 3 4 5 6 7 8 9
  190. c type de sous modele : ELA,MAX,FLU,KEL,TRA,DP,CC,RAG,RSI
  191. # (VNVARI(I,2),I=1,NSTYPE) /1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 /
  192.  
  193. c print*,'debut de mc3d'
  194. c verification des varf
  195. C do i=1,nvari
  196. c print*,'var0',10,'=',var0(10)
  197. C end do
  198. c read*
  199.  
  200.  
  201. c******* INITIALISATIONS ***********************************************
  202.  
  203. c indicateur d erreur
  204. ierr1=0
  205.  
  206. c copie des var0 sur les varf avec diluation des vari scalaire
  207. call init3d(xmat,nmat,vnmat,nstype,nbelas3d,var0,varf,
  208. # nvari,vnvari,ndtens,ierr1)
  209. c print*, 'varf apres init'
  210. c print*,'varf',10,'=',varf(10)
  211.  
  212. c initialisation de l indicateur de premier passage dans le modele
  213. if (var0(1).ne.1.) then
  214. ppas=.true.
  215. else
  216. ppas=.false.
  217. end if
  218. c traitements particuliers lors du premier passage
  219. if(ppas) then
  220. c controle des dimensions des listes de parametres
  221. ntest=nbelas3d
  222. do i=1,NSTYPE
  223. ntest=ntest+VNMAT(i)
  224. end do
  225. if(ntest.ne.nmat1) then
  226. print*,'ERREUR0 dans mc3d'
  227. print*,'nmat1',nmat1
  228. print*,'ntest',ntest
  229. ierr1=1
  230. return
  231. end if
  232. c controle des dimensions des listes de variables internes
  233. ntest=0
  234. do i=1,NSTYPE
  235. ntest=ntest+VNvari(i,1)+VNvari(i,2)*ndtens
  236. end do
  237. if(ntest.ne.nvar1) then
  238. print*,'ERREUR1 dans mc3d'
  239. ierr1=1
  240. return
  241. end if
  242. c initialisation des module dans les vari pour le suivi d hydratation
  243. call xmat3d(E,xmat,nmat,vnmat,nstype,nbelas3d,0,1)
  244. call xmat3d(nu,xmat,nmat,vnmat,nstype,nbelas3d,0,2)
  245. k1=E/(3.d0*(1.d0-2.d0*nu))
  246. mu1=E/(2.d0*(1.d0+nu))
  247. c print*,E,nu,k1,mu1
  248. call xvar3d(k0,numk,var0,nvari,vnvari,nstype,ndtens,1,7)
  249. call xvar3d(mu0,numm,var0,nvari,vnvari,nstype,ndtens,1,8)
  250. var0(numk)=k1
  251. var0(numm)=mu1
  252. end if
  253.  
  254. C******* TENEUR EN EAU *************************************************
  255.  
  256. if(mfr.ne.33) then
  257. c actualisation de la teneur en eau debut de pas pour le fluage
  258. c et la capillarite
  259. call xvar3d(vw0,numx,var0,nvari,vnvari,nstype,ndtens,1,2)
  260. call xmat3d(vwf,xmat,nmat,vnmat,nstype,nbelas3d,1,3)
  261. if (ppas) then
  262. c on initialise la teneur en eau pour le 1er pas
  263. var0(numx)=vwf
  264. vw0=vwf
  265. end if
  266. else
  267. call xvar3d(vw0,numx,var0,nvari,vnvari,nstype,ndtens,1,2)
  268. print*,'ERREUR2 Implementation poreux pour calcul vw ds mc3d'
  269. print*,'Actualiser la vari numro:', numx,' avec vwf'
  270. ierr1=1
  271. return
  272. end if
  273. c stockage pour le prochain pas
  274. varf(numx)=vwf
  275.  
  276. c******* CONTRAINTES INITIALES *****************************************
  277.  
  278. c ** calcul elastique des contraintes principales debut de pas *****
  279.  
  280. c matrice de Hoocke
  281. call hook3d(iso,xmat,nmat,nbelas3d,ierr1,raideur66,souplesse66)
  282.  
  283. c contraintes principales en fonction des deformations elastiques
  284. call sigp3d(nstype,var0,nvari,vnvari,ndtens,iso,raideur66,
  285. # sigm03,vsigm033)
  286.  
  287. c print*,'mc3d sigm03 av relaxation',sigm03
  288. c print*,'mc3d vsigm033',vsigm033
  289.  
  290. c relaxation de la nouvelle contrainte principale en cas
  291. c d augmentation des modules et actualisation des def visco elastiques
  292. call hydr3d(xmat,nmat,vnmat,nstype,nbelas3d,var0,varf,
  293. # nvari,vnvari,ndtens,iso,sigm03,souplesse66)
  294.  
  295. c print*,'mc3d sigm03 apres relaxation',sigm03
  296.  
  297. c ** 1-1 actualisation des parametres de fluage ********************
  298.  
  299. c prise en compte de la temperature
  300. call ther3d(xmat,nmat,vnmat,nstype,var0,varf,nvari,vnvari,
  301. # ndtens,nbelas3d,teta1,teta2,tetaref,dtherm,kthermv,kthermp)
  302.  
  303. c prise en compte de l eau capillaire
  304. call eau3d(xmat,nmat,vnmat,nstype,var0,varf,nvari,vnvari,
  305. # ndtens,nbelas3d,teta1,teta2,tetaref,mfr,keau)
  306.  
  307. c prise en compte de la surpression dans la nanoporosité
  308. call nano3d(xmat,nmat,vnmat,nstype,var0,varf,nvari,vnvari,
  309. # ndtens,nbelas3d,teta1,teta2,tetaref,ppas,dt,kthermv,knanov)
  310.  
  311. c Amplification du fluage entre Rc/3 et Rc
  312. call kmkf3d(xmat,nmat,vnmat,nstype,nbelas3d,sigm03,kmecap)
  313.  
  314. c ** 1-2 relaxation visco elastique a deformation constante ********
  315.  
  316. c calcul des coefficients de fluage dans la direction des contraintes
  317. c initiales principales
  318. call cofl3d(xmat,nmat,vnmat,nstype,var0,varf,nvari,vnvari,
  319. # ndtens,nbelas3d,vsigm033,dt,kthermv,kthermp,kmecap,keau,
  320. # knanov,cflux3)
  321. C print*,'mc3d avant rela coeff de fluage '
  322. C do ityp=1,4
  323. C do j=1,3
  324. C print*,ityp,j,cflux3(ityp,j)
  325. C end do
  326. C end do
  327.  
  328.  
  329. c relaxation visco elastique
  330. c print*, 'varf avant relaxation'
  331. c print*,'varf',10,'=',varf(10)
  332. call rela3d(xmat,nmat,vnmat,nstype,nbelas3d,var0,varf,nvari,
  333. # vnvari,ndtens,ierr1,iso,cflux3,raideur66,sigm03,vsigm033)
  334. c print*, 'varf apres relaxation'
  335. c print*,'varf',10,'=',varf(10)
  336.  
  337. c expression de sigm0 en base fixe
  338. call orie3d(vsigm033,O333)
  339. do i=1,6
  340. sigm06(i)=0.d0
  341. end do
  342. c print*,'aff0 ds mc3d',sigm06,sigm03,O333
  343. call incv3d(sigm06,sigm03,O333)
  344. c print*,'mc3d sigm03 ap relaxation des contraintes init',sigm03
  345. c print*, 'varf apres reeevaluation contrainte 1'
  346. c print*,'varf',10,'=',varf(10)
  347.  
  348.  
  349. c******* INCREMENT TOTAL DE DEFORMATION MECANIQUE **********************
  350.  
  351. c chargement increment de deformation imposee et deformation finale
  352. c remarque 4-5-6 sont des gama jusqu ici, ensuite des epsilons
  353. if(nstrs.lt.6) then
  354. do i=1,nstrs
  355. deps6(i)=deps(i)
  356. epstf6(i)=epstf(i)
  357. epst06(i)=epst0(i)
  358. end do
  359. do i=nstrs+1,6
  360. deps6(i)=0.d0
  361. epstf6(i)=0.d0
  362. epst06(i)=0.d0
  363. end do
  364. else
  365. do i=1,6
  366. deps6(i)=deps(i)
  367. epstf6(i)=epstf(i)
  368. epst06(i)=epst0(i)
  369. end do
  370. end if
  371. c passage gama en epsilon
  372. do i=4,6
  373. deps6(i)=0.5d0*deps6(i)
  374. epstf6(i)=0.5d0*epstf6(i)
  375. epst06(i)=0.5d0*epst06(i)
  376. end do
  377.  
  378. c******* TIR VISCO ELASTIQUE *******************************************
  379.  
  380. c diagonalisation du tenseur des increments de deformation
  381. call x6x33(deps6,deps33)
  382. c valeurs principales des increments
  383. call b3_v33(deps33,deps3,Vdeps33)
  384. c tenseurs d orientations des increments
  385. call orie3d(Vdeps33,O333)
  386. c print*,'aff1 cm3d',deps33,deps3,Vdeps33
  387.  
  388. c coeff visco elastique dans la base principele de l increment
  389. call cofl3d(xmat,nmat,vnmat,nstype,var0,varf,nvari,vnvari,
  390. # ndtens,nbelas3d,Vdeps33,dt,kthermv,kthermp,kmecap,keau,
  391. # knanov,cflux3)
  392. C print*,'aff2 cm3d'
  393. C do ityp=1,4
  394. C do j=1,3
  395. C print*,ityp,j,cflux3(ityp,j)
  396. C end do
  397. C end do
  398. C read*
  399. c resolution visco elastique en base principales
  400. do i=1,3
  401. c deformation elastique (ityp=1)
  402. depsx3(1,i)=deps3(i)/(1.d0+cflux3(1,i))
  403. c deformations visqueuses (itype=2,3,4)
  404. do ityp=2,4
  405. depsx3(ityp,i)=depsx3(1,i)*cflux3(ityp,i)
  406. end do
  407. c deformations plastiques (itype=5,..,nstype)
  408. do ityp=5,nstype
  409. depsx3(ityp,i)=0.d0
  410. end do
  411. end do
  412. c mise a jour des increments de deformation visco elastiques
  413. do ityp=1,4
  414. do i=1,3
  415. dx3(i)=depsx3(ityp,i)
  416. end do
  417. c print*,'info envoyee a majt3d',ityp,1
  418. c print*,'valeurs',DX3
  419. c print*,'orientatio',O333
  420. call majt3d(DX3,O333,varf,nvari,vnvari,nstype,
  421. # ndtens,ityp,1)
  422. end do
  423. c print*, 'varf apres increment visco elastique'
  424. c print*,'varf',10,'=',varf(10)
  425. c increments de contraintes
  426. do i=1,3
  427. dsig3(i)=0.d0
  428. do j=1,3
  429. dsig3(i)=dsig3(i)+raideur66(i,j)*depsx3(1,j)
  430. end do
  431. end do
  432.  
  433. c nouvelle valeur des contraintes
  434. do i=1,6
  435. sigmf6(i)=sigm06(i)
  436. end do
  437. call incv3d(sigmf6,dsig3,O333)
  438. c print*,'aff3 mc3d apres tir visco elastique sigmf6',sigmf6
  439. c print*, 'varf apres increment contrainte visco elastique'
  440. c print*,'varf',10,'=',varf(10)
  441.  
  442. c******* EVALUATION DES CRITERES ***************************************
  443.  
  444. c chargement des tenseurs de plasticité pour les ecrouissages
  445. c do ityp=5,nstype
  446. c call tvar3d(dx3,vdx33,nx,var0,nvari,vnvari,nstype,ndtens,ityp,1)
  447. c end do
  448.  
  449. c *** re-mise a zero de tous les increments de deformation *********
  450. do ityp=1,nstype
  451. do i=1,3
  452. depsx3(ityp,i)=0.d0
  453. end do
  454. end do
  455.  
  456. c *** evaluation et tri des criteres actifs ************************
  457. na=0
  458.  
  459. c *** gestion de l ecoulement plastique ****************************
  460. if(na.ne.0) then
  461. c *** ecoulement plastique ***************************************
  462. print*,'Ecoulement plastique'
  463.  
  464. c *** mise a jour des deformations *******************************
  465. do ityp=1,nstype
  466. do i=1,3
  467. dx3(j)=depsx3(ityp,i)
  468. end do
  469. call majt3d(dx3,O333,varf,nvari,vnvari,nstype,
  470. # ndtens,ityp,1)
  471. end do
  472. end if
  473. c print*,'varf apres plasticite'
  474. c print*,'varf',10,'=',varf(10)
  475.  
  476. c****** FIN DE L ECOULEMENT PLASTIQUE **********************************
  477.  
  478. c****** TRANSFERT DES CONTRAINTES VERS LES POINTS DE GAUSS *************
  479. do i=1,nstrs
  480. sigf(i)=sigmf6(i)
  481. c print*,'sigf(',i,')=',sigf(i)
  482. end do
  483. c read*
  484.  
  485.  
  486. c indicateur de fin de 1er pas
  487. if(ppas.and.((istep.eq.2).or.(istep.eq.0))) then
  488. varf(1)=1.d0
  489. else
  490. if(ppas) then
  491. varf(1)=0.d0
  492. else
  493. varf(1)=var0(1)
  494. end if
  495. end if
  496.  
  497. c***********************************************************************
  498. c VARIABLES INTERNES A ACTUALISER POUR LES FORMULATIONS DE HELMHOLTZ
  499. C***********************************************************************
  500. c sauvegarde des vari de helmholtz HELM1(NL,ii=1..NBR_VARI_HELM)
  501. do NL=1,NB_HELM
  502. -INC HEVIHEL
  503. end do
  504. c print*,'fin de mc3d'
  505. c verification des varf
  506. C do i=1,nvari
  507. c print*,'varf',10,'=',varf(10)
  508. C end do
  509. c read*
  510.  
  511. return
  512. end
  513. c fin
  514. c***********************************************************************
  515.  
  516.  
  517.  
  518.  
  519.  

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