Télécharger umapo2.eso

Retour à la liste

Numérotation des lignes :

umapo2
  1. C UMAPO2 SOURCE CHAT 06/07/13 21:16:08 5488
  2. SUBROUTINE UMAPO2 ( STRESS, STATEV, DDSDDE,
  3. & STRAN, DSTRAN, DTIME,
  4. & TEMP, DTEMP, PREDEF, DPRED,
  5. & NTENS, NSTATV,
  6. & PROPS, NPROPS, COORDS,
  7. & NOEL, NPT, KINC )
  8. IMPLICIT INTEGER(I-N)
  9. IMPLICIT REAL*8(A-H,O-Z)
  10. C-----------------------------------------------------------------------
  11. C
  12. C DESCRIPTION FONCTIONNELLE :
  13. C -------------------------
  14. C
  15. C Dependance du module Utilisateur UMAT
  16. C Appelee dans le cas suivant :
  17. C
  18. C ILOI = 22 : Modele 'FLUAGE' 'POLYNOMIAL' de CAST3M, INPLAS=21
  19. C RESTRICTION A LA FORMULATION MASSIVE
  20. C Instanciation des composantes de materiau au fur et a
  21. C mesure des iterations internes.
  22. C Le modele comprend cette fois des parametres externes.
  23. C Les composantes de materiau sont evaluees par les
  24. C memes fonctions externes que celles utilisees par
  25. C l'operateur VARI.
  26. C MODELE 'MAQUETTE'
  27. C
  28. C Composantes de materiau
  29. C -----------------------
  30. C PROPS ( 1) : 'YOUN' PROPS ( 5) : 'SMAX'
  31. C PROPS ( 2) : 'NU ' PROPS ( 6) : 'AF0 '
  32. C PROPS ( 3) : 'RHO ' PROPS ( 7) : 'AF1 '
  33. C PROPS ( 4) : 'ALPH' PROPS ( 8) : 'AF2 '
  34. C PROPS ( 9) : 'AF3 '
  35. C PROPS (10) : 'AF4 '
  36. C PROPS (11) : 'AF5 '
  37. C PROPS (12) : 'AF6 '
  38. C Variables internes
  39. C ------------------
  40. C STATEV( 1) : 'PXX ' STATEV(17) : 'ENXX'
  41. C STATEV( 2) : 'PYY ' STATEV(18) : 'ENYY'
  42. C STATEV( 3) : 'PZZ ' STATEV(19) : 'ENZZ'
  43. C STATEV( 4) : 'PXY ' STATEV(20) : 'GNXY'
  44. C STATEV( 5) : 'PYZ ' STATEV(21) : 'GNXZ'
  45. C STATEV( 6) : 'PZX ' STATEV(22) : 'GNYZ'
  46. C STATEV( 7) : 'VNXX'
  47. C STATEV( 8) : 'VNYY'
  48. C STATEV( 9) : 'VNZZ'
  49. C STATEV(10) : 'VNXY'
  50. C STATEV(11) : 'VNYZ'
  51. C STATEV(12) : 'VNZX'
  52. C STATEV(13) : 'EPCE'
  53. C STATEV(14) : 'EPSH'
  54. C STATEV(15) : 'LL '
  55. C STATEV(16) : 'EPSE'
  56. C
  57. C Parametres externes
  58. C -------------------
  59. C TEMP : 'T '
  60. C PREDEF( 1) : 'PORO'
  61. C PREDEF( 2) : 'YOGC'
  62. C PREDEF( 3) : 'ALPC'
  63. C PREDEF( 4) : 'TFIS'
  64. C PREDEF( 5) : 'TU02'
  65. C PREDEF( 6) : 'FACF'
  66. C PREDEF( 7) : 'DSIU'
  67. C PREDEF( 8) : 'DGRA'
  68. C
  69. C DTEMP : increment de 'T ' sur le pas de temps
  70. C DPRED ( 1) : increment de 'PORO' sur le pas de temps
  71. C DPRED ( 2) : increment de 'YOGC' sur le pas de temps - INUTILE
  72. C DPRED ( 3) : increment de 'ALPC' sur le pas de temps - INUTILE
  73. C DPRED ( 4) : increment de 'TFIS' sur le pas de temps
  74. C DPRED ( 5) : increment de 'TUO2' sur le pas de temps
  75. C DPRED ( 6) : increment de 'FACF' sur le pas de temps
  76. C DPRED ( 7) : increment de 'DSIU' sur le pas de temps
  77. C DPRED ( 8) : increment de 'DGRA' sur le pas de temps
  78. C
  79. C-----------------------------------------------------------------------
  80. C Arguments de l'interface
  81. C
  82. INTEGER NTENS, NSTATV, NPROPS,
  83. & NOEL, NPT, KINC
  84. C
  85. REAL*8 STRESS(NTENS), STATEV(*),
  86. & DDSDDE(NTENS,NTENS),
  87. & STRAN(NTENS), DSTRAN(NTENS),
  88. & DTIME,
  89. & TEMP, DTEMP, PREDEF(*), DPRED(*),
  90. & PROPS(NPROPS),
  91. & COORDS(3)
  92. C
  93. C Variables locales
  94. C
  95. INTEGER NVARI
  96. PARAMETER (NVARI=16)
  97. C
  98. C Tableaux de travail
  99. C
  100. REAL*8 VAR(NVARI),VAR1(NVARI),VARP1(NVARI),VARP2(NVARI),
  101. & VAR12(NVARI),VARP3(NVARI),VARP4(NVARI),VAR13(NVARI),
  102. & SIG(8),SIG1(8),SIG12(8),SIG13(8),
  103. & DSPT(8),XX(8),
  104. & EVP1(8),EVP2(8),EVP3(8),EVP4(8),
  105. & EPSV(8),EPSV1(8),EPSV12(8),EPSV13(8)
  106. C
  107. REAL*8 EPIN0(8),DSIGT(8),VARF(NVARI),SIGF(8),EPINF(8)
  108. C
  109. REAL*8 WMAT(12), WMAT2(12)
  110. C
  111. C Variables scalaires
  112. C
  113. LOGICAL DTLIBR
  114. REAL*8 DT, DTLEFT, BORNE, RMAX, RMIN, DIV, FAC,
  115. & YOU, XNU, AUX0, AUX, AUX1, GEGE,
  116. & XMAX,
  117. CCCCC& TI0, TI1, TPOINT, DELTAT, TI12, FII0, FII1, FII12,
  118. & TI1, TI12, FII0, FII1, FII12,
  119. & DTCUM, DTTAU, DTTAU2,
  120. & TAU, ASIG, ERRABS, TAU2, RA, SQRA, RA1
  121. INTEGER MSOUPA, I, J, ITERO, NSSINC, NITERA,
  122. & INPLAS, MFR1, IFOURB, IERUT
  123. C
  124. REAL*8 UN, DEUX, UNDEMI
  125. PARAMETER (UN=1.D0,DEUX=2.D0,UNDEMI=.5D0)
  126. C
  127. REAL*8 PRECIS
  128. C
  129. REAL*8 PROCON
  130. EXTERNAL PROCON
  131. C
  132. C------------------- Debut du code executable --------------------------
  133. C
  134. C=======================================================================
  135. C 1 - INITIALISATIONS
  136. C Pas de temps et parametres de pilotage des iterations internes
  137. C=======================================================================
  138. C
  139. PRECIS=1.d-8
  140. DTLIBR=.TRUE.
  141. C
  142. DT = DTIME
  143. IF (DT.LT.0.0) THEN
  144. KINC = -221
  145. RETURN
  146. ENDIF
  147. IF (DT.EQ.0.0) DT = 1.e-20
  148. C
  149. DTLEFT = DT
  150. BORNE = 2.0
  151. RMAX = 1.3
  152. RMIN = 0.7
  153. DIV = 7.0
  154. FAC = 3.0
  155. C
  156. MSOUPA = 200
  157. C
  158. INPLAS = 21
  159. MFR1 = 1
  160. IFOURB = 2
  161. FII0 = 0.0D0
  162. FII1 = 0.0D0
  163. FII12 = 0.0D0
  164. TI1 = 0.0D0
  165. TI12 = 0.0D0
  166. C
  167. C=======================================================================
  168. C 2 - Prediction elastique de l'increment de contraintes
  169. C La sequence ci-dessous se substitue a l'appel a CALSIG
  170. C Le calcul des coefficients de la matrice de Hooke reprend la
  171. C sequence d'operations de HOOKIS
  172. C N.B. Les proprietes de materiau prises dans le vecteur PROPS sont
  173. C instanciees A LA FIN du pas
  174. C=======================================================================
  175. C
  176. YOU = PROPS(1)
  177. XNU = PROPS(2)
  178. C
  179. AUX0 = UN/((UN+XNU)*(UN-DEUX*XNU))
  180. AUX = YOU*AUX0*(UN-XNU)
  181. AUX1 = YOU*AUX0*XNU
  182. GEGE = YOU*UNDEMI/(UN+XNU)
  183. C
  184. DO 10 J=1,NTENS
  185. DO 11 I=1,NTENS
  186. DDSDDE(I,J)=0.0D0
  187. 11 CONTINUE
  188. 10 CONTINUE
  189. C
  190. DDSDDE(1,1) = AUX
  191. DDSDDE(1,2) = AUX1
  192. DDSDDE(1,3) = AUX1
  193. C
  194. DDSDDE(2,1) = AUX1
  195. DDSDDE(2,2) = AUX
  196. DDSDDE(2,3) = AUX1
  197. C
  198. DDSDDE(3,1) = AUX1
  199. DDSDDE(3,2) = AUX1
  200. DDSDDE(3,3) = AUX
  201. C
  202. DDSDDE(4,4) = GEGE
  203. DDSDDE(5,5) = GEGE
  204. DDSDDE(6,6) = GEGE
  205. C
  206. DO 20 I=1,NTENS
  207. DSIGT(I)=0.0D0
  208. 20 CONTINUE
  209. DO 21 J=1,NTENS
  210. DO 22 I=1,NTENS
  211. DSIGT(I)=DSIGT(I)+DDSDDE(I,J)*DSTRAN(J)
  212. 22 CONTINUE
  213. 21 CONTINUE
  214. C
  215. C=======================================================================
  216. C 3 - Pre-traitement des deformations inelastiques au debut du pas
  217. C Passage gamma -> epsilon pour les termes extradiagonaux
  218. C=======================================================================
  219. C
  220. DO 34 J=1,3
  221. EPIN0(J)=STATEV(NVARI+J)
  222. 34 CONTINUE
  223. DO 35 J=4,6
  224. EPIN0(J)=0.5D0*STATEV(NVARI+J)
  225. 35 CONTINUE
  226. C
  227. C=======================================================================
  228. C 4 - TEST SUR XMAX MILL 8/3/91
  229. C=======================================================================
  230. C
  231. XMAX=PROPS(5)
  232. IF (XMAX.EQ.0.D0) XMAX=PROPS(1)*1.D-3
  233. C
  234. C=======================================================================
  235. C 5 - INITIALISATIONS AVANT ITERATIONS EN SOUS-INCREMENTS
  236. C=======================================================================
  237. C
  238. ITERO = 0
  239. 6543 CONTINUE
  240. C
  241. ITERO = 1 + ITERO
  242. IF ( ITERO.NE.1) THEN
  243. DTLIBR = .TRUE.
  244. PRECIS = PRECIS * 7.D0
  245. IF (ITERO.GT.3) THEN
  246. KINC = -222
  247. RETURN
  248. ENDIF
  249. ENDIF
  250. C
  251. DTLEFT = DT
  252. TAU = DTLEFT
  253. DTCUM = 0.0D0
  254. CCCCC TI0=TEMP
  255. CCCCC TI1=TEMP+DTEMP
  256. CCCCC TPOINT=DTEMP/DT
  257. ASIG = SQRT(PROCON(STRESS,STRESS,NTENS))
  258. ERRABS = PRECIS*ASIG
  259. IF (XMAX.GT.ASIG) ERRABS = PRECIS*XMAX
  260. C
  261. DO 40 I=1,NTENS
  262. SIG(I) = STRESS(I)
  263. EPSV(I) = EPIN0(I)
  264. DSPT(I) = DSIGT(I)/DT
  265. 40 CONTINUE
  266. C
  267. DO 50 I=1,NVARI
  268. VAR(I)=STATEV(I)
  269. 50 CONTINUE
  270. C
  271. C=======================================================================
  272. C 6 - ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0
  273. C=======================================================================
  274. C
  275. NSSINC = 0
  276. NITERA = 0
  277. 60 CONTINUE
  278. C
  279. NSSINC = NSSINC + 1
  280. IF (NSSINC.GT.MSOUPA) THEN
  281. DTLIBR=.FALSE.
  282. GOTO 6543
  283. ENDIF
  284. C
  285. CCCCC DELTAT=TPOINT*TAU
  286. CCCCC TI1=TI0+DELTAT
  287. CCCCC....Materiau a TAU
  288. DTTAU = DTCUM + TAU
  289. CALL MATPO2(DTTAU,DT,TEMP,DTEMP,PREDEF,DPRED,wmat,IERUT)
  290. IF (IERUT.NE.0) THEN
  291. KINC = IERUT
  292. RETURN
  293. ENDIF
  294. CALL INCRE1(TAU,SIG,EPSV,VAR,EVP1,VARP1,wmat,NTENS,NVARI,
  295. & INPLAS,NPROPS,MFR1,FII0,FII1,TI1)
  296. C
  297. C ---------------------------------------------------------------
  298. C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT
  299. C
  300. NITERA = 0
  301. 70 CONTINUE
  302. C
  303. NITERA = NITERA + 1
  304. C
  305. C ____________________________________________________________
  306. TAU2=TAU*0.5D0
  307. CCCCC.......Materiau a TAU 1/2
  308. DTTAU2 = DTCUM + TAU2
  309. CALL MATPO2(DTTAU2,DT,TEMP,DTEMP,PREDEF,DPRED,wmat2,IERUT)
  310. IF (IERUT.NE.0) THEN
  311. KINC = IERUT
  312. RETURN
  313. ENDIF
  314. CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1,
  315. & VARP1,wmat2,NTENS,NVARI,IFOURB,INPLAS,MFR1)
  316. C
  317. C ____________________________________________________________
  318. CCCCC DELTAT=TPOINT*TAU
  319. CCCCC TI1=TI0+DELTAT
  320. CCCCC.......Materiau a TAU
  321. DTTAU = DTCUM + TAU
  322. CALL MATPO2(DTTAU,DT,TEMP,DTEMP,PREDEF,DPRED,wmat,IERUT)
  323. IF (IERUT.NE.0) THEN
  324. KINC = IERUT
  325. RETURN
  326. ENDIF
  327. CALL INCRE1(TAU,SIG1,EPSV1,VAR1,EVP2,VARP2,wmat,NTENS,
  328. & NVARI,INPLAS,NPROPS,MFR1,FII0,FII1,TI1)
  329. DO 701 I=1,NTENS
  330. EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I))
  331. 701 CONTINUE
  332. DO 702 I=1,2*NTENS+2
  333. VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I))
  334. 702 CONTINUE
  335. DO 703 I=2*NTENS+4,NVARI
  336. VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I))
  337. 703 CONTINUE
  338. C
  339. C ____________________________________________________________
  340. CCCCC DELTAT=TPOINT*TAU2
  341. CCCCC TI12=TI0+DELTAT
  342. CCCCC.......Materiau a TAU 1/2
  343. CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG12,EPSV12,VAR12,DSPT,EVP2,
  344. & VARP2,wmat2,NTENS,NVARI,IFOURB,INPLAS,MFR1)
  345. CALL INCRE1(TAU2,SIG12,EPSV12,VAR12,EVP3,VARP3,wmat2,NTENS,
  346. & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12)
  347. C
  348. C ____________________________________________________________
  349. CCCCC TI1=TI12+DELTAT
  350. CCCCC.......Materiau a TAU
  351. CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIG13,EPSV13,VAR13,DSPT,
  352. & EVP3,VARP3,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1)
  353. CALL INCRE1(TAU2,SIG13,EPSV13,VAR13,EVP4,VARP4,wmat,NTENS,
  354. & NVARI,INPLAS,NPROPS,MFR1,FII12,FII1,TI1)
  355. DO 711 I=1,NTENS
  356. EVP4(I) = 0.5D0*(EVP3(I)+EVP4(I))
  357. 711 CONTINUE
  358. DO 712 I=1,2*NTENS+2
  359. VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I))
  360. 712 CONTINUE
  361. DO 713 I=2*NTENS+4,NVARI
  362. VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I))
  363. 713 CONTINUE
  364. CCCCC.......Materiau a TAU
  365. CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIGF,EPINF,VARF,DSPT,
  366. & EVP4,VARP4,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1)
  367. C
  368. C ____________________________________________________________
  369. CCCCC DELTAT=TPOINT*TAU2
  370. CCCCC TI12=TI0+DELTAT
  371. CCCCC.......Materiau a TAU 1/2
  372. CALL INCRE1(TAU2,SIGF,EPINF,VARF,EVP4,VARP4,wmat2,NTENS,
  373. & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12)
  374. DO 721 I=1,NTENS
  375. EVP2(I) = (EVP1(I)+EVP4(I))/6.D0+EVP3(I)*2.D0/3.D0
  376. 721 CONTINUE
  377. DO 722 I=1,2*NTENS+2
  378. VARP2(I)=(VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0
  379. 722 CONTINUE
  380. DO 723 I=2*NTENS+4,NVARI
  381. VARP2(I)= (VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0
  382. 723 CONTINUE
  383. C...........Materiau a TAU
  384. CALL ADVAN1(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP2,
  385. & VARP2,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1)
  386. C
  387. C ____________________________________________________________
  388. C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE
  389. C
  390. DO 730 I=1,NTENS
  391. XX(I) = SIGF(I)-SIG1(I)
  392. 730 CONTINUE
  393. RA = SQRT(PROCON(XX,XX,NTENS))/(ERRABS)
  394. SQRA = SQRT(RA)
  395. C
  396. C ____________________________________________________________
  397. C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU
  398. C DIV =7 BORNE = 2
  399. C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI
  400. C SI 2<RA<7*7 ON VISE RA = 1 ET NOUVEL ESSAI
  401. C
  402. IF (DTLIBR) THEN
  403. C
  404. C Petite ruse pour dejouer l'optimisation
  405. RA1=RA*1.D0
  406. C
  407. IF ((RA.GT.DIV*DIV).OR.(RA.NE.RA1)) THEN
  408. TAU = TAU/DIV
  409. CCCCC DELTAT=TPOINT*TAU
  410. CCCCC TI1=TI0+DELTAT
  411. GOTO 70
  412. ELSE IF ( RA.GT.(BORNE)) THEN
  413. TAU = TAU/SQRA
  414. CCCCC DELTAT=TPOINT*TAU
  415. CCCCC TI1=TI0+DELTAT
  416. GOTO 70
  417. ENDIF
  418. ENDIF
  419. C ____________________________________________________________
  420. C
  421. C FIN D'ITERATIONS SUR TAU OPTIMAL / MISE A JOUR DES VARIABLES
  422. C Ici RA < BORNE
  423. C On avance en temps
  424. C
  425. DO 80 I=1,NTENS,1
  426. SIG(I) = SIGF(I)
  427. EPSV(I) = EPINF(I)
  428. 80 CONTINUE
  429. DO 90 I=1,NVARI,1
  430. VAR(I) = VARF(I)
  431. 90 CONTINUE
  432. C ---------------------------------------------------------------
  433. C
  434. C TEST DE FIN DES ITERATIONS EN SSINCREMENTS / MISE A JOUR DE TAU
  435. C * si SQRA<1/3 TAU = TAU*3
  436. C * si 1/3<SQRA<RMIN on vise RA = 1
  437. C * si RMIN<SQRA<RMAX TAU inchang{
  438. C * si SQRA>RMAX on vise RA = 1
  439. C Fin des boucles en ss increments si tau = DTLEFT
  440. C
  441. DTCUM = DTCUM + TAU
  442. IF ( TAU.LT.DTLEFT ) THEN
  443. DTLEFT = DTLEFT - TAU
  444. IF ( FAC*SQRA.LT.1.D0) THEN
  445. TAU=TAU*FAC
  446. ELSE IF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN
  447. TAU=TAU/SQRA
  448. ENDIF
  449. IF (TAU.GT.DTLEFT) TAU = DTLEFT
  450. CCCCC TI0=TI1
  451. CCCCC DELTAT=TPOINT*TAU
  452. CCCCC TI1=TI0+DELTAT
  453. GOTO 60
  454. ENDIF
  455. C
  456. IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN
  457. KINC = -223
  458. RETURN
  459. ENDIF
  460. C
  461. C=======================================================================
  462. C 7 - STOCKAGE DES RESULTATS AVANT SORTIE
  463. C=======================================================================
  464. C
  465. C Contraintes
  466. C
  467. DO 100 J=1,NTENS
  468. STRESS(J)=SIGF(J)
  469. 100 CONTINUE
  470. C
  471. C Variables internes
  472. C
  473. DO 110 J=1,NVARI
  474. STATEV(J)=VARF(J)
  475. 110 CONTINUE
  476. C
  477. C Deformations inelastiques
  478. C Passage epsilon -> gamma pour les termes extradiagonaux
  479. C
  480. DO 120 J=1,3
  481. STATEV(NVARI+J)=EPINF(J)
  482. 120 CONTINUE
  483. DO 121 J=4,6
  484. STATEV(NVARI+J)=2.0D0*EPINF(J)
  485. 121 CONTINUE
  486. C
  487. RETURN
  488. END
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  

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