Télécharger ccreep.eso

Retour à la liste

Numérotation des lignes :

  1. C CCREEP SOURCE BP208322 17/03/01 21:15:23 9325
  2. SUBROUTINE CCREEP ( wrk52, wrk53, wrk54,
  3. & IFOURB, IB, IGAU, NBPGAU,
  4. & wcreep, iecou, xecou )
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. C-----------------------------------------------------------------------
  8. C
  9. C DESCRIPTION FONCTIONNELLE :
  10. C -------------------------
  11. C
  12. C Integration des lois 'VISCO_EXTERNE' par un schema Runge-Kutta 1.2
  13. C
  14. C Entrees/sorties : segments wrk52, wrk53, wrk54 de l'objet DECHE
  15. C Entrees : IFOURB = -3 EN DEFORMATIONS PLANES GENERALISEES
  16. C -2 EN CONTRAINTES PLANES
  17. C -1 EN DEFORMATIONS PLANES
  18. C 0 EN AXISYMETRIE
  19. C 1 EN SERIE DE FOURIER
  20. C 2 EN TRIDIM
  21. C IB = NUMERO DE L'ELEMENT COURANT
  22. C IGAU = NUMERO DU POINT COURANT
  23. C NBPGAU = NBRE DE POINTS DE GAUSS
  24. C Variables de travail : segments wcreep, iecou, xecou
  25. C
  26. C-----------------------------------------------------------------------
  27. -INC CCOPTIO
  28. -INC DECHE
  29. -INC CCREEL
  30. C
  31. C Segment de travail pour les lois 'VISCO_EXTERNE'
  32. C
  33. SEGMENT WCREEP
  34. C Entrees/sorties constantes de la routine CREEP
  35. REAL*8 SERD
  36. CHARACTER*16 CMNAMC
  37. INTEGER LEXIMP, NSTTVC, LAYERC, KSPTC
  38. C Entrees/sorties de la routine CREEP pouvant varier
  39. REAL*8 STV(NSTV), STV1(NSTV), STVP1(NSTV),
  40. & STVP2(NSTV), STV12(NSTV), STVP3(NSTV),
  41. & STVP4(NSTV), STV13(NSTV), STVF(NSTV),
  42. & TMP12, TMP, TMP32,
  43. & DTMP12, DTMP,
  44. & PRD12(NPRD), PRD(NPRD), PRD32(NPRD),
  45. & DPRD12(NPRD), DPRD(NPRD)
  46. INTEGER KSTEPC
  47. C Autres indicateurs et variables de travail
  48. LOGICAL LTMP, LPRD, LSTV
  49. INTEGER IVIEX, NPAREC
  50. REAL*8 dTMPdt, dPRDdt(NPRD)
  51. ENDSEGMENT
  52. C
  53. SEGMENT IECOU
  54. INTEGER NYOG ,NYNU ,NYALFA,NYSMAX,NYN ,NYM ,NYKK ,
  55. & NYALF1,NYBET1,NYR ,NYA ,NYRHO ,NSIGY ,NNKX ,NYKX ,icow16,
  56. & icow17,icow18,icow19,icow20,icow21,icow22,icow23,icow24,
  57. & icow25,icow26,icow27,icow28,icow29,icow30,ICARA,
  58. & icow32,icow33,NSTRS1,MFR1, NBGMAT,NELMAT,MSOUPA,
  59. & icow39,icow40,icow41,icow42,icow43,icow44
  60. INTEGER icow45,icow46,icow47,icow48,icow49,icow50,
  61. . icow51,icow52,icow53,icow54,icow55,icow56
  62. . icow57,icow58
  63. ENDSEGMENT
  64. C
  65. SEGMENT XECOU
  66. REAL*8 xcow1, xcow2,xcow3,DTT, DT, TREF, xcow7
  67. ENDSEGMENT
  68. C
  69. C Variables locales
  70. C
  71. C Tableaux de travail
  72. C
  73. REAL*8 SIG(8),SIG1(8),SIG12(8),SIG13(8),
  74. & DSPT(8),XX(8),
  75. & EVP1(8),EVP2(8),EVP3(8),EVP4(8),
  76. & EPSV(8),EPSV1(8),EPSV12(8),EPSV13(8),
  77. & CRIGI(12),
  78. & DECRA(5),DESWA(5),TIME12(2),TIME(2),TIME32(2)
  79. C
  80. C Variables scalaires
  81. C
  82. LOGICAL DTLIBR
  83. C
  84. C------------------- Debut du code executable --------------------------
  85. C
  86. C=======================================================================
  87. C 1 - INITIALISATIONS
  88. C Parametres de pilotage des iterations internes
  89. C=======================================================================
  90. C
  91. PRELOC=1.d-8
  92. KERRE = 0
  93. C* -> Les tests de "Restriction" sont maintenant effectues lors de la
  94. C* ceation du modele (cf MODELI).
  95. C*C
  96. C*C Restriction pour l'instant a 'VISCO_EXTERNE' 'GENERAL'
  97. C*C
  98. C* IF ( IVIEX.NE.1 ) THEN
  99. C* KERRE = 958
  100. C* RETURN
  101. C* ENDIF
  102. C*C
  103. C*C Restriction aux elements massifs avec option de calcul 3D
  104. C*C
  105. C* IF ( MFR1.NE.1.OR.IFOURB.NE.2 ) THEN
  106. C* KERRE = 950
  107. C* RETURN
  108. C* ENDIF
  109. C*C
  110. C* Normalement ce test sur DT < 0 devrait etre fait avant (COMVAL ?)
  111. IF (DT.LT.0.0) THEN
  112. KERRE = 414
  113. RETURN
  114. ENDIF
  115. IF (DT.EQ.0.0) DT = 1.e-20
  116. C
  117. DTLIBR =.TRUE.
  118. C
  119. DTLEFT = DT
  120. BORNE = 2.0
  121. RMAX = 1.3
  122. RMIN = 0.7
  123. DIV = 7.0
  124. FAC = 3.0
  125. C
  126. XMAX = XMAT(1)*1.D-3
  127. C
  128. C=======================================================================
  129. C 2 - Prediction elastique de l'increment de contraintes
  130. C=======================================================================
  131. C
  132. CALL CALSIG(DEPST,DDAUX,NSTRS1,CMATE,VALMAT,VALCAR,N2EL,
  133. & N2PTEL,MFR1,IFOURB,IB,IGAU,EPAIST,NBPGAU,MELE,
  134. & NPINT,NBGMAT,NELMAT,SECT,LHOOK,TXR,XLOC,XGLOB,
  135. & D1HOOK,ROTHOO,DDHOMU,CRIGI,DSIGT,IRTD)
  136. C
  137. IF (IRTD.NE.1) THEN
  138. KERRE = 714
  139. RETURN
  140. ENDIF
  141. C
  142. C=======================================================================
  143. C 3 - Pre-traitements avant iterations en sous-increments
  144. C=======================================================================
  145. C
  146. C.....Deformations inelastiques au debut du pas :
  147. C Passage gamma -> epsilon pour les termes extradiagonaux
  148. C
  149. C ATTENTION : adaptations si extension a d'autres formulations EF
  150. C ou a d'autres options de calcul
  151. DO 30 I=4,NSTRS1
  152. EPIN0(I)=0.5D0*EPIN0(I)
  153. 30 CONTINUE
  154. C
  155. C.....Calcul des derivees temporelles de la temperature et des
  156. C parametres externes
  157. C Ces parametres de chargement sont supposes varier lineairement
  158. C au cours du pas de temps
  159. C
  160. IF ( LTMP ) THEN
  161. dTMPdt = (TUREF(1)-TURE0(1))/DT
  162. ENDIF
  163. IF ( LPRD ) THEN
  164. DO 35 I=1,NPAREC
  165. dPRDdt(I) = (PAREXF(I)-PAREX0(I))/DT
  166. 35 CONTINUE
  167. ENDIF
  168. C
  169. C=======================================================================
  170. C 4 - INITIALISATIONS AVANT ITERATIONS EN SOUS-INCREMENTS
  171. C=======================================================================
  172. C
  173. ITERO = 0
  174. 6543 CONTINUE
  175. C
  176. ITERO = 1 + ITERO
  177. IF ( ITERO.NE.1) THEN
  178. DTLIBR = .TRUE.
  179. preloc = preloc * 7.D0
  180. IF (ITERO.GT.3) THEN
  181. KERRE = 268
  182. RETURN
  183. ENDIF
  184. ENDIF
  185. C
  186. DTLEFT = DT
  187. TAU = DTLEFT
  188. TAU12 = TAU*0.5D0
  189. C
  190. TIME12(1) = 0.5D0*DT
  191. TIME12(2) = temp0+TIME12(1)
  192. TIME(1)= DT
  193. TIME(2)= tempf
  194. TIME32(1) = 1.5D0*DT
  195. TIME32(2) = temp0+TIME32(1)
  196. C
  197. IF ( LTMP ) THEN
  198. DTMP = TUREF(1)-TURE0(1)
  199. DTMP12 = 0.5D0*DTMP
  200. TMP12 = TURE0(1)+DTMP12
  201. TMP = TUREF(1)
  202. TMP32 = TUREF(1)+DTMP12
  203. ENDIF
  204. IF ( LPRD ) THEN
  205. DO 36 I=1,NPAREC
  206. DPRD(I) = PAREXF(I)-PAREX0(I)
  207. DPRD12(I) = 0.5D0*DPRD(I)
  208. PRD12(I) = PAREX0(I)+DPRD12(I)
  209. PRD(I) = PAREXF(I)
  210. PRD32(I) = PAREXF(I)+DPRD12(I)
  211. 36 CONTINUE
  212. ENDIF
  213. C
  214. ASIG = SQRT(PROCON(SIG0,SIG0,NSTRS1))
  215. ERRABS = preloc*ASIG
  216. IF (XMAX.GT.ASIG) ERRABS = preloc*XMAX
  217. C
  218. DO 40 I=1,NSTRS1
  219. SIG(I) = SIG0(I)
  220. EPSV(I) = EPIN0(I)
  221. DSPT(I) = DSIGT(I)/DT
  222. 40 CONTINUE
  223. C
  224. EC0 = VAR0(1)
  225. ESW0 = VAR0(2)
  226. P = VAR0(3)
  227. QTLD = VAR0(4)
  228. IF ( LSTV ) THEN
  229. DO 50 I=1,NSTTVC
  230. STV(I)=VAR0(4+I)
  231. 50 CONTINUE
  232. ENDIF
  233. C
  234. C=======================================================================
  235. C 5 - ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0
  236. C=======================================================================
  237. C
  238. NSSINC = 0
  239. NITERA = 0
  240. 60 CONTINUE
  241. C
  242. NSSINC = NSSINC + 1
  243. IF (NSSINC.GT.MSOUPA) THEN
  244. DTLIBR=.FALSE.
  245. GOTO 6543
  246. ENDIF
  247. C
  248. C Evaluation initiale des vitesses de deformation inelastique
  249. C sur la base du dernier sous-increment converge
  250. LEND = 0
  251. CALL CREEP(DECRA,DESWA,STV,serd,EC0,ESW0,P,QTLD,
  252. & TMP,DTMP,PRD,DPRD,TIME,TAU,
  253. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  254. & layerc,ksptc,KSTEPC,NSSINC)
  255. IF (KSTEPC.NE.1) RETURN
  256. CALL INCREE(TAU,SIG,P,QTLD,DECRA,DESWA,
  257. & EVP1,EC0P1,ESW0P1,
  258. & NSTRS1,IVIEX,MFR1,IFOURB)
  259. C
  260. C ---------------------------------------------------------------
  261. C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT
  262. C
  263. NITERA = 0
  264. 70 CONTINUE
  265. C
  266. NITERA = NITERA + 1
  267. C
  268. C ____________________________________________________________
  269. C Premiere evaluation de l'etat a t+TAU12
  270. CALL AVCREE(TAU12,SIG,EPSV,EC0,ESW0,
  271. & SIG1,EPSV1,EC01,ESW01,P1,QTLD1,
  272. & DSPT,EVP1,EC0P1,ESW0P1,XMAT,
  273. & NSTRS1,IVIEX,MFR1,IFOURB)
  274. C MAJ des variables internes supplementaires le cas echeant
  275. IF ( LSTV ) THEN
  276. LEND = 1
  277. CALL CREEP(DECRA,DESWA,STV1,serd,EC0,ESW0,P1,QTLD1,
  278. & TMP12,DTMP12,PRD12,DPRD12,TIME12,TAU12,
  279. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  280. & layerc,ksptc,KSTEPC,NSSINC)
  281. IF (KSTEPC.NE.1) RETURN
  282. ENDIF
  283. C
  284. C ____________________________________________________________
  285. C Reevaluation des vitesses de deformation inelastique sur la
  286. C base de l'etat a t+TAU12 calcule precedemment, puis moyenne
  287. LEND = 0
  288. CALL CREEP(DECRA,DESWA,STV1,serd,EC01,ESW01,P1,QTLD1,
  289. & TMP32,DTMP,PRD32,DPRD,TIME32,TAU,
  290. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  291. & layerc,ksptc,KSTEPC,NSSINC)
  292. IF (KSTEPC.NE.1) RETURN
  293. CALL INCREE(TAU,SIG1,P1,QTLD1,DECRA,DESWA,
  294. & EVP2,EC0P2,ESW0P2,
  295. & NSTRS1,IVIEX,MFR1,IFOURB)
  296. C
  297. DO 701 I=1,NSTRS1
  298. EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I))
  299. 701 CONTINUE
  300. EC0P2 = 0.5D0*(EC0P1+EC0P2)
  301. ESW0P2 = 0.5D0*(ESW0P1+ESW0P2)
  302. C
  303. C ____________________________________________________________
  304. C Reevaluation de l'etat a t+TAU12
  305. CALL AVCREE(TAU12,SIG,EPSV,EC0,ESW0,
  306. & SIG12,EPSV12,EC012,ESW012,P12,QTLD12,
  307. & DSPT,EVP2,EC0P2,ESW0P2,XMAT,
  308. & NSTRS1,IVIEX,MFR1,IFOURB)
  309. C MAJ des variables internes supplementaires le cas echeant
  310. IF ( LSTV ) THEN
  311. LEND = 1
  312. CALL CREEP(DECRA,DESWA,STV12,serd,EC0,ESW0,P12,QTLD12,
  313. & TMP12,DTMP12,PRD12,DPRD12,TIME12,TAU12,
  314. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  315. & layerc,ksptc,KSTEPC,NSSINC)
  316. IF (KSTEPC.NE.1) RETURN
  317. ENDIF
  318. C
  319. C ____________________________________________________________
  320. C Reevaluation des vitesses de deformation inelastique sur la
  321. C base de l'etat a t+TAU12 calcule precedemment
  322. LEND = 0
  323. CALL CREEP(DECRA,DESWA,STV12,serd,EC012,ESW012,P12,QTLD12,
  324. & TMP,DTMP12,PRD,DPRD12,TIME,TAU12,
  325. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  326. & layerc,ksptc,KSTEPC,NSSINC)
  327. IF (KSTEPC.NE.1) RETURN
  328. CALL INCREE(TAU12,SIG12,P12,QTLD12,DECRA,DESWA,
  329. & EVP3,EC0P3,ESW0P3,
  330. & NSTRS1,IVIEX,MFR1,IFOURB)
  331. C
  332. C ____________________________________________________________
  333. C Premiere evaluation de l'etat a t+TAU
  334. CALL AVCREE(TAU12,SIG12,EPSV12,EC012,ESW012,
  335. & SIG13,EPSV13,EC013,ESW013,P13,QTLD13,
  336. & DSPT,EVP3,EC0P3,ESW0P3,XMAT,
  337. & NSTRS1,IVIEX,MFR1,IFOURB)
  338. C MAJ des variables internes supplementaires le cas echeant
  339. IF ( LSTV ) THEN
  340. LEND = 1
  341. CALL CREEP(DECRA,DESWA,STV13,serd,EC012,ESW012,P13,QTLD13,
  342. & TMP,DTMP12,PRD,DPRD12,TIME,TAU12,
  343. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  344. & layerc,ksptc,KSTEPC,NSSINC)
  345. IF (KSTEPC.NE.1) RETURN
  346. ENDIF
  347. C
  348. C ____________________________________________________________
  349. C Reevaluation des vitesses de deformation inelastique sur la
  350. C base de l'etat a t+TAU calcule precedemment, puis moyenne
  351. LEND = 0
  352. CALL CREEP(DECRA,DESWA,STV13,serd,EC013,ESW013,P13,QTLD13,
  353. & TMP32,DTMP12,PRD32,DPRD12,TIME32,TAU12,
  354. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  355. & layerc,ksptc,KSTEPC,NSSINC)
  356. IF (KSTEPC.NE.1) RETURN
  357. CALL INCREE(TAU12,SIG13,P13,QTLD13,DECRA,DESWA,
  358. & EVP4,EC0P4,ESW0P4,
  359. & NSTRS1,IVIEX,MFR1,IFOURB)
  360. C
  361. DO 711 I=1,NSTRS1
  362. EVP4(I) = 0.5D0*(EVP3(I)+EVP4(I))
  363. 711 CONTINUE
  364. EC0P4 = 0.5D0*(EC0P3+EC0P4)
  365. ESW0P4 = 0.5D0*(ESW0P3+ESW0P4)
  366. C
  367. C ____________________________________________________________
  368. C Reevaluation de l'etat a t+TAU
  369. CALL AVCREE(TAU12,SIG12,EPSV12,EC012,ESW012,
  370. & SIGF,EPINF,EC0F,ESW0F,PF,QTLDF,
  371. & DSPT,EVP4,EC0P4,ESW0P4,XMAT,
  372. & NSTRS1,IVIEX,MFR1,IFOURB)
  373. C MAJ des variables internes supplementaires le cas echeant
  374. IF ( LSTV ) THEN
  375. LEND = 1
  376. CALL CREEP(DECRA,DESWA,STVF,serd,EC012,ESW012,PF,QTLDF,
  377. & TMP,DTMP12,PRD,DPRD12,TIME,TAU12,
  378. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  379. & layerc,ksptc,KSTEPC,NSSINC)
  380. IF (KSTEPC.NE.1) RETURN
  381. ENDIF
  382. C
  383. C ____________________________________________________________
  384. C Reevaluation des vitesses de deformation inelastique sur la
  385. C base de l'etat a t+TAU calcule precedemment, puis moyenne
  386. LEND = 0
  387. CALL CREEP(DECRA,DESWA,STVF,serd,EC0F,ESW0F,PF,QTLDF,
  388. & TMP32,DTMP12,PRD32,DPRD12,TIME32,TAU12,
  389. & cmnamc,leximp,LEND,coorga,nsttvc,ib,igau,
  390. & layerc,ksptc,KSTEPC,NSSINC)
  391. IF (KSTEPC.NE.1) RETURN
  392. CALL INCREE(TAU12,SIGF,PF,QTLDF,DECRA,DESWA,
  393. & EVP4,EC0P4,ESW0P4,
  394. & NSTRS1,IVIEX,MFR1,IFOURB)
  395. C
  396. DO 721 I=1,NSTRS1
  397. EVP2(I) = (EVP1(I)+EVP4(I))/6.D0+EVP3(I)*2.D0/3.D0
  398. 721 CONTINUE
  399. EC0P2 = (EC0P1+EC0P4)/6.D0+EC0P3*2.D0/3.D0
  400. ESW0P2 = (ESW0P1+ESW0P4)/6.D0+ESW0P3*2.D0/3.D0
  401. C
  402. C ____________________________________________________________
  403. C Derniere evaluation de l'etat a t+TAU pour test convergence
  404. CALL AVCREE(TAU,SIG,EPSV,EC0,ESW0,
  405. & SIG1,EPSV1,EC01,ESW01,P1,QTLD1,
  406. & DSPT,EVP2,EC0P2,ESW0P2,XMAT,
  407. & NSTRS1,IVIEX,MFR1,IFOURB)
  408. C Pas de MAJ des variables internes supplementaires (inutile)
  409. C
  410. C ____________________________________________________________
  411. C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE
  412. C
  413. DO 730 I=1,NSTRS1
  414. XX(I) = SIGF(I)-SIG1(I)
  415. 730 CONTINUE
  416. RA = SQRT(PROCON(XX,XX,NSTRS1))/(ERRABS)
  417. SQRA = SQRT(RA)
  418. C
  419. C ____________________________________________________________
  420. C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU
  421. C DIV =7 BORNE = 2
  422. C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI
  423. C SI 2<RA<7*7 ON VISE RA = 1 ET NOUVEL ESSAI
  424. C
  425. IF ( DTLIBR ) THEN
  426. C
  427. C Petite ruse pour dejouer l'optimisation
  428. RA1=RA*1.D0
  429. C
  430. IF ((RA.GT.DIV*DIV).OR.(RA.NE.RA1)) THEN
  431. C
  432. TAULAS = TAU
  433. TAU = TAU/DIV
  434. TAU12 = TAU*0.5D0
  435. C
  436. DTAU = TAULAS - TAU
  437. TIME12(1) = TIME12(1) - 0.5D0*DTAU
  438. TIME12(2) = TIME12(2) - 0.5D0*DTAU
  439. TIME(1) = TIME(1) - DTAU
  440. TIME(2) = TIME(2) - DTAU
  441. TIME32(1) = TIME32(1) - 1.5D0*DTAU
  442. TIME32(2) = TIME32(2) - 1.5D0*DTAU
  443. C
  444. IF ( LTMP ) THEN
  445. DTMP = dTMPdt * TAU
  446. DTMP12 = dTMPdt * TAU12
  447. TMP12 = TMP12 - 0.5D0*DTAU*dTMPdt
  448. TMP = TMP - DTAU*dTMPdt
  449. TMP32 = TMP32 - 1.5D0*DTAU*dTMPdt
  450. ENDIF
  451. IF ( LPRD ) THEN
  452. DO 740 I=1,NPAREC
  453. DPRD(I) = dPRDdt(I) * TAU
  454. DPRD12(I) = dPRDdt(I) * TAU12
  455. PRD12(I) = PRD12(I) - 0.5D0*DTAU*dPRDdt(I)
  456. PRD(I) = PRD(I) - DTAU*dPRDdt(I)
  457. PRD32(I) = PRD32(I) - 1.5D0*DTAU*dPRDdt(I)
  458. 740 CONTINUE
  459. ENDIF
  460. C
  461. GOTO 70
  462. C
  463. ELSE IF ( RA.GT.(BORNE)) THEN
  464. C
  465. TAULAS = TAU
  466. TAU = TAU/SQRA
  467. TAU12 = TAU*0.5D0
  468. C
  469. DTAU = TAULAS - TAU
  470. TIME12(1) = TIME12(1) - 0.5D0*DTAU
  471. TIME12(2) = TIME12(2) - 0.5D0*DTAU
  472. TIME(1) = TIME(1) - DTAU
  473. TIME(2) = TIME(2) - DTAU
  474. TIME32(1) = TIME32(1) - 1.5D0*DTAU
  475. TIME32(2) = TIME32(2) - 1.5D0*DTAU
  476. C
  477. IF ( LTMP ) THEN
  478. DTMP = dTMPdt * TAU
  479. DTMP12 = dTMPdt * TAU12
  480. TMP12 = TMP12 - 0.5D0*DTAU*dTMPdt
  481. TMP = TMP - DTAU*dTMPdt
  482. TMP32 = TMP32 - 1.5D0*DTAU*dTMPdt
  483. ENDIF
  484. IF ( LPRD ) THEN
  485. DO 750 I=1,NPAREC
  486. DPRD(I) = dPRDdt(I) * TAU
  487. DPRD12(I) = dPRDdt(I) * TAU12
  488. PRD12(I) = PRD12(I) - 0.5D0*DTAU*dPRDdt(I)
  489. PRD(I) = PRD(I) - DTAU*dPRDdt(I)
  490. PRD32(I) = PRD32(I) - 1.5D0*DTAU*dPRDdt(I)
  491. 750 CONTINUE
  492. ENDIF
  493. C
  494. GOTO 70
  495. C
  496. ENDIF
  497. ENDIF
  498. C ____________________________________________________________
  499. C
  500. C FIN D'ITERATIONS SUR TAU OPTIMAL / MISE A JOUR DES VARIABLES
  501. C Ici RA < BORNE
  502. C On avance en temps
  503. C
  504. DO 80 I=1,NSTRS1
  505. SIG(I) = SIGF(I)
  506. EPSV(I) = EPINF(I)
  507. 80 CONTINUE
  508. C
  509. EC0 = EC0F
  510. ESW0 = ESW0F
  511. P = PF
  512. QTLD = QTLDF
  513. IF ( LSTV ) THEN
  514. DO 90 I=1,NSTTVC
  515. STV(I) = STVF(I)
  516. 90 CONTINUE
  517. ENDIF
  518. C ---------------------------------------------------------------
  519. C
  520. C TEST DE FIN DES ITERATIONS EN SSINCREMENTS / MISE A JOUR DE TAU
  521. C * si SQRA<1/3 TAU = TAU*3
  522. C * si 1/3<SQRA<RMIN on vise RA = 1
  523. C * si RMIN<SQRA<RMAX TAU inchange
  524. C * si SQRA>RMAX on vise RA = 1
  525. C Fin des boucles en ss increments si tau = DTLEFT
  526. C
  527. IF ( TAU.LT.DTLEFT ) THEN
  528. DTLEFT = DTLEFT - TAU
  529. IF ( FAC*SQRA.LT.1.D0) THEN
  530. TAU=TAU*FAC
  531. ELSE IF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN
  532. TAU=TAU/SQRA
  533. ENDIF
  534. IF (TAU.GT.DTLEFT) TAU = DTLEFT
  535. TAU12 = TAU*0.5D0
  536. TIME12(1) = TIME(1) + TAU12
  537. TIME12(2) = TIME(2) + TAU12
  538. TIME32(1) = TIME(1) + 1.5D0*TAU
  539. TIME32(2) = TIME(2) + 1.5D0*TAU
  540. TIME(1) = TIME(1) + TAU
  541. TIME(2) = TIME(2) + TAU
  542. IF ( LTMP ) THEN
  543. DTMP = dTMPdt * TAU
  544. DTMP12 = dTMPdt * TAU12
  545. TMP12 = TMP + DTMP12
  546. TMP32 = TMP + 1.5D0*DTMP
  547. TMP = TMP + DTMP
  548. ENDIF
  549. IF ( LPRD ) THEN
  550. DO 100 I=1,NPAREC
  551. DPRD(I) = dPRDdt(I) * TAU
  552. DPRD12(I) = dPRDdt(I) * TAU12
  553. PRD12(I) = PRD(I) + DPRD12(I)
  554. PRD32(I) = PRD(I) + 1.5D0*DPRD(I)
  555. PRD(I) = PRD(I) + DPRD(I)
  556. 100 CONTINUE
  557. ENDIF
  558. GOTO 60
  559. ENDIF
  560. C
  561. IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN
  562. WRITE ( IOIMP,* ) ' PROBLEME TAU > DTLEFT '
  563. KERRE = 223
  564. RETURN
  565. ENDIF
  566. C
  567. C=======================================================================
  568. C 6 - Post-traitements pour stockage des resultats
  569. C=======================================================================
  570. C
  571. C.....Deformations inelastiques debut/fin de pas :
  572. C Passage epsilon -> gamma pour les termes extradiagonaux
  573. C ATTENTION : adaptations si extension a d'autres formulations EF
  574. C ou a d'autres options de calcul
  575. DO 110 I=1,NSTRS1
  576. A=1.D0
  577. IF (I.GT.3) A=2.D0
  578. EPIN0(I)=EPIN0(I)*A
  579. EPINF(I)=EPINF(I)*A
  580. 110 CONTINUE
  581. C
  582. C.....Variables internes a la fin du pas
  583. C
  584. VARF(1) = EC0F
  585. VARF(2) = ESW0F
  586. VARF(3) = PF
  587. VARF(4) = QTLDF
  588. IF ( LSTV ) THEN
  589. DO 120 I=1,NSTTVC
  590. VARF(4+I)=STVF(I)
  591. 120 CONTINUE
  592. ENDIF
  593. C
  594. RETURN
  595. END
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  

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