Télécharger t1dp.eso

Retour à la liste

Numérotation des lignes :

t1dp
  1. C T1DP SOURCE CHAT 05/01/13 03:29:29 5004
  2. SUBROUTINE T1DP(SIG,DSIG,YOUN,ANU,RT1,RT2,H1,RDP,ADP,HDP,
  3. 1 XLAM1,XLAM2,XLAM3,IDAM,ANG,EPPLDP,ALPHA,KERRE)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6.  
  7. -INC PPARAM
  8. -INC CCOPTIO
  9. DIMENSION SIG(3),DSIG(3),SGG(3),DSGG(3),SFG(3),DSFG(3),
  10. 1 A(3),B(3),IDAM(3),EPC(3),SSI(3),SI(3),EPC1(3),
  11. 1 EPDP(3),EC(3),EPPLDP(3),SG(3),AT(4),BT(2)
  12. ITER=0
  13. SIREF=1.E-6*YOUN
  14. Y=YOUN/(1.D0-ANU*ANU)
  15. DO 10 ITYP=1,3
  16. EPDP(ITYP)=0.D0
  17. 10 EPPLDP(ITYP)=0.D0
  18. DL3=0.D0
  19. XT=0.D0
  20. IF(IIMPI.EQ.9) WRITE(IOIMP,9999)
  21. 9999 FORMAT(1X,'T1DP COUPLAGE TRACTION 1 DRUCKER',/)
  22. 9998 FORMAT(1X,'T1DP ',I4,'ITERATIONS INTERNES',/)
  23. C
  24. C------------------------------------------------
  25. C COUPLAGE TRACTION DRUCKER
  26. C------------------------------------------------
  27. C----------------------------------------------
  28. C DEFINITION D UNE CONTRAINTE DE REFERENCE
  29. C SI RMAX DU DRUCKER INFERIEURE A CETTE VALEUR
  30. C ALORS SIGMA=0
  31. C----------------------------------------------
  32. C
  33. RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP)))
  34. IF(SIREF.GT.RMAX) THEN
  35. DO 20 ITYP=1,3
  36. 20 SIG(ITYP)=SIG(ITYP)+DSIG(ITYP)
  37. RDP=0.D0
  38. ADP=0.D0
  39. HDP=0.D0
  40. CALL CPHOIN(SIG,EPPLDP,YOUN,ANU)
  41. CALL NORME(SIG,DL3)
  42. DL3=DL3/YOUN*10.D0
  43. XLAM3=XLAM3+DL3
  44. DO 30 ITYP=1,3
  45. IDAM(ITYP)=0
  46. DSIG(ITYP)=0.D0
  47. 30 SIG(ITYP)=0.D0
  48. IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER
  49. RETURN
  50. ENDIF
  51. C-----------------------------------------------
  52. C ON SEPLACE DANS LE REPERE DE FISSURATION
  53. C-----------------------------------------------
  54. C
  55. CALL CHREP(SIG,SFG,ANG)
  56. CALL CHREP(DSIG,DSFG,ANG)
  57. C
  58. C-----------------------------------------------------
  59. C ESTIMATION DU PAS D'INCREMENT DE CONTRAINTES
  60. C-----------------------------------------------------
  61. C
  62. CALL SIJ(SFG,SI,SIETOI)
  63. CALL EPSDP(SI,SIETOI,ADP,EPC)
  64. CALL CPHOMO(EPC,SSI,YOUN,ANU,ALPHA)
  65. CALL SCAL2(EPC,SSI,VAL)
  66. VAL=VAL-HDP
  67. IF(VAL.LT.0.D0) THEN
  68. KERRE=459
  69. RETURN
  70. ENDIF
  71. CALL SCAL(SSI,DSFG,VAL)
  72. CALL NORME(DSFG,VA1)
  73. CALL NORME(SSI,VA2)
  74. IF(VA1.EQ.0.D0) THEN
  75. IDAM(1)=0
  76. IDAM(2)=0
  77. IDAM(3)=0
  78. RETURN
  79. ENDIF
  80. RMIN=MIN((RDP/1.73),(RDP/(1.D0+2.D0*ADP)))
  81. X=VAL/VA1/VA2
  82. IF(X.GE.1.D0) THEN
  83. X=1.D0
  84. GOTO 41
  85. ENDIF
  86. X=1.D0/SQRT(1.0001D0-X*X)*RMIN/VA1/8.D0
  87. IF(X.GE.1.D0) X=1.D0
  88. C
  89. C----------------------------------------------------------
  90. C ON ECOULE ET ON REGARDE LA VARIATION DE NORMALE
  91. C----------------------------------------------------------
  92. C
  93. C
  94. C---------------------------------------
  95. C RESOLUTION DU SYSTEME EN DL3
  96. C---------------------------------------
  97. 41 X=X/2.D0
  98. EC(1)=1.D0
  99. EC(2)=0.D0
  100. EC(3)=0.D0
  101. CALL CPHOOB(EC,SG,YOUN,ANU)
  102. 100 X=X*2.D0
  103. CALL SIJ(SFG,SI,SIETOI)
  104. CALL EPSDP(SI,SIETOI,ADP,EPC)
  105. CALL CPHOMO(EPC,SSI,YOUN,ANU,ALPHA)
  106. CALL SCAL2(EPC,SSI,VAL)
  107. VAL=VAL-HDP
  108. IF(VAL.LT.0.D0) THEN
  109. KERRE=459
  110. RETURN
  111. ENDIF
  112. IF((XT+X).GT.1.D0) X=1.D0-XT
  113. 110 RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP)))
  114. C
  115. C --------------------------------------------------
  116. C CAS OU LE RAYON MAXIMAL DU DRUCKER-PRAGER
  117. C INFERIEUR A LA CONTRAINTE DE REFERENCE
  118. C --------------------------------------------------
  119. C
  120. IF(SIREF.LT.RMAX) GOTO 131
  121. DO 120 ITYP=1,3
  122. 120 SFG(ITYP)=SFG(ITYP)+(1.D0-XT)*DSFG(ITYP)
  123. RDP=0.D0
  124. ADP=0.D0
  125. HDP=0.D0
  126. CALL NORME(SFG,DL3)
  127. DL3=DL3/YOUN*10.D0
  128. XLAM3=XLAM3+DL3
  129. CALL CPHOIN(SFG,EPPLDP,YOUN,ANU)
  130. DO 130 ITYP=1,3
  131. IDAM(ITYP)=0
  132. EPDP(ITYP)=EPDP(ITYP)+EPPLDP(ITYP)
  133. DSIG(ITYP)=0.D0
  134. 130 SIG(ITYP)=0.D0
  135. CALL CHREP(EPDP,EPPLDP,-ANG)
  136. IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER
  137. RETURN
  138. 131 ITER=ITER+1
  139. IF(ITER.GT.200) THEN
  140. KERRE=460
  141. RETURN
  142. ENDIF
  143. C
  144. C---------------------------------
  145. C ON REALISE LE COUPLAGE
  146. C---------------------------------
  147. C
  148. E=-(SFG(1)+X*DSFG(1)-RT1)/(SG(1)-H1)
  149. F=SSI(1)/(SG(1)-H1)
  150. DO 140 ITYP=1,3
  151. DSGG(ITYP)=X*DSFG(ITYP)
  152. A(ITYP)=SFG(ITYP)+DSGG(ITYP)+E*SG(ITYP)
  153. 140 B(ITYP)=-SSI(ITYP)+F*SG(ITYP)
  154. CALL DLAMDP(A,B,DL3,RDP,ADP,HDP,ITEST)
  155. IF(ITEST.EQ.1) THEN
  156. X=X/2.D0
  157. GOTO 131
  158. ENDIF
  159. DL1=-E-F*DL3
  160. DO 145 ITYP=1,3
  161. 145 SGG(ITYP)=SFG(ITYP)+DSGG(ITYP)-DL1*SG(ITYP)-DL3*SSI(ITYP)
  162. C
  163. C----------------------------------------------
  164. C SI UN DES DLAMDA < 0 FAUX COUPLAGE
  165. C----------------------------------------------
  166. C
  167. IF(DL1.LT.-1.D-10) IDAM(1)=0
  168. IF(DL3.LT.-1.D-10) IDAM(3)=0
  169. IF(IDAM(1).EQ.0.OR.IDAM(3).EQ.0) THEN
  170. DL1=0.D0
  171. DL3=0.D0
  172. X=0.D0
  173. GOTO 3000
  174. ENDIF
  175. C
  176. C-----------------------------------------------------
  177. C ON VERIFIE QUE LA NORMALE SUIVANT LE DRUCKER
  178. C PRAGER TOURNE PEU
  179. C-----------------------------------------------------
  180. C
  181. CALL SIJ(SGG,SI,SIETOI)
  182. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  183. CALL SCAL(EPC,EPC1,VAL)
  184. CALL NORME(EPC,VA1)
  185. CALL NORME(EPC1,VA2)
  186. CO=VAL/VA1/VA2
  187. IF(CO.LT.0.99) THEN
  188. X=X/2.D0
  189. GOTO 131
  190. ENDIF
  191. IF((RT1-H1*DL1).GE.-1.E-10) GOTO 200
  192. C
  193. C------------------------------------------------
  194. C CAS OU LA LIMITE EN TRACTION CHUTE EN
  195. C DESSOUS DE 0
  196. C------------------------------------------------
  197. C
  198. DL1=RT1/H1
  199. IF(DSFG(1).EQ.0.D0) GOTO 160
  200. E=(DL1*SG(1)-SFG(1))/DSFG(1)
  201. F=SSI(1)/DSFG(1)
  202. DO 150 ITYP=1,3
  203. A(ITYP)=SFG(ITYP)-DL1*SG(ITYP)+E*DSFG(ITYP)
  204. 150 B(ITYP)=F*DSFG(ITYP)-SSI(ITYP)
  205. CALL DLAMD(A,B,DL31,DL32,RDP,ADP,HDP,ITEST)
  206. DO 151 ITYP=1,3
  207. SGG(ITYP)=A(ITYP)+DL31*B(ITYP)
  208. 151 DSGG(ITYP)=A(ITYP)+DL32*B(ITYP)
  209. CALL SIJ(SGG,SI,SIETOI)
  210. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  211. CALL SCAL(EPC,EPC1,VAL)
  212. CALL NORME(EPC,VA1)
  213. CALL NORME(EPC1,VA2)
  214. CO1=VAL/VA1/VA2
  215. CALL SIJ(DSGG,SI,SIETOI)
  216. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  217. CALL SCAL(EPC,EPC1,VAL)
  218. CALL NORME(EPC,VA1)
  219. CALL NORME(EPC1,VA2)
  220. CO2=VAL/VA1/VA2
  221. XIN1=E+DL31*F
  222. XIN2=E+DL32*F
  223. IF(XIN1.GT.-1.D-10.AND.XIN1.LE.X.AND.CO1.GT.0.9) THEN
  224. DL3=DL31
  225. X=XIN1
  226. GOTO 200
  227. ENDIF
  228. IF(XIN2.GT.-1.D-10.AND.XIN2.LE.X.AND.CO2.GT.0.9) THEN
  229. DL3=DL32
  230. X=XIN2
  231. GOTO 200
  232. ENDIF
  233. IF(IIMPI.EQ.9) WRITE(IOIMP,10101)
  234. 10101 FORMAT(1X,'ERREUR DANS T1DP DEPA ',/)
  235. DL3=DL31
  236. X=XIN1
  237. GOTO 200
  238. 160 DL3=(SFG(1)-DL1*SG(1))/SSI(1)
  239. RD=RDP-DL3*HDP
  240. IF(RD.LT.0.D0) THEN
  241. RDP=0.D0
  242. GOTO 110
  243. ENDIF
  244. DO 170 ITYP=1,3
  245. A(ITYP)=SFG(ITYP)-DL1*SG(ITYP)-DL3*SSI(ITYP)
  246. 170 B(ITYP)=DSFG(ITYP)
  247. CALL XDP(A,B,RD,ADP,X,ITEST)
  248. C
  249. C-----------------------------------------------
  250. C ON REGARDE SI ON ENDOMMAGE PAS LES AUTRES
  251. C CRITERES
  252. C-----------------------------------------------
  253. C-------------------------------------
  254. C ON ENDOMMAGE LA TRACTION 2
  255. C-------------------------------------
  256. C
  257. 200 CONTINUE
  258. DO 205 ITYP=1,3
  259. DSGG(ITYP)=X*DSFG(ITYP)
  260. 205 SGG(ITYP)=SFG(ITYP)+DSGG(ITYP)-DL1*SG(ITYP)-DL3*SSI(ITYP)
  261. CALL CTRAF(SGG(2),RT2,VCTR)
  262. IF(VCTR.LE.0.D0) GOTO 1000
  263. IDAM(1)=1
  264. IDAM(2)=1
  265. IDAM(3)=1
  266. AT(1)=-DSFG(1)
  267. AT(2)=Y-H1
  268. AT(4)=Y*ANU
  269. AT(3)=-DSFG(2)
  270. BT(1)=SFG(1)-RT1
  271. BT(2)=SFG(2)-RT2
  272. CALL SYLIN2(AT,BT,X1,DL11)
  273. BT(1)=-SSI(1)
  274. BT(2)=-SSI(2)
  275. CALL SYLIN2(AT,BT,X2,DL12)
  276. DO 230 ITYP=1,3
  277. A(ITYP)=SFG(ITYP)-DL11*SG(ITYP)+X1*DSFG(ITYP)
  278. 230 B(ITYP)=-DL12*SG(ITYP)+X2*DSFG(ITYP)-SSI(ITYP)
  279. CALL DLAMD(A,B,DL31,DL32,RDP,ADP,HDP,ITEST)
  280. DO 231 ITYP=1,3
  281. SGG(ITYP)=A(ITYP)+DL31*B(ITYP)
  282. 231 DSGG(ITYP)=A(ITYP)+DL32*B(ITYP)
  283. CALL SIJ(SGG,SI,SIETOI)
  284. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  285. CALL SCAL(EPC,EPC1,VAL)
  286. CALL NORME(EPC,VA1)
  287. CALL NORME(EPC1,VA2)
  288. CO1=VAL/VA1/VA2
  289. CALL SIJ(DSGG,SI,SIETOI)
  290. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  291. CALL SCAL(EPC,EPC1,VAL)
  292. CALL NORME(EPC,VA1)
  293. CALL NORME(EPC1,VA2)
  294. CO2=VAL/VA1/VA2
  295. DLIN1=DL11+DL31*DL12
  296. DLIN2=DL11+DL32*DL12
  297. XIN1=X1+DL31*X2
  298. XIN2=X1+DL32*X2
  299. IF(XIN1.GT.-1.D-10.AND.DLIN1.GT.-1.E-10.AND.XIN1.LE.X
  300. 1 .AND.CO1.GT.0.9) THEN
  301. DL3=DL31
  302. X=XIN1
  303. DL1=DLIN1
  304. GOTO 3000
  305. ENDIF
  306. IF(XIN2.GT.-1.D-10.AND.DLIN2.GT.-1.E-10.AND.XIN2.LE.X
  307. 1 .AND.CO2.GT.0.9) THEN
  308. DL3=DL32
  309. X=XIN2
  310. DL1=DLIN2
  311. GOTO 3000
  312. ENDIF
  313. IF(IIMPI.EQ.9) WRITE(IOIMP,20202)
  314. 20202 FORMAT(1X,'ERREUR DANS T1DP TRAC ',/)
  315. DL3=DL31
  316. DL1=DLIN1
  317. X=XIN1
  318. GOTO 3000
  319. C
  320. C-------------------------------------
  321. C ON ENDOMMAGE LA COMPRESSION 2
  322. C-------------------------------------
  323. C
  324. 1000 CALL CCOAF(SGG(2),XLAM2,VCCO2)
  325. IF(VCCO2.LE.0.D0) GOTO 2000
  326. IDAM(1)=1
  327. IDAM(3)=1
  328. IDAM(2)=-1
  329. AT(1)=-DSFG(1)
  330. AT(2)=Y-H1
  331. AT(4)=Y*ANU
  332. AT(3)=-DSFG(2)
  333. BT(1)=SFG(1)-RT1
  334. BT(2)=SFG(2)
  335. CALL SYLIN2(AT,BT,X1,DL11)
  336. BT(1)=-SSI(1)
  337. BT(2)=-SSI(2)
  338. CALL SYLIN2(AT,BT,X2,DL12)
  339. DO 1010 ITYP=1,3
  340. A(ITYP)=SFG(ITYP)-DL11*SG(ITYP)+X1*DSFG(ITYP)
  341. 1010 B(ITYP)=-DL12*SG(ITYP)+X2*DSFG(ITYP)-SSI(ITYP)
  342. CALL DLAMD(A,B,DL31,DL32,RDP,ADP,HDP,ITEST)
  343. DO 1011 ITYP=1,3
  344. SGG(ITYP)=A(ITYP)+DL31*B(ITYP)
  345. 1011 DSGG(ITYP)=A(ITYP)+DL32*B(ITYP)
  346. CALL SIJ(SGG,SI,SIETOI)
  347. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  348. CALL SCAL(EPC,EPC1,VAL)
  349. CALL NORME(EPC,VA1)
  350. CALL NORME(EPC1,VA2)
  351. CO1=VAL/VA1/VA2
  352. CALL SIJ(DSGG,SI,SIETOI)
  353. CALL EPSDP(SI,SIETOI,ADP,EPC1)
  354. CALL SCAL(EPC,EPC1,VAL)
  355. CALL NORME(EPC,VA1)
  356. CALL NORME(EPC1,VA2)
  357. CO2=VAL/VA1/VA2
  358. DLIN1=DL11+DL31*DL12
  359. DLIN2=DL11+DL32*DL12
  360. XIN1=X1+DL31*X2
  361. XIN2=X1+DL32*X2
  362. IF(XIN1.GT.-1.D-10.AND.DLIN1.GT.-1.E-10.AND.XIN1.LE.X
  363. 1 .AND.CO1.GT.0.9) THEN
  364. DL3=DL31
  365. X=XIN1
  366. DL1=DLIN1
  367. GOTO 3000
  368. ENDIF
  369. IF(XIN2.GT.-1.D-10.AND.DLIN2.GT.-1.E-10.AND.XIN2.LE.X
  370. 1 .AND.CO2.GT.0.9) THEN
  371. DL3=DL32
  372. X=XIN2
  373. DL1=DLIN2
  374. GOTO 3000
  375. ENDIF
  376. IF(IIMPI.EQ.9) WRITE(IOIMP,30303)
  377. 30303 FORMAT(1X,'ERREUR DANS T1DP COMP ',/)
  378. DL3=DL31
  379. DL1=DLIN1
  380. X=XIN1
  381. GOTO 3000
  382. 2000 CONTINUE
  383. C
  384. C------------------------------------------------
  385. C CAS OU AUCUN AUTRE CRITERE EST ENDOMMAGE
  386. C------------------------------------------------
  387. C-----------------------------------
  388. C REMISE A JOUR DES VARIABLES
  389. C PUIS NOUVEAU PAS SI TOUT
  390. C L INCREMENT N EST PAS ECOULE
  391. C-----------------------------------
  392. C
  393. RDP=RDP-DL3*HDP
  394. RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP)))
  395. IF(RMAX.LT.SIREF) THEN
  396. RDP=0.D0
  397. GOTO 110
  398. ENDIF
  399. RT1=RT1-H1*DL1
  400. IF(RT1.LE.1.E-10) THEN
  401. H1=0.D0
  402. RT1=0.D0
  403. ENDIF
  404. XT=XT+X
  405. DO 2010 ITYP=1,3
  406. SFG(ITYP)=SFG(ITYP)+X*DSFG(ITYP)-DL1*SG(ITYP)-DL3*SSI(ITYP)
  407. 2010 EPDP(ITYP)=DL3*EPC(ITYP)+EPDP(ITYP)
  408. XLAM1=XLAM1+DL1
  409. XLAM3=XLAM3+DL3
  410. C=1.D0-1.D-10
  411. IF(XT.LT.C) GOTO 100
  412. DO 2020 ITYP=1,3
  413. IDAM(ITYP)=0
  414. 2020 DSIG(ITYP)=0.D0
  415. CALL CHREP(SFG,SIG,-ANG)
  416. CALL CHREP(EPDP,EPPLDP,-ANG)
  417. IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER
  418. RETURN
  419. 3000 RDP=RDP-DL3*HDP
  420. RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP)))
  421. IF(RMAX.LT.SIREF) THEN
  422. RDP=0.D0
  423. GOTO 110
  424. ENDIF
  425. RT1=RT1-H1*DL1
  426. IF(RT1.LE.1.E-10) THEN
  427. H1=0.D0
  428. RT1=0.D0
  429. ENDIF
  430. XT=XT+X
  431. DO 3010 ITYP=1,3
  432. SFG(ITYP)=SFG(ITYP)+X*DSFG(ITYP)-DL1*SG(ITYP)-DL3*SSI(ITYP)
  433. DSFG(ITYP)=DSFG(ITYP)*(1.D0-XT)
  434. 3010 EPDP(ITYP)=DL3*EPC(ITYP)+EPDP(ITYP)
  435. CALL CHREP(SFG,SIG,-ANG)
  436. CALL CHREP(DSFG,DSIG,-ANG)
  437. CALL CHREP(EPDP,EPPLDP,-ANG)
  438. XLAM1=XLAM1+DL1
  439. XLAM3=XLAM3+DL3
  440. IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER
  441. RETURN
  442. END
  443.  
  444.  

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