Télécharger crer3d.eso

Retour à la liste

Numérotation des lignes :

crer3d
  1. C CRER3D SOURCE FD218221 24/02/07 21:15:08 11834
  2. SUBROUTINE CRER3D(NBRINC,NTYPC,NINC,NDIMG,RTP,RTI,DELTA,
  3. # BETA,COHE,FRAC,GCH,bwPw,bgpg,SEFFR,SEFFI,SEFFO,EPSTR,EPSTI,
  4. # EPSTO,EPSLR,V33,V33T,V33S,V33ST,EPSTG,EPSPLG,SEFFG,FTHG,
  5. # NTMAX,FT,ACTIFT,DPFTDS,DGFTDS,LNUMCRT,NBRACT,PLASTT,Log_RTG,
  6. # NCMAX,FC,ACTIFC,DPFCDS,DGFCDS,LNUMCRC,NBRACC,PLASTC,RFP,RFI,
  7. # NLMAX,FL,ACTIFL,DPFLDS,DGFLDS,LNUMCRL,NBRACL,PLASTL,Log_RLG,
  8. # STOTR,STOTG,RESG,PLAST,RTG,RTLG,RFG,RFLG,reduc_resg,
  9. # PRECISION3D,ERR1,AFFICHE)
  10.  
  11.  
  12. c evaluation des criteres pour incl3d
  13. c la liste des citeres actif en traction (LNUMCRT ) et en compression (LNUMCRC)
  14. c est definie dans la repere generalise LNUMCRT(1) est le critere le plus
  15. c actif de traction-refermeture de valeur REST=FT(LNUMCRT(1)),
  16.  
  17. c il en est de même pour :
  18. c - les criteres de cisaillement aux interfaces des phase et dans la matrice
  19. c - les critere de cisaillement, NUMCR est le numero de la phase plastifiee
  20. c si cette phase et la matrice elle peut inclure des interfaces dans sont
  21. c ecoulement
  22.  
  23. c l ordre de rangement des criteres est le suivant (base generalisee des ecoulements)
  24. c idir=(iphase-1)*3+(itypt-1)*3+jdir
  25. c avec idirg direction generalisee
  26. c iphase numero de la phanse 0 à ninc
  27. c ityp position zone d interet (1 inclusion 3,4,5 points d interet sur l interface)
  28. c jdir un des 3 direction principale des contraintes macroscopiques
  29.  
  30.  
  31. c (A.Sellier 2022/02/21)
  32. c maj 2022/02/22 ! pour le fun que des 2 ;)
  33. c maj 2022/27/02 amelioration par triage des criteres et traitement par groupes
  34. c maj 2022/03/30 criteres en forces thermodynamiques generalisees
  35. c 2022/06/02 simplification pour version20I
  36. c 2022/06/16 ecoulement par methode du gradient generalise
  37. c 2023/06/26 correction methode gradient generalisee
  38.  
  39. implicit real*8 (a-h,o-z)
  40. implicit integer (i-n)
  41.  
  42. c ********variables externes ***************************************
  43. integer NBRINC,NINC,IETAP,NTYPC
  44. logical AFFICHE
  45. c fractions volumiques des phases
  46. real*8 FRAC(0:NBRINC)
  47. c indicateur de diffusion produits chimiques dans fissure
  48. real*8 GCH(0:NBRINC)
  49. c contraintes totales au sens poro mecanique
  50. real*8 SEFFR(-1:NBRINC,6,0:1)
  51. real*8 SEFFI(-1:NBRINC,6,0:1)
  52. real*8 SEFFO(-1:NBRINC,6,0:1)
  53. c contrainte hydrique
  54. real*8 SEW(0:NBRINC,0:1)
  55. c resistance a la traction
  56. real*8 RTP(-1:NBRINC)
  57. c resistance a la refermeture
  58. real*8 RTI(-1:NBRINC)
  59. c resistance a la refermeture de la phase
  60. real*8 RFP(-1:NBRINC)
  61. c resistance a la refermeture de l interface
  62. real*8 RFI(-1:NBRINC)
  63. c proprite pour Drucker Pragger
  64. real*8 DELTA(0:NBRINC),BETA(0:NBRINC),COHE(0:NBRINC)
  65. c deformations plastiques de traction
  66. real*8 EPSTR(-1:NBRINC,6,0:1)
  67. real*8 EPSLR(-1:NBRINC,6,0:1)
  68. real*8 EPSTI(-1:NBRINC,6,0:1)
  69. real*8 EPSTO(-1:NBRINC,6,0:1)
  70. real*8 EPSRH(-1:NBRINC,6,0:1)
  71.  
  72. c erreur
  73. integer err1
  74. c precision
  75. real*8 precision3d
  76. c logique critere ACTIFT
  77. logical PLAST
  78. c matrice de passage vers la base du critere le plus actif
  79. real*8 V33(3,3),V33T(3,3),V33D(3,3),V33DT(3,3)
  80. real*8 V33S(3,3),V33ST(3,3)
  81. c donnes poro-mechaniques (eau, gel, dechrage)
  82. real*8 bwPw(0:NBRINC),bgpg(0:NBRINC)
  83. c residu global pour la convergence
  84. real*8 RESG
  85.  
  86. c variables pour les decollement d interface en contrainte totale
  87. integer NLMAX
  88. real*8 FL(NLMAX)
  89. logical ACTIFL(NLMAX)
  90. real*8 DPFLDS(NLMAX,NDIMG),DGFLDS(NLMAX,NDIMG)
  91. integer LNUMCRL(NLMAX),NBRACL
  92. logical Log_RLG(NLMAX)
  93. logical PLASTL
  94. real*8 STOTR(-1:NBRINC,6,0:1)
  95. real*8 EPSLG(NDIMG),STOTG(NDIMG)
  96.  
  97.  
  98.  
  99. c Variables internes definies dans l espace generalise
  100.  
  101.  
  102. c dimension de l espace generalise
  103. integer NDIMG,NTMAX,NCMAX
  104. c Res vecteur des residus des criteres
  105. real*8 Rest
  106. c indicateur de plasticite elementaire
  107. logical PLASTT,PLASTC,Log_RTG(NTMAX)
  108. c contrainte en base generalisees et force thermo associee aux epsa
  109. real*8 SEFFG(NDIMG),FTHG(NDIMG)
  110. c deformation plastique de traction generalisee
  111. real*8 EPSTG(NDIMG),EPSPLG(NDIMG)
  112. c derivee du critere par rapport à la contrainte
  113. real*8 DPFTDS(NTMAX,NDIMG),DPFCDS(NCMAX,NDIMG)
  114. c derivee du critere par rapport à la contrainte
  115. real*8 DGFTDS(NTMAX,NDIMG),DGFCDS(NCMAX,NDIMG)
  116. c resistances en base generalisee
  117. real*8 RTG(NDIMG),RTLG(NDIMG),RFG(NDIMG),RFLG(NDIMG)
  118. c image des resistances dans la base des forces thermodynamiques
  119. real*8 FTRAC(NDIMG)
  120. c activite des criteres
  121. logical ACTIFT(NTMAX),ACTIFC(NCMAX)
  122. c table du critere de rankine et dp
  123. real*8 FT(NTMAX),FC(NCMAX)
  124. c numeror critre retenu pour les tensions refermeture
  125. integer LNUMCRT(NTMAX),LNUMCRC(NCMAX)
  126. c nombre de criteres actif, numero d ordre du dernier traitement
  127. integer NBRACT
  128. c nombre de criteres actif cisaillement, numero d ordre du dernier traitement
  129. integer NBRACC
  130. c coeff de viscosite sur l annulation des residus
  131. real*8 reduc_res
  132.  
  133. c pour DGFTDS, 1er indice = oredre, second indice = direction generalisee
  134.  
  135. c ********* variables locales **************************************
  136.  
  137. real*8 x6(6),x3(3),x33(3,3)
  138. real*8 x06(6),x03(3),x16(6)
  139. real*8 vnorm,fmaxc,fmaxg,fmaxt,fminc,fming,fmint
  140. integer iphase,idir,idebut,jdir,idirg
  141.  
  142. logical affiche_local
  143.  
  144. real*8 press,y3(3),dilatance,frottement,cohesion,press_lim,taulim
  145. real*8 taueq,resc_lim,xpetit
  146. integer posi,icr,ityp
  147. integer nbracc_i,ipt_i,icr_i,inc,idebut_inc
  148. logical cond_i
  149. real*8 SEFF3(3),FTH3(3),DPFCDS3(3),DGFCDS3(3),FC1,som
  150. logical ACTIFC1
  151.  
  152. c il faut plastifier tous les pts d interface pour en
  153. c plastifier un si cond_i estvrai
  154. cond_i=.false.
  155.  
  156. c option d affichage local
  157. affiche_local=affiche
  158. c affiche_local=.true.
  159. if(affiche_local) then
  160. print*,'On est dans crer3d'
  161. end if
  162.  
  163. c evaluation des criteres fin de pas
  164. posi=1
  165.  
  166. c ******************************************************************
  167. c recherche des criteres actifs en traction
  168. c ******************************************************************
  169.  
  170. c lors de l evalauation en 0 il ne faut pas effacer
  171. c les directions ni la liste des criteres actifs
  172.  
  173. c ------1er passage sans connaitre le critere le plus actif--------
  174.  
  175. c variable de controle
  176. err1=0
  177. c petite valeur pour comparaison des criteres
  178. xpetit=0.d0
  179.  
  180. c ------debut de la recherche d activite des criteres---------------
  181.  
  182.  
  183. PLAST=.false.
  184. PLASTT=.false.
  185. c initialisation des indicateur directionnels en base generalisee
  186. if(affiche_local) then
  187. print*,'Dans crer3d on initialise les indicateur de Trac'
  188. end if
  189. c sur toutes les directions generalisee potentiellement actives
  190.  
  191. do idir=1,NDIMG
  192. FTHG(idir)=0.d0
  193. SEFFG(idir)=0.d0
  194. STOTG(idir)=0.d0
  195. end do
  196.  
  197.  
  198. c ------- Base d evaluation des criteres ---------------------------
  199.  
  200.  
  201. c les retours se font en base principale des contraintes
  202. c effectives moyennes
  203. iphase=-1
  204. posi=1
  205. do idir=1,6
  206. x6(idir)=SEFFR(iphase,idir,posi)
  207. end do
  208. call x6x33(x6,x33)
  209. call b3_v33(x33,x3,V33S)
  210. call traps1(V33ST,V33S,3)
  211. do i=1,3
  212. do j=1,3
  213. V33(i,j)=v33S(i,j)
  214. V33T(i,j)=V33ST(i,j)
  215. end do
  216. end do
  217.  
  218.  
  219. c ----passage dans la base des contraintes generalisee -------------
  220.  
  221. c ----pour les composantes moyennes des phases ---------------------
  222.  
  223. do iphase=0,NINC
  224. if(affiche_local) then
  225. print*,'Dans crer3d traction radiale phase:', iphase
  226. end if
  227. c (ie des deformation elastiques)
  228. if(iphase.eq.0) then
  229. idebut=9*NINC
  230. else
  231. idebut=9*(iphase-1)
  232. end if
  233. c recup contraintes totales et changement de base
  234. do idir=1,6
  235. x6(idir)=SEFFR(iphase,idir,posi)
  236. end do
  237. c projection sur base de l increment de charge
  238. call prjc3d(x6,v33,v33t,x3,x16,.false.)
  239. do idir=1,3
  240. SEFFG(idebut+idir)=x3(idir)
  241. end do
  242. c passage de la deformation plastique en base principales
  243. do idir=1,6
  244. x06(idir)=EPSTR(iphase,idir,posi)
  245. end do
  246. call prjc3d(x06,v33,v33t,x03,x16,.false.)
  247. do idir=1,3
  248. EPSTG(idebut+idir)=x03(idir)
  249. end do
  250. end do
  251.  
  252. c ---- composantes d interface radiale -----------------------------
  253.  
  254. do iphase=1,NINC
  255. if(affiche_local) then
  256. print*,'Criter1inc3d traction radiale interface :',iphase
  257. end if
  258. c position dans vecteur des contraintes
  259. idebut=9*(iphase-1)+3
  260. c recup contraintes totales et changement de base
  261. do idir=1,6
  262. x6(idir)=SEFFI(iphase,idir,posi)
  263. end do
  264. c projection sur base de l increment de charge
  265. call prjc3d(x6,v33,v33t,x3,x16,.false.)
  266. do idir=1,3
  267. SEFFG(idebut+idir)=x3(idir)
  268. end do
  269. c passage de la deformation plastique en base principales
  270. do idir=1,6
  271. x06(idir)=EPSTI(iphase,idir,posi)
  272. end do
  273. call prjc3d(x06,v33,v33t,x03,x16,.false.)
  274. do idir=1,3
  275. EPSTG(idebut+idir)=x03(idir)
  276. end do
  277. end do
  278.  
  279. c ---- composantes de contrainte totale dans l inclusion ----------
  280.  
  281. do iphase=1,NINC
  282. if(affiche_local) then
  283. print*,'Criter1inc3d traction radiale interface :',iphase
  284. end if
  285. c position dans vecteur des contraintes
  286. idebut=9*(iphase-1)
  287. c recup contraintes totales et changement de base
  288. do idir=1,6
  289. x6(idir)=STOTR(iphase,idir,posi)
  290. end do
  291. c projection sur base de l increment de charge
  292. call prjc3d(x6,v33,v33t,x3,x16,.false.)
  293. do idir=1,3
  294. STOTG(idebut+idir)=x3(idir)
  295. end do
  296. c passage de la deformation plastique en base principales
  297. do idir=1,6
  298. x06(idir)=EPSLR(iphase,idir,posi)
  299. end do
  300. call prjc3d(x06,v33,v33t,x03,x16,.false.)
  301. do idir=1,3
  302. EPSLG(idebut+idir)=x03(idir)
  303. end do
  304. end do
  305.  
  306. c ---- composantes orthoradiales dans les interfaces ---------------
  307.  
  308. do iphase=1,NINC
  309. if(affiche_local) then
  310. print*,'Criter1inc3d traction orthoradiale phase:',iphase
  311. end if
  312. c position dans vecteur des contraintes
  313. idebut=9*(iphase-1)+6
  314. c recup contrainte totale et digonalisation
  315. do idir=1,6
  316. x6(idir)=SEFFO(iphase,idir,posi)
  317. end do
  318. c projection sur base de l increment de charge
  319. call prjc3d(x6,v33,v33t,x3,x16,.false.)
  320. do idir=1,3
  321. SEFFG(idebut+idir)=x3(idir)
  322. end do
  323. c passage de la deformation plastique en base principales
  324. do idir=1,6
  325. x06(idir)=EPSTO(iphase,idir,posi)
  326. end do
  327. call prjc3d(x06,v33,v33t,x03,x16,.false.)
  328. do idir=1,3
  329. EPSTG(idebut+idir)=x03(idir)
  330. end do
  331. end do
  332.  
  333.  
  334. c***********************************************************************
  335. c Forces thermodynamique
  336. c***********************************************************************
  337.  
  338. call ftnc3d(NBRINC,NINC,NDIMG,SEFFG,FRAC,GCH,
  339. # bwPw,bgPg,FTHG,AFFICHE_local,ERR1)
  340.  
  341.  
  342. c***********************************************************************
  343. c criteres de traction diffuse
  344. c***********************************************************************
  345.  
  346. do idir=1,NTMAX
  347. Log_RTG(idir)=.false.
  348. ACTIFT(idir)=.false.
  349. FT(idir)=0.d0
  350. do jdir=1,NDIMG
  351. DPFTDS(idir,jdir)=0.d0
  352. DGFTDS(idir,jdir)=0.d0
  353. end do
  354. end do
  355.  
  356. do iphase=0,ninc
  357. if(iphase.eq.0) then
  358. idebut=9*ninc
  359. do icr=idebut+1,idebut+3
  360. idir=icr
  361. RTG(idir)=RTP(0)
  362. RFG(idir)=RFP(0)
  363. c a l interieur des phases on a FTH=SEFF
  364. call RanKinc3d(NDIMG,NTMAX,icr,idir,
  365. # SEFFG,EPSTG,RTG,RFG,SEFFG,FT,DPFTDS,DGFTDS,ACTIFT,
  366. # Log_RTG,precision3d,affiche,err1)
  367. end do
  368. else
  369. c boucle sur les positions des zones d interet
  370. do ityp=1,3
  371. idebut=(iphase-1)*9+(ityp-1)*3
  372. do idir=idebut+1,idebut+3
  373. icr=idir
  374. if (ityp.eq.1) then
  375. c ityp=1 radial ds la phase
  376. RTG(idir)=RTP(iphase)
  377. RFG(idir)=RFP(iphase)
  378. c a l interieur des phases on a FTH=SEFF
  379. call RanKinc3d(NDIMG,NTMAX,icr,idir,
  380. # SEFFG,EPSTG,RTG,RFG,SEFFG,FT,DPFTDS,DGFTDS,
  381. # ACTIFT,Log_RTG,precision3d,affiche,err1)
  382. else
  383. c ityp=2 radial dans l interface cote matrice (non actif)
  384. c ityp=3 ortho radial ds la matrice (activable)
  385. RTG(idir)=RTP(0)
  386. RFG(idir)=RFP(0)
  387. if(ityp.eq.3) then
  388. c on evalue le critere orthoradial
  389. call RanKinc3d(NDIMG,NTMAX,icr,idir,
  390. # SEFFG,EPSTG,RTG,RFG,SEFFG,FT,DPFTDS,DGFTDS,
  391. # ACTIFT,Log_RTG,precision3d,affiche,err1)
  392. else
  393. c le critere radial de traction cote matrice estvrai
  394. c desactive au profit du critere de decollement
  395. c qui est traite dans les citere d'interface localise (eps pl l)
  396. ACTIFT(icr)=.false.
  397. FT(icr)=0.d0
  398. DPFTDS(icr,idir)=0.d0
  399. DGFTDS(icr,idir)=0.d0
  400. end if
  401. end if
  402. end do
  403. end do
  404. end if
  405. end do
  406.  
  407.  
  408. c activite de la plasticite de traction diffuse
  409. PLASTT=.false.
  410. do icr=1,NTMAX
  411. PLASTT=PLASTT.or.ACTIFT(icr)
  412. end do
  413.  
  414.  
  415. c selection des criteres de traction diffuse
  416. if(PLASTT) then
  417.  
  418. c triage des criteres du plus grand au plus petit ds LNUMCRT
  419. call ordr3d(NTMAX,LNUMCRT,FT,affiche_local,ACTIFT,NBRACT)
  420.  
  421. c affichage des resultats de l analyse des criteres actifs
  422. if((NBRACT.ne.0).and.(affiche_local)) then
  423. print*,'Dans crer3d TRACTION EFFECTIVE PHASES'
  424. write(*,'(A9,I2,1X,/)')
  425. # 'NBRACT=',NBRACT
  426. do icr=1,NTMAX
  427. write(*,'(A10,I2,1X,5(A7,E10.3,1X),A5,1X,L1)')
  428. # 'Direction:',LNUMCRT(icr),
  429. # 'DGFTDS=',DGFTDS(LNUMCRT(icr),LNUMCRT(icr)),
  430. # 'DPFTDS=',DPFTDS(LNUMCRT(icr),LNUMCRT(icr)),
  431. # 'FT=',FT(LNUMCRT(icr)),
  432. # 'FTHG=',FTHG(LNUMCRT(icr)),
  433. # 'SEFFG=',SEFFG(LNUMCRT(icr)),
  434. # 'Activ:',ACTIFT(LNUMCRT(icr))
  435. end do
  436. c read*
  437. end if
  438.  
  439. else
  440.  
  441. NBRACT=0
  442.  
  443. end if
  444.  
  445. c***********************************************************************
  446. c criteres de traction par decollement localise aux interfaces
  447. c***********************************************************************
  448. c goto 10
  449. do idir=1,NLMAX
  450. Log_RLG(idir)=.false.
  451. ACTIFL(idir)=.false.
  452. do jdir=1,NDIMG
  453. DPFLDS(idir,jdir)=0.d0
  454. DGFLDS(idir,jdir)=0.d0
  455. end do
  456. FL(idir)=0.d0
  457. end do
  458.  
  459. do iphase=1,ninc
  460. c print*,'critere interface phase',iphase
  461. idebut=(iphase-1)*9
  462. do idirg=idebut+1,idebut+3
  463. c print*,'direction',idirg
  464. icr=idirg
  465. RTLG(idirg)=RTI(iphase)
  466. RFLG(idirg)=RFI(iphase)
  467. c aux interfaces FTH=STOTG
  468. call RanKinc3d(NDIMG,NLMAX,icr,idirg,
  469. # STOTG,EPSLG,RTLG,RFLG,STOTG,FL,DPFLDS,DGFLDS,ACTIFL,
  470. # Log_RLG,precision3d,affiche,err1)
  471. end do
  472. end do
  473.  
  474. c activite de la plasticite d interface localisee
  475. PLASTL=.false.
  476. do icr=1,NLMAX
  477. PLASTL=PLASTL.or.ACTIFL(icr)
  478. end do
  479.  
  480. c selection des criteres a traiter
  481. if(PLASTL) then
  482.  
  483. c triage des criteres du plus grand au plus petit ds LNUMCRT
  484. call ordr3d(NLMAX,LNUMCRL,FL,affiche_local,ACTIFL,NBRACL)
  485.  
  486.  
  487. c affichage des resultats de l analyse des criteres actifs
  488. if((NBRACL.ne.0).and.(affiche_local)) then
  489. print*,'Dans crer3d TRACTION TOTALE INTERFACES'
  490. write(*,'(A9,I2,1X,/)')
  491. # 'NBRACL=',NBRACL
  492. do icr=1,NLMAX
  493. write(*,'(A10,I2,1X,5(A7,E10.3,1X),A5,1X,L1)')
  494. # 'Direction:',LNUMCRL(icr),
  495. # 'DGFTDS=',DGFLDS(LNUMCRL(icr),LNUMCRL(icr)),
  496. # 'DPFTDS=',DPFLDS(LNUMCRL(icr),LNUMCRL(icr)),
  497. # 'FT=',FL(LNUMCRL(icr)),
  498. # 'FTHG=',FTHG(LNUMCRL(icr)),
  499. # 'STOTG=',STOTG(LNUMCRL(icr)),
  500. # 'Activ:',ACTIFL(LNUMCRL(icr))
  501. end do
  502. c read*
  503. end if
  504.  
  505. else
  506.  
  507. NBRACL=0
  508.  
  509. end if
  510.  
  511.  
  512. c***********************************************************************
  513. c criteres de cisaillement
  514. c***********************************************************************
  515.  
  516. c ---- initialisations
  517.  
  518. c lors de l evalauation en 0 il ne faut pas effacer
  519. c les directions, ni la liste des criteres actifs
  520.  
  521. 10 PLASTC=.false.
  522. TAUEQ=0.d0
  523. PRESS=0.d0
  524. NBRACC=0
  525. c direction pour le critere le plus actif en cisaillement
  526. do icr=1,NCMAX
  527. FC(icr)=0.d0
  528. ACTIFC(icr)=.false.
  529. do idir=1,NDIMG
  530. DGFCDS(icr,idir)=0.d0
  531. DPFCDS(icr,idir)=0.d0
  532. end do
  533. end do
  534.  
  535. c ---- desactivation possible de DP --------------------------------
  536.  
  537. if((NBRACT.gt.0).or.(NBRACL.gt.0)) then
  538. c on n examine pas les cisaillement tant que des
  539. c tractions sont actifs
  540. goto 40
  541. end if
  542.  
  543. c ------------------------------------------------------------------
  544.  
  545. if(affiche_local) then
  546. print*,'Dans crer3d on demarre le cisaillement'
  547. end if
  548. c boucle sur les phases
  549.  
  550. do iphase=0,ninc
  551.  
  552. c affectation d un numero au critere
  553. if(iphase.eq.0) then
  554.  
  555. c -- matrice en cisaillement --------------------------------
  556.  
  557. IDEBUT=9*ninc
  558. c type de critere (1 dans la phase, 2 dans l interface)
  559. ityp=1
  560. c numero du critere
  561. icr=ntypc*ninc+ityp
  562.  
  563. c recuperation des contraintes
  564. do idir=1,3
  565. SEFF3(idir)=SEFFG(IDEBUT+IDIR)
  566. FTH3(idir)=FTHG(IDEBUT+IDIR)
  567. end do
  568. c initialisation de l activite du critere et de sa valeur
  569. actifc1=.false.
  570. FC1=0.d0
  571. c calcul du critere de cisaillement
  572. call dpin3d(NBRINC,NCMAX,NDIMG,IPHASE,
  573. # BETA,DELTA,COHE,RTP,SEFF3,FC1,DPFCDS3,DGFCDS3,
  574. # ACTIFC1,FTH3,PRECISION3D,AFFICHE,ERR1)
  575. c stockage ds la variables generalisees
  576. if(ACTIFC1) then
  577. ACTIFC(icr)=.true.
  578. NBRACC=NBRACC+1
  579. LNUMCRC(NBRACC)=icr
  580. FC(icr)=FC1
  581. do idir=1,3
  582. DPFCDS(icr,idebut+idir)=DPFCDS3(idir)
  583. DGFCDS(icr,idebut+idir)=DGFCDS3(idir)
  584. end do
  585. else
  586. ACTIFC(icr)=.false.
  587. end if
  588.  
  589. else
  590.  
  591. c ---- inclusion en cisaillement -----------------------------
  592.  
  593. IDEBUT=9*(iphase-1)
  594. c type de critere (1 dans la phase, 2 dans l interface)
  595. ityp=1
  596. c numero du critere
  597. icr=ntypc*(iphase-1)+ityp
  598.  
  599. c recuperation des contraintes
  600. do idir=1,3
  601. SEFF3(idir)=SEFFG(IDEBUT+IDIR)
  602. FTH3(idir)=FTHG(IDEBUT+IDIR)
  603. end do
  604. c initialisation de l activite du critere et de sa valeur
  605. actifc1=.false.
  606. FC1=0.d0
  607. c calcul du critere de cisaillement
  608. call dpin3d(NBRINC,NCMAX,NDIMG,IPHASE,
  609. # BETA,DELTA,COHE,RTP,SEFF3,FC1,DPFCDS3,DGFCDS3,
  610. # ACTIFC1,FTH3,PRECISION3D,AFFICHE,ERR1)
  611. c stockage ds la variables generalisees
  612. if(ACTIFC1) then
  613. ACTIFC(icr)=.true.
  614. NBRACC=NBRACC+1
  615. LNUMCRC(NBRACC)=icr
  616. FC(icr)=FC1
  617. do idir=1,3
  618. DPFCDS(icr,idebut+idir)=DPFCDS3(idir)
  619. DGFCDS(icr,idebut+idir)=DGFCDS3(idir)
  620. end do
  621. else
  622. ACTIFC(icr)=.false.
  623. end if
  624.  
  625. c --- interface de l inclusion en cisaillement ---------------
  626.  
  627. c type de critere (1 dans la phase, 2 dans l interface)
  628. ityp=2
  629. c numero du critere
  630. icr=ntypc*(iphase-1)+ityp
  631.  
  632. c recuperation des contraintes au sens thermodynamique
  633. do idir=1,3
  634. SEFF3(idir)=
  635. # (SEFFG(IDEBUT+3+IDIR)+2.d0*SEFFG(IDEBUT+6+IDIR))/3.d0
  636. FTH3(idir)=
  637. # (FTHG(IDEBUT+3+IDIR)+2.d0*FTHG(IDEBUT+6+IDIR))/3.d0
  638. end do
  639. c initialisation de l activite du critere et de sa valeur
  640. actifc1=.false.
  641. FC1=0.d0
  642. c calcul du critere de cisaillement
  643. call dpin3d(NBRINC,NCMAX,NDIMG,IPHASE,
  644. # BETA,DELTA,COHE,RTP,SEFF3,FC1,DPFCDS3,DGFCDS3,
  645. # ACTIFC1,FTH3,PRECISION3D,AFFICHE,ERR1)
  646. c stockage ds la variables generalisees
  647. if(ACTIFC1) then
  648. do idir=1,3
  649. DPFCDS(icr,idebut+3+idir)=DPFCDS3(idir)/3.d0
  650. DPFCDS(icr,idebut+6+idir)=DPFCDS3(idir)*2.d0/3.d0
  651. DGFCDS(icr,idebut+3+idir)=DGFCDS3(idir)/3.d0
  652. DGFCDS(icr,idebut+6+idir)=DGFCDS3(idir)*2.d0/3.d0
  653. end do
  654. ACTIFC(icr)=.true.
  655. NBRACC=NBRACC+1
  656. LNUMCRC(NBRACC)=icr
  657. FC(icr)=FC1
  658. else
  659. ACTIFC(icr)=.false.
  660. end if
  661.  
  662. end if
  663.  
  664. if(err1.eq.1) then
  665. print*,'Erreur dans le calcul du cisaillement'
  666. print*,'dans crer3d'
  667. return
  668. end if
  669.  
  670. end do
  671.  
  672. c bilan des activites de cisaillement
  673. if(NBRACC.ne.0) then
  674. PLASTC=.true.
  675. end if
  676.  
  677. if(PLASTC) then
  678.  
  679. c -- triage des criteres du plus grand au plus petit ds LNUMCRC --
  680.  
  681. call ordr3d(NCMAX,LNUMCRC,FC,affiche_local,ACTIFC,NBRACC)
  682.  
  683.  
  684. c --- affichage des resultats de l analyse des criteres actifs ---
  685.  
  686. if((NBRACC.ne.0).and.(affiche_local)) then
  687. print*,'Dans crer3d'
  688. write(*,'(A9,I2)') 'NBRACC=',NBRACC
  689. do icr=1,NBRACC
  690. write(*,'(A10,I2,1X,A3,E10.3,1X,A6,1X,L1)')
  691. # 'Citere:',LNUMCRC(icr),
  692. # 'FC=',FT(LNUMCRC(icr)),
  693. # 'Activ:',ACTIFC(LNUMCRC(icr))
  694. do idir=1,NDIMG
  695. write(*,'(A9,I3,1X,2(A7,E10.3,1X))')
  696. # 'Direction',idir,
  697. # 'DGFCDS=',DGFCDS(LNUMCRC(icr),idir),
  698. # 'DPFCDS=',DPFCDS(LNUMCRC(icr),idir)
  699. end do
  700. end do
  701. c read*
  702. end if
  703.  
  704. else
  705.  
  706. NBRACC=0
  707.  
  708. end if
  709.  
  710. c ------- fin zone critere de cisaillement -------------------------
  711.  
  712.  
  713. c***********************************************************************
  714. c bilan de franchissement des criteres
  715. c***********************************************************************
  716.  
  717. 40 plast=plastt.or.plastc.or.plastl
  718.  
  719. c initialisation critere global
  720. resg=0.d0
  721.  
  722. c evaluation du critere global
  723. if(plast) then
  724.  
  725. if(plastt) then
  726. do i=1,nbract
  727. j=lnumcrt(i)
  728. RESG=RESG+FT(j)**2
  729. end do
  730. C fmaxt=ft(lnumcrt(1))
  731. C fmint=ft(lnumcrt(nbract))
  732. C coefft=fmint/fmaxt
  733. C fmaxg=fmaxt
  734. C fming=fmint
  735. C coeffg=coefft
  736. end if
  737.  
  738. if(plastl) then
  739. do i=1,nbracl
  740. j=lnumcrl(i)
  741. RESG=RESG+FL(j)**2
  742. end do
  743. C fmaxl=fl(lnumcrl(1))
  744. C fminl=fl(lnumcrl(nbract))
  745. C coeffl=fminl/fmaxl
  746. C fmaxg=fmaxl
  747. C fming=fminl
  748. C coeffg=coeffl
  749. end if
  750.  
  751. if(plastc) then
  752. do i=1,nbracc
  753. j=lnumcrc(i)
  754. RESG=RESG+FC(j)**2
  755. end do
  756. C fmaxc=fc(lnumcrc(1))
  757. C fminc=fc(lnumcrc(nbracc))
  758. C coeffc=fminc/fmaxc
  759. C fmaxg=fmaxc
  760. C fming=fminc
  761. C coeffg=coeffc
  762. end if
  763.  
  764. RESG=sqrt(RESG)
  765.  
  766. C if(plastc.and.plastt) then
  767. C coeffg=min(coefft,coeffc)
  768.  
  769. C else if(plastc.and.plastl) then
  770. C coeffg=min(coeffl,coeffc)
  771.  
  772. C else if(plastt.and.plastl) then
  773. C coeffg=min(coeffl,coefft)
  774.  
  775. C else if(plastt.and.plastl.and.plastc) then
  776. C coeffg=min(coeffl,coefft,coeffc)
  777. C end if
  778.  
  779. c reduc_resg=coeffg
  780. reduc_resg=1.d0
  781. c print*,'Coefficient de relaxation du residu:',reduc_resg
  782. end if
  783.  
  784. if(affiche_local) then
  785. print*,'Fin de crer3d'
  786. * read*
  787. end if
  788.  
  789. return
  790.  
  791. end
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  

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