Télécharger ccreep.eso

Retour à la liste

Numérotation des lignes :

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

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