Download wells.eso

Back to the list

   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