Télécharger umagat.eso

Retour à la liste

Numérotation des lignes :

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

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