Télécharger wells.eso

Retour à la liste

Numérotation des lignes :

wells
  1. C WELLS SOURCE PV 17/12/08 21:18:08 9660
  2. SUBROUTINE WELLS(WRK52,WRK53,WRK54,IB,IGAU,NBPGAU)
  3. C
  4. C______________________________________________________________________
  5. C
  6. C MODELE WELLS
  7. C______________________________________________________________________
  8. C
  9. IMPLICIT INTEGER(I-N)
  10. IMPLICIT REAL*8(A-H,O-Z)
  11.  
  12. -INC PPARAM
  13. -INC CCOPTIO
  14. -INC DECHE
  15. *
  16.  
  17. DIMENSION SIGF1(3),DEPST1(3),EPSTF1(3)
  18. DIMENSION DEPST2(3)
  19.  
  20. NSTRS = SIG0(/1)
  21. NVARI = VAR0(/1)
  22. NMAT = XMAT(/1)
  23. NSTRS1 = NSTRS - 1
  24.  
  25. * PRINT *,' ENTREE WELLS - NMAT=', NMAT
  26. *
  27. *
  28. * QUELQUES IMPRESSIONS EN ENTREE
  29. *
  30. * DO I=1,NMAT
  31. * PRINT *,' I=', I, ' XMAT=', XMAT(I)
  32. * ENDDO
  33. *
  34. * DO I=1,NSTRS
  35. * PRINT *,' I=', I, ' SIG0=', SIG0(I)
  36. * ENDDO
  37. *
  38. * DO I=1,NVARI
  39. * PRINT *,' I=', I, ' VAR0=', VAR0(I)
  40. * ENDDO
  41. *
  42. * DO I=1,NSTRS
  43. * PRINT *,' I=', I, ' DEPST=', DEPST(I)
  44. * ENDDO
  45. *
  46.  
  47. *
  48. * XMAT(1) : KS
  49. * XMAT(2) : KN
  50. * 3 : LTR
  51. * 4 : GFTR
  52. * 5 : HS
  53. * 6 : DINT
  54. *
  55.  
  56. XKS = XMAT(1)
  57. XKN = XMAT(2)
  58. XLTR = XMAT(3)
  59. GFTR = XMAT(4)
  60. HS = - XMAT(5)
  61. DINT = XMAT(6)
  62.  
  63. *
  64. * SIG0(1) : SMS1
  65. * SIG0(2) : SMS2 SI 3D
  66. * SIG0(NSTRS) : SMN
  67. *
  68. * EPST0(1) : DRS1
  69. * EPST0(2) : DRS2 SI 3D
  70. * EPST0(NSTRS) : DRN
  71. *
  72. *
  73. *
  74. *
  75. * VAR0(1) : EPSE
  76. * VAR0(2) : EPS1
  77. * VAR0(3) : EPS2 SI 3D
  78. * VAR0(NVARI) : EPN
  79. *
  80. * -----------------------
  81. * LOI ELASTIQUE
  82. * -----------------------
  83. *
  84. CALL DOU266(XMAT,CMATE,IFOUR,NSTRS,DDHOOK,IRET)
  85.  
  86. *
  87. * ON RECUPERE L'OUVERTURE MAXI INITIALE
  88. *
  89. XK0 = VAR0(NVARI)
  90.  
  91. *
  92. * ON REGARDE L'ETAT INITIAL ET L'ETAT FINAL
  93. *
  94. DN0 = EPST0(NSTRS)
  95. DNF = DN0 + DEPST(NSTRS)
  96. CR0 = DN0 - XK0
  97. CRF = DNF - XK0
  98.  
  99. *
  100. * TEST DE DN0 PAR RAPPORT A DNF
  101. *
  102. IF(DN0.GT.DNF) GO TO 10
  103.  
  104.  
  105.  
  106. * --------------------------------------------------------------------
  107. * ! A) DN0 < DNF !
  108. * --------------------------------------------------------------------
  109.  
  110.  
  111. *-------------------------------------
  112. * 1-ER CAS : FERMETURE - FERMETURE
  113. *-------------------------------------
  114. *
  115. IF(DN0.LE.0.D0.AND.DNF.LE.0.D0) THEN
  116.  
  117. * PRINT *,' CAS A1 '
  118. C
  119. C calcul de l'increment de contrainte
  120. C
  121. CALL MATVE1 (DDHOOK,DEPST,NSTRS,NSTRS,DSIGT,2)
  122. C
  123. C ON CALCULE LES CONTRAINTES FINALES
  124. C
  125. DO I=1,NSTRS
  126. SIGF(I) = SIG0(I) + DSIGT(I)
  127. ENDDO
  128. DO I=1,NVARI
  129. VARF(I) = VAR0(I)
  130. ENDDO
  131. *-------------------------------------
  132. * 2-EME CAS : FERMETURE - OUVERTURE
  133. *-------------------------------------
  134. *
  135. ELSE IF (DN0.LE.0.D0.AND.DNF.GT.0.D0) THEN
  136.  
  137. * PRINT *,' CAS A2 '
  138.  
  139. *
  140. * CALCUL DE LA PROPORTION
  141. *
  142. XX1L = - DN0 /(DNF - DN0 )
  143. XX1NL= 1.D0 - XX1L
  144. DO I=1,NSTRS
  145. DEPST1(I) = DEPST(I)*XX1L
  146. DEPST2(I) = DEPST(I)*XX1NL
  147. ENDDO
  148. C
  149. C calcul de l'increment de contrainte PUREMENT ELASTIQUE
  150. C
  151. CALL MATVE1 (DDHOOK,DEPST1,NSTRS,NSTRS,DSIGT,2)
  152. C
  153. DO I=1,NSTRS
  154. SIGF1(I) = SIG0(I) + DSIGT(I)
  155. EPSTF1(I) = EPST0(I) + DEPST1(I)
  156. ENDDO
  157.  
  158. C
  159. C CALCUL DU SUPPPLEMENT DE CONTRAINTE
  160. C
  161. *
  162. * 1-ER SOUS CAS : JOINT DEJA ENDOMMAGE
  163. * °°°°°°°°°°°°?*
  164. IF(XK0.GT.0.D0) THEN
  165. *
  166. * ON VERIFIE SI LE POINT FINAL DEPASSE LE CRITERE
  167. *
  168. * A) ON NE DEPASSE PAS => ON UTILISE TOUT CE QUI RESTE
  169. * -----------------
  170. *
  171. IF(CRF.LE.0.) THEN
  172.  
  173. DO I=1,NSTRS1
  174. SIGF(I) = SIGF1(I) +
  175. & DINT*EXP(HS*DNF)*EPSTF(I)
  176. & - DINT*EPSTF1(I)
  177. ENDDO
  178. *
  179. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  180. DSIG3 = PENTE3 * DEPST2(NSTRS)
  181. SIGF(NSTRS)= SIGF1(NSTRS) + DSIG3
  182. *
  183. VARF(1) = ABS(DEPST2(NSTRS))
  184. DO I=1,NSTRS1
  185. VARF(I+1) = VAR0(I+1)+ DEPST2(I)
  186. ENDDO
  187. VARF(NVARI) = VAR0(NVARI)
  188. *
  189. *
  190. * B) ON DEPASSE
  191. * ----------
  192. *
  193. ELSE
  194. *
  195. * IL FAUT CALCULER UNE AUTRE PROPORTION
  196. *
  197. XX2L = XK0 /DNF
  198. DO I=1,NSTRS
  199. DEPST1(I) = DEPST2(I)*XX2L
  200. ENDDO
  201. *
  202. DO I=1,NSTRS1
  203. SIGF(I) = SIGF1(I) +
  204. & DINT*EXP(HS*DNF)*EPSTF(I)
  205. & - DINT*EPSTF1(I)
  206. ENDDO
  207. *
  208. * 3-EME COMPOSANTE : D'ABORD PARTIE SECANTE
  209. *
  210. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  211. DSIG3 = PENTE3 * DEPST1(NSTRS)
  212. SIGF1(NSTRS)= SIGF1(NSTRS) + DSIG3
  213. *
  214. * PUIS LA PARTIE ADOUCISSANTE
  215. *
  216.  
  217. DSIG3 = XLTR*EXP(-XLTR*DNF/GFTR) -
  218. & XLTR*EXP(-XLTR*XK0/GFTR)
  219. SIGF(NSTRS) = SIGF1(NSTRS) + DSIG3
  220. *
  221. VARF(1) = ABS(DEPST2(NSTRS))
  222. DO I=1,NSTRS1
  223. VARF(I+1) = VAR0(I+1)+ DEPST2(I)
  224. ENDDO
  225. VARF(NVARI) = DNF
  226.  
  227. ENDIF
  228.  
  229. *
  230. * 2-EME SOUS CAS : JOINT PAS ENDOMMAGE
  231. * °°°°°°°°°°°°°°
  232. *
  233. ELSE
  234.  
  235. DO I=1,NSTRS1
  236. SIGF(I) = SIGF1(I) +
  237. & DINT*EXP(HS*DNF)*EPSTF(I)
  238. & - DINT*EPSTF1(I)
  239. ENDDO
  240. *
  241. * DIRECTEMENT ADOUCISSANT
  242. *
  243. DSIG3 = XLTR*EXP(-XLTR*DNF/GFTR)
  244. & - XLTR
  245. SIGF(NSTRS) = SIGF1(NSTRS) + DSIG3
  246. *
  247. VARF(1) = ABS(DEPST2(NSTRS))
  248. DO I=1,NSTRS1
  249. VARF(I+1) = VAR0(I+1)+ DEPST2(I)
  250. ENDDO
  251. VARF(NVARI) = DNF
  252.  
  253. ENDIF
  254.  
  255. *-------------------------------------
  256. * 3-EME CAS : OUVERTURE - OUVERTURE
  257. *-------------------------------------
  258. *
  259. ELSE IF (DN0.GT.0.D0.AND.DNF.GT.0.D0) THEN
  260.  
  261.  
  262. * PRINT *,' CAS A3 '
  263.  
  264.  
  265. *
  266. * 1-ER SOUS CAS : JOINT DEJA ENDOMMAGE
  267. * °°°°°°°°°°°°?*
  268.  
  269.  
  270. * PRINT *,' CAS A3 XK0=' , XK0
  271.  
  272. IF(XK0.GT.0.D0) THEN
  273. *
  274. * ON VERIFIE SI LE POINT FINAL DEPASSE LE CRITERE
  275. *
  276. * A) ON NE DEPASSE PAS => ON UTILISE TOUT L'INCREMENT
  277. * -----------------
  278. *
  279.  
  280. * PRINT *,' CAS A3 CRF=' , CRF
  281.  
  282.  
  283. IF(CRF.LE.0.) THEN
  284.  
  285. DO I=1,NSTRS1
  286. SIGF(I) = SIG0(I) +
  287. & DINT*EXP(HS*DNF)*EPSTF(I)
  288. & - DINT*EXP(HS*DN0)*EPST0(I)
  289. ENDDO
  290. *
  291. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  292. DSIG3 = PENTE3 * DEPST(NSTRS)
  293. SIGF(NSTRS)= SIG0(NSTRS) + DSIG3
  294. *
  295. VARF(1) = VAR0(1)+ABS(DEPST(NSTRS))
  296. DO I=1,NSTRS1
  297. VARF(I+1) = VAR0(I+1)+ DEPST(I)
  298. ENDDO
  299. VARF(NVARI) = VAR0(NVARI)
  300. *
  301. *
  302. * B) ON DEPASSE
  303. * ----------
  304. *
  305. ELSE
  306. *
  307. DO I=1,NSTRS1
  308. SIGF(I) = SIG0(I) +
  309. & DINT*EXP(HS*DNF)*EPSTF(I)
  310. & - DINT*EXP(HS*DN0)*EPST0(I)
  311. ENDDO
  312. *
  313. * 3-EME COMPOSANTE :
  314. * IL FAUT CALCULER UNE PROPORTION
  315. *
  316. XX1L = (XK0 -DN0) / (DNF - DN0 )
  317. * PRINT *, ' XX1L = ', XX1L
  318.  
  319. DO I=1,NSTRS
  320. DEPST1(I) = DEPST(I)*XX1L
  321. ENDDO
  322. *
  323. * D'ABORD PARTIE SECANTE
  324. *
  325. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  326. DSIG3 = PENTE3 * DEPST1(NSTRS)
  327. SIGF1(NSTRS)= SIG0(NSTRS) + DSIG3
  328. *
  329. * PUIS LA PARTIE ADOUCISSANTE
  330. *
  331.  
  332. DSIG3 = XLTR*EXP(-XLTR*DNF/GFTR) -
  333. & XLTR*EXP(-XLTR*XK0/GFTR)
  334. SIGF(NSTRS) = SIGF1(NSTRS) + DSIG3
  335. *
  336. VARF(1) = VAR0(1)+ABS(DEPST(NSTRS))
  337. DO I=1,NSTRS1
  338. VARF(I+1) = VAR0(I+1)+ DEPST(I)
  339. ENDDO
  340. VARF(NVARI) = DNF
  341.  
  342. ENDIF
  343.  
  344. *
  345. * 2-EME SOUS CAS : JOINT PAS ENDOMMAGE
  346. * °°°°°°°°°°°°°°
  347. *
  348. ELSE
  349.  
  350. DO I=1,NSTRS1
  351. SIGF(I) = SIG0(I) +
  352. & DINT*EXP(HS*DNF)*EPSTF(I)
  353. & - DINT*EXP(HS*DN0)*EPST0(I)
  354. ENDDO
  355. *
  356. * DIRECTEMENT ADOUCISSANT
  357. *
  358. DSIG3 = XLTR*EXP(-XLTR*DNF/GFTR)
  359. & - XLTR
  360. SIGF(NSTRS) = SIGF1(NSTRS) + DSIG3
  361. *
  362. VARF(1) = VAR0(1)+ABS(DEPST(NSTRS))
  363. DO I=1,NSTRS1
  364. VARF(I+1) = VAR0(I+1)+ DEPST(I)
  365. ENDDO
  366. VARF(NVARI) = DNF
  367.  
  368. ENDIF
  369. *
  370. ENDIF
  371. GO TO 20
  372. *
  373. 10 CONTINUE
  374. *
  375. *
  376. * --------------------------------------------------------------------
  377. * ! B) DN0 >= DNF !
  378. * --------------------------------------------------------------------
  379.  
  380.  
  381. *-------------------------------------
  382. * 1-ER CAS : FERMETURE - FERMETURE
  383. *-------------------------------------
  384. *
  385. IF(DN0.LE.0.D0.AND.DNF.LE.0.D0) THEN
  386.  
  387.  
  388. * PRINT *,' CAS B1'
  389.  
  390. C
  391. C calcul de l'increment de contrainte
  392. C
  393. CALL MATVE1 (DDHOOK,DEPST,NSTRS,NSTRS,DSIGT,2)
  394. C
  395. C ON CALCULE LES CONTRAINTES FINALES
  396. C
  397. DO I=1,NSTRS
  398. SIGF(I) = SIG0(I) + DSIGT(I)
  399. ENDDO
  400. DO I=1,NVARI
  401. VARF(I) = VAR0(I)
  402. ENDDO
  403. *-------------------------------------
  404. * 2-EME CAS : DECHARGE - FERMETURE
  405. *-------------------------------------
  406. *
  407. ELSE IF (DN0.GT.0.D0.AND.DNF.LE.0.D0) THEN
  408.  
  409. * PRINT *,' CAS B2'
  410.  
  411. *
  412. * CALCUL DE LA PROPORTION
  413. *
  414. XX1L = - DN0 /(DNF - DN0 )
  415. XX1NL= 1.D0 - XX1L
  416. DO I=1,NSTRS
  417. DEPST1(I) = DEPST(I)*XX1L
  418. DEPST2(I) = DEPST(I)*XX1NL
  419. EPSTF1(I) = EPST0(I) + DEPST1(I)
  420. ENDDO
  421.  
  422.  
  423. DO I=1,NSTRS1
  424. SIGF1(I) = SIG0(I) +
  425. & DINT*EPSTF1(I)
  426. & - DINT*EXP(HS*DN0)*EPST0(I)
  427. ENDDO
  428. *
  429. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  430. DSIG3 = PENTE3 * DEPST1(NSTRS)
  431. SIGF1(NSTRS)= SIG0(NSTRS) + DSIG3
  432.  
  433. C
  434. C CALCUL DU SUPPPLEMENT DE CONTRAINTE PUREMENT ELASTIQUE
  435. C
  436. CALL MATVE1 (DDHOOK,DEPST2,NSTRS,NSTRS,DSIGT,2)
  437. C
  438. DO I=1,NSTRS
  439. SIGF(I) = SIGF1(I) + DSIGT(I)
  440. ENDDO
  441. *
  442. VARF(1) = ABS(DEPST(NSTRS))
  443. DO I=1,NSTRS1
  444. VARF(I+1) = VAR0(I+1)+ DEPST1(I)
  445. ENDDO
  446. VARF(NVARI) = VAR0(NVARI)
  447.  
  448. *----------------------------------
  449. * 3-EME CAS : DECHARGE - DECHARGE
  450. *----------------------------------
  451. *
  452. ELSE IF (DN0.GT.0.D0.AND.DNF.GE.0.D0) THEN
  453.  
  454.  
  455. * PRINT *,' CAS B3'
  456.  
  457. ZOB = -XLTR*XK0/GFTR
  458. ZOB1 = EXP (ZOB)
  459. * PRINT *,' XLTR=', XLTR , ' XK0 = ', XK0 ,
  460. * & ' GFTR = ', GFTR
  461. * PRINT *,' ZOB=', ZOB , ' ZOB1 = ', ZOB1
  462.  
  463.  
  464.  
  465. DO I=1,NSTRS1
  466. SIGF(I) = SIG0(I) +
  467. & DINT*EXP(HS*DNF)*EPSTF(I)
  468. & - DINT*EXP(HS*DN0)*EPST0(I)
  469. ENDDO
  470. *
  471. PENTE3 = XLTR * EXP(-XLTR*XK0/GFTR)/XK0
  472. DSIG3 = PENTE3 * DEPST(NSTRS)
  473. SIGF(NSTRS)= SIG0(NSTRS) + DSIG3
  474. *
  475. VARF(1) = ABS(DEPST(NSTRS))
  476. DO I=1,NSTRS1
  477. VARF(I+1) = VAR0(I+1)+ DEPST(I)
  478. ENDDO
  479. VARF(NVARI) = VAR0(NVARI)
  480.  
  481. ENDIF
  482.  
  483.  
  484. 20 CONTINUE
  485.  
  486.  
  487. * PRINT *,' SORTIE DE WELLS'
  488. *
  489. *
  490. * QUELQUES IMPRESSIONS EN SORTIE
  491. *
  492. * DO I=1,NSTRS
  493. * PRINT *,' I=', I, ' SIGF=', SIGF(I)
  494. * ENDDO
  495. *
  496. * DO I=1,NVARI
  497. * PRINT *,' I=', I, ' VARF=', VARF(I)
  498. * ENDDO
  499. *
  500. * DO I=1,NSTRS
  501. * PRINT *,' I=', I, ' EPSTF =', EPSTF(I)
  502. * ENDDO
  503.  
  504. RETURN
  505. END
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  

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