Télécharger castet.eso

Retour à la liste

Numérotation des lignes :

  1. C CASTET SOURCE CHAT 05/01/12 21:49:32 5004
  2. SUBROUTINE CASTET(SIGPA,SIGPB,SIGNA,SIGNB,SIGTO,SIGCO,EPSPA,EPSPB,
  3. . EPSNA,EPSNB,SIGSUP,SIGINF,EPSUP,EPINF,EPSO,RMOD,SIGO,DSIG,
  4. . NUMETA,EPSEQ,IECRAS,SIGND,EPSND,SIGNC,EPSNC,SIGPC,EPSPC,SIGPD,
  5. . EPSPD,SIGBET,EPSBET,IPRECI,IIMPI,KERRE)
  6. C
  7. C S.P. APPELE PAR BETON MODELE DE CYCLAGE POUR POUTRE BETON ARME
  8. C ENTREE : DSIG=DSIG ELAS ----- SORTIE : DSIG=SIG. FINAL
  9. C
  10. C COURBE DEMI-SQUELETTE :
  11. C O-A PARTIE 1 CHARGE ET DECHARGE ELASTIQUE
  12. C A-B PARTIE 2 PLASTIQUE DECHARGE PASSANT PAR ORIGINE
  13. C B-C-D PARTIE 3 PLASTIQUE DECHARGE AVEC MODULE FINAL
  14. C
  15. C L ETAT DE L ELEMENT EST DEFINI PAR L INDICE MULTIPLE NUMETA(I) :
  16. C LE 1ER CHIFFRE INDIQUE LA PARTIE MAXI ATTEINTE SUR LA COURBE POSITIVE
  17. C LE 2EME CHIFFRE INDIQUE LA PARTIE MINI ATTEINTE SUR LA COURBE NEGATIVE
  18. C LE 3EME CHIFFRE INDIQUE LA POSITION DE SIGO(I) DANS LE DIAGRAMME :
  19. C 1 : SIGO EST SUR LA COURBE POSITIVE
  20. C 2 : SIGO EST DANS LA ZONE POSITIVE MAIS HORS DE LA COURBE
  21. C 3 : SIGO EST SUR LA COURBE NEGATIVE
  22. C 4 : SIGO EST DANS LA ZONE NEGATIVE MAIS HORS DE LA COURBE
  23. C LE 4EME CHIFFRE INDIQUE LA PARTIE DE LA COURBE OU EST SIGO(I)
  24. C
  25. C COURBE EN 4 POINTS (CAS ORDINAIRE) :
  26. C - SIGNB,SIGNA,0,SIGPA,SIGPB +
  27. C COURBE EN 8 POINTS (CAS ECRASEMENT) :
  28. C - SIGND,SIGNC,SIGNB,SIGNA,0,SIGPA,SIGPB,SIGPC,SIGPD +
  29. C COURBE EN 16 POINTS (CAS PRECISION) :
  30. C - SIGND,SIGNC,SIGBET(,1),SIGBET(,2),SIGNB,SIGBET(,3),SIGBET(,4)
  31. C SIGNA,0,SIGPA,
  32. C SIGBET(,5),SIGBET(,6),SIGPB,SIGBET(,7),SIGBET(,8),SIGPC,SIGPD +
  33. C
  34. C EPSO,SIGO : ETAT INITIAL
  35. C EPINF,SIGINF : ETAT EXTREME ATTEINT SUR LA COURBE NEGATIVE
  36. C EPSUP,SIGSUP : ETAT EXTREME ATTEINT SUR LA COURBE POSITIVE
  37. C EPSEQ : DEFORMATION PLASTIQUE EQUIVALENTE
  38. C
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8(A-H,O-Z)
  41. *
  42. DIMENSION RMOD(4),SIGO(4),DSIG(4),EPSO(2),NUMETA(2),EPSPLA(4)
  43. 1,SIGPA(2),SIGPB(2),SIGNA(2),SIGNB(2),SIGSUP(2),SIGINF(2)
  44. 2,EPSPA(2),EPSPB(2),EPSNA(2),EPSNB(2),EPSUP(2),EPINF(2)
  45. 3,SIGND(2),SIGNC(2),SIGPC(2),SIGPD(2),EPSND(2),EPSNC(2),EPSPC(2)
  46. 4,EPSPD(2),SIGBET(2,8),EPSBET(2,8)
  47. C
  48. DEPSEQ=0.
  49. DO 950 I=1,4
  50. IF(DSIG(I).NE.0.) GO TO 5
  51. DSIG(I)=SIGO(I)
  52. GO TO 950
  53. 5 EPSTOT=0.
  54. EPSIN=0.
  55. DEPS=DSIG(I)/RMOD(I)
  56. SIGEL=SIGO(I)+DSIG(I)
  57. IF(IIMPI.EQ.16)THEN
  58. WRITE(6,*) 'RMOD(',I,') =',RMOD(I)
  59. WRITE(6,*) 'SIGO(',I,') =',SIGO(I)
  60. WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  61. WRITE(6,*) 'SIGEL =',SIGEL
  62. WRITE(6,*) 'EPSO(',I,') =',EPSO(I)
  63. WRITE(6,*) 'DEPS =',DEPS
  64. ENDIF
  65. GO TO(40,40,10,20),I
  66. C
  67. C TORSION : PLASTIQUE PARFAIT
  68. C
  69. 10 SIGF=SIGO(I)+DSIG(I)
  70. IF(IIMPI.EQ.16) WRITE(6,*) 'SIGF =',SIGF,'SIGTO =',SIGTO
  71. IF(SIGF.GT.SIGTO) DSIG(I)=SIGTO-SIGO(I)
  72. IF(SIGF.LT.(-SIGTO)) DSIG(I)=-SIGTO-SIGO(I)
  73. GO TO 900
  74. C
  75. C COMPRESSION : PLASTIQUE PARFAIT
  76. C
  77. 20 SIGF=SIGO(I)+DSIG(I)
  78. IF(IIMPI.EQ.16) WRITE(6,*) 'SIGF =',SIGF,'SIGCO =',SIGCO
  79. IF(SIGF.GT.SIGCO) DSIG(I)=SIGCO-SIGO(I)
  80. IF(SIGF.LT.(-SIGCO)) DSIG(I)=-SIGCO-SIGO(I)
  81. GO TO 900
  82. C
  83. 40 EPSIN=EPSO(I)
  84. IF(IIMPI.EQ.16) WRITE(6,*) 'NUMETA(',I,') =',NUMETA(I)
  85. IEP=NUMETA(I)/1000
  86. IEM=NUMETA(I)/100
  87. IF(IIMPI.EQ.16) WRITE(6,*) 'IEP =',IEP
  88. NUMETA(I)=NUMETA(I)-100*IEM
  89. IF(IIMPI.EQ.16) WRITE(6,*) 'NUMETA(',I,') =',NUMETA(I)
  90. IEM=IEM-10*IEP
  91. IF(IIMPI.EQ.16) WRITE(6,*) 'IEM =',IEM
  92. EPSTOT=EPSIN+DEPS
  93. IF(IIMPI.EQ.16)THEN
  94. WRITE(6,*) 'SIGPA(',I,') =',SIGPA(I)
  95. WRITE(6,*) 'EPSPA(',I,') =',EPSPA(I)
  96. WRITE(6,*) 'SIGPB(',I,') =',SIGPB(I)
  97. WRITE(6,*) 'EPSPB(',I,') =',EPSPB(I)
  98. WRITE(6,*) 'SIGPC(',I,') =',SIGPC(I)
  99. WRITE(6,*) 'EPSPC(',I,') =',EPSPC(I)
  100. WRITE(6,*) 'SIGPD(',I,') =',SIGPD(I)
  101. WRITE(6,*) 'EPSPD(',I,') =',EPSPD(I)
  102. WRITE(6,*) 'SIGNA(',I,') =',SIGNA(I)
  103. WRITE(6,*) 'EPSNA(',I,') =',EPSNA(I)
  104. WRITE(6,*) 'SIGNB(',I,') =',SIGNB(I)
  105. WRITE(6,*) 'EPSNB(',I,') =',EPSNB(I)
  106. WRITE(6,*) 'SIGNC(',I,') =',SIGNC(I)
  107. WRITE(6,*) 'EPSNC(',I,') =',EPSNC(I)
  108. WRITE(6,*) 'SIGND(',I,') =',SIGND(I)
  109. WRITE(6,*) 'EPSND(',I,') =',EPSND(I)
  110. WRITE(6,*) 'EPSTOT =',EPSTOT
  111. WRITE(6,*) 'SIGSUP(',I,') =',SIGSUP(I)
  112. WRITE(6,*) 'EPSUP(',I,') =',EPSUP(I)
  113. WRITE(6,*) 'SIGINF(',I,') =',SIGINF(I)
  114. WRITE(6,*) 'EPINF(',I,') =',EPINF(I)
  115. ENDIF
  116. IF(SIGO(I)*DSIG(I)) 450,45,50
  117. 45 IF(NUMETA(I).NE.0) GO TO 50
  118. NUMETA(I)=11
  119. IF(DSIG(I).LT.0) NUMETA(I)=31
  120. C
  121. C CHARGE
  122. C
  123. 50 ICAS=NUMETA(I)/10
  124. IF(IIMPI.EQ.16) WRITE(6,*) 'ICAS=',ICAS
  125. GO TO(100,200,300,400),ICAS
  126. C
  127. C (SIGO,EPSO) SUR LA COURBE COTE POSITIF
  128. 100 IF(EPSUP(I).LT.EPSTOT) EPSUP(I)=EPSTOT
  129. IF(IIMPI.EQ.16) WRITE(6,*) 'EPSUP(',I,') =',EPSUP(I)
  130. JCAS=NUMETA(I)-10
  131. IF(IIMPI.EQ.16) WRITE(6,*) 'JCAS=',JCAS
  132. GO TO(110,120,125),JCAS
  133. 110 IF(EPSTOT.GT.EPSPA(I)) GO TO 115
  134. IF(SIGSUP(I).LT.(SIGO(I)+DSIG(I))) SIGSUP(I)=SIGO(I)+DSIG(I)
  135. NUMETA(I)=11
  136. GO TO 900
  137. 115 IF(EPSTOT.GT.EPSPB(I)) GO TO 125
  138. IF(IPRECI.EQ.1) GO TO 1151
  139. DSIG(I)=SIGPA(I)-SIGO(I)+(EPSTOT-EPSPA(I))*(SIGPB(I)-SIGPA(I))
  140. 1/(EPSPB(I)-EPSPA(I))
  141. GO TO 1156
  142. 1151 IF(EPSTOT.GT.EPSBET(I,5)) GO TO 1152
  143. DSIG(I)=SIGPA(I)-SIGO(I)+(EPSTOT-EPSPA(I))
  144. 1 *(SIGBET(I,5)-SIGPA(I))/(EPSBET(I,5)-EPSPA(I))
  145. GO TO 1156
  146. 1152 IF(EPSTOT.GT.EPSBET(I,6)) GO TO 1154
  147. DSIG(I)=SIGBET(I,5)-SIGO(I)+(EPSTOT-EPSBET(I,5))
  148. 1 *(SIGBET(I,6)-SIGBET(I,5))/(EPSBET(I,6)-EPSBET(I,5))
  149. GO TO 1156
  150. 1154 DSIG(I)=SIGBET(I,6)-SIGO(I)+(EPSTOT-EPSBET(I,6))
  151. 1 *(SIGPB(I)-SIGBET(I,6))/(EPSPB(I)-EPSBET(I,6))
  152. 1156 CONTINUE
  153. IF(SIGSUP(I).LT.(SIGO(I)+DSIG(I))) SIGSUP(I)=SIGO(I)+DSIG(I)
  154. NUMETA(I)=12
  155. IEP=2
  156. GO TO 900
  157. 120 IF(EPSTOT.GT.EPSPB(I)) GO TO 125
  158. IF(IPRECI.EQ.1) GO TO 1211
  159. DSIG(I)=DEPS*(SIGPB(I)-SIGPA(I))/(EPSPB(I)-EPSPA(I))
  160. GO TO 1240
  161. 1211 IF(EPSO(I).GT.EPSBET(I,5)) GO TO 1220
  162. IF(EPSTOT.GT.EPSBET(I,5)) GO TO 1212
  163. DSIG(I)=DEPS*(SIGBET(I,5)-SIGPA(I))/(EPSBET(I,5)-EPSPA(I))
  164. GO TO 1240
  165. 1212 IF(EPSTOT.GT.EPSBET(I,6)) GO TO 1214
  166. DSIG(I)=SIGBET(I,5)-SIGO(I)+(EPSTOT-EPSBET(I,5))
  167. 1 *(SIGBET(I,6)-SIGBET(I,5))/(EPSBET(I,6)-EPSBET(I,5))
  168. GO TO 1240
  169. 1214 DSIG(I)=SIGBET(I,6)-SIGO(I)+(EPSTOT-EPSBET(I,6))
  170. 1 *(SIGPB(I)-SIGBET(I,6))/(EPSPB(I)-EPSBET(I,6))
  171. GO TO 1240
  172. 1220 IF(EPSO(I).GT.EPSBET(I,6)) GO TO 1230
  173. IF(EPSTOT.GT.EPSBET(I,6)) GO TO 1224
  174. DSIG(I)=DEPS*(SIGBET(I,6)-SIGBET(I,5))/(EPSBET(I,6)-EPSBET(I,5))
  175. GO TO 1240
  176. 1224 DSIG(I)=SIGBET(I,6)-SIGO(I)+(EPSTOT-EPSBET(I,6))
  177. 1 *(SIGPB(I)-SIGBET(I,6))/(EPSPB(I)-EPSBET(I,6))
  178. GO TO 1240
  179. 1230 DSIG(I)=DEPS*(SIGPB(I)-SIGBET(I,6))/(EPSPB(I)-EPSBET(I,6))
  180. 1240 CONTINUE
  181. IF(SIGSUP(I).LT.(SIGO(I)+DSIG(I))) SIGSUP(I)=SIGO(I)+DSIG(I)
  182. GO TO 900
  183. 125 CONTINUE
  184. IF(IECRAS.EQ.0) GO TO 130
  185. IF(EPSTOT.GT.EPSPC(I)) GO TO 135
  186. IF(IPRECI.EQ.1) GO TO 1261
  187. DSIG(I)=SIGPB(I)-SIGO(I)+(EPSTOT-EPSPB(I))*(SIGPC(I)-SIGPB(I))
  188. 1/(EPSPC(I)-EPSPB(I))
  189. GO TO 1290
  190. 1261 IF(EPSO(I).GT.EPSBET(I,7)) GO TO 1270
  191. IF(EPSTOT.GT.EPSBET(I,7)) GO TO 1262
  192. DSIG(I)=DEPS*(SIGBET(I,7)-SIGPB(I))/(EPSBET(I,7)-EPSPB(I))
  193. GO TO 1290
  194. 1262 IF(EPSTOT.GT.EPSBET(I,8)) GO TO 1264
  195. DSIG(I)=SIGBET(I,7)-SIGO(I)+(EPSTOT-EPSBET(I,7))
  196. 1 *(SIGBET(I,8)-SIGBET(I,7))/(EPSBET(I,8)-EPSBET(I,7))
  197. GO TO 1290
  198. 1264 DSIG(I)=SIGBET(I,8)-SIGO(I)+(EPSTOT-EPSBET(I,8))
  199. 1 *(SIGPC(I)-SIGBET(I,8))/(EPSPC(I)-EPSBET(I,8))
  200. GO TO 1290
  201. 1270 IF(EPSO(I).GT.EPSBET(I,8)) GO TO 1280
  202. IF(EPSTOT.GT.EPSBET(I,8)) GO TO 1274
  203. DSIG(I)=DEPS*(SIGBET(I,8)-SIGBET(I,7))/(EPSBET(I,8)-EPSBET(I,7))
  204. GOTO 1290
  205. 1274 DSIG(I)=SIGBET(I,8)-SIGO(I)+(EPSTOT-EPSBET(I,8))
  206. 1 *(SIGPC(I)-SIGBET(I,8))/(EPSPC(I)-EPSBET(I,8))
  207. GO TO 1290
  208. 1280 DSIG(I)=DEPS*(SIGPC(I)-SIGBET(I,8))/(EPSPC(I)-EPSBET(I,8))
  209. 1290 CONTINUE
  210. GO TO 180
  211. 130 DSIG(I)=SIGPB(I)-SIGO(I)
  212. GO TO 180
  213. 135 IF(EPSTOT.GT.EPSPD(I)) GO TO 145
  214. DSIG(I)=SIGPC(I)-SIGO(I)+(EPSTOT-EPSPC(I))*(SIGPD(I)-SIGPC(I))
  215. 1/(EPSPD(I)-EPSPC(I))
  216. GO TO 180
  217. 145 DSIG(I)=SIGPD(I)-SIGO(I)
  218. 180 IF(SIGSUP(I).LT.(SIGO(I)+DSIG(I))) SIGSUP(I)=SIGO(I)+DSIG(I)
  219. NUMETA(I)=13
  220. IEP=3
  221. GO TO 900
  222. C
  223. C (SIGO,EPSO) HORS DE LA COURBE COTE POSITIF
  224. 200 DFSUP=EPSUP(I)
  225. CONSUP=SIGSUP(I)
  226. IF(SIGSUP(I).LT.SIGPA(I)) CONSUP=SIGPA(I)
  227. IF(EPSUP(I).LT.EPSPA(I)) DFSUP=EPSPA(I)
  228. IF(EPSTOT.GE.DFSUP) GO TO 205
  229. DSIG(I)=DEPS*(CONSUP-SIGO(I))/(DFSUP-EPSIN+1.D-20)
  230. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  231. GO TO 900
  232. 205 JCAS=NUMETA(I)-20
  233. IF(EPSUP(I).LT.EPSTOT) EPSUP(I)=EPSTOT
  234. GO TO(210,115,125),JCAS
  235. 210 IF(EPSTOT.GT.EPSPA(I)) GO TO 115
  236. DSIG(I)=DEPS*(CONSUP-SIGO(I))/(DFSUP-EPSIN+1.D-20)
  237. IF(SIGSUP(I).LT.(SIGO(I)+DSIG(I))) SIGSUP(I)=SIGO(I)+DSIG(I)
  238. NUMETA(I)=11
  239. GO TO 900
  240. C
  241. C (SIGO,EPSO) SUR LA COURBE COTE NEGATIF
  242. 300 IF(EPINF(I).GT.EPSTOT) EPINF(I)=EPSTOT
  243. JCAS=NUMETA(I)-30
  244. IF(IIMPI.EQ.16) WRITE(6,*) 'JCAS=',JCAS
  245. GO TO(310,320,325),JCAS
  246. 310 IF(EPSTOT.LT.EPSNA(I)) GO TO 315
  247. IF(SIGINF(I).GT.(SIGO(I)+DSIG(I))) SIGINF(I)=SIGO(I)+DSIG(I)
  248. NUMETA(I)=31
  249. GO TO 900
  250. 315 IF(EPSTOT.LT.EPSNB(I)) GO TO 325
  251. IF(IPRECI.EQ.1) GO TO 3151
  252. DSIG(I)=SIGNA(I)-SIGO(I)+(EPSTOT-EPSNA(I))*(SIGNB(I)-SIGNA(I))
  253. 1/(EPSNB(I)-EPSNA(I))
  254. GO TO 3156
  255. 3151 IF(EPSTOT.LT.EPSBET(I,4)) GO TO 3152
  256. DSIG(I)=SIGNA(I)-SIGO(I)+(EPSTOT-EPSNA(I))
  257. 1 *(SIGBET(I,4)-SIGNA(I))/(EPSBET(I,4)-EPSNA(I))
  258. GO TO 3156
  259. 3152 IF(EPSTOT.LT.EPSBET(I,3)) GO TO 3154
  260. DSIG(I)=SIGBET(I,4)-SIGO(I)+(EPSTOT-EPSBET(I,4))
  261. 1 *(SIGBET(I,3)-SIGBET(I,4))/(EPSBET(I,3)-EPSBET(I,4))
  262. GO TO 3156
  263. 3154 DSIG(I)=SIGBET(I,3)-SIGO(I)+(EPSTOT-EPSBET(I,3))
  264. 1 *(SIGNB(I)-SIGBET(I,3))/(EPSNB(I)-EPSBET(I,3))
  265. 3156 CONTINUE
  266. IF(SIGINF(I).GT.(SIGO(I)+DSIG(I))) SIGINF(I)=SIGO(I)+DSIG(I)
  267. NUMETA(I)=32
  268. IEM=2
  269. GO TO 900
  270. 320 IF(EPSTOT.LT.EPSNB(I)) GO TO 325
  271. IF(IPRECI.EQ.1) GO TO 3211
  272. DSIG(I)=DEPS*(SIGNB(I)-SIGNA(I))/(EPSNB(I)-EPSNA(I))
  273. GO TO 3240
  274. 3211 IF(EPSO(I).LT.EPSBET(I,4)) GO TO 3220
  275. IF(EPSTOT.LT.EPSBET(I,4)) GO TO 3212
  276. DSIG(I)=DEPS*(SIGBET(I,4)-SIGNA(I))/(EPSBET(I,4)-EPSNA(I))
  277. GO TO 3240
  278. 3212 IF(EPSTOT.LT.EPSBET(I,3)) GO TO 3214
  279. DSIG(I)=SIGBET(I,4)-SIGO(I)+(EPSTOT-EPSBET(I,4))
  280. 1 *(SIGBET(I,3)-SIGBET(I,4))/(EPSBET(I,3)-EPSBET(I,4))
  281. GO TO 3240
  282. 3214 DSIG(I)=SIGBET(I,3)-SIGO(I)+(EPSTOT-EPSBET(I,3))
  283. 1 *(SIGNB(I)-SIGBET(I,3))/(EPSNB(I)-EPSBET(I,3))
  284. GO TO 3240
  285. 3220 IF(EPSO(I).LT.EPSBET(I,3)) GO TO 3230
  286. IF(EPSTOT.LT.EPSBET(I,3)) GO TO 3224
  287. DSIG(I)=DEPS*(SIGBET(I,3)-SIGBET(I,4))/(EPSBET(I,3)-EPSBET(I,4))
  288. GO TO 3240
  289. 3224 DSIG(I)=SIGBET(I,3)-SIGO(I)+(EPSTOT-EPSBET(I,3))
  290. 1 *(SIGNB(I)-SIGBET(I,3))/(EPSNB(I)-EPSBET(I,3))
  291. GO TO 3240
  292. 3230 DSIG(I)=DEPS*(SIGNB(I)-SIGBET(I,3))/(EPSNB(I)-EPSBET(I,3))
  293. 3240 CONTINUE
  294. IF(SIGINF(I).GT.(SIGO(I)+DSIG(I))) SIGINF(I)=SIGO(I)+DSIG(I)
  295. GO TO 900
  296. 325 CONTINUE
  297. IF(IECRAS.EQ.0) GO TO 330
  298. IF(EPSTOT.LT.EPSNC(I)) GO TO 335
  299. IF(IPRECI.EQ.1) GO TO 3261
  300. DSIG(I)=SIGNB(I)-SIGO(I)+(EPSTOT-EPSNB(I))*(SIGNC(I)-SIGNB(I))
  301. 1/(EPSNC(I)-EPSNB(I))
  302. GO TO 3290
  303. 3261 IF(EPSO(I).LT.EPSBET(I,2)) GO TO 3270
  304. IF(EPSTOT.LT.EPSBET(I,2)) GO TO 3262
  305. DSIG(I)=DEPS*(SIGBET(I,2)-SIGNB(I))/(EPSBET(I,2)-EPSNB(I))
  306. GO TO 3290
  307. 3262 IF(EPSTOT.LT.EPSBET(I,1)) GO TO 3264
  308. DSIG(I)=SIGBET(I,2)-SIGO(I)+(EPSTOT-EPSBET(I,2))
  309. 1 *(SIGBET(I,1)-SIGBET(I,2))/(EPSBET(I,1)-EPSBET(I,2))
  310. GO TO 3290
  311. 3264 DSIG(I)=SIGBET(I,1)-SIGO(I)+(EPSTOT-EPSBET(I,1))
  312. 1 *(SIGNC(I)-SIGBET(I,1))/(EPSNC(I)-EPSBET(I,1))
  313. GO TO 3290
  314. 3270 IF(EPSO(I).LT.EPSBET(I,1)) GO TO 3280
  315. IF(EPSTOT.LT.EPSBET(I,1)) GO TO 3274
  316. DSIG(I)=DEPS*(SIGBET(I,1)-SIGBET(I,2))/(EPSBET(I,1)-EPSBET(I,2))
  317. GOTO 3290
  318. 3274 DSIG(I)=SIGBET(I,1)-SIGO(I)+(EPSTOT-EPSBET(I,1))
  319. 1 *(SIGNC(I)-SIGBET(I,1))/(EPSNC(I)-EPSBET(I,1))
  320. GO TO 3290
  321. 3280 DSIG(I)=DEPS*(SIGNC(I)-SIGBET(I,1))/(EPSNC(I)-EPSBET(I,1))
  322. 3290 CONTINUE
  323. GO TO 380
  324. 330 DSIG(I)=SIGNB(I)-SIGO(I)
  325. GO TO 380
  326. 335 IF(EPSTOT.LT.EPSND(I)) GO TO 345
  327. DSIG(I)=SIGNC(I)-SIGO(I)+(EPSTOT-EPSNC(I))*(SIGND(I)-SIGNC(I))
  328. 1/(EPSND(I)-EPSNC(I))
  329. GO TO 380
  330. 345 DSIG(I)=SIGND(I)-SIGO(I)
  331. 380 IF(SIGINF(I).GT.(SIGO(I)+DSIG(I))) SIGINF(I)=SIGO(I)+DSIG(I)
  332. NUMETA(I)=33
  333. IEM=3
  334. GO TO 900
  335. C
  336. C (SIGO,EPSO) HORS DE LA COURBE COTE NEGATIF
  337. 400 DFINF=EPINF(I)
  338. CONINF=SIGINF(I)
  339. IF(SIGINF(I).GT.SIGNA(I)) CONINF=SIGNA(I)
  340. IF(EPINF(I).GT.EPSNA(I)) DFINF=EPSNA(I)
  341. IF(EPSTOT.LE.DFINF) GO TO 405
  342. DSIG(I)=DEPS*(CONINF-SIGO(I))/(DFINF-EPSIN+1.D-20)
  343. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  344. GO TO 900
  345. 405 JCAS=NUMETA(I)-40
  346. IF(IIMPI.EQ.16) WRITE(6,*) 'JCAS=',JCAS
  347. IF(EPINF(I).GT.EPSTOT) EPINF(I)=EPSTOT
  348. GO TO(410,315,325),JCAS
  349. 410 IF(EPSTOT.LT.EPSNA(I)) GO TO 315
  350. DSIG(I)=DEPS*(CONINF-SIGO(I))/(DFINF-EPSIN+1.D-20)
  351. IF(SIGINF(I).GT.(SIGO(I)+DSIG(I))) SIGINF(I)=SIGO(I)+DSIG(I)
  352. NUMETA(I)=31
  353. GO TO 900
  354. C
  355. C DECHARGE
  356. C
  357. 450 ICAS=NUMETA(I)/10
  358. IF(IIMPI.EQ.16) WRITE(6,*) 'ICAS=',ICAS
  359. GO TO(500,500,700,700),ICAS
  360. C
  361. C (SIGO,EPSO) COTE POSITIF
  362. 500 JCAS=MOD(NUMETA(I),10)
  363. IF(IIMPI.EQ.16) WRITE(6,*) 'JCAS=',JCAS
  364. GO TO(510,520,530),JCAS
  365. 510 PENTE=RMOD(I)
  366. IF(IIMPI.EQ.16) WRITE(6,*) '510 PENTE=',PENTE
  367. NUMETA(I)=21
  368. IF(ICAS.EQ.1) NUMETA(I)=11
  369. GO TO 560
  370. 520 PENTE=SIGSUP(I)/EPSUP(I)
  371. IF(IIMPI.EQ.16) WRITE(6,*) '520 PENTE=',PENTE
  372. NUMETA(I)=22
  373. GO TO 550
  374. 530 PENTE=SIGPB(I)/EPSPB(I)
  375. IF(IIMPI.EQ.16) WRITE(6,*) '530 PENTE=',PENTE
  376. NUMETA(I)=23
  377. 550 CONTINUE
  378. 560 SIGF=SIGO(I)+DEPS*PENTE
  379. IF(IIMPI.EQ.16) WRITE(6,*) '560 SIGF =',SIGF
  380. IF((SIGO(I)*SIGF).LE.0.) GO TO 600
  381. DSIG(I)=SIGF-SIGO(I)
  382. GO TO 900
  383. C----------
  384. 600 CONINF=SIGINF(I)
  385. DFINF=EPINF(I)
  386. IF(SIGINF(I).GT.SIGNA(I)) CONINF=SIGNA(I)
  387. IF(EPINF(I).GT.EPSNA(I)) DFINF=EPSNA(I)
  388. C----------
  389. IF(EPSTOT.LE.DFINF) GO TO 610
  390. EPZE=EPSIN-SIGO(I)*DEPS/(SIGF-SIGO(I))
  391. IF(IIMPI.EQ.16) WRITE(6,*) '600 EPZE =',EPZE
  392. DSIG(I)=(EPSTOT-EPZE)*CONINF/(DFINF-EPZE+1.D-20)
  393. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  394. DSIG(I)=DSIG(I)-SIGO(I)
  395. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  396. IF(IEM.EQ.1.AND.EPSTOT.LE.EPSNA(I)) GO TO 605
  397. NUMETA(I)=40+IEM
  398. GO TO 900
  399. 605 NUMETA(I)=31
  400. GO TO 900
  401. 610 IF(EPINF(I).GT.EPSTOT) EPINF(I)=EPSTOT
  402. GO TO(410,315,325),IEM
  403. GO TO 410
  404. C
  405. C (SIGO,EPSO) COTE NEGATIF
  406. 700 JCAS=MOD(NUMETA(I),10)
  407. IF(IIMPI.EQ.16) WRITE(6,*) 'JCAS=',JCAS
  408. GO TO(710,720,730),JCAS
  409. 710 PENTE=RMOD(I)
  410. IF(IIMPI.EQ.16) WRITE(6,*) '710 PENTE=',PENTE
  411. NUMETA(I)=41
  412. IF(ICAS.EQ.3) NUMETA(I)=31
  413. GO TO 760
  414. 720 PENTE=SIGINF(I)/EPINF(I)
  415. IF(IIMPI.EQ.16) WRITE(6,*) '720 PENTE=',PENTE
  416. NUMETA(I)=42
  417. GO TO 750
  418. 730 PENTE=SIGNB(I)/EPSNB(I)
  419. IF(IIMPI.EQ.16) WRITE(6,*) '730 PENTE=',PENTE
  420. NUMETA(I)=43
  421. 750 CONTINUE
  422. 760 SIGF=SIGO(I)+DEPS*PENTE
  423. IF(IIMPI.EQ.16) WRITE(6,*) '760 SIGF =',SIGF
  424. IF((SIGO(I)*SIGF).LE.0.) GO TO 800
  425. DSIG(I)=SIGF-SIGO(I)
  426. GO TO 900
  427. C----------
  428. 800 CONSUP=SIGSUP(I)
  429. DFSUP=EPSUP(I)
  430. IF(SIGSUP(I).LT.SIGPA(I)) CONSUP=SIGPA(I)
  431. IF(EPSUP(I).LT.EPSPA(I)) DFSUP=EPSPA(I)
  432. C----------
  433. IF(EPSTOT.GE.DFSUP) GO TO 810
  434. EPZE=EPSIN-SIGO(I)*DEPS/(SIGF-SIGO(I))
  435. IF(IIMPI.EQ.16) WRITE(6,*) '800 EPZE =',EPZE
  436. DSIG(I)=(EPSTOT-EPZE)*CONSUP/(DFSUP-EPZE+1.D-20)
  437. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  438. DSIG(I)=DSIG(I)-SIGO(I)
  439. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  440. IF(IEP.EQ.1.AND.EPSTOT.GE.EPSPA(I)) GO TO 805
  441. NUMETA(I)=20+IEP
  442. GO TO 900
  443. 805 NUMETA(I)=11
  444. GO TO 900
  445. 810 IF(EPSUP(I).LT.EPSTOT) EPSUP(I)=EPSTOT
  446. GO TO(210,115,125),IEP
  447. GO TO 210
  448. C
  449. 900 DSIG(I)=DSIG(I)+SIGO(I)
  450. EPSPLA(I)=(SIGEL-DSIG(I))/RMOD(I)
  451. DEPSEQ=DEPSEQ+ABS(EPSPLA(I))
  452. *
  453. IF(IIMPI.EQ.16) WRITE(6,*) 'DSIG(',I,') =',DSIG(I)
  454. IF(IIMPI.EQ.16) WRITE(6,*) 'EPSPLA(',I,') =',EPSPLA(I)
  455. IF(IIMPI.EQ.16) WRITE(6,*) 'DEPSEQ =',DEPSEQ
  456. IF(I.GT.2) GO TO 950
  457. NUMETA(I)=NUMETA(I)+1000*IEP+100*IEM
  458. IF(IIMPI.EQ.16) WRITE(6,*) 'NUMETA(',I,') =',NUMETA(I)
  459. EPSO(I)=EPSTOT
  460. *
  461. 950 CONTINUE
  462. EPSEQ=DEPSEQ+EPSEQ
  463. IF(IIMPI.EQ.16) WRITE(6,*) 'EPSEQ =',EPSEQ
  464. RETURN
  465. END
  466.  
  467.  

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