Télécharger steinb.eso

Retour à la liste

Numérotation des lignes :

steinb
  1. C STEINB SOURCE CHAT 05/01/13 03:25:08 5004
  2. SUBROUTINE STEINB(DEPST,NSTRS,MFR1,IB,IGAU,
  3. 1 DSIGT,NCOMAT,SIG0,VAR0,XMAT,XCAR,NVARI,ICARA,
  4. 2 SIGF,VARF,DEFP,TETA1,TETA2,KERRE)
  5. *
  6. *_________________________________________________________________
  7. *
  8. *
  9. * ENTREES :
  10. * ---------
  11. *
  12. * DEPST = INCREMENT DE DEFORMATIONS TOTALES
  13. * NSTRS = NBRE DE COMPOSANTES DES DEFORMATIONS
  14. * NCOMAT= NBRE DE CARACTERISTIQUES MECANIQUES DU MATERIAU
  15. * MFR1 = NUMERO DE LA FORMULATION
  16. * IB = NUMERO DE L ELEMENT COURANT
  17. * IGAU = NUMERO DU POINT COURANT
  18. * NVARI = NBRE DE VARIABLES INTERNES
  19. * SIG0(NSTRS) = CONTRAINTES AU DEBUT DU PAS D'INTEGRATION
  20. * VAR0(NVARI) = VARIABLES INTERNES AU DEBUT DU PAS DE TEMPS
  21. * XMAT(NCOMAT) = CARACTERISTIQUES MECANIQUES DU MATERIAU
  22. * ICARA = NBRE DE CARACTERISTIQUES GEOMETRIQUES DES ELEMENTS FINIS
  23. * XCARA(ICARA) = CARACTERISTIQUES GEOMETRIQUES DES ELEMENTS FINIS
  24. * TETA1 = TEMPERATURE AU DEBUT DU PAS DE TEMPS
  25. * TETA2 = TEMPERATURE A LA FIN DU PAS DE TEMPS
  26. *
  27. * SORTIE :
  28. * --------
  29. *
  30. * SIGF(NSTRS) = CONTRAINTES FINALES
  31. * VARF(NVARI) = VARIALES INTERNES A LA FIN DU PAS D'INTEGRATION
  32. * DEFP(NSTRS) = INCREMENT DE DEFORMATION PLASTIQUE A LA FIN
  33. * DU PAS D'INTEGRATION
  34. * ============================================================
  35. * ICI IL FAUT PROGRAMMER EN FORTRAN PUR
  36. *=============================================================
  37. *
  38. IMPLICIT INTEGER(I-N)
  39. IMPLICIT REAL*8(A-H,O-Z)
  40. *
  41.  
  42. -INC PPARAM
  43. -INC CCOPTIO
  44. DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),XCAR(*),SIGF(*),
  45. & VARF(*),DEFP(*),DSIGT(*)
  46. DIMENSION RSIG0(6),RDEPS(6),RSIGF(6),RDEFP(6),RDIGT(6)
  47. DIMENSION DEVT(6),ELT(6),SIGT(6),ST(6),DEFT(6)
  48. DIMENSION DIJ(6),CIJ(6),CIJ2(6)
  49. *
  50. * Adaptation de l'option de calcul vers le 3D massif de SIG0 a RSIG0
  51. *====================================================================
  52. *
  53. IF (MFR1 .EQ. 1 .OR. MFR1 .EQ. 31) THEN
  54. *
  55. *---> 1 formulation massive
  56. *---> 2 formulation quasi incompressible
  57. *---> MASSIF 3D
  58. *
  59. IF (NSTRS .EQ. 6) THEN
  60. DO 110 I=1,NSTRS
  61. RSIG0(I)=SIG0(I)
  62. VARF(I+1)=VAR0(I+1)+DEPST(I)
  63. RDEPS(I)=DEPST(I)
  64. 110 CONTINUE
  65. ELSE IF ( NSTRS .EQ. 4 .AND. ((IFOUR .EQ. 0)
  66. & .OR.(IFOUR.EQ.-1).OR.(IFOUR.EQ.-2))) THEN
  67. *
  68. *---> Calcul en mode deformations planes ou axisymetrique
  69. *
  70. DO 115 I=1,NSTRS
  71. RSIG0(I)=SIG0(I)
  72. VARF(I+1)=VAR0(I+1)+DEPST(I)
  73. RDEPS(I)=DEPST(I)
  74. 115 CONTINUE
  75. RSIG0(5)=0.D0
  76. RSIG0(6)=0.D0
  77. VARF(6)=VAR0(6)
  78. VARF(7)=VAR0(7)
  79. RDEPS(5)=0.D0
  80. RDEPS(6)=0.D0
  81. ENDIF
  82. ELSE
  83. KERRE = 99
  84. RETURN
  85. ENDIF
  86. *
  87. * Passage des deformations de cisaillement exprimées
  88. * en GAMA aux déformations de cisaillement exprimées
  89. * en déformations
  90. *
  91. DO 116 I=1,6
  92. A=1.D0
  93. IF (I.GT.3) A=2.D0
  94. RDEPS(I)=RDEPS(I)/A
  95. VAR0(I+1)=VAR0(I+1)/A
  96. VARF(I+1)=VARF(I+1)/A
  97. VAR0(I+8)=VAR0(I+8)/A
  98. VARF(I+8)=VARF(I+8)/A
  99. 116 CONTINUE
  100. *
  101. * Données du materiau
  102. *===========================================================
  103. *
  104. YOUNG=XMAT(1)
  105. XNU=XMAT(2)
  106. Y0=XMAT(5)
  107. BETA=XMAT(6)
  108. Xm=XMAT(7)
  109. EPSI=XMAT(8)
  110. G0=YOUNG/(2.D0*(1.D0+XNU))
  111. Gp1=XMAT(9)
  112. Gt1=XMAT(10)
  113. YMAX=XMAT(11)
  114. TM0=XMAT(12)
  115. XMU0=XMAT(13)
  116. *
  117. * Calculs préliminaires
  118. *===================================
  119. *
  120. *---> Nombre maximal d'itérations
  121. *
  122. NMAX=200
  123. iter00=0
  124. *
  125. *---> Trace de la déformation totale
  126. *
  127. IF (IFOUR.EQ.-2) THEN
  128. VARF(4)=VAR0(11)-(XNU/(1.D0-XNU)
  129. . *(VARF(2)-VAR0(9)+VARF(3)-VAR0(10)))
  130. ENDIF
  131. 98 treps0=VARF(2)+VARF(3)+VARF(4)
  132. *
  133. *---> Calcul de la compression finale ETAnew
  134. *
  135. ETAnew=1.D0/(1.D0+treps0)
  136. *
  137. *---> Temperature de fusion a la fin (TM2)
  138. * du pas de temps
  139. *
  140. TM2=TM0*EXP(2.D0*XMU0*(1.D0-(1.D0/ETAnew)))
  141. TM2=TM2/(ETAnew**(2.D0/3.D0))
  142. *
  143. *
  144. * Calculs des grandeurs élastiques test
  145. *====================================================
  146. *
  147. *---> Déformations
  148. * -élastiques totales test ELT
  149. * -trace des déformations élastiques totales TRELT
  150. * -déviatoires élastiques test DEVT
  151. * -incrément de déformation plastique DEFT
  152. * -déformation plastique équivalente test EPSPT
  153. *
  154. DO 100 I=1,6
  155. ELT(I)=VARF(I+1)-VAR0(8+I)
  156. 100 CONTINUE
  157. * IF (IFOUR.EQ.-2)
  158. * . ELT(3)=-1.D0*XNU*(ELT(1)+ELT(2))/(1.D0-XNU)
  159. TRELT=ELT(1)+ELT(2)+ELT(3)
  160. DO 200 I=1,6
  161. A=0.D0
  162. IF (I.LE.3) A=1.D0
  163. DEVT(I)=ELT(I)-(1.D0*TRELT*A/3.D0)
  164. DEFT(I)=0.D0
  165. 200 CONTINUE
  166. EPSPT=VAR0(1)
  167. *
  168. *---> Coefficient proportionnel entre le module de
  169. * cisaillement et le module de pression hydrostatique
  170. *
  171. E1=2.D0*(1.D0+XNU)/(3.D0*(1.D0-(2.D0*XNU)))
  172. *
  173. *---> Données matériaux Gtest et XKtest
  174. *
  175. pente1=E1*Gp1*TRELT/(ETAnew**(1.D0/3.D0))
  176. Gtest=(G0+Gt1)/(1.D0+pente1)
  177. XKtest=E1*Gtest
  178. *
  179. *---> Si on dépasse la température de fusion,
  180. * le solide devient liquide
  181. * -les caractéritiques matériaux sont constantes
  182. * -G=0, donc le déviateur élastique est nul
  183. * -la limite d'élasticité est constante et nulle donc:
  184. * -la trace de la déformation plastique est nulle
  185. *
  186. IF (TETA2.GT.TM2) THEN
  187. Gtest=0.D0
  188. DEVT(1)=0.D0
  189. DEVT(2)=0.D0
  190. DEVT(3)=0.D0
  191. DEVT(4)=0.D0
  192. DEVT(5)=0.D0
  193. DEVT(6)=0.D0
  194. TREPT=RDEPS(1)+RDEPS(2)+RDEPS(3)
  195. TRELT=TREPT
  196. DEFT(1)=RDEPS(1)-(1.D0*TREPT/3.D0)
  197. DEFT(2)=RDEPS(2)-(1.D0*TREPT/3.D0)
  198. DEFT(3)=RDEPS(3)-(1.D0*TREPT/3.D0)
  199. DEFT(4)=RDEPS(4)
  200. DEFT(5)=RDEPS(5)
  201. DEFT(6)=RDEPS(6)
  202. XKtest=VAR0(8)
  203. DEPS=PROCON(DEFT,DEFT,6)
  204. DEPS=(2.D0*DEPS/3.D0)**.5D0
  205. EPSPT=EPSPT+DEPS
  206. IF (IFOUR.EQ.-2) THEN
  207. KERRE=99
  208. RETURN
  209. ENDIF
  210. ENDIF
  211. *
  212. *---> Contraintes test
  213. *
  214. Ptest=-1.D0*XKtest*TRELT
  215. DO 300 I=1,6
  216. ST(I)=2.D0*Gtest*DEVT(I)
  217. A=0.D0
  218. IF (I.LE.3) A=1.D0
  219. SIGT(I)=ST(I)-(Ptest*A)
  220. 300 CONTINUE
  221. *
  222. *---> Contrainte équivalente test STEST
  223. *
  224. STEST2=(SIGT(1)*SIGT(1))+(SIGT(2)*SIGT(2))
  225. STEST2=STEST2+(SIGT(3)*SIGT(3))
  226. STEST2=STEST2-(SIGT(1)*SIGT(2))-(SIGT(2)*SIGT(3))
  227. STEST2=STEST2-(SIGT(3)*SIGT(1))
  228. STEST3=(SIGT(4)*SIGT(4))+(SIGT(5)*SIGT(5))
  229. STEST3=STEST3+(SIGT(6)*SIGT(6))
  230. STEST2=STEST2+(3.D0*STEST3)
  231. IF (STEST2.LT.0.D0) STEST2=0.D0
  232. STEST=(STEST2)**(0.5D0)
  233. *
  234. *---> Limite d'élasticité test
  235. *
  236. Ytest=Y0*((1.D0+(BETA*(EPSPT+EPSI)))**Xm)
  237. IF (Ytest.GT.YMAX) Ytest=YMAX
  238. Ytest=Ytest*Gtest/G0
  239. IF (Ytest.LE.0.D0) Ytest=0.D0
  240. *
  241. *---> Fonction de charge test PHIT
  242. *
  243. PHIT=STEST-Ytest
  244. IF (TETA2.GT.TM2) PHIT=0.D0
  245. *
  246. *
  247. * Vérification du critère de plasticité
  248. *=========================================================
  249. *
  250. *---> Erreur admise
  251. *
  252. ERR0=1.D-7*ABS(PHIT)
  253. ERR0=MAX(ERR0,1.D-8*Y0)
  254. *
  255. *---> Critère de plasticité
  256. *
  257. PHI0=PHIT
  258. iter0=0
  259. *
  260. 99 IF (PHI0.LE.ERR0) THEN
  261. *
  262. * On est élastique
  263. *=========================================================
  264. *
  265. *--------------------------------------------------------------
  266. * Cas particulier des contraintes planes
  267. *--------------------------------------------------------------
  268. *
  269. IF (IFOUR.EQ.-2) THEN
  270. *
  271. *---> On vérifie qu'on est en contraintes planes
  272. *
  273. iter00=iter00+1
  274. SIG3=ABS(SIGT(3))
  275. IF (SIG3.GT.1.D-2) THEN
  276. ELT(3)=-1.D0*XNU*(ELT(1)+ELT(2))/(1.D0-XNU)
  277. VARF(4)=VAR0(11)+ELT(3)+DEFT(3)
  278. IF (iter00.LE.NMAX)THEN
  279. GOTO 98
  280. ELSE
  281. KERRE=460
  282. ENDIF
  283. ENDIF
  284. ENDIF
  285. *
  286. *-----------------------------------------------------
  287. * Fin du cas particulier des contraintes planes
  288. *-----------------------------------------------------
  289. *
  290. DO 400 I=1,6
  291. RSIGF(I)=SIGT(I)
  292. RDEFP(I)=DEFT(I)
  293. RDIGT(I)=RSIGF(I)-RSIG0(I)
  294. VARF(I+8)=DEFT(I)+VAR0(I+8)
  295. 400 CONTINUE
  296. VARF(1)=EPSPT
  297. VARF(8)=XKtest
  298. DEPST(3)=VARF(4)-VAR0(4)
  299. *
  300. *
  301. ELSE
  302. *
  303. * On plastifie
  304. *=========================================================
  305. *
  306. *---> Coefficient donnant la trace de l'incrément de
  307. * déformation plastique
  308. *
  309. tr0=(1.D0+(BETA*(EPSPT+EPSI)))**Xm
  310. tr0=tr0*Y0*Gp1/(G0*(ETAnew**(1.D0/3.D0)))
  311. *
  312. *---> Coefficient donnant la variation de pression due
  313. * à l'incrément de déformation plastique
  314. *
  315. coeff0=E1*Gp1*TRELT/(ETAnew**(1.D0/3.D0))
  316. coeff0=XKtest*tr0/(1.D0+coeff0)
  317. *
  318. *---> Module d'écrouissage H = - d PHI / d EPSeq
  319. *
  320. H0=Y0*Xm*BETA*((1.D0+(BETA*(EPSPT+EPSI)))**(Xm-1.D0))
  321. H0=H0*Gtest/G0
  322. *
  323. *---> Matrice de la direction d'écoulement DIJ = d PHI / d SIG
  324. *
  325. DO 500 I=1,6
  326. A=0.D0
  327. IF (I.LE.3) A=1.D0
  328. DIJ(I)=3.D0*ST(I)/(STEST*2.D0)
  329. DIJ(I)=DIJ(I)+(A*tr0/3.D0)
  330. 500 CONTINUE
  331. *
  332. *---> Matrice de la variation de contrainte due à l'incrément de
  333. * déformation plastique CIJ = - ( Hooke . d PHI / d SIG)
  334. *
  335. DO 600 I=1,6
  336. A=0.D0
  337. IF (I.LE.3) A=1.D0
  338. CIJ(I)=3.D0*Gtest*ST(I)/STEST
  339. CIJ(I)=CIJ(I)-(2.D0*Gp1*coeff0*DEVT(I)/(ETAnew**(1.D0/3.D0)))
  340. CIJ(I)=CIJ(I)+(coeff0*A)
  341. CIJ2(I)=3.D0*Gp1*coeff0*ST(I)/((ETAnew**(1.D0/3.D0))*STEST)
  342. 600 CONTINUE
  343. *
  344. *---> Calcul du produit DIJ : CIJ
  345. *
  346. PROD0=PROCON(DIJ,CIJ,6)
  347. *
  348. *---> Calcul de DIJ : CIJ2
  349. *
  350. PROD1=PROCON(DIJ,CIJ2,6)
  351. PROD11=ABS(PROD1)
  352. *
  353. *---> Calcul de l'incrément du paramètre plastique
  354. * On résoud une équation du second degré
  355. * Si le terme (PROD0+H0) est positif, dlam0 est
  356. * clairement défini par la solution positive de l'équation
  357. * Sinon, on prend la solution qui est de meme signe que
  358. * PHIT (une solution est nécessairement
  359. * de signe opposé a PHIT). Si aucune solution ne convient
  360. * on prend celle qui a le plus petit module afin d'éviter de
  361. * diverger.
  362. *
  363. delta0=(PROD0+H0)*(PROD0+H0)
  364. delta0=delta0+(4.D0*PHIT*PROD1)
  365. IF ((delta0.LT.0.D0).OR.(PROD11.LT.1.D-15)) THEN
  366. dlam0=PHIT/(PROD0+H0)
  367. ELSE
  368. IF ((PROD0+H0).GE.0.D0) THEN
  369. dlam0=(delta0**(.5D0))/(2.D0*PROD1)
  370. dlam0=dlam0-((PROD0+H0)/(2.D0*PROD1))
  371. ELSE
  372. dlam0=(delta0**(.5D0))/(2.D0*PROD1)
  373. dlam0=dlam0-((PROD0+H0)/(2.D0*PROD1))
  374. IF ((dlam0*PHIT).LE.0.D0) THEN
  375. dlam1=-1.D0*(delta0**(.5D0))/(2.D0*PROD1)
  376. dlam1=dlam1-((PROD0+H0)/(2.D0*PROD1))
  377. IF (ABS(dlam1).LT.ABS(dlam0)) dlam0=dlam1
  378. ENDIF
  379. ENDIF
  380. ENDIF
  381. *
  382. *
  383. * Mise à jour des grandeurs après écoulement plastique
  384. *============================================================
  385. *
  386. *---> Déformation plastique équivalente
  387. *
  388. EPSPT=EPSPT+dlam0
  389. *
  390. *---> Pression mise à jour
  391. *
  392. Ptest=Ptest+(coeff0*dlam0)
  393. *
  394. *---> Contraintes
  395. *
  396. DO 800 I=1,6
  397. A=0.D0
  398. IF (I.LE.3) A=1.D0
  399. SIGT(I)=SIGT(I)-(CIJ(I)*dlam0)-(CIJ2(I)*dlam0*dlam0)
  400. ST(I)=SIGT(I)+(Ptest*A)
  401. 800 CONTINUE
  402. *
  403. *---> Contrainte équivalente mise à jour STEST
  404. *
  405. STEST2=(SIGT(1)*SIGT(1))+(SIGT(2)*SIGT(2))
  406. STEST2=STEST2+(SIGT(3)*SIGT(3))
  407. STEST2=STEST2-(SIGT(1)*SIGT(2))-(SIGT(2)*SIGT(3))
  408. STEST2=STEST2-(SIGT(3)*SIGT(1))
  409. STEST3=(SIGT(4)*SIGT(4))+(SIGT(5)*SIGT(5))
  410. STEST3=STEST3+(SIGT(6)*SIGT(6))
  411. STEST2=STEST2+(3.D0*STEST3)
  412. IF (STEST2.LE.0.D0) STEST2=0.D0
  413. STEST=(STEST2)**(0.5D0)
  414. *
  415. *---> Calcul des données matériaux mises à jour
  416. *
  417. Gtest=G0+(Gp1*Ptest/(ETAnew**(1.D0/3.D0)))+Gt1
  418. XKtest=E1*Gtest
  419. *
  420. *
  421. * Mise à jour des déformations après écoulement plastique
  422. *============================================================
  423. *
  424. *---> Trace des déformations élastiques mises à jour
  425. *
  426. TRELT=-1.D0*Ptest/XKtest
  427. *
  428. *---> Déviateur des déformations élastiques
  429. *
  430. DO 900 I=1,6
  431. A=0.D0
  432. IF (A.LE.1) A=1.D0
  433. DEVT(I)=ST(I)/(2.D0*Gtest)
  434. IF (IFOUR.EQ.-2) ELT(I)=DEVT(I)+(TRELT*A/3.D0)
  435. 900 CONTINUE
  436. *
  437. *---> Incrément de déformation plastique au cours du pas
  438. *
  439. DO 700 I=1,6
  440. A=0.D0
  441. IF (I.LE.3) A=1.D0
  442. DEFT(I)=VARF(I+1)-VAR0(I+8)
  443. DEFT(I)=DEFT(I)-DEVT(I)-(1.D0*TRELT*A/3.D0)
  444. 700 CONTINUE
  445. *
  446. *---> limite d'élasticité mise à jour
  447. *
  448. Ytest=Y0*((1.D0+(BETA*(EPSPT+EPSI)))**Xm)
  449. IF (Ytest.GT.YMAX) Ytest=YMAX
  450. Ytest=Ytest*Gtest/G0
  451. *
  452. *---> Nouvelle fonction de charge
  453. *
  454. PHIT=STEST-Ytest
  455. PHI0=ABS(PHIT)
  456. *
  457. *---> Test de convergence ou itération suivante
  458. *
  459. iter0=iter0+1
  460. IF (iter0.LT.NMAX) THEN
  461. GOTO 99
  462. ELSE
  463. KERRE=460
  464. ENDIF
  465. *
  466. ENDIF
  467. *
  468. *
  469. * Passage des deformations de cisaillement exprimées
  470. * en déformations aux déformations de cisaillement exprimées
  471. * en GAMA
  472. *
  473. DO 117 I=1,6
  474. A=1.D0
  475. IF (I.GT.3) A=2.D0
  476. RDEFP(I)=RDEFP(I)*A
  477. VAR0(I+1)=VAR0(I+1)*A
  478. VARF(I+1)=VARF(I+1)*A
  479. VAR0(I+8)=VAR0(I+8)*A
  480. VARF(I+8)=VARF(I+8)*A
  481. 117 CONTINUE
  482. *
  483. * Passage a l'option de calcul pour les contraintes
  484. *=========================================================
  485. *
  486. IF (MFR1 .EQ. 1 .OR. MFR1 .EQ. 31) THEN
  487. IF (NSTRS .EQ. 6) THEN
  488. *
  489. *---> MASSIF 3D
  490. *
  491. DO 170 I=1,NSTRS
  492. SIGF(I)=RSIGF(I)
  493. DEFP(I)=RDEFP(I)
  494. DSIGT(I)=RDIGT(I)
  495. 170 CONTINUE
  496. ELSE IF ( NSTRS .EQ. 4 ) THEN
  497. *
  498. *---> Calcul axisymétrique ou contraintes planes
  499. *
  500. DO 180 I=1,NSTRS
  501. SIGF(I)=RSIGF(I)
  502. DEFP(I)=RDEFP(I)
  503. DSIGT(I)=RDIGT(I)
  504. 180 CONTINUE
  505. ENDIF
  506. ENDIF
  507. *
  508. *
  509. RETURN
  510. *
  511. END
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  

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