Télécharger damage.eso

Retour à la liste

Numérotation des lignes :

damage
  1. C DAMAGE SOURCE CHAT 05/01/12 22:36:13 5004
  2. SUBROUTINE DAMAGE(ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,DPELA2
  3. .,PORELA,R1,R2,R3,PENTE1,PENTE2,PENTE3,XLAMBD,SIGMA,DSIGMA,STOT,
  4. .SIGEL,TETAQ,YUNG,XNU,XLAMER,XLAMAX,DP2MIN,
  5. .PREC,RFSG,RFEP,RFPR,ITRAC,IDED,IDAM,KERRE)
  6. C
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8(A-H,O-Z)
  9.  
  10. -INC PPARAM
  11. -INC CCOPTIO
  12. C
  13. DIMENSION SIGMA(*),DSIGMA(*),STOT(*),SIGEL(*),XLAMBD(*)
  14. DIMENSION SIGMAT(6),DSIGP(6)
  15. DIMENSION DELSIG(6),DDSIGP(6),DSIGEL(6),DSIGPR(6),DDF(6),DEPSP(6)
  16. DIMENSION SIS(6),SIGCRI(6),SIDEMI(6)
  17. DIMENSION DLAMBD(5),XLAMBO(5),CRI(5)
  18. C
  19. C CETTE ROUTINE GERE LES ITERATIONS INTERNES
  20. C ENTREE SIGMA AU DEBUT DU PAS
  21. C DSIGMA INCREMENT CALCULE ELASTIQUEMENT
  22. C STOT = SIGMA + DSIGMA
  23. C SIGMAT=STOT
  24. C LES CARACTERISTIQUES DU MODELE (ALFADV ... PENTE3)
  25. C LES ENDOMMAGEMENTS XLAMBD (5)
  26. C IDED = 0 AU DEPART
  27. C 1 POUR CISAILLEMENT DUCTILE
  28. C 2 POUR CISAILLEMENT FRAGILE
  29. C 3 POUR LES DEUX PRECEDENTS
  30. C IIMPI INDICE POUR LES IMPRESSIONS = 0 (PAS D IMPRESSIONS)
  31. C = 9 (ON IMPRIME)
  32. C SIGEL CONTRAINTES SUR CRITERE
  33. C EN SORTIE C EST LA SOLUTION PROJETTEE
  34. C DSIGP PARTIE PLASTIQUE DE L INCREMENT
  35. C XLAMER LAMBDA DE BUTEE POUR LE CISAILLEMENT FRAGILE ECROUISS.
  36. C SUR LA TRACTION
  37. C XLAMAX LAMBDA DE BUTEE POUR LE CISAILLEMENT FRAGILE ECROUISS.
  38. C SUR LE CISAILLEMENT FRAGILE NON ECROUISS.
  39. C IDAM INDICE D ENDOMMAGEMENT
  40. C = 1 LE PAS EST ELASTIQUE
  41. C > 1 NOMBRE DE FOIS -1 OU L ON ENDOMMAGE DANS
  42. C L ITERATION INTERNE
  43. C ICRIT1 INDICE DU 1-ER CRITERE ENDOMMAGE
  44. C ICRIT2 INDICE DU 2-EME CRITERE SI ICOUP = 2 (CAS DE COUPLAGE)
  45. C ITRI INDICE DU TRIAGE
  46. C ITRI=0 (CALCUL POUR TROUVER LA PREMIERE SURFACE ENDOMMAGEE)
  47. C ITRI=1 (CALCUL POUR TROUVER LA PREMIERE ESTIMATION DE L ECOULEMENT)
  48. C ITRI=2 (CALCUL POUR TROUVER LA CORRECTION DE DELTA LAMBDA)
  49. C
  50. IF(IIMPI.EQ.9)
  51. .WRITE(IOIMP,9999) ALFADV,ALFAD1,ALFAD2,VMELAS,
  52. .DPELAS,DPELA1,DPELA2,PORELA,R1,R2,R3,PENTE1,PENTE2,PENTE3,
  53. .(XLAMBD(I),I=1,5),(SIGMA(J),J=1,6),(DSIGMA(K),K=1,6),
  54. .(STOT(L),L=1,6),(SIGEL(M),M=1,6),
  55. .TETAQ,XLAMER,XLAMAX,PREC,RFSG,RFEP,RFPR,IDED
  56. C
  57. C INITIALISATIONS
  58. C
  59. VMELA0=VMELAS
  60. DPEL20=DPELA2
  61. POREL0=PORELA
  62. R01=R1
  63. R02=R2
  64. R03=R3
  65. IDAM=1
  66. ICOUP=1
  67. IBAB=0
  68. ICRIT1=0
  69. ICRIT2=0
  70. JCRIT2=0
  71. ICRIME=0
  72. ICRIMT=0
  73. ITRI=0
  74. IC5=0
  75. ITERA=0
  76. ITS=0
  77. ICTD=0
  78. KASTR=1
  79. XLMDF=(XLAMER-XLAMBD(5))*2.D0/(XLAMER+XLAMBD(5))
  80. IF(XLMDF.LE.PREC) KASTR=2
  81. XX=0.D0
  82. DPLAM=0.D0
  83. DGLAMP=0.D0
  84. DO 10 III=1,6
  85. SIS(III)=0.D0
  86. DELSIG(III)=0.D0
  87. 10 CONTINUE
  88. DO 20 III=1,5
  89. XLAMBO(III)=XLAMBD(III)
  90. DLAMBD(III)=0.D0
  91. 20 CONTINUE
  92. LMIC5=0
  93. XLMDF=(XLAMAX-XLAMBD(5))*2.D0/(XLAMAX+XLAMBD(5))
  94. IF(XLMDF.LE.PREC)LMIC5=1
  95. C
  96. C METTRE A JOUR LES VALEURS DES LIMITES ELASTIQUES DES CRITERES
  97. C
  98. VMELAS=VMELAS+PENTE1*XLAMBD(3)
  99. DPELA2=DPELA2+PENTE2*XLAMBD(5)
  100. PORELA=PORELA+PENTE3*XLAMBD(1)
  101. C
  102. DO 30 III=1,6
  103. 30 SIGMAT(III)=STOT(III)
  104. C
  105. 160 CALL TRIAGE(ITRI,ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,
  106. .DPELA2,PORELA,R1,R2,R3,SIGMA,DSIGMA,SIGMAT,SIGEL,DSIGP,TETAQ,IDED,
  107. .ICAS,IDAM,ITRAC,KOUPLE,IMIN,JMIN,GAMIN,ICRIT1,KASTR,DP2MIN,DPLAM,
  108. .DPLAM,PENTE1,PENTE2,CC,SS,CS,ICRIME,ICRIMT,ITETA,IRZ,LMIC5,
  109. .PREC,RFSG,RFEP,RFPR,KERRE)
  110. C
  111. IF(IDAM.NE.1) GO TO 31
  112. DO 32 III=1,6
  113. SIGCRI(III)=SIGEL(III)
  114. 32 CONTINUE
  115. C
  116. 31 IF(IMIN.EQ.0) GO TO 40
  117. IF(IMIN.EQ.6) GO TO 50
  118. IF(KOUPLE.EQ.2) GO TO 60
  119. IF(KOUPLE.EQ.3) GO TO 152
  120. ICRIT1=IMIN
  121. C
  122. C LA PREMIERE ESTIMATION DE DELTA LAMBD ITRI=1
  123. C
  124. 170 ITERA=1
  125. IF(IIMPI.EQ.9) WRITE(IOIMP,5007) ITERA
  126. ITRI=1
  127. CALL KRITER(ICRIT1,ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,
  128. .DPELA2,PORELA,PENTE1,PENTE2,PENTE3,DPLAM,SIGEL,FSIG,FCRIT,KERRE)
  129. IF(IIMPI.EQ.9)
  130. .WRITE(IOIMP,5001) ICRIT1,ICRIME,ICRIMT,VMELAS,
  131. .DPELAS,DPELA1,DPELA2,PORELA,DPLAM,FSIG,FCRIT,
  132. .(SIGEL(I),I=1,6),(DSIGP(J),J=1,6)
  133. C
  134. C ON CALCUL LA VALEUR DE SIDEMI =(SIGEL + 0.5 DE DSIGP)CAR ON FAIT
  135. C LA LINEARISATION DU SYSTEME AU VOISINAGE DE CETTE VALEUR
  136. C SOLUTIN RETENUE PARCE QU'ELLE EST VALABLE QUELQUE SOIT LA
  137. C VALEUR DE X ( L'ESTIMATION DE LA QUANTITE DE DSIGP A ECOULER )
  138. C PETITE= ON EST PROCHE DE LA SURFACE DE CHARGE DU 2EME CRITERE
  139. C GRANDE= ON EST LOIN DE LA SURFACE DE CHARGE DU 2EME CRITERE
  140. C
  141. DO 34 II=1,6
  142. SIDEMI(II)=SIGEL(II)+0.5D0*DSIGP(II)
  143. 34 CONTINUE
  144. C
  145. CALL CRILAM(ICRIT1,SIDEMI,SIGEL,DSIGP,ALFADV,ALFAD1,ALFAD2,VMELAS,
  146. .DPELAS,DPELA1,DPELA2,PORELA,PENTE1,PENTE2,PENTE3,YUNG,XNU,
  147. .DGLAMP,DGLAMM,DGLAM,DL,DI,ISOMET,KERRE)
  148. IF(IIMPI.EQ.9)
  149. .WRITE(IOIMP,5002) ICRIT1,DGLAMP,DGLAMM,DGLAM,DL,ITERA
  150. C
  151. C TEST POUR LES DECHARGES
  152. C
  153. IF(ISOMET.EQ.1) GO TO 13
  154. IF(DGLAM.GE.0.D0) GO TO 11
  155. GO TO 12
  156. 13 IF(ICRIT1.EQ.4.OR.ICRIT1.EQ.5)GO TO 14
  157. WRITE(IOIMP,1006) ICRIT1
  158. KERRE=640
  159. RETURN
  160. C
  161. 14 ALFAN1=-0.5D0/ALFAD1
  162. ALFAN2=-0.5D0/ALFAD2
  163. DPELN1=DPELA1*ALFAN1/ALFAD1
  164. DPELN2=DPELA2*ALFAN2/ALFAD2
  165. UPNUSE=(1.D0+XNU)/YUNG
  166. UMDNSE=(1.D0-2.D0*XNU)/YUNG
  167. SISDF1=DPELA1/(3.D0*ALFAD1)
  168. CONST1=UMDNSE*DPELA2/(3.D0*ALFAD2)
  169. CONST2=UMDNSE*PENTE2/(3.D0*ALFAD2)
  170. CONDP4=3.D0*(ALFAD1*ALFAD1+0.5D0)
  171. CONDP5=3.D0*(ALFAD2*ALFAD2+0.5D0)
  172. C
  173. CALL KRITER(ICRIT1,ALFADV,ALFAN1,ALFAN2,VMELAS,DPELAS,DPELN1,
  174. .DPELN2,PORELA,PENTE1,PENTE2,PENTE3,DPLAM,SIGMAT,FSIG,FCRIT,KERRE)
  175. IF(FCRIT.GT.0.D0) GO TO 11
  176. C
  177. C CAS OU ON SORT PAR LE SOMMET DU CONE ET SIGMA TOTAL EST A L INTERIEUR
  178. C DU CONE DES NORMALES :DANS CE CAS LA SOLUTION C EST DE PROGETER SUR LE
  179. C SOMMET ET PUIS DE CALCULER LA VALEUR DE DELTA LAMBDA
  180. C
  181. DO 15 I=1,6
  182. SIGMAT(I)= SIGEL(I)+DSIGP(I)
  183. SIGMA(I)=SIGEL(I)
  184. SIGEL(I)=0.D0
  185. 15 CONTINUE
  186. IF(LMIC5.EQ.1) GO TO 16
  187. IF(ICRIT1.EQ.4) GO TO 16
  188. C
  189. C CAS DU CRITERE DE DRUCKER ECROUSSABLE (5)
  190. C
  191. C LE PROBLEME C EST DE TROUVER SIGMA SOLUTION (SIGEL) QUI DEPEND DE
  192. C DELTA LAMBDA INCONNUE AU DEPART CE QUI REVIENT A RESOUDRE UN EQUATION
  193. C DE DEUXIEME DEGRET DE DELTA LAMBDA DONT LES CONSTANTS SONT:
  194. C AA,BB,CC ( AA L2 + BB L + CC = 0 )
  195. C
  196. CC1=(SIGMAT(1)-XNU*(SIGMAT(2)+SIGMAT(3)))/YUNG-CONST1
  197. CC2=(SIGMAT(2)-XNU*(SIGMAT(3)+SIGMAT(1)))/YUNG-CONST1
  198. CC3=(SIGMAT(3)-XNU*(SIGMAT(1)+SIGMAT(2)))/YUNG-CONST1
  199. CC4=UPNUSE*SIGMAT(4)
  200. CC5=UPNUSE*SIGMAT(5)
  201. CC6=UPNUSE*SIGMAT(6)
  202. CC=CC1*CC1+CC2*CC2+CC3*CC3+(CC4*CC4+CC5*CC5+CC6*CC6)*2.D0
  203. BB=(CC1+CC2+CC3)*CONST2*2.D0
  204. AA=3.D0*CONST2*CONST2-CONDP5
  205. C
  206. C RESOLUTION DE L EQUATION
  207. C
  208. DELTA=BB*BB-4.D0*AA*CC
  209. VRF=MAX(ABS(BB),RFPR)
  210. RFRF=VRF*VRF*PREC*PREC
  211. IF(ABS(DELTA).LE.RFRF.AND.DELTA.LE.0.D0) DELTA=0.D0
  212. IF(DELTA.LT.0.D0) GO TO 12
  213. RADEL=SQRT(DELTA)
  214. DLAM1=(-BB+RADEL)/(2.D0*CC)
  215. DLAM2=(-BB-RADEL)/(2.D0*CC)
  216. DLAM5=MAX(DLAM1,DLAM2)
  217. IF(ABS(DLAM5).LE.RFEP*PREC)DLAM5=0.D0
  218. IF(DLAM5.LT.0.D0) GO TO 12
  219. DLAMX=XLAMAX-XLAMBD(5)-DLAMBD(5)
  220. IF(DLAM5.LE.DLAMX) GO TO 17
  221. LMIC5=1
  222. KASTR=2
  223. DLAM5=DLAMX
  224. 17 SISDF2=(DPELA2+PENTE2*DLAM5)/(3.D0*ALFAD2)
  225. SIGEL(1)=SISDF2
  226. SIGEL(2)=SISDF2
  227. SIGEL(3)=SISDF2
  228. CONST3=SISDF2*UMDNSE
  229. DLAMBD(5)=DLAMBD(5)+DLAM5
  230. IF(LMIC5.EQ.0) GO TO 130
  231. C
  232. C CAS OU DELTA LAMBDA CALCULE EST PLUS GRAND QUE DLAMX DANS CE CAS LA ON
  233. C AURA UNE QUANTITE DE DELTA SIGMA A ECOULER SUR LE CRITERE DE DRUCKER
  234. C FIXE (4),POUR CELA CONNESSANT LA VALEUR DE DELTA LAMBDA QUI EST EGALE
  235. C A LA VALEUR DE DLAMX ON CALCUL LA PROPORTION DE DELTA SIGMA TOTAL DEJA
  236. C UTILISEE POUR L ECOULEMENT CORRESPONDANT A LA VALEUR DE DLAMX SUR LE
  237. C CRITERE DE DRUCKER ECROUISSABLE (5) CE QUI NOUS RAMENE A RESOUDRE UNE
  238. C EQUATION DE SECONDE DEGRE
  239. C
  240. CC1=(SIGMA(1)-XNU*(SIGMA(2)+SIGMA(3)))/YUNG-CONST3
  241. CC2=(SIGMA(2)-XNU*(SIGMA(3)+SIGMA(1)))/YUNG-CONST3
  242. CC3=(SIGMA(3)-XNU*(SIGMA(1)+SIGMA(2)))/YUNG-CONST3
  243. CC4=UPNUSE*SIGMA(4)
  244. CC5=UPNUSE*SIGMA(5)
  245. CC6=UPNUSE*SIGMA(6)
  246. CC=CC1*CC1+CC2*CC2+CC3*CC3+(CC4*CC4+CC5*CC5+CC6*CC6)*2.D0
  247. CC=CC-DLAMX*DLAMX*CONDP5
  248. BB1=(DSIGP(1)-XNU*(DSIGP(2)+DSIGP(3)))/YUNG
  249. BB2=(DSIGP(2)-XNU*(DSIGP(3)+DSIGP(1)))/YUNG
  250. BB3=(DSIGP(3)-XNU*(DSIGP(1)+DSIGP(2)))/YUNG
  251. BB4=UPNUSE*DSIGP(4)
  252. BB5=UPNUSE*DSIGP(5)
  253. BB6=UPNUSE*DSIGP(6)
  254. BB=2.D0*(CC1*BB1+CC2*BB2+CC3*BB3+(CC4*BB4+CC5*BB5+CC6*BB6)*2.D0)
  255. AA=BB1*BB1+BB2*BB2+BB3*BB3+(BB4*BB4+BB5*BB5+BB6*BB6)*2.D0
  256. C
  257. C RESOLUTION DE L EQUATION
  258. C
  259. DELTA=BB*BB-4.D0*AA*CC
  260. VRF=MAX(ABS(BB),RFSG)
  261. RFRF=VRF*VRF*PREC*PREC
  262. IF(ABS(DELTA).LE.RFRF.AND.DELTA.LE.0.D0) DELTA=0.D0
  263. IF(DELTA.LT.0.D0) GO TO 130
  264. RADEL=SQRT(DELTA)
  265. DELX1=(-BB+RADEL)/(2.D0*CC)
  266. IF(ABS(DELX1).LE.RFEP*PREC)DELX1=0.D0
  267. IF(DELX1.LT.0.D0.OR.DELX1.GT.1.D0)DELX1=-1.D0
  268. DELX2=(-BB-RADEL)/(2.D0*CC)
  269. IF(ABS(DELX2).LE.RFEP*PREC)DELX2=0.D0
  270. IF(DELX2.LT.0.D0.OR.DELX2.GT.1.D0)DELX2=-2.D0
  271. DELX=MAX(DELX1,DELX2)
  272. IF(DELX.LT.0.D0.OR.DELX.EQ.1.D0) GO TO 130
  273. UMDELX=1.D0-DELX
  274. DO 18 I=1,6
  275. DSIGP(I)=DSIGP(I)*UMDELX
  276. SIGMAT(I)=SIGEL(I)+DSIGP(I)
  277. 18 CONTINUE
  278. C
  279. C CAS DU CRITERE DE DRUCKER FIXE (4)
  280. C
  281. 16 SIGEL(1)=SISDF1
  282. SIGEL(2)=SISDF1
  283. SIGEL(3)=SISDF1
  284. DO 19 I=1,6
  285. DSIGPR(I)=SIGMAT(I)-SIGEL(I)
  286. DEPSP(I)=UPNUSE*DSIGPR(I)
  287. 19 CONTINUE
  288. DPS=XNU*(DSIGPR(1)+DSIGPR(2)+DSIGPR(3))/YUNG
  289. DEPSP(1)=DEPSP(1)-DPS
  290. DEPSP(2)=DEPSP(2)-DPS
  291. DEPSP(3)=DEPSP(3)-DPS
  292. AA4=DEPSP(1)*DEPSP(1)+DEPSP(2)*DEPSP(2)+DEPSP(3)*DEPSP(3)
  293. BB4=2.D0*(DEPSP(4)*DEPSP(4)+DEPSP(5)*DEPSP(5)+DEPSP(6)*DEPSP(6))
  294. CC4=(AA4+BB4)/CONDP4
  295. IF(ABS(CC4).LE.RFEP*RFEP*PREC*PREC) CC4=0.D0
  296. IF(CC4.LT.0) GO TO 12
  297. DLAM4=SQRT(CC4)
  298. DLAMBD(4)=DLAMBD(4)+DLAM4
  299. GO TO 130
  300. C
  301. 12 IF(IIMPI.EQ.9) WRITE(IOIMP,5020)
  302. GO TO 40
  303. C
  304. 11 CALL DDFDS(ICRIT1,ALFADV,ALFAD1,ALFAD2,YUNG,XNU,SIDEMI,SIGEL,
  305. .DDF,KERRE)
  306. DO 70 III=1,6
  307. DSIGPR(III)=DSIGP(III)-DDF(III)*DGLAMP
  308. SIGMA(III)=SIGEL(III)-DDF(III)*DL
  309. DSIGMA(III)=DSIGPR(III)
  310. SIGMAT(III)=SIGMA(III)+DSIGMA(III)
  311. 70 CONTINUE
  312. IF(IIMPI.EQ.9)
  313. .WRITE(IOIMP,7000) (SIGMA(I),I=1,6),(DSIGMA(J),J=1,6),
  314. . (SIGMAT(K),K=1,6),(DDF(L),L=1,6),(DSIGP(M),M=1,6)
  315. GO TO (71,72,73,74,75),ICRIT1
  316. WRITE(IOIMP,1000)
  317. KERRE=640
  318. RETURN
  319. C
  320. C L ECOULEMENT SELON LE CRITERE CORRESPONDANT
  321. C
  322. 71 IF(IIMPI.EQ.9) WRITE(IOIMP,6001)
  323. GO TO 80
  324. 72 IF(IIMPI.EQ.9) WRITE(IOIMP,6002)
  325. GO TO 80
  326. 73 IF(IIMPI.EQ.9) WRITE(IOIMP,6003)
  327. IF(IDED.EQ.0.OR.IDED.EQ.2) IDED=IDED+1
  328. GO TO 80
  329. 74 IF(IIMPI.EQ.9) WRITE(IOIMP,6004)
  330. GO TO 80
  331. 75 IF(IIMPI.EQ.9) WRITE(IOIMP,6005)
  332. IF(IDED.EQ.0.OR.IDED.EQ.1) IDED=IDED+2
  333. 80 IDAM=IDAM+1
  334. C
  335. C ITERATIONS INTERNES
  336. C
  337. 81 IF(IDAM.LT.10) GO TO 85
  338. WRITE(IOIMP,7001)
  339. KERRE=640
  340. RETURN
  341. 85 CALL TRIAGE(ITRI,ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,
  342. .DPELA2,PORELA,R1,R2,R3,SIGMA,DSIGMA,SIGMAT,SIGEL,DSIGP,TETAQ,IDED,
  343. .ICAS,IDAM,ITRAC,KOUPLE,IMIN,JMIN,GAMIN,ICRIT1,KASTR,DP2MIN,DGLAMP,
  344. .DL,PENTE1,PENTE2,CC,SS,CS,ICRIME,ICRIMT,ITETA,IRZ,LMIC5,
  345. .PREC,RFSG,RFEP,RFPR,KERRE)
  346. ICRIT2=IMIN
  347. IF(IIMPI.EQ.9) WRITE(IOIMP,9006) KOUPLE,ICRIT1,IMIN,JMIN,GAMIN
  348. IF(GAMIN.LT.0.D0) GAMIN=0.D0
  349. IF(KOUPLE.NE.2) GO TO 86
  350. ICRIT2=IMIN
  351. JCRIT2=JMIN
  352. 86 XX=XX+GAMIN
  353. IF(XX.LE.1.D0) GO TO 33
  354. GAMIN=GAMIN+1.D0-XX
  355. XX=1.D0
  356. 33 IF(IIMPI.EQ.9) WRITE(IOIMP,5006)XX,GAMIN
  357. DPLAM=DGLAMP*GAMIN+DL
  358. IF(ABS(DPLAM).LT.RFPR*PREC.AND.DPLAM.LT.0.D0) DPLAM=0.D0
  359. IF(ICRIT1.NE.5) GO TO 91
  360. IF(DGLAMP.EQ.0.D0) GO TO 91
  361. DPLMAX=XLAMAX-XLAMBD(5)-DLAMBD(5)
  362. TSTDPL=DPLMAX-DPLAM
  363. IF(TSTDPL.GE.0.D0) GO TO 91
  364. GAMINI=(DPLMAX-DL)/DGLAMP
  365. IF(GAMINI.LT.0.D0) GAMINI=0.D0
  366. DGAM=GAMINI-GAMIN
  367. XX=XX+DGAM
  368. IF(IIMPI.EQ.9) WRITE(IOIMP,8002) DGAM,GAMINI,DPLMAX,XX,DPLAM
  369. DPLAM=DPLMAX
  370. GAMIN=GAMINI
  371. C IC5=1
  372. C
  373. 91 DLAMBD(ICRIT1)=DLAMBD(ICRIT1)+DPLAM
  374. DO 92 III=1,6
  375. DELSIG(III)=DSIGPR(III)*GAMIN-DDF(III)*DL
  376. SIGEL(III)=SIGEL(III)+DELSIG(III)
  377. 92 CONTINUE
  378. IF(XX.LT.1.D0) GO TO 82
  379. DO 83 III=1,6
  380. DSIGP(III)=0.D0
  381. 83 CONTINUE
  382. 82 IF(IIMPI.EQ.9) WRITE(IOIMP,5000) ICRIT1,(DLAMBD(I),I=1,5),
  383. . ITERA,DPLAM
  384. CALL KRITER(ICRIT1,ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,
  385. .DPELA2,PORELA,PENTE1,PENTE2,PENTE3,DPLAM,SIGEL,FSIG,FCRIT,KERRE)
  386. IF(IIMPI.EQ.9)
  387. .WRITE(IOIMP,5001) ICRIT1,ICRIME,ICRIMT,VMELAS,DPELAS,
  388. . DPELA1,DPELA2,PORELA,DPLAM,FSIG,FCRIT,
  389. . (SIGEL(I),I=1,6),(DSIGP(J),J=1,6)
  390. ITRI=2
  391. IF(ITERA.EQ.1) GO TO 110
  392. C
  393. IF(ABS(DLAMBD(ICRIT1)).LT.RFPR*PREC.AND.DLAMBD(ICRIT1).LT.0.D0)
  394. .DLAMBD(ICRIT1)=0.D0
  395. IF(ABS(DLAMBD(ICRIT1)).LE.RFEP)
  396. .DLAMBD(ICRIT1)=0.D0
  397. IF(DLAMBD(ICRIT1).GE.0.D0) GO TO 109
  398. WRITE(IOIMP,1010) ICRIT1,DLAMBD(ICRIT1)
  399. KERRE=640
  400. RETURN
  401. C
  402. C TEST DE CONVERGENCE
  403. C
  404. 109 IF(DLAMBD(ICRIT1).EQ.0.D0) GO TO 120
  405. DENOR=MAX(DLAMBD(ICRIT1),RFEP)
  406. TEST=ABS(DPLAM)/DENOR
  407. IF(IIMPI.EQ.9) WRITE(IOIMP,5107) DPLAM,DLAMBD(ICRIT1),TEST
  408. C
  409. C CAS DU CRITERE DE DRUCKER FRAGILE ECROUISSABLE QUAND DPLAM CALCULE
  410. C EST PLUS GRAND QUE DPLMAX. DANS CE CAS ON TEST SUR FCRIT ET PAS
  411. C SUR DPLAM
  412. C
  413. C IF(ICRIT1.NE.5.OR.IC5.NE.1) GO TO 119
  414. TEST1=ABS(FCRIT)*PREC/RFSG
  415. C IC5=0
  416. IF(IIMPI.EQ.9) WRITE(IOIMP,5108) FCRIT,TEST1,TEST
  417. C
  418. 119 IF(TEST.LT.PREC) GO TO 120
  419. IF(ITERA.LE.20) GO TO 110
  420. WRITE(IOIMP,1011) ICRIT1,ITERA,DPLAM,DLAMBD(ICRIT1),TEST
  421. KERRE=640
  422. RETURN
  423. C
  424. 110 ITERA=ITERA+1
  425. IF(IIMPI.EQ.9) WRITE(IOIMP,5007) ITERA
  426. CALL CRILAM(ICRIT1,SIGMAT,SIGEL,DSIGP,ALFADV,ALFAD1,ALFAD2,VMELAS,
  427. .DPELAS,DPELA1,DPELA2,PORELA,PENTE1,PENTE2,PENTE3,YUNG,XNU,
  428. .DGLAM,DGLAMM,DGLAMP,DI,DL,ISOMET,KERRE)
  429. IF(IIMPI.EQ.9)
  430. .WRITE(IOIMP,5002) ICRIT1,DGLAMP,DGLAMM,DGLAM,DL,ITERA
  431. CALL DDFDS(ICRIT1,ALFADV,ALFAD1,ALFAD2,YUNG,XNU,SIGEL,SIGMAT,
  432. .DDF,KERRE)
  433. DO 100 III=1,6
  434. DSIGPR(III)=DSIGP(III)-DDF(III)*DGLAMP
  435. IF(IIMPI.EQ.9) WRITE(IOIMP,5005) SIGEL(III),DSIGPR(III)
  436. SIGMA(III)=SIGEL(III)-DDF(III)*DL
  437. DSIGMA(III)=DSIGPR(III)
  438. SIGMAT(III)=SIGMA(III)+DSIGMA(III)
  439. 100 CONTINUE
  440. IF(IIMPI.EQ.9) WRITE(IOIMP,7000) (SIGMA(I),I=1,6),
  441. . (DSIGMA(J),J=1,6),
  442. . (SIGMAT(K),K=1,6),(DDF(L),L=1,6),(DSIGP(M),M=1,6)
  443. GO TO 81
  444. C
  445. 120 IF(XX.GT.1.) XX=1.D0
  446. DELIX=1.D0-XX
  447. DO 121 III=1,6
  448. DSIGP(III)=DSIGP(III)*DELIX
  449. 121 CONTINUE
  450. XLMDF=(XLAMAX-XLAMBD(5)-DLAMBD(5))*2.D0/
  451. . (XLAMAX+XLAMBD(5)+DLAMBD(5))
  452. DIFLAM=XLAMBD(5)+DLAMBD(5)-XLAMER
  453. IF(DIFLAM.LT.0.D0) GO TO 123
  454. KASTR=2
  455. TRALIM=DPELA2/(3.D0*ALFAD2)
  456. IF(XLMDF.LE.PREC) TRALIM=0.D0
  457. IF(TRALIM.EQ.0.D0) LMIC5=1
  458. R1=R01
  459. R2=R02
  460. R3=R03
  461. IF(R1.GT.0.D0) R1=TRALIM
  462. IF(R2.GT.0.D0) R2=TRALIM
  463. IF(R3.GT.0.D0) R3=TRALIM
  464. 123 IF(IIMPI.EQ.9) WRITE(IOIMP,8000) DELIX,ICRIT1,ICRIT2
  465. IF(DELIX.LE.RFEP) GO TO 130
  466. IF(ICRIT1.EQ.5.AND.LMIC5.EQ.1) GO TO 180
  467. IF(ICRIT2.EQ.6.OR.JCRIT2.EQ.6) GO TO 140
  468. IF(ICRIT2.EQ.7.OR.JCRIT2.EQ.7) GO TO 140
  469. IF(KOUPLE.EQ.2) GO TO 150
  470. C
  471. C L ECOULEMENT SELON COUPLE
  472. C
  473. IF(IIMPI.EQ.9) WRITE(IOIMP,6008)
  474. 157 ICAS=ICRIT1+ICRIT2-2
  475. 153 IF(ICAS.NE.5) GO TO 60
  476. IF(ICRIT1.EQ.3.OR.ICRIT2.EQ.3) ICAS=8
  477. 60 IF(IIMPI.EQ.9) WRITE(IOIMP,8001) ICAS
  478. IF(IIMPI.EQ.9) WRITE(IOIMP,5003) (SIGEL(I),I=1,6)
  479. IF(IIMPI.EQ.9) WRITE(IOIMP,5004) (DSIGP(I),I=1,6)
  480. C
  481. CALL COUPLE(ICAS,ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,
  482. .DPELA2,PORELA,PENTE1,PENTE2,PENTE3,YUNG,XNU,SIGEL,DSIGP,DLAMBD,
  483. .XLAMBD,ICOUP,ICRIT1,ICRIT2,SIGMA,DSIGMA,SIGMAT,XX,IDED,LMIC5,
  484. .ICRIME,ICRIMT,XLAMAX,PREC,RFSG,RFEP,RFPR,KERRE)
  485. IF(ICOUP.EQ.0) GO TO 130
  486. GO TO (161,162,152),ICOUP
  487. WRITE(IOIMP,1003)
  488. KERRE=640
  489. RETURN
  490. C
  491. C IL RESTE ENCORE UN INCREMENT DE CONTRAINTE A ECOULER SUIVANT
  492. C LE CRITERE DE DRUCKER PRAGER FRAGILE FIXE
  493. C
  494. 180 IF(IIMPI.EQ.9) WRITE(IOIMP,6012)
  495. DO 181 I=1,6
  496. SIGMA(I)=SIGEL(I)
  497. DSIGMA(I)=DSIGP(I)
  498. SIGMAT(I)=SIGEL(I)+DSIGP(I)
  499. 181 CONTINUE
  500. ICRIT1=4
  501. ICRIME=5
  502. KASTR=2
  503. DPLAM=0.D0
  504. IDAM=IDAM+1
  505. GO TO 170
  506. C
  507. C IL N Y A PAS DE COUPLAGE
  508. C
  509. 161 IF(IIMPI.EQ.9) WRITE(IOIMP,5008)
  510. GO TO 1234
  511. 166 IF(IIMPI.EQ.9) WRITE(IOIMP,8004)
  512. 1234 DPLAM=0.D0
  513. IF(ICRIT1.NE.0) GO TO 170
  514. ITERA=0
  515. ITRI=0
  516. GO TO 160
  517. C
  518. C IL Y A COUPLAGE
  519. C
  520. 162 IF(IIMPI.EQ.9) WRITE(IOIMP,5009)
  521. DIFLAM=XLAMBD(5)-XLAMER
  522. XLMDF=(XLAMAX-XLAMBD(5))*2.D0/(XLAMAX+XLAMBD(5))
  523. IF(DIFLAM.LT.0.D0) GO TO 122
  524. KASTR=2
  525. TRALIM=DPELA2/(3.D0*ALFAD2)
  526. IF(XLMDF.LE.PREC) TRALIM=0.D0
  527. IF(TRALIM.EQ.0.D0) LMIC5=1
  528. R1=R01
  529. R2=R02
  530. R3=R03
  531. IF(R1.GT.0.D0) R1=TRALIM
  532. IF(R2.GT.0.D0) R2=TRALIM
  533. IF(R3.GT.0.D0) R3=TRALIM
  534. 122 IDAM=IDAM+1
  535. GO TO(333,163,163,333,164,165,164,163),ICAS
  536. WRITE(IOIMP,1004)
  537. KERRE=640
  538. RETURN
  539. 163 IF(IDED.EQ.0.OR.IDED.EQ.2) IDED=IDED+1
  540. GO TO 333
  541. 164 IF(IDED.EQ.0.OR.IDED.EQ.1) IDED=IDED+2
  542. IF(ICRIME.EQ.5) GO TO 166
  543. GO TO 333
  544. 165 IDED=3
  545. IF(ICRIME.EQ.5) GO TO 166
  546. GO TO 333
  547. C
  548. C COUPLAGE AVEC LA TRACTION
  549. C
  550. 140 DO 141 III=1,6
  551. SIGMAT(III)=SIGEL(III)+DSIGP(III)
  552. 141 CONTINUE
  553. ITRI=0
  554. ITERA=0
  555. XX=0.D0
  556. DPLAM=0.D0
  557. ITS=1
  558. DO 142 III=1,5
  559. XLAMBD(III)=XLAMBD(III)+DLAMBD(III)
  560. 142 CONTINUE
  561. DO 143 III=1,5
  562. DLAMBD(III)=0.D0
  563. 143 CONTINUE
  564. C
  565. C L ECOULEMENT SELON LE CRITERE DE LA TRACTION
  566. C
  567. 50 IF(IIMPI.EQ.9) WRITE(IOIMP,6006)
  568. CALL CRACK(SIGMAT,SIGEL,DSIGP,R1,R2,R3,TETAQ,ITRAC,ITENS,
  569. .ITENRZ,ITENTE,ITETA,IRZ,SIGMA,DSIGMA,YUNG,XNU,
  570. .ALFAD2,DPELA2,PENTE2,IBAB,ICTD,KASTR,PREC,RFSG,RFEP,RFPR,KERRE)
  571. IDAM=IDAM+1
  572. IF(ICTD.EQ.0) GO TO 333
  573. ICRIT1=0
  574. ITRI=0
  575. KASTR=2
  576. R01=R1
  577. R02=R2
  578. R03=R3
  579. GO TO 160
  580. C
  581. 150 IF(ICRIT1.EQ.ICRIT2.OR.ICRIT1.EQ.JCRIT2) GO TO 151
  582. KAT=ICRIT1+ICRIT2+JCRIT2
  583. IF(ICRIT1.EQ.4.OR.ICRIT2.EQ.4.OR.JCRIT2.EQ.4) GO TO 159
  584. IF(KAT.EQ.6) GO TO 152
  585. 159 IF(ICRIT1.LE.3) GO TO 157
  586. IF(ICRIT1.GT.5) GO TO 158
  587. ICRIT2=JCRIT2
  588. GO TO 157
  589. 158 WRITE(IOIMP,1005) ICRIT1,ICRIT2,JCRIT2
  590. KERRE=640
  591. RETURN
  592. C
  593. C UN CAS DE COUPLAGE
  594. C
  595. 151 ICAS=ICRIT2+JCRIT2-2
  596. GO TO 153
  597. C
  598. C L ECOULEMENT SELON TRIPLE
  599. C
  600. 152 IF(IIMPI.EQ.9) WRITE(IOIMP,6009)
  601. CALL TRIPLE(ALFADV,ALFAD1,ALFAD2,VMELAS,DPELAS,DPELA1,DPELA2,
  602. .PORELA,PENTE1,PENTE2,PENTE3,YUNG,XNU,SIGEL,DSIGP,DLAMBD,XLAMBD,
  603. .ICOUP,ICAS,ICRIT1,ICRIT2,ICRIME,ICRIMT,SIGMA,DSIGMA,XX,
  604. .PREC,RFSG,RFEP,RFPR,KERRE)
  605. IF(ICOUP.EQ.0) GO TO 130
  606. GO TO(154,155,156),ICOUP
  607. WRITE(IOIMP,1007)
  608. KERRE=640
  609. RETURN
  610. C
  611. C IL N Y A PAS DE TRIPLAGE NI DE COUPLAGE
  612. C
  613. 154 IF(IIMPI.EQ.9) WRITE(IOIMP,5013)
  614. DPLAM=0.D0
  615. GO TO 170
  616. C
  617. C IL N Y A PAS DE TRIPLAGE MAIS IL Y A COUPLAGE
  618. C
  619. 155 IF(IIMPI.EQ.9) WRITE(IOIMP,6010)
  620. GO TO 60
  621. C
  622. C IL Y A TRIPLAGE
  623. C
  624. 156 IF(IIMPI.EQ.9) WRITE(IOIMP,6011)
  625. IF(IDED.EQ.0.OR.IDED.EQ.2) IDED=IDED+1
  626. GO TO 333
  627. C
  628. C LA SORTIE
  629. C
  630. 40 IF(IIMPI.EQ.9) WRITE(IOIMP,6000)
  631. IF(IDAM.LE.1) RETURN
  632. C
  633. DO 41 III=1,6
  634. SIGEL(III)=SIGMAT(III)
  635. 41 CONTINUE
  636. DO 42 I=1,5
  637. XLAMBD(I)=XLAMBD(I)+DLAMBD(I)
  638. 42 CONTINUE
  639. GO TO 333
  640. C
  641. 130 IF(IIMPI.EQ.9) WRITE(IOIMP,6007)
  642. DO 131 I=1,5
  643. 131 XLAMBD(I)=XLAMBD(I)+DLAMBD(I)
  644. ICOUP=1
  645. GO TO 333
  646. C
  647. C CALCUL DES CRITERES APRES LA CONVERGENCE
  648. C
  649. 333 IF(IIMPI.EQ.9) WRITE(IOIMP,5010)
  650. DO 4444 KLM=1,5
  651. CALL KRITER(KLM,ALFADV,ALFAD1,ALFAD2,VMELA0,DPELAS,DPELA1,DPEL20,
  652. .POREL0,PENTE1,PENTE2,PENTE3,XLAMBD(KLM),SIGEL,FSIG,FCRIT,KERRE)
  653. DLAMBD(KLM)=XLAMBD(KLM)-XLAMBO(KLM)
  654. SIS(KLM)=FSIG
  655. CRI(KLM)=FCRIT
  656. IF(IIMPI.EQ.9) WRITE(IOIMP,5011) KLM,FSIG,FCRIT,DLAMBD(KLM),
  657. . XLAMBD(KLM)
  658. 4444 CONTINUE
  659. C
  660. IF(IIMPI.EQ.9) WRITE(IOIMP,5012) IDAM,
  661. . (SIGEL(I),I=1,6),(DSIGP(J),J=1,6)
  662. C
  663. 1000 FORMAT(1X,'ERREUR DANS DAMAGE DANS LA VALEUR DE ICRIT1')
  664. 1003 FORMAT(1X,'ERREUR DANS DAMAGE DANS LA VALEUR DE ICOUP APRES ',
  665. . 'COUPLE')
  666. 1004 FORMAT(1X,'ERREUR DANS DAMAGE DANS LA VALEUR DE ICAS APRES ',
  667. . 'COUPLAGE')
  668. 1005 FORMAT(1X,'ERREUR DANS DAMAGE KOUPLE=2',/,
  669. . 1X,'ICRIT1=',I4,1X,'ICRIT2=',I4,1X,'JCRIT2=',I4)
  670. 1006 FORMAT(1X,'ERREUR DANS DAMAGE CAS DE DECHARGE ICRIT1=',I4)
  671. 1007 FORMAT(1X,'ERREUR DANS DAMAGE DANS LA VALEUR DE ICOUP APRES ',
  672. . 'TRIPLE')
  673. 1010 FORMAT(1X,'ERREUR DANS DAMAGE DLAMBD(',I1,') EST NEGATIF',
  674. . 1X,'DLAMBD=',1PD12.5)
  675. 1011 FORMAT(1X,'ERREUR DANS DAMAGE ON N ARRIVE PAS A CONVERGER',/,
  676. . 1X,'ICRIT1=',I4,1X,'ITERA =',I4,1X,'DPLAM =',1PD12.5,/,
  677. . 1X,'DLAMBD=',D12.5,1X,'TEST =',1PD12.5)
  678. 5000 FORMAT(1X,'ICRIT1=',I4,/,1X,'DLAMBD=',1PD12.5,/,4(8X,1PD12.5,/),
  679. . 1X,'ITERA =',I4,1X,'DPLAM =',1PD12.5)
  680. 5001 FORMAT(1X,'ON EST DANS DAMAGE APRES CALL KRITER '/
  681. . 1X,'ICRIT1=',I4,1X,'ICRIME=',I4,1X,'ICRIMT=',I4,/,
  682. . 1X,'VMELAS=',1PD12.5,1X,'DPELAS=',1PD12.5,
  683. . 1X,'DPELA1=',1PD12.5,1X,'DPELA2=',1PD12.5,/,
  684. . 1X,'PORELA=',1PD12.5,1X,'DPLAM =',1PD12.5,
  685. . 1X,'FSIG =',1PD12.5,1X,'FCRIT =',1PD12.5,/,
  686. . 1X,'SIGEL =',6(1PD12.5,1X),/,
  687. . 1X,'DSIGP =',6(1PD12.5,5X))
  688. 5002 FORMAT(1X,'ON EST DANS DAMAGE APRES LE CALL CRILAM ',/,
  689. . 1X,'ICRIT1=',I4,1X,'DGLAMP=',1PD12.5,1X,'DGLAMM=',1PD12.5,
  690. . 1X,'DGLAM =',1PD12.5,1X,'DL =',1PD12.5,1X,'ITERA =',I4)
  691. 5003 FORMAT(1X,'SIGEL =',6(1X,1PD12.5))
  692. 5004 FORMAT(1X,'DSIGP =',6(1X,1PD12.5))
  693. 5005 FORMAT(1X,'SIGEL =',1PD12.5,1X,'DSIGPR=',1PD12.5)
  694. 5006 FORMAT(1X,'XX =',1PD12.5,1X,'GAMIN =',1PD12.5)
  695. 5007 FORMAT(1X,'ITERA =',I4)
  696. 5008 FORMAT(1X,'IL N Y A PAS DE COUPLAGE')
  697. 5009 FORMAT(1X,'IL Y A COUPLAGE')
  698. 5010 FORMAT(1X,'ICRIT',6X,'FSIG',11X,'FCRIT',10X,'DLAMBD',9X,'XLAMBD')
  699. 5011 FORMAT(3X,I1,4(5X,1PD12.5))
  700. 5012 FORMAT(1X,'IDAM =',I4,/,
  701. . 1X,'SIGEL =',6(1X,1PD12.5),/,
  702. . 1X,'DSIGP =',6(1X,1PD12.5))
  703. 5013 FORMAT(1X,'IL N Y A PAS DE TRIPLAGE NI DE COUPLAGE')
  704. 5020 FORMAT(1X,'IL N Y A PAS D ENDOMMAGEMENT ON DECHARGE')
  705. 5107 FORMAT(1X,'DPLAM =',1PD12.5,1X,'DLAMBD=',1PD12.5,
  706. . 1X,'TEST =',1PD12.5)
  707. 5108 FORMAT(1X,'FCRIT =',1PD12.5,1X,'TEST1 =',1PD12.5,
  708. . 1X,'TEST =',1PD12.5)
  709. 6000 FORMAT(1X,'IL N Y A PAS D ENDOMMAGEMENT')
  710. 6001 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE LA POROSITE (1)')
  711. 6002 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE DRUCKER DUCTILE (2)')
  712. 6003 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE VON MISES (3)')
  713. 6004 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE DRUCKER FRAGILE (4)')
  714. 6005 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE DRUCKER FRAGILE ',
  715. .'ECR. (5)')
  716. 6006 FORMAT(1X,'L ECOULEMENT SELON LE CRITERE DE LA TRACTION')
  717. 6007 FORMAT(1X,'L ECOULEMENT SELON UN SEUL CRITERE')
  718. 6008 FORMAT(1X,'L ECOULEMENT SELON COUPLE')
  719. 6009 FORMAT(1X,'L ECOULEMENT SELON TRIPLE')
  720. 6010 FORMAT(1X,'IL N Y A PAS DE TRIPLAGE MAIS IL Y A COUPLAGE')
  721. 6011 FORMAT(1X,'IL Y A TRIPLAGE')
  722. 6012 FORMAT(1X,'IL RESTE ENCORE UN INCREMENT DE CONTRAINTE ',
  723. .'A ECOULER SUIVANT',/,1X,'LE CRITERE DE DRUCKER FRAGILE FIXE')
  724. 7000 FORMAT(1X,'SIGMA =',6(1X,1PD12.5),/,1X,'DSIGMA=',6(1X,1PD12.5),/,
  725. . 1X,'SIGMAT=',6(1X,1PD12.5),/,
  726. . 1X,'DDF =',6(1X,1PD12.5),/,1X,'DSIGP =',6(1X,1PD12.5))
  727. 7001 FORMAT(1X,'ERREUR DANS DAMAGE IDAM EST PLUS GRAND QUE 10 ')
  728. 8000 FORMAT(1X,'DELIX =',1PD12.5,1X,'ICRIT1=',I4,1X,'ICRIT2=',I4)
  729. 8001 FORMAT(1X,'ICAS =',I4)
  730. 8002 FORMAT(1X,'DGAM =',1PD12.5,1X,'GAMINI=',1PD12.5,
  731. . 1X,'DPLMAX=',1PD12.5,/,
  732. . 1X,'XX ',1PD12.5,1X,'DPLAM =',1PD12.5)
  733. 8004 FORMAT(1X,'IL Y A COUPLAGE MAIS IL RESTE ENCORE DE L INCREMENT DE
  734. .CONTRAINTES')
  735. 9006 FORMAT(1X,'ON EST DANS DAMAGE APRES LE 2-EME APPEL A TRIAGE '/
  736. .1X,'KOUPLE=',I4,1X,'ICRIT1=',I4,1X,'IMIN =',I4,1X,'JMIN =',I4,/,
  737. .1X,'GAMIN =',1PD12.5)
  738. 9999 FORMAT(1X,'ON EST EN TETE DE DAMAGE ',/,
  739. . 2(7(1X,1PD12.5)/),5(1X,1PD12.5)/4(6(1X,1PD12.5)/),
  740. . 7(1X,1PD12.5),1X,I4,1X,I4)
  741. C
  742. RETURN
  743. END
  744.  
  745.  

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