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