Télécharger cinc3d.eso

Retour à la liste

Numérotation des lignes :

cinc3d
  1. C CINC3D SOURCE PV090527 23/02/10 21:15:03 11592
  2. c A.Sellier avril jeu. 09 sept. 2010 11:55:47 CEST
  3. SUBROUTINE cinc3d(WRK52,WRK53,WRK54,MWRKXE,
  4. # nbnb,idimb,teta13d,teta23d,nvarib,nstrsb,ifourb,dtb)
  5.  
  6. C WRK52,53,54 segments déclarés dans le common DECHE
  7.  
  8. C XMAT(NCOMAT) = COMPOSANTES DE MATERIAU
  9. C IVAL(NCOMAT) = INDICE DES COMPOSANTES DE MATERIAU
  10. C NCOMAT = NOMBRE DE COMPOSANTES DE MATERIAU
  11. C XCAR(ICARA) = CARACTERISTIQUES
  12. C MFR = NUMERO DE LA FORMULATION DE L'ELEMENT FINI
  13. C = 1 MASSIF
  14. C = 3 COQUE MINCE ( COQ2 , COQ3 ET DKT )
  15. C = 5 COQUE EPAISSE ( COQ6 , COQ8 )
  16. C = 7 POUTRE
  17. C = 9 COQUE MINCE AVEC CISAILLEMENT TRANSVERSE ( COQ4 ET DST )
  18. C = 11 LIQUIDE
  19. C = 13 TUYAU
  20. C = 15 LINESPRING
  21. C = 17 TUYAU FISSURE
  22. C = 19 RACCORD MASSIF
  23. C = 21 RACCORD COQUE
  24. C = 23 SURFACE LIBRE
  25. C = 25 MEMBRANE
  26. C = 27 UNIAXIALE
  27. C = 29 THERMIQUE
  28. C = 31 INCOMPRESSIBLES
  29. C = 33 POREUX
  30. C = 35 JOINT
  31. C = 37 HOMOGENEISE
  32. C = 39 TUYO
  33. C = 41 TUYAU ACOUSTIQUE PURE
  34. C = 43 RACCORD TUYAU FLUIDE
  35. c* DDAUX = MATRICE DE HOOKE ELASTIQUE
  36. c* NSTRS = NBRE DE COMPOSANTES DES DEFORMATIONS
  37. c* CMATE = NOM DU MATERIAU
  38. c* VALMAT= TABLEAU DE CARACTERISTIQUES DU MATERIAU
  39. c* VALCAR= TABLEAU DE CARACTERISTIQUES GEOMETRIQUES
  40. c* N2EL = NBRE D ELEMENTS DANS SEGMENT DE HOOKE
  41. c* N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE
  42. c* MFR = NUMERO DE LA FORMULATION
  43. c* IFOU = type de formulation
  44. c* IB = NUMERO DE L ELEMENT COURANT
  45. c* IGAU = NUMERO DU POINT COURANT
  46. c* EPAIST= EPAISSEUR
  47. c* NBPGAU= NBRE DE POINTS DE GAUSS
  48. c* MELE = NUMERO DE L ELEMENT FINI
  49. c* NPINT = NBRE DE POINTS D INTEGRATION
  50. c* NBGMAT= NBRE DE POINTS DANS SEGMENT DE CARACTERISTIQUES
  51. c* NELMAT= NBRE D ELEMENTS DANS SEGMENT DE CARACTERISTIQUES
  52. c* SECT = SECTION
  53. c* LHOOK = TAILLE DE LA MATRICE DE HOOKE
  54. c* TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,CRIGI = TABLEAUX UTILISES
  55. c* POUR LE CALCUL DE LA MATRICE DE HOOKE
  56. C-----------------------------------------------------------------------
  57. C VARIABLES PASSEES PAR LES COMMONS COPTIO , ECOU ET NECOU
  58. C
  59. C IFOUR INDICE DU TYPE DE PROBLEME
  60. C -3 DEFORMATIONS PLANES GENERALISEES
  61. C -2 CONTRAINTES PLANES
  62. C -1 DEFORMATIONS PLANES
  63. C 0 AXISYMETRIQUE
  64. C 1 SERIE DE FOURIER
  65. C 2 TRIDIMENSIONNEL
  66. C ITYP TYPE DE FORMULATION MECANIQUE
  67. C --------------- ATTENTION ---------------
  68. C IL EST ACTIF APRES L APPEL DE VISAVI
  69. C -----------------------------------------
  70. C ITYP=1 CAS DES ELEMENTS MASSIFS
  71. C ITYP=2 CAS DES COQUES
  72. C ITYP=3 CAS DES MEMBRANES
  73. C ITYP=4 CAS DES CABLES ET DES BARRES
  74. C ITYP=5 CAS QUELCONQUE
  75. C ITYP=6 CAS DES CONTRAINTES PLANES
  76. C ITYP=7 CAS DES COQUES A NU=0. OU CONTRAINTES PLANES
  77. C ITYP=8 CAS DES MEMBRANES A NU=0. OU CONTRAINTES PLANES
  78. C ITYP=9 CAS DES COQUES EPAISSES
  79. C ITYP=10 CAS DES JOINTS
  80. C ITYP=11 CAS DES POUTRES
  81. C ITYP=12 CAS DES TUYAUX
  82. C ITYP=13 CAS DES COQUES AVEC CISAILLEMENT TRANSVERSE
  83. C
  84. C ISTEP flag utilise pour separer les etapes dans un calcul non local
  85. C ISTEP=0 -----> calcul local
  86. C ISTEP=1 -----> calcul non local etape 1 on calcule les seuils
  87. C ISTEP=2 -----> calcul non local etape 2 on continue le calcul
  88. C a partir des seuils moyennes
  89. C ISTEP est défini par DEFINI.ESO
  90. C
  91. C EPIN0 déformations inélastiques initiales
  92. C EPINF déformations inélastiques finales
  93. C epst0 déformation totale initiale
  94. C EPSTF déformation totale finale
  95. C
  96. C-----------------------------------------------------------------------
  97. C SORTIES
  98. C SIGF(NSTRS) = CONTRAINTES FINALES
  99. C VARF(NVARI) = VARIABLES INTERNES FINALES
  100. C DEFP = DEFORMATIONS PLASTIQUES
  101. C KERRE = 0 TOUT OK
  102.  
  103.  
  104. IMPLICIT INTEGER(I-N)
  105. IMPLICIT REAL*8(A-H,O-Z)
  106. -INC PPARAM
  107. -INC CCOPTIO
  108. -INC DECHE
  109. *
  110. SEGMENT IECOU
  111. * COMMON/IECOU/NYOG,NYNU,NYALFA,NYSMAX,NYN,NYM,NYKK,
  112. INTEGER icow1,icow2,icow3,icow4,icow5,icow6,icow7,
  113. C INTEGER NYOG, NYNU, NYALFA,NYSMAX,NYN, NYM, NYKK,
  114. 1 icow8,icow9,icow10,icow11,icow12,icow13,icow14,icow15,icow16,
  115. C . NYALF1,NYBET1,NYR, NYA, NYRHO,NSIGY, NNKX, NYKX, IND,
  116. 2 icow17,icow18,icow19,icow20,icow21,icow22,icow23,icow24,
  117. C . NSOM, NINV, NINCMA,NCOMP, JELEM, LEGAUS,INAT, NCXMAT,
  118. 3 icow25,icow26,icow27,icow28,icow29,icow30,ICARA,
  119. C . LTRAC, MFR, IELE, NHRM, NBNN, NBELEM,ICARA,
  120. 4 icow32,icow33,NSTRS1,MFR1,icow36,icow37,icow38,
  121. C . LW2, NDEF, NSTRSS,MFR1, NBGMAT,NELMAT,MSOUPA,
  122. 5 icow39,icow40,icow41,icow42,icow43,icow44
  123. C . NUMAT1,LENDO, NBBB, NNVARI,KERR1, MELEME
  124. INTEGER icow45,icow46,icow47,icow48,icow49,icow50,
  125. . icow51,icow52,icow53,icow54,icow55,icow56
  126. . icow57,icow58
  127. ENDSEGMENT
  128. SEGMENT XECOU
  129. * COMMON/XECOU/DTOPTI,TSOM,TCAR,DTT,DT,TREFA,TEMP00
  130. REAL*8 xcow1, xcow2,xcow3,xcow4,DT,xcow6, xcow7
  131. C REAL*8 DTOPTI,TSOM, TCAR, DTT, DT,TREFA,TEMP00
  132. ENDSEGMENT
  133.  
  134. c segment de coordonnees des noeuds de l element
  135. integer nbnb,insb,idimb
  136. SEGMENT MWRKXE
  137. REAL*8 XE(3,nbnb)
  138. ENDSEGMENT
  139.  
  140. c segment des numero des variables a moyenner
  141. integer NBVIA
  142. SEGMENT WR14
  143. INTEGER INLVIA(NBVIA)
  144. ENDSEGMENT
  145.  
  146.  
  147.  
  148. c temperatures debut et fin de pas , moyenne, pas de temps, volume rgi
  149. real*8 teta13d,teta23d,temp3d,dt3d
  150. c variables de transfert de donnees ( a declarer suivant idvar4 et idvisc)
  151. integer nstrs3d,nvari3d,ierr1,mfr11
  152. c variable pour passer le numero de l etape non locale
  153. integer istep3d ,nvarib,nstrsb,ifourb
  154.  
  155.  
  156. c ******** dimension des tableaux parametres materiau **************
  157.  
  158. c nombre de parametres materiau du modele (cf coherence avec idvisc)
  159. integer NBELAS3D,NBPARC3D,NBRINC3D,NBPPARP3D,NBRTAIL3D
  160. c nmat1 nombre de parametres materiau sans la taille nmat3d-nbrtail3d
  161. integer NMAT1,NMAT3D
  162. c nombre de parametres materiaux
  163.  
  164. c
  165. c nombre d inclusions maximum **************************************
  166. c a regeler aussi dans idvisc et idvar4
  167. parameter (NBRINC3D=1)
  168. c ******************************************************************
  169.  
  170. c nombre de parametres par phases **********************************
  171. c NBELAS3D nb elastique commun a tout les modeles meca (cf idvisc.eso)
  172. c NBPARC3D nb de parametres commun
  173. c NBPPARP3D nb de parametres par phase
  174. parameter (NBELAS3D=4,NBPARC3D=4,NBPPARP3D=26)
  175. c nb parametres materiaux maxi pour inclure la taille des elements finis
  176. parameter (NBRTAIL3D=1)
  177. c nbre de parametres materiaux sans les tailles des elements
  178. parameter (NMAT1=NBELAS3D+NBPARC3D+(NBRINC3D+1)*NBPPARP3D)
  179. c nombre total de parametres
  180. parameter (NMAT3D=NMAT1+NBRTAIL3D+3)
  181. c declaration du nombre totale de materiaux
  182. real*8 xmat3d(NMAT3D)
  183. c ******************************************************************
  184.  
  185. c ******** dimension des tableaux variables internes ***************
  186. c nombre de variables globales isotropes
  187. parameter (NBVARISOG=1)
  188. c nombre de variable globales tensorielles
  189. parameter (NBVARTENG=2)
  190. c nombre total de variables globales--------------------------------
  191. parameter (NBVIND3D=NBVARISOG+6*NBVARTENG)
  192. c ---cas des variables existantes pour toutes les phases -----------
  193. c nombre de variable isotropes
  194. parameter (NBVARISOPP=7)
  195. c nombre de variable tensorielle
  196. parameter (NBVARTENPP=8)
  197. c nombre de variables par phase commune a toutes les phases
  198. parameter (NBVPARP3D=NBVARISOPP+6*NBVARTENPP)
  199. c --sous total des varis globales et communes-----------------------
  200. parameter (NVTOT1=NBVIND3D+(NBRINC3D+1)*NBVPARP3D)
  201. c nombre de variables supplementaires que pour les inclusions-------
  202. c isotrope
  203. parameter (NBVARISOPI=0)
  204. c nombre de variables tensorielles
  205. parameter (NBVARTENPI=12)
  206. c nombre total de variables propres aux interfaces
  207. parameter (NBVPARI3D=NBVARISOPI+6*NBVARTENPI)
  208. c nombre de variables totales
  209. parameter (NVARI3D=NVTOT1+NBVPARI3D*NBRINC3D)
  210. c declaration des tableaux locaux des variables internes ---------
  211. real*8 VAR03D(NVARI3D),VARF3D(NVARI3D)
  212. c ******************************************************************
  213.  
  214. c ******** dimensionde la table des coordonnees des noeuds *********
  215. c nbr de noeuds maxi par element
  216. integer NBNMAX3D
  217. parameter (NBNMAX3D=20)
  218. real*8 XE3D(3,NBNMAX3D)
  219.  
  220. c ******** taille des pseudo vecteurs *****************************
  221. c tjrs 6 en raison de son utilisation dans incl3d
  222. parameter (nstrs3d=6)
  223. c contrainteq
  224. real*8 sig03d(nstrs3d),sigf3d(nstrs3d)
  225. c deformations
  226. real*8 epst03d(nstrs3d),epstf3d(nstrs3d)
  227. c increments de deformations
  228. real*8 depst3d(nstrs3d)
  229. c pas de temps
  230. real*8 dtb
  231.  
  232. c variables logiques :
  233. c isotropie initiale,
  234. logical iso1
  235. c traitement de Gf en local
  236. logical local11
  237.  
  238. c ifou type d element cf au debut du fichier
  239. C -1 DEFORMATIONS PLANES
  240. C 0 AXISYMETRIQUE
  241. C 2 TRIDIMENSIONNEL
  242. integer ifou11
  243. c taille du psudo vecteur des tailles
  244. integer ntail3d
  245.  
  246. c dimension de l espace physique (1d, 2d ou 3d)
  247. integer idimb3d
  248.  
  249. c variable a vrai si il est effectivement prevu de passer
  250.  
  251. c***********************************************************************
  252. c remarque : parametres elastiques en formulation poreux massif (mfr=33)
  253. c en debut de xmat :
  254. c 'YOUN' : module d'Young
  255. c 'NU ' : coefficient de poisson
  256. c 'RHO ' : masse volumique (a la fin en non poreux)
  257. c 'ALPH' : coefficient de dilatation thermique
  258. c à la fin de xmat :
  259. c 'MOB ' : module de Biot
  260. c 'COB ' : coefficient de Biot
  261. c 'PERM' : perméabilité intrinsèque
  262. c 'VISC' : viscosité dynamique du fluide
  263. c 'ALPM' : coefficient de couplage pression - température
  264. c l ordre n est pas le meme si le materiau est orthotrope
  265. c cf deche.inc pour recuperer les noms exacts des variables
  266. c transfert des variables dans les tableaux du modele
  267. c***********************************************************************
  268.  
  269. c ***** valeur de ntail3d
  270. ntail3d=1
  271.  
  272.  
  273. c***********************************************************************
  274. c transfert des parametres materiaux dans le tableau de as3d
  275. if(mfr.ne.33) then
  276. c on est pas en poro meca
  277. if(NMAT3D.lt.nmatt) then
  278. print*,'pb dimension de xmat dans cinc3d'
  279. print*,'nmatt',nmatt,'nmat3d',NMAT3D,'nmat1',NMAT1
  280. do i=1,nmatt
  281. print*,'xmat(',i,')=',xmat(i)
  282. enddo
  283. read*
  284. kerre=1
  285. return
  286. end if
  287. c recuperation des parametres materiau
  288. do i=1,NMAT1
  289. xmat3d(i)=xmat(i)
  290. end do
  291. c recuperation des parametres de taille
  292. if(ntail3d.ne.0) then
  293. do i=(NMAT1+1),(NMAT1+ntail3d)
  294. xmat3d(i)=xmat(i)
  295. end do
  296. if (ntail3d.lt.NBRTAIL3D) then
  297. do i=(NMAT1+ntail3d+1),(NMAT1+NBRTAIL3D)
  298. xmat3d(i)=0.d0
  299. end do
  300. else
  301. if(ntail3d.gt.NBRTAIL3D) then
  302. print*,'pb de dimension de ntail3d ds cinc3d'
  303. kerre=1
  304. return
  305. end if
  306. end if
  307. else
  308. do i=(NMAT1+1),(NMAT1+NBRTAIL3D)
  309. xmat3d(i)=0.d0
  310. end do
  311. end if
  312. else
  313. c traiter ici la formulation poreux suivant les formulations
  314. if(NMAT3D.lt.(nmatt-8)) then
  315. print*,'on est en poreux'
  316. print*,'Pb affectation des caracteristiques dans cinc3d'
  317. do i=1,nmatt
  318. print*,'xmat(',i,')=',xmat(i)
  319. end do
  320. kerre=1
  321. return
  322. else
  323. c recuperation des parametres dans le cas poro meca
  324. do i=1,NMAT3D
  325. xmat3d(i)=xmat(i)
  326. end do
  327. end if
  328. end if
  329.  
  330. c **** recuperation des variables internes debut de pas ***********
  331. if(nvari3d.ne.nvarib) then
  332. print*,'Pb dimension de var0 dans cinc3d'
  333. print*,'Verifier dimension table des variables internes'
  334. print*,'et compatibilite avec idvar4 et incl3d'
  335. read*
  336. kerre=1
  337. return
  338. end if
  339. c transfert vers le tableau de fldo3d
  340. do i=1,nvari3d
  341. c indicateur de passage de 1er pas
  342. if(var0(1).ne.1.) then
  343. var0(i)=0.d0
  344. end if
  345. c autres variables internes
  346. var03d(i)=var0(i)
  347. c initialisation de variable internes finales aux initiales
  348. varf3d(i)=var03d(i)
  349. end do
  350.  
  351. c ***** recuperation des contraintes totales debut de pas *********
  352. if(mfr.ne.33) then
  353. c on est pas en poreux
  354. if(nstrsb.lt.nstrs3d) then
  355. do i=1,nstrsb
  356. sig03d(i)=sig0(i)
  357. sigf3d(i)=sigf(i)
  358. c !!!! ATTENTION les depst 3-6 doivent etre des gamas !!!!
  359. depst3d(i)=depst(i)
  360. epst03d(i)=epst0(i)
  361. epstf3d(i)=epstf(i)
  362. end do
  363. do i=nstrsb+1,nstrs3d
  364. sig03d(i)=0.d0
  365. sigf3d(i)=0.d0
  366. c !!!! ATTENTION les depst 3-6 doivent etre des gamas !!!!
  367. depst3d(i)=0.d0
  368. epst03d(i)=0.d0
  369. epstf3d(i)=0.d0
  370. end do
  371. else
  372. do i=1,nstrs3d
  373. sig03d(i)=sig0(i)
  374. sigf3d(i)=sigf(i)
  375. c !!!! ATTENTION les depst 3-6 doivent etre des gamas !!!!
  376. depst3d(i)=depst(i)
  377. epst03d(i)=epst0(i)
  378. epstf3d(i)=epstf(i)
  379. end do
  380. end if
  381. else
  382. print*,'On est en poreux'
  383. print*,'Pb affectation des contraintes dans cinc3d'
  384. print*,'a terminer...'
  385. do i=1,nstrsb
  386. print*,'sig(',i,')=',sig0(i)
  387. end do
  388. kerre=1
  389. return
  390. end if
  391.  
  392.  
  393. c ******** autres parametres a renseigner ***********************
  394.  
  395. c initialisation indicateur d erreur
  396. ierr1=0
  397. c indicateur isostropie initiale (elastique et de resistance)
  398. iso1=.true.
  399. c numero de la formulation (33 pour poreux)
  400. mfr11=mfr
  401. c type de formulation
  402. ifour11=ifourb
  403. c controle de regularisation en cas d endommagement par methode locale
  404. local11=.true.
  405. c pas de temps
  406. dt3d=dtb
  407. c if(dt3d.eq.0.) then
  408. c print*,'ds CINC3D: dt t0 tf', dt3d,tempf,temp0
  409. c end if
  410. c numero pour le traitement local/non local eventuel
  411. istep3d=istep
  412. c test de compatibilite
  413. if(local11.and.(istep3d.gt.0)) then
  414. print*,'Dans inclusion3d, on ne peut pas avoir local=vrai'
  415. kerre=1
  416. return
  417. end if
  418.  
  419. c ******* recuperation des coordonnees de noeuds ******************
  420. c boucle sur les noeuds
  421. if(nbnb.le.NBNMAX3D) then
  422. NBNB3D=nbnb
  423. if(idimb.le.3) then
  424. idimb3d=idimb
  425. else
  426. print*,'pb table de coord des neouds ds cflu3d'
  427. kerre=1
  428. return
  429. end if
  430. else
  431. print*,'Element avec + de noeuds que capacite de cflu3d'
  432. kerre=1
  433. return
  434. end if
  435. c chargement des coordonnees des noeuds
  436. do insb=1,NBNB3D
  437. do j=1,idimb3d
  438. c print*,'xe(',j,insb,')=',xe(j,insb)
  439. xe3d(j,insb)=xe(j,insb)
  440. end do
  441. if (idimb.lt.3) then
  442. do j=idimb+1,3
  443. xe3d(j,insb)=0.d0
  444. end do
  445. end if
  446. end do
  447. c on double les noeuds si le probleme est 2D
  448. if ((ifourb.eq.0).or.(ifourb.eq.-1)) then
  449. c on double les noeuds avec dimension 3 recupere en xmat(nmat1+8)
  450. dimension3=xmat3d(nmat1+1)
  451. c verif presence de la 3eme dimension
  452. if(dimension3.eq.0.) then
  453. if(ifourb.eq.0) then
  454. c cas axi
  455. print*,'Ds Cincl3d il manque la dimension DIMT'
  456. kerre=1
  457. return
  458. else if (ifourb.eq.-1) then
  459. c cas def plane
  460. print*,'Ds Cincl3d il manque la dimension DIMZ'
  461. kerre=1
  462. return
  463. else
  464. c cas inconnu d incl3d
  465. print*,'Ds Cincl3d EF incompatible'
  466. kerre=1
  467. return
  468. end if
  469. end if
  470. NBNB3D=2*nbnb
  471. do insb=nbnb+1,NBNB3D
  472. do j=1,2
  473. c print*,'xe(',j,insb,')=',xe(j,insb)
  474. xe3d(j,insb)=xe3d(j,(insb-nbnb))
  475. end do
  476. xe3d(3,insb)=dimension3
  477. end do
  478. end if
  479. c ******* appel a incl3d *************************************
  480. c
  481. c ne pas effacer nom des vraibles originales (pour memoire)
  482. c call fluag3D(xmat,nmatt,var0,varf,nvari,dt1,DEPST,
  483. c #nstrs,sigf,mfr,errfluag3D,teta1,teta2)
  484.  
  485. call incl3d(xmat3d,NMAT3D,sig03d,sigf3d,depst3d,NSTRS3D,
  486. # var03d,varf3d,NVARI3D,NBELAS3D,teta13d,teta23d,dt3d,ierr1,iso1,
  487. # MFR11,local11,NMAT1,ifour11,istep3d,epst03d,epstf3d,NBRTAIL3D,
  488. # NBNMAX3D,NBNB3D,IDIMB3D,XE3D,NBRINC3D,NBPARC3D,NBPPARP3D,
  489. # NBVARISOG,NBVARTENG,NBVARISOPP,NBVARTENPP,NVTOT1,NBVARISOPI,
  490. # NBVARTENPI)
  491.  
  492. c ****** re-affectation des tableaux de variables internes ********
  493. do i=1,nvarib
  494. varf(i)=varf3d(i)
  495. c print*,'cas3d f(',i,')=',varf(i),' i',var0(i)
  496. end do
  497. c read*
  498. c ecriture des contraintes totales fin de pas
  499. do i=1,nstrsb
  500. sigf(i)=sigf3d(i)
  501. end do
  502.  
  503. c***********************************************************************
  504. c traitement de l erreur d ecoulement
  505. if(ierr1.eq.0)then
  506. kerre=0
  507. else
  508. kerre=1
  509. end if
  510. 1000 return
  511. end
  512.  
  513. c***********************************************************************
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  

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