Télécharger ccerac.eso

Retour à la liste

Numérotation des lignes :

ccerac
  1. C CCERAC SOURCE OF166741 25/11/04 21:15:08 12349
  2.  
  3. SUBROUTINE CCERAC(wrk52,wrk53,wrk54,NVARI,
  4. 1 NSSINC,INV,IFOURL,IB,IGAU,NBPGAU,iecou,xecou)
  5.  
  6. C---------------------------------------------------------------------
  7. C Objet: Calculer au cours d'un pas de temps DT, l'evolution des
  8. C variables internes a l'aide d'un schema Runge-Kutta 1.2
  9. C ---------------------------------------------------------------------
  10. C MFR1 <- MFR, XCARB <- XCAR, NSTRS1 <- NSTRS,
  11. C
  12. C---------------------------------------------------------------------
  13. C Entree: INPLAS type de materiau
  14. C MFR1 indice de la formulation mecanique(seulement massif ou coque
  15. C pour les materiaux endommageables)
  16. C DEPST(NSTRS1) increment des deformations totales
  17. C SIG0(NSTRS1) contraintes initiales
  18. C EPIN0(NSTRS1) deformations viscoplastiques initiales
  19. C VAR0(NVARI) variables internes initiales
  20. C NVARI nombre de variables internes
  21. C SIGY(NSIGY) courbe de la limite elastique en fonction de T°C
  22. C XMAT(NCOMAT) materiau
  23. C XCARB(ICARA) caracteristiques geometriques
  24. C YSMAX(NYSMAX) intervient ds. le test de convergence des iter.
  25. C PRECIS precision relative sur SIGMA
  26. C MSOUPA nombre maximal de sous pas autorises
  27. C JECHER = 0 avancer
  28. C = 1 rechercher sortie avec DTT
  29. C IFOURL = -2 EN CONTR.PLANES
  30. C -1 EN DEFORM. PLANES
  31. C 0 EN AXISYMETRIE
  32. C 1 EN SERIE DE FOURIER
  33. C 2 EN TRIDIM
  34. C CMATE = NOM DU MATERIAU
  35. C VALMAT= TABLEAU DE CARACTERISTIQUES DU MATERIAU
  36. C VALCAR= TABLEAU DE CARACTERISTIQUES GEOMETRIQUES
  37. C N2EL = NBRE D ELEMENTS DANS SEGMENT DE HOOKE
  38. C N2PTEL= NBRE DE POINTS DANS SEGMENT DE HOOKE
  39. C IB = NUMERO DE L ELEMENT COURANT
  40. C IGAU = NUMERO DU POINT COURANT
  41. C EPAIST= EPAISSEUR
  42. C NBPGAU= NBRE DE POINTS DE GAUSS
  43. C MELE = NUMERO DE L ELEMENT FINI
  44. C NPINT = NBRE DE POINTS D INTEGRATION
  45. C SECT = SECTION
  46. C LHOOK = TAILLE DE LA MATRICE DE HOOKE
  47. C DT pas de temps
  48. C ITHHER = 0 pas de chargement thermique et materiau constant
  49. C = 1 chargement thermique et materiau constant
  50. C = 2 chargement thermique et materiau(T)
  51. C-----------------------------------------------------------------------
  52. C
  53. C-----------------------------------------------------------------------
  54. C Sortie: SIGF(NSTRS) contraintes finales
  55. C EPINF(NSTRS) deformations viscoplastiques finales
  56. C VARF(NVARI) variables internes finales
  57. C DTT sous-increment de temps optimal (si JECHER=1)
  58. C NSSINC nombre de sous-increments si JECHER=0
  59. C INV = 1 si inversion
  60. C 0 sinon
  61. C KERRE = 0 si tout OK
  62. C <> 0 si entrees incoherentes
  63. C-----------------------------------------------------------------------
  64. C
  65. IMPLICIT INTEGER(I-N)
  66. IMPLICIT REAL*8(A-H,O-Z)
  67.  
  68. -INC PPARAM
  69. -INC CCOPTIO
  70. -INC DECHE
  71. -INC TECOU
  72.  
  73. DIMENSION SIG(8),EPSV(8),VAR(100)
  74. DIMENSION DSPT(8),XX(8),SIG1(8),EPSV1(8)
  75. DIMENSION VAR1(100),EVP1(8),VARP1(100)
  76. DIMENSION EVP2(8),VARP2(100)
  77. DIMENSION CRIGI(12)
  78. C**** debut ajout Eloi
  79. logical dtlibr
  80. C**** fin ajout Eloi
  81.  
  82. MFRL = iecou.MFR1
  83. NSTRS1 = iecou.NSTRSS
  84. NCOMAT = NMATT
  85. C**** debut ajout Eloi
  86. dtlibr=.TRUE.
  87. C**** fin ajout Eloi
  88. C ==================================================
  89. C RECHERCHE DU NUMERO DE LA VARIABLE INTERNE EGALE A 1
  90. C SI ON A ENDOMMAGEMENT GENERALISE
  91. C
  92. IBID2 = NVARI-1
  93. C*************************************
  94. C On cherche le numero de la propriété du matériau correspondant à ENDG
  95. C
  96. IF (MFRL.EQ.1.AND.IFOMOD.EQ.2) THEN
  97. IBID1 = 20
  98. ELSE
  99. IBID1 = 15
  100. ENDIF
  101. C Test pour savoir si on a dépassé la limite de déformation de fluage
  102. C
  103. IF (VAR0(IBID2).EQ.1.D0) THEN
  104. DO 10 IJ=1,NVARI
  105. VARF(IJ) = VAR0(IJ)
  106. 10 CONTINUE
  107. DO 20 K=1,NSTRS1
  108. EPINF(K) = EPIN0(K)
  109. SIGF(K) = 0.D0
  110. 20 CONTINUE
  111. GOTO 1000
  112. ENDIF
  113. DO 30 I=1,NSTRS1
  114. TOTO = ABS(EPIN0(I))
  115. IF (TOTO.GE.XMAT(IBID1)) THEN
  116. DO 40 K=1,NSTRS1
  117. EPINF(K) = EPIN0(K)
  118. SIGF(K) = 0.D0
  119. 40 CONTINUE
  120. DO 50 IJ=1,(NVARI-1)
  121. VARF(IJ) = VAR0(IJ)
  122. 50 CONTINUE
  123. VARF(IBID2) = 1.D0
  124. GOTO 1000
  125. ENDIF
  126. 30 CONTINUE
  127. C*************************************
  128.  
  129. C =========================================================
  130. KERRE = 0
  131. IF (MFRL.NE.1.AND.MFRL.NE.3.OR.IFOURL.EQ.1) THEN
  132. KERRE = 99
  133. RETURN
  134. ENDIF
  135.  
  136. IF (MFRL.EQ.3) THEN
  137. THICK = XCARB(1)
  138. ALFA = XCARB(2)
  139. ENDIF
  140. BORNE = 2.0
  141. RMAX = 1.3
  142. RMIN = 0.7
  143. DIV = 7.0
  144. FAC = 3.0
  145. C
  146. C CALCUL DES INCREMENTS DE CONTRAINTES ELASTIQUES
  147. C
  148. CALL CALSIG(DEPST,DDAUX,NSTRS1,CMATE,VALMAT,VALCAR,N2EL,N2PTEL,
  149. 1 MFRL,IFOURL,IB,IGAU,EPAIST,NBPGAU,MELE,NPINT,NBGMAT,
  150. 2 NELMAT,SECT,LHOOK,TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,
  151. 3 CRIGI,DSIGT,IRTD)
  152. C PRINT *,'DSIGT =',DSIGT
  153. IF (IRTD.NE.1) THEN
  154. KERRE=69
  155. GOTO 1000
  156. ENDIF
  157.  
  158. IF (MFRL.EQ.3) THEN
  159. DO 60 I=1,NSTRS1/2
  160. SIG0( I) = SIG0( I)/THICK
  161. SIG0(NSTRS1/2+I) = SIG0(NSTRS1/2+I)*6.0D0/THICK/THICK
  162. DSIGT( I) = DSIGT( I)/THICK
  163. DSIGT(NSTRS1/2+I)= DSIGT(NSTRS1/2+I)*6.0D0/THICK/THICK
  164. 60 CONTINUE
  165. IF (IFOURL.EQ.-2) THEN
  166. SIG0 (2) = 0.D0
  167. SIG0 (4) = 0.D0
  168. DSIGT(2) = 0.D0
  169. DSIGT(4) = 0.D0
  170. ENDIF
  171. ENDIF
  172. C
  173. C------------------------------------------
  174. C CONTROLE DE LA COHERENCE DES ENTREES
  175. C Supprimée dans ce cas
  176. C------------------------------------------
  177. IF (DT.LE.0.D0) KERRE = 414
  178. MOTERR(1:8) = ' CONST '
  179. C IF (INCOMAT.NE. 15)KERRE = 146
  180. C IF (IFOURL.EQ.-2.AND.NCOMAT.NE. 9)KERRE = 146
  181. IF (IFOURL.NE.2.AND.IFOURL.NE.-2.AND.IFOURL.NE.0
  182. & .AND.IFOURL.NE.-1) THEN
  183. KERRE = 194
  184. MOTERR(1:8) = 'FLUAGE'
  185. ENDIF
  186. IF (MFRL.EQ.1.AND.IFOMOD.EQ.2) THEN
  187. IBID = 15
  188. ELSE
  189. IBID = 10
  190. ENDIF
  191. XMAX=XMAT(IBID)
  192. *
  193. * TEST SUR XMAX MILL 8/3/91
  194. *
  195. IF (XMAX.EQ.0.D0) THEN
  196. XMAX=XMAT(1)*1.D-3
  197. ENDIF
  198. C
  199. C-----------------------------
  200. IF (KERRE.NE.0) THEN
  201. GOTO 1100
  202. ENDIF
  203. C
  204. C===========================================================
  205. C A PARTIR DE MAINTENANT, LES DEFORMATIONS
  206. C DE CISAILLEMENT NE SONT PLUS DEFINIES PAR DES GAMMA.
  207. C ON DIVISE DONC LES TERMES DE CISAILLEMENT PAR 2.
  208. C SEULES LES FORMULATIONS SUIVANTES SONT ACCEPTEES PAR CERACARO:
  209. C MFRL=1 (MASSIF)
  210. C MFRL=3 (COQUES MINCES)
  211. C
  212. C Cas de la formulation massive
  213. C Les termes de cisaillement apparaissent
  214. C au delà de la troisieme composante
  215. C
  216. IF (MFRL.EQ.1) THEN
  217. DO 70 I=4,NSTRS1
  218. EPIN0(I)=EPIN0(I)*0.5D0
  219. 70 CONTINUE
  220. C
  221. C Cas des coques minces
  222. C Les termes de cisaillement apparaissent
  223. C pour les troisieme et sixieme composantes
  224. C uniquement dans les cas de calculs
  225. C tridimensionnels ou d'analyse de Fourier
  226. C
  227. ELSE IF (MFRL.EQ.3) THEN
  228. IF (IFOURL.EQ.2) THEN
  229. DO 80 I=1,NSTRS1
  230. IF (I.EQ.3) EPIN0(I)=EPIN0(I)*0.5D0
  231. IF (I.EQ.6) EPIN0(I)=EPIN0(I)*0.5D0
  232. 80 CONTINUE
  233. ENDIF
  234. ENDIF
  235. C
  236. C===========================================================
  237. C
  238. C ----------------
  239. C INITIALISATION
  240. C ----------------
  241. C**** debut ajout Eloi
  242. ITERO = 0
  243. 1200 CONTINUE
  244.  
  245. itero = 1 + itero
  246. if (itero.ne.1) THEN
  247. c write(6,*) 'itero ib igau', itero,ib,igau
  248. dtlibr = .true.
  249. precis = precis * 7.
  250. c write(6,*) ' precision modifiée ', precis
  251. if (itero.gt.3) then
  252. **** kerre = 460
  253. kerre = 268
  254. return
  255. endif
  256. endif
  257. C**** fin ajout Eloi
  258. DTLEFT = DT
  259. TAU = DTLEFT
  260. ASIG = SQRT(PROCON(SIG0,SIG0,NSTRS1))
  261. ERRABS = PRECIS*ASIG
  262. IF (XMAX.GT.ASIG) ERRABS = PRECIS*XMAX
  263. DO 90 I=1,NSTRS1
  264. SIG(I) = SIG0(I)
  265. EPSV(I) = EPIN0(I)
  266. DSPT(I) = DSIGT(I)/DT
  267. 90 CONTINUE
  268. C
  269. DO 100 I=1,NVARI
  270. VAR(I)=VAR0(I)
  271. 100 CONTINUE
  272. C
  273. C ---------------------------------------------------------------------
  274. INV = 0
  275. NSSINC = 0
  276. C ---------------------------------------------------------------------
  277. C DEBUT DES ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0
  278. C ---------------------------------------------------------------------
  279. 1400 CONTINUE
  280. NSSINC = NSSINC + 1
  281. IF (NSSINC.GT.MSOUPA) THEN
  282. C**** debut ajout Eloi
  283. DTLIBR=.FALSE.
  284. GOTO 1200
  285. C**** fin ajout Eloi
  286. C*** KERRE = 460
  287. C*** GOTO 1100
  288. ENDIF
  289. C
  290. C---------------------------------------------------------------------
  291. C START OF CALCULATIONS
  292. C_____________________________________________________________________
  293.  
  294. IF(MFRL.NE.3) THEN
  295. CALL INCR11(TAU,SIG,EPSV,VAR,EVP1,VARP1,XMAT,NSTRS1,NVARI,MFRL)
  296. ELSE IF(MFRL.EQ.3) THEN
  297. CALL INCR33(TAU,SIG,EPSV,VAR,XMAT,EVP1,VARP1,ALFA,NSTRS1,NVARI)
  298. ENDIF
  299. C
  300. NITERA = 0
  301.  
  302. C --------------------------------------------------------------------
  303. C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT
  304. C --------------------------------------------------------------------
  305.  
  306. 1300 CONTINUE
  307. NITERA = NITERA + 1
  308. IF (MFRL.NE.3) THEN
  309.  
  310. CALL ADVA11(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1,VARP1,
  311. & XMAT,NSTRS1,NVARI,MFRL)
  312. CALL INCR11(TAU,SIG1,EPSV1,VAR1,EVP2,VARP2,XMAT,NSTRS1,NVARI,
  313. & MFRL)
  314. DO 110 I=1,NSTRS1
  315. EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I))
  316. 110 CONTINUE
  317. CCC Eloi : on peut effectuer la boucle suivante sur
  318. CCC les variables internes propres a Ottosen
  319. CCC qui n'ont pas ete modifiees
  320. DO 120 I=1,NVARI
  321. VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I))
  322. 120 CONTINUE
  323. CALL ADVA11(TAU,SIG,EPSV,VAR,SIGF,EPINF,VARF,DSPT,EVP2,VARP2,
  324. & XMAT,NSTRS1,NVARI,MFRL)
  325. ELSE
  326. C----------------------------------------------------------------------
  327. C CALCULATIONS FOR GENERALISED STRESS/STRAIN FORMULATIONS
  328. C----------------------------------------------------------------------
  329. CALL ADVA22(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1,VARP1,
  330. & XMAT,NSTRS1,NVARI)
  331. CALL INCR33(TAU,SIG1,EPSV1,VAR1,XMAT,EVP2,VARP2,ALFA,NSTRS1,
  332. & NVARI)
  333. DO 140 I=1,NSTRS1,1
  334. EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I))
  335. 140 CONTINUE
  336. CCC Eloi : on peut effectuer la boucle suivante sur
  337. CCC les variables internes propres a Ottosen
  338. CCC qui n'ont pas ete modifiees
  339. DO 150 I=1,NVARI
  340. VARP2(I) = 0.5D0*(VARP1(I)+VARP2(I))
  341. 150 CONTINUE
  342. CALL ADVA22(TAU,SIG,EPSV,VAR,SIGF,EPINF,VARF,DSPT,EVP2,VARP2,
  343. & XMAT,NSTRS1,NVARI)
  344. ENDIF
  345.  
  346. C ---------------------------------------------------------------------
  347. C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE
  348. C ---------------------------------------------------------------------
  349. DO 170 I=1,NSTRS1
  350. XX(I) = SIGF(I)-SIG1(I)
  351. 170 CONTINUE
  352. RA = SQRT(PROCON(XX,XX,NSTRS1))/(ERRABS)
  353. SQRA = SQRT(RA)
  354.  
  355. C ---------------------------------------------------------------------
  356. C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU /OPTION JECHER
  357. C DIV =7 BORNE = 2
  358. C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI
  359. C SI 2<RA<7*7 ON VISE RA = 1 ET NOUVEL ESSAI
  360. C ------------------------------------------------------------------
  361. C**** debut ajout Eloi
  362. IF (dtlibr) Then
  363. C**** fin ajout Eloi
  364. IF (RA.GT.DIV*DIV ) THEN
  365. TAU = TAU/DIV
  366. GOTO 1300
  367. ELSEIF (RA.GT.BORNE) THEN
  368. TAU = TAU/SQRA
  369. GOTO 1300
  370. ENDIF
  371. C**** debut ajout Eloi
  372. endif
  373. C**** fin ajout Eloi
  374.  
  375. C ---------------------------------------------------------------------
  376. C ici ra < borne cas JECHER :
  377. C ---------------------------------------------------------------------
  378. IF (JECHER.EQ.1) THEN
  379. DTT = TAU
  380. NSSINC = NITERA
  381. IF ((NSSINC.EQ.1).AND.(RA.EQ.0.0)) GOTO 1100
  382. IF (NITERA.GE.8) GOTO 1100
  383. IF (FAC*SQRA.LT.1.0) THEN
  384. TAU = TAU*FAC
  385. GOTO 1300
  386. ELSEIF ((SQRA.LT.RMIN).OR.(SQRA.GT.RMAX)) THEN
  387. TAU = TAU/SQRA
  388. GOTO 1300
  389. ENDIF
  390. C ---------------------------------------------------------------------
  391. C ici rmin < sqra < rmax et nitera < 8
  392. C pas de mise @ jour des variables
  393. C ---------------------------------------------------------------------
  394. GOTO 1100
  395. ENDIF
  396. C ----------------------------------------------------------------------
  397. C FIN D'ITERATIONS / MISE A JOUR DES VARIABLES
  398. C ici RA < BORNE
  399. C fin des boucles sur tau optimal
  400. C on avance en temps
  401. C mise @ jour de SIG etc...
  402. C -------------------------------------------------------------------
  403. C --
  404. C -- ajout de ivtest = 1 par chloe
  405. C --
  406. IVTEST = 1
  407. INV = INV + IVTEST
  408. DO 180 I=1,NSTRS1
  409. SIG(I) = SIGF(I)
  410. EPSV(I) = EPINF(I)
  411. 180 CONTINUE
  412. DO 190 I=1,NVARI
  413. VAR(I) = VARF(I)
  414. 190 CONTINUE
  415. C*************************************
  416. C Test pour savoir si on a dépassé la limite de déformation totale
  417. C
  418. DO 200 I =1,NSTRS1
  419. TOTO = ABS(EPINF(I))
  420. IF(TOTO.GE.XMAT(IBID1)) THEN
  421. VARF(IBID2) = 1.D0
  422. DO 210 KI=1,NSTRS1,1
  423. SIGF(KI) = 0.D0
  424. 210 CONTINUE
  425. GOTO 1000
  426. ELSE
  427. VARF(IBID2) = 0.D0
  428. ENDIF
  429. 200 CONTINUE
  430. C*************************************
  431. C
  432. C --------------------------------------------------------------------
  433. C TEST DE FIN SS INCREMENTS / MISE A JOUR DE TAU
  434. C si SQRA<1/3 TAU = TAU*3
  435. C si 1/3<SQRA<RMIN on vise RA = 1
  436. C si RMIN<SQRA<RMAX TAU inchangé
  437. C si SQRA>RMAX on vise RA = 1
  438. C fin des boucles en ss increments si tau = dtleft
  439. C --------------------------------------------------------------------
  440. C
  441. IF (TAU.LT.DTLEFT) THEN
  442. DTLEFT = DTLEFT - TAU
  443. IF (FAC*SQRA.LT.1.D0) THEN
  444. TAU=TAU*FAC
  445. ELSEIF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN
  446. TAU=TAU/SQRA
  447. ENDIF
  448. IF (TAU.GT.DTLEFT) TAU = DTLEFT
  449. GOTO 1400
  450. ENDIF
  451. C
  452. IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN
  453. WRITE ( IOIMP,* ) ' PROBLEME TAU > DTLEFT '
  454. KERRE = 223
  455. ENDIF
  456. C-----------------------------------------------------------------------
  457. 1100 CONTINUE
  458. IF (MFRL.EQ.3) THEN
  459. DO 220 I=1,NSTRS1/2
  460. SIGF( I) =SIGF( I)*THICK
  461. SIGF(NSTRS1/2+I) =SIGF(NSTRS1/2+ I)*THICK*THICK/6.0
  462. * DSIGT( I)=DSIGT( I)*THICK
  463. * DSIGT(NSTRS1/2+I)=DSIGT(NSTRS1/2+I)*THICK*THICK/6.0
  464. 220 CONTINUE
  465. ENDIF
  466.  
  467. C===========================================================
  468. C RETOUR A LA DEFINITION NORMALE DES DEFORMATIONS
  469. C A SAVOIR: LES DEFORMATIONS DE CISAILLEMENT SONT
  470. C DEFINIES PAR DES GAMA.
  471. C SEULES LES FORMULATIONS SUIVANTES SONT ACCEPTEES PAR Ceracaro:
  472. C MFRL=1 (MASSIF)
  473. C MFRL=3 (COQUES MINCES)
  474. C
  475. C Cas de la formulation massive
  476. C Les termes de cisaillement apparaissent
  477. C au delà de la troisieme composante
  478. C
  479. IF (MFRL.EQ.1) THEN
  480. DO 230 I=4,NSTRS1
  481. EPIN0(I)=EPIN0(I)*2.D0
  482. EPINF(I)=EPINF(I)*2.D0
  483. 230 CONTINUE
  484. C
  485. C Cas des coques minces
  486. C Les termes de cisaillement apparaissent
  487. C pour les troisieme et sixieme composantes
  488. C uniquement dans les cas de calculs
  489. C tridimensionnels ou d'analyse de Fourier
  490. C
  491. ELSE IF (MFRL.EQ.3) THEN
  492. IF (IFOURL.EQ.2) THEN
  493. IF (NSTRS1.GE.3) THEN
  494. EPIN0(3)=EPIN0(3)*2.D0
  495. EPINF(3)=EPINF(3)*2.D0
  496. IF (NSTRS1.GE.6) THEN
  497. EPIN0(6)=EPIN0(6)*2.D0
  498. EPINF(6)=EPINF(6)*2.D0
  499. ENDIF
  500. ENDIF
  501. ENDIF
  502. ENDIF
  503. C
  504. C===========================================================
  505. C
  506. 1000 CONTINUE
  507. RETURN
  508. END
  509.  
  510.  
  511.  

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