Está en la página 1de 29

EMPLEO DEL METODO SOR PARA RESOLVER LAS ECUACIONES

OBTENIDAS EN LA EXPANSION DE CRANK NICHOLSON EN UN


SIMULADOR 2D



















Presentado por:
CRISTIAN ACEVEDO SNCHEZ
BONIEK BERDUGO ALOMIA
DEIVIS AGUAS DE LA OSSA




















UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MEDELLN
SIMULACION DE YACIMIENTOS
2010
INTRODUCCIN


En situaciones reales las aproximaciones juegan un papel importante en la
toma de decisiones, pueden ayudar a predecir condiciones futuras o a resolver
problemas inminentes que podran afectar a toda la compaa o una sociedad.

Debido a la importancia que muestra las aproximaciones surgen aplicaciones
de simulacin, estas son herramientas diversas y de gran utilidad hoy en da,
ya que ofrece una imagen suave o lisa de la realidad mostrando algo ms que
simplemente obtener valores aproximados a una realidad desconocida, es
decir, por la confiabilidad de la simulacin esta es una herramienta de clculo
potente que puede sustituir la realidad. . Con tal intencin se proponen
algoritmos los cuales pueden ser tiles para obtener una representacin de una
de las posibles realizaciones de la realidad de un yacimiento. Esto da la
posibilidad de sustituir un yacimiento real por uno simulado y realizar estudio de
simulacin de explotacin, estudio de redes, etc.,

El algoritmo es un conjunto de cdigos que efectan diversos clculos, el
nuestro usara como base las ecuaciones de difusividad el cual se desarrolla
por mtodos explcitos e implcitos. El algoritmo SOR desarrolla la
aproximacin de Nicholson que usa los dos mtodos y la solucin se hace por
el mtodo SOR o mtodo de sobre relacin (SOR) que brinda la posibilidad de
encontrar por medio de iteraciones cada una de las variables de iteracin.

Es indispensable realizar estudios de comportamiento futuro, as se pueden
comprender como estn cambiando las variables importantes de un yacimiento
tales como presin y el factor de compresibilidad del fluido y otras ms.
Trabajo 1-.

Elaborar un software para resolver por el mtodo SOR el sistema de
ecuaciones, obtenido por expansin de Crank Nicholson, que describe el
comportamiento del siguiente yacimiento:

Un yacimiento tiene forma rectangular y 5000 pies en la direccin j y 10000
pies en la direccin i; la numeracin de los bloques en las direcciones j e i
aumenta como se muestra en el grfico.












En la direccin i hay 20 bloques y en la direccin j hay 10.

En el yacimiento hay algunos pozos cerrados y otros productores de petrleo y
la ubicacin de los pozos y sus respectivas tasas de flujo al tiempo cero se dan
en la siguiente tabla

Pozo 1 2 3 4 5 6 7 8
i 1 3 6 9 9 12 17 20
j 9 4 1 2 10 4 1 3
Q (BPD) 1000 1000 500 1000 1000 1000

La porosidad del yacimiento es constante e igual a 0.20 y su espesor tambin
es constante e igual a 45 pies. La viscosidad del agua es de 0.44 cP. y la del
petrleo 1.39 cP. La permeabilidad vara solamente en la direccin j y de
acuerdo con la siguiente tabla

J 1 2 3 4 5 6 7 8 9 10
k 1 2 5 10 20 40 80 160 300 700

Trabajo a realizar:

1-. Fundamentacin Terica.

Expansin de la ED para flujo lineal 2D de un fluido compresible (Flujo
Monofsico). En este caso convertir los 100 B/D de petrleo en tasa
equivalente de gas.
Ecuaciones de transmisividad
Anlisis de truncamiento y estabilidad
Descripcin del mtodo a usar para resolver el sistema de ecuaciones.
5000
10000
j
i
Descripcin del sistema de ecuaciones a resolver.

2-. Elaborar el software y mostrar el cdigo del mismo en Fortran

3-. Resultados.

Mostrar resultados de la presin en cada uno de los bloques contra
tiempo durante un ao, cada mes.



1. Fundamentacin terica

1.1. Expansin de la ED para flujo lineal 2D de un fluido compresible
(Flujo Monofsico)

El gas considerado como un fluido altamente compresible se caracteriza por su
cambio en compresibilidad debido a la variacin de la presin y la temperatura,
y a su vez implcitamente del espacio y del tiempo. Para poder entender el
comportamiento de un yacimiento con gas es preciso desarrollar un simulador,
que este compuesto bsicamente por cuatro partes: Modelo Fsico, Modelo
Diferencial, Modelo Numrico y Modelo Computacional.

La ecuacin fundamental de flujo en coordenadas cartesianas es:

( )
q
t
p
~
o
po
o
u
op +
c
c
=
|
|
.
|

\
|
V V
K


Ahora bien definamos el factor volumtrico del gas,
g
B , este se define como la
relacin del volumen de gas a condiciones de yacimiento, ( )
cy
g
V , y el volumen
de gas a condiciones normales, ( )
cn
g
V . Es decir,

( )
( )
( )
( )
cy
g
cn
g
cn
g
cy
g
g
V
V
B
p
p
= =

Solucionando para la densidad del gas a condiciones de yacimiento, se
obtiene:

( )
( )
g
cn
g
cy
g
B
p
p =

Obsrvese que en la ecuacin anterior los subndices cy y cn denotan
condiciones de yacimiento y normales, respectivamente.

De otro lado, de la ecuacin de estado para gases reales se tiene:

( )
( )
( )
( )
P T
ZT P
ZRT
PM
ZRT
PM
B
CN
CY
CN
CY
g
CN
g
g
= = =
p
p


En la ecuacin anterior M es peso molecular, Z es el factor de compresibilidad
del gas, T es temperatura y R es la constante universal de gases.

Llevando la ecuacin de
g
B a la ecuacin
( )
g
cy
p , se obtiene:

( )
( ) ( )
Z
P
T P
T
P T
ZT P
CN
CN
g CN
CN
CN
CN
g
CY
g
p p
p = =

Asumiendo flujo isotrmico y derivando con respecto al tiempo,

( ) ( )
|
.
|

\
|
c
c
=
c
c
z
p
t T P
T
t
CN
CN
g CN
CY
g
p p


Sustituyendo las ecuaciones
( )
g
cy
p y
( )
g
CY
t
p c
c
en la ecuacin fundamental de
flujo cartesiana se tiene:


( )
( )
cn v
CN
CN CN
CN g
q
t
Z
P
T P
T
p
B
o
o
p
p
o
u
o +
c
c
=
|
|
.
|

\
|
V V
*
*
* 1
*
K


( )
( )
cn v
CN
CN
g
q
t
Z
P
T P
T
p
B
o
o
o
u
o +
c
c
=
|
|
.
|

\
|
V V
*
* *
K



Ahora para un flujo lineal 2D, en el que se tiene =h y por simplicidad la
porosidad se considera constante se obtiene el siguiente modelo diferencial:

( )
cn v
cn
cn
g g
q h
z
P
t T P
T h
y
P
B
kh
y x
P
B
kh
x
+ |
.
|

\
|
c
c
=
|
|
.
|

\
|
c
c

c
c
+
|
|
.
|

\
|
c
c

c
c o
u u


Para el modelo numrico se resuelve al aplicar una expansin de diferencias
finitas:

Expandiendo en X con Y constante

2
2
2
1
2
1
x
x
P
B
kh
x
P
B
kh
x
P
B
kh
x
i
g
i
g
g
A

c
c

c
c
=

c
c
c
c
+
u u
u


Expandiendo en Y con X constante

2
2
2
1
2
1
y
y
P
B
kh
y
P
B
kh
y
P
B
kh
y
j
g
j
g
g
A

c
c

c
c
=

c
c
c
c
+
u u
u


Ahora realizamos la expansin de la presin:

x
x
P P
B
kh
x
P P
B
kh
x
P
B
kh
x
i i
i
g
i i
i
g
g
A

c
c
c
c

+
+
1
2
1
1
2
1
u u
u


Anlogamente para Y,

y
y
P P
B
kh
y
P P
B
kh
y
P
B
kh
y
j j
j
g
j j
j
g
g
A

c
c
c
c

+
+
1
2
1
1
2
1
u u
u


Ahora se realiza la expansin con respecto al tiempo,

( )
( ) ( )
t
Z
P
Z
P
T P
T
h
t
Z
P
T P
T
h
n i n i
CN
CN
CN
CN
A

=
c
c
+ , 1 ,
*
*
*
* o o


Se reemplazan todas las expansiones en la ecuacin de difusividad como
sigue:

( ) ( )
1 1
1 1
1 1 1 1
2 2 2 2
, 1 ,
*
*
j j j j
i i i i
g g g g
i i j j
v
i n i n
CN
CN
P P P P
P P P P kh kh kh kh
B x B x B y B y
q h
x y
P P
T Z Z
h
P T t
u u u u
o
+
+
+ +
+





A A A A



+
A A

=
A


1.2. Ecuaciones de transmisibilidad

Para hallar la transmisibilidad se parte de la ecuacin de Darcy, para j
constante y en nodo centrado:

|
.
|

\
|
c
c A
=
x
P
B
y Kh
q
g
u


1 i
P


i
P

1 i
P
+



Ahora: Para fluidos compresibles =

2
1
1 i i
q
1
2
i i
q q

=

( )
( )
( )
( )
( )
( )
1 1
2
1 1 1
1
2 2
1
1
1
2
1 1
2 2
1
* 2
2
* 2
2
i
i
i
i i i
g
i
g
i
i
i
i
i i i
g
i
g
i
P P
q x
Kh
q y P P
B x
Kh
y
B
P P
q x
Kh
q y P P
B x
Kh
y
B
u
u
u
u

| |
| |
A
| = A =
|
|
| A | |
\ .
\ .
A
|
|
\ .
| |
| |
A
| = A =
|
|
| A | |
\ .
\ .
A
|
|
\ .


Sumando las dos ecuaciones anteriores se tiene:

( )
( )
( )
( )
1 1
1 1
1 1
1
1 1
1
1 1
1
2 2
2 2 *
* 2
i gi
i i i i
i i g
i
i i
i i
i gi
B
q x q x
P P P P
y y K h Kh B
K h y
q P P
x B
u
u
u



| |
| | A A | | | |
|
= =
| | |
| A A
\ . \ .
\ .
\ .
| |
A
=
|
|
A
\ .

Por lo tanto la transmisibilidad es:

1 1
1
2
1 1
*
i i
i
i gi
K h y
T
x B u


| |
A
=
|
|
A
\ .


As:

( )
1
1 1
2
1
2
1
2
1
2
i i
i i
i
g
i
i
g
i
P P Kh
q y T P P
B x
Kh x
T
B y
u
u

| |
| |
= A =
|
|
|
A
\ .
\ .
| |
| | A
=
|
|
|
A
\ .
\ .


Anlogamente:

( )
( )
( )
( )
( )
( )
1
2
1 1
2 2
1 1
2
1 1 1
1
2 2
* 2
2
* 2
2
i
i
i
i i i
g
i
g
i
i
i
i
i i i
g
i
g
i
P P
q x
Kh
q y P P
B x
Kh
y
B
P P
q x
Kh
q y P P
B x
Kh
y
B
u
u
u
u
+
+ +
+
+
+
+ + +
| |
| |
A
| = A =
|
|
| A | |
\ .
\ .
A
|
|
\ .
| |
| |
A
| = A =
|
|
| A | |
\ .
\ .
A
|
|
\ .

Sumando las dos ecuaciones anteriores se tiene:

( )
( )
( )
( )
1 1
1
2
2
2 2 *
i gi
i i i i
i i g
i
i i
i i
i gi
B
q x q x
P P P P
y y K h Kh B
K h y
q P P
x B
u
u
u
+ +
+
| |
| | A A | | | |
|
= =
| | |
| A A
\ . \ .
\ .
\ .
| |
A
=
|
|
A
\ .

Por lo tanto la transmisibilidad es:

1
2
i i
i
i gi
K h y
T
x B u
+
| |
A
=
|
|
A
\ .


As:

( )
2
1
2
1
1
2
1
1
2
1
+
+
+
+
+
+
|
|
.
|

\
|
A
A
=
|
|
.
|

\
|
= |
.
|

\
|
A

|
|
.
|

\
|
A =
i
i
g
i i
i
i i
i
g
T
y
x
B
Kh
P P T
x
P P
B
Kh
y q
u
u



Anlogamente se encuentran las transmisibilidades en la direccin Y:

2
1
2
1
+
+
|
.
|

\
|
A
A
=
|
|
.
|

\
|
j
j
T
x
y Kh
u

2
1
2
1

|
.
|

\
|
A
A
=
|
|
.
|

\
|
j
j
T
x
y Kh
u


1
2
1 1
j j
j
j g j
K h
x
T
y B u
+
+ +
| |
A
=
|
|
A
\ .

1 1
1
2
1 1
j j
j
j g j
K h
x
T
y B u


| |
A
=
|
|
A
\ .


Al reemplazar los valores de transmisibilidad en la ecuacin general se obtiene:

2
2
1 , 1
2
1
2
1 ,
2
1 , 1
x
T
y
x
P T
y
x
T
y
x
P T
y
x
P
i
j i
i i
j i
i
j i
A
|
|
.
|

\
|
A
A
+
|
|
.
|

\
|
|
|
.
|

\
|
A
A
+
|
|
.
|

\
|
A
A

|
|
.
|

\
|
A
A

+ +
+


( ) ( )
v
n i n i
CN
CN
j
j i
j j
j i
j
j i
hq
t
Z
P
Z
P
T P
T
h
y
T
x
y
P T
x
y
T
x
y
P T
x
y
P
+
A

=
A
|
.
|

\
|
A
A
+
|
|
.
|

\
|
|
.
|

\
|
A
A
+
|
.
|

\
|
A
A

|
.
|

\
|
A
A
+
+

+ +
+
, 1 ,
2
2
1 1 ,
2
1
2
1 ,
2
1 1 ,
*
*
*
o

Donde simplificando y cancelando trminos queda:

y x
P T T T P P T P T T T P P T
j i
j j j
j i j i
j
j i
i i i
j i j i
i
A A
+ |
.
|

\
|
+ + + |
.
|

\
|
+

+
+
+

+
+
+
1 ,
2
1
2
1
2
1 , 1 ,
2
1 , 1
2
1
2
1
2
1 , , 1
2
1
*
( ) ( )
v
n i n i
CN
CN
hq
t
Z
P
Z
P
T P
T
h +
A

=
+ , 1 ,
*
* o


Por lo tanto,

2
1 1 ,
2
1
2
1 ,
2
1 1 ,
2
1 , 1 ,
2
1
2
1
2
1 , 1
* * * *

+
+

+ +
+
+ |
.
|

\
|
+ + + |
.
|

\
|
+
j
j i
j j
j i
j
j i
i
j i j i
i i i
j i
T P T T P T P T P P T T T P
( ) ( )
y x h q
t
Z
P
Z
P
T P
T y x
h
v
n i n i
CN
CN
A A +
A

A A
=
+ , 1 ,
*
* * * o


Con

y x h q Q
v j i
A A =
,

y con

T P
T y x
h
CN
CN
*
* * * A A
=
o



j i j i
j j j
j i j i
j
j i
i i i
j i j i
i
Q P T T T P P T P T T T P P T
, 1 ,
2
1
2
1
2
1 , 1 ,
2
1 , 1
2
1
2
1
2
1 , , 1
2
1
+ |
.
|

\
|
+ + + |
.
|

\
|
+

+
+
+

+
+
+
( ) ( )
t
Z
P
Z
P
n i n i
A

=
+ , 1 ,



Al aplicar la Expansin de Crank-Nicholson a la ecuacin general, se tiene:

1 , 1 ,
2
1 1 , , 1
2
1
2
1
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1 + +
+
+ +
+ + +
+ +

+ + |
.
|

\
|
+ + + +
n j i
j
n j i
i j j i i
n j i n j i
j
n j i
i
P T P T T T T T P P T P T
j i n j i
j
n j i
i j j i i
n j i n j i
j
n j i
i
Q P T P T T T T T P P T P T
, , 1 ,
2
1 , , 1
2
1
2
1
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
* 2 + + |
.
|

\
|
+ + + + +
+
+
+
+ + +

( ) ( ) | |
n i n i Z
P
Z
P
t
, 1 ,
* 2
A
=
+



1 , 1 ,
2
1 1 , , 1
2
1
2
1
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1 + +
+
+ +
+ + +
+ +

+ + |
.
|

\
|
+ + + +
n j i
j
n j i
i j j i i
n j i n j i
j
n j i
i
P T P T T T T T P P T P T
n j i
j
n j i
i j j i i
n j i n j i
j
n j i
i
P T P T T T T T P P T P T
, 1 ,
2
1 , , 1
2
1
2
1
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1 +
+
+
+ + +

+ + |
.
|

\
|
+ + + + +

( ) ( )
n i n i
j i
Z
P
t
Z
P
t
Q
, 1 ,
,
* 2 * 2 * 2
A

A
+ =
+



Simplificando, se obtiene la siguiente expresin:

1 , 1 ,
2
1 1 , , 1
2
1
1 ,
2
1
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
+ +
+
+ +
+
+
+ +
+ +

+ +
|
|
.
|

\
|
A
+ + + + +
n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T

n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T
, 1 ,
2
1 , , 1
2
1
,
2
1
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
*
* 2
+
+
+
+ + +

+ +
|
|
.
|

\
|
A
+ + + + +

j i
Q
,
* 2 =



1.3. Anlisis de truncamiento y estabilidad

1.3.1. Anlisis de truncamiento

El error de truncamiento hace referencia al error en que se incurre al utilizar la
aproximacin en diferencias finitas, luego de ser truncada, en lugar de la
ecuacin diferencial misma. En trminos generales el error de truncamiento se
define como:

=
Finitas s Diferencia
en Ecuacin
l Diferencia
Ecuacin
T
c

El error de truncamiento en la expansin de Crank-Nicholson, se obtiene a
partir de:

( ) ( )

A
+
+
A
+

c
c

c
c
+
c
c
=
+

+ +
+
+

+ +
+
2
1
1 ,
1
,
1
1 ,
2
1
, 1
1
,
1
, 1
2
2
2
2
2
2
1
2
2
1
y
P P P
x
P P P
t
p
y
p
x
p
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
T
c


( ) ( )

A
+
+
A
+

+
+ +
t
P P
y
P P P
x
P P P
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i ,
1
,
2
1 , , 1 ,
2
, 1 , , 1
2
2
1
2
2
1



Empleando las siguientes expansiones de las derivadas en series de Taylor y
reemplazndolas en la ecuacin anterior:

( )
( ) ( )
1 2 4
1 1 1
2 4 6
1, , 1,
2 2 4 6
2
1 1 1
2 2 ........
2 2 4! 2 6!
n
n n n
i j i j i j
P P P x x
p p p
x x x
x
+
+ + +
+

+ A A | | c c c
=
|
c c c
A
\ .



( )
( ) ( )
2 4
2 4 6
, 1 , , 1
2 2 4 6
2
1 1 1
2 2 .......
2 2 4! 2 6!
n
n n n
i j i j i j
P P P y y
p p p
y y y
y
+

+ A A | | c c c
=
|
c c c
A
\ .


......
! 3
2
! 2
2
2
. 2
3
3
2
2
2
,
1
,

c
c
|
.
|

\
| A

c
c
|
.
|

\
| A

|
.
|

\
| A

=
c
c
+
t
p
t
t
p
t
t
P P
t
p
n
j i
n
j i


Simplificando y cancelando trminos se obtiene:

( ) ( ) ( ) ( )
.....
! 6
2
2
1
! 4
2
2
1
......
! 6
2
2
1
! 4
2
2
1
6
6 4
4
4 2
6
6 4
4
4 2

c
c

c
c

c
c

c
c

A
=
y
p y
y
p y
x
p x
x
p x
T
c
...
! 3
2
! 2
2
3
3
2
2
2

c
c
|
.
|

\
| A

c
c
|
.
|

\
| A

t
p
t
t
p
t


( )
( )
( )
( )

c
c

c
c
A +

c
c

c
c
A = .....
! 6 ! 4
1
.....
! 6 ! 4
1
6
6 2
4
4
2
6
6 2
4
4
2
y
p y
y
p
y
x
p x
x
p
x
T
c

( )
2 3
2 3
1
2
...
2.2! 3!
t
p p
t
t t
A | |
|

c c
\ .
+A
`
c c


)


Es decir, el orden del error de truncamiento de la aproximacin de Crank-
Nicholson est dado por:

( ) ( ) ( ) | | t y x O
T
A + A + A =
2 2
c

Al comparar las Ecuaciones de las aproximaciones implcita y explcita con la
anterior se infiere que la aproximacin de Crank-Nicholson presenta un menor
error de truncamiento.

1.3.2. Anlisis de Estabilidad.

El anlisis de estabilidad es un procedimiento a travs del cual es posible
determinar si el error obtenido en un bloque de la malla, en un momento
determinado, disminuye o aumenta al incrementar el tiempo. Si el error
disminuye, se dice que la aproximacin es estable. Si aumenta, se dice que es
inestable. Si el error disminuye nicamente bajo ciertas condiciones, se dice
que es condicionalmente estable.

Por su parte la estabilidad de la expansin de Crank-Nicholson se puede
probar por el criterio de Karplus de la siguiente manera:
La expresin para esta expansin es:

( ) ( ) ( )
2
, 1 , , 1
2
1
1 ,
1
,
1
1 ,
2
1
, 1
1
,
1
, 1
2
2
1
2
2
1
2
2
1
x
P P P
y
P P P
x
P P P
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
A
+
+
A
+
+
A
+

+
+

+ +
+
+

+ +
+

( )
0
2
2
1
,
1
,
2
1 , , 1 ,
=
A

A
+
+
+
+
t
P P
y
P P P
n
j i
n
j i
n
j i
n
j i
n
j i


Al multiplicar toda la expresin por 2.t y emplear las siguientes convenciones:

( )
2
1
x
t
A
A
=
( )
2
2
y
t
A
A
=


( ) ( ) ( )
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
P P P P P P P P P
, 1 , , 1 1
1
1 ,
1
,
1
1 , 2
1
, 1
1
,
1
, 1 1
2 . 2 . 2 .
+
+

+ +
+
+

+ +
+
+ + + + +
( ) ( ) 0 . 2 2 .
,
1
, 1 , , 1 , 2
= + +
+
+
n
j i
n
j i
n
j i
n
j i
n
j i
P P P P P

Rompiendo los parntesis, adicionando (
n
j i
n
j i
n
j i
n
j i
P P P P
, 2 , 2 , 1 , 1
. 2 . 2 . 2 . 2 + ) y
agrupando se obtiene:

( ) ( ) ( ) ( ) ( )
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
P P P P P P P P P P
,
1
, 1 , , 1 1 , , 1 1 ,
1
, 1 1 ,
1
, 1 1
. . 2 . . . . + + +
+
+
+

+
+


( ) ( ) ( ) ( ) ( )
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
n
j i
P P P P P P P P P P
,
1
, 2 , 1 , 2 , 1 , 2 ,
1
1 , 2 ,
1
1 , 2
. 2 . . . . + + + +
+
+
+

+
+

( ) 0 . 2
,
1
,
=
+ n
j i
n
j i
P P

Para comprobar la estabilidad, se analiza la sumatoria de los coeficientes:
Y como en la expresin anterior hay un coeficiente menor que cero, segn
Karplus para que la expansin dada por la ecuacin anterior se requiere que:

0 2 . 2 . 4 . 2 . 4
2 2 1 1
s + =



0 2 . 2 . 2
2 1
s +


1
2 1
s +


( ) ( )
1
2 2
s
A
A
+
A
A
y
t
x
t



Por consiguiente, la aproximacin Crank-Nicholson es condicionalmente
estable y la condicin de estabilidad est dada por la Ecuacin anterior.


1.3.3 Mtodo a usar para resolver el sistema de ecuaciones: SOR

El esquema que se encuentra a continuacin es un diagrama presentado para
el mtodo SOR el cual muestra el recorrido de la malla por filas.


Figura 1. Ilustracin mtodo SOR.

.
La ecuacin general del mtodo SOR es la siguiente ecuacin

( )

+ =

= + =
+ +
1
1
1
, ,
,
1
* 1
i
i j
n
i j
m
j j i
m
j j i i
i i
m
i
m
i
x a x a b
a
w
x w x

Y recordando para un bloque cualquiera de la malla que no est en la frontera
de la misma, se encuentra que al aplicar el mtodo SOR la ecuacin para
calcular la presin del bloque (i,j) en la iteracin m+1 es

( )
( )
( )
2 / 1 , 2 / 1 , 2 / 1 , 2 / 1 ,
1 , 2 / 1 ,
1
1 , 2 / 1 , , 1 2 / 1 ,
1
, 1 2 / 1 , ,
, 1
1
,
* 1
+ +
+ +
+
+ +
+
+
+ + +

=
j y j y i x i x
m
j i j y
m
j i j y
m
j i i x
m
j i i x j i m
j
m
j i
T T T T
P T P T P T P T q
w P w P

( )
( )
1
*
*
2
*
2
2
* 1
1 ,
,
2 / 1 , 2 / 1 , 2 / 1 , 2 / 1 ,
1
, 1 , 2 / 1 , , 1 , 2 / 1 ,
1
1 , 1 2 / 1 ,
,
2 / 1 , 2 / 1 , 2 / 1 , 2 / 1 ,
, 1 , 2 / 1 ,
1
1 , 1 , 2 / 1 , , , 1 2 / 1 , 1 , , 1 2 / 1 ,
1
, 1 2 / 1 , ,
, 1
1
,
m
jn i
n i
j y j y i x i x
m
n j i j y
m
j i j y
m
jn i i x
n i
j y j y i x i x
m
n j i j y
m
n j i j y
m
n j i i x
m
n j i i x
m
jn i i x j i
m
j
m
j i
P
z t
T T T T P T P T P T
z t
T T T T
P T P T P T P T P T Q
w P w P
+ + +
+
+ +
+
+
+ +
+ +
+
+ + + + + +
+

+
|
|
.
|

\
|
A
+ + +

|
|
.
|

\
|
A
+ + +

=


Cuando el bloque es de frontera es necesario usar la ecuacin adecuada,
dependiendo de la ubicacin del bloque y de la condicin de frontera


1.4 Descripcin del sistema de ecuaciones a resolver.

La malla est compuesta por 200 bloques en los cuales la variable desconocida
es la presin en cada uno de ellos. Se parte de la ecuacin general para todos
los bloques de la malla:

1 , 1 ,
2
1 1 , , 1
2
1
1 ,
2
1
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
+ +
+
+ +
+
+
+ +
+ +

+ +
|
|
.
|

\
|
A
+ + + + +
n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T

n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T
, 1 ,
2
1 , , 1
2
1
,
2
1
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
*
* 2
+
+
+
+ + +

+ +
|
|
.
|

\
|
A
+ + + + +

j i
Q
,
* 2 =


Donde Z y B
g
se calcula con la ecuacin de Standig y la viscosidad con la
relacin de Glaso


Se suponen los bloques imaginarios alrededor de la malla para aplicar el
criterio de Von Neumann, el cual supone que el yacimiento tiene cuatro
fronteras donde la presin de los bloques de frontera es igual al de los bloque
fantasmas por lo tanto de la discretizacion del sistema en una malla de NxM
bloques, se obtiene que:

Para i = 1 y j
0, 1, J J
P P =
Para i = n y j
1, , N J N J
P P
+
=
Para j = 1 y i
,0 ,1 I I
P P =
Para j = m y i
, 1 , I M I M
P P
+
=


Las siguientes ecuaciones resultan de evaluar la ecuacin general en los
bloques que componen la malla:

Para i = 1 y j = 1
1 , 2 ., 1
2
3 1 , , 1 . 2
2
3
1 , 1
2 / 3
2
3 1 , 1 , 1
*
* 2
+ +
+
+
+ +
|
|
.
|

\
|
A
+ +
n n
n
n
P Ty P Tx
Z t
Ty Tx P

1,1, 3 3 3 2,1, 3 1,2,
2 2 2 2
,
2*
*
n n x n
i n
P Tx Ty Tx Px Ty P
t Z

| |
+ + + + +
|
|
A
\ .
1 , 1
* 2 Q =

Para i = N y j = 1

1 , 2 ,
2
3
1 ,
2
3
2
1 1 , 1 , 1 , 1 , 1
2
1
*
* 2
+
+

+ +

+
|
|
.
|

\
|
A
+ +
n N
n N
N
n N n N
N
P T
Z t
T T P P T

1 . , 2 ,
2
3
,
2
3
2
1 , 1 , , 1 , 1
2
1
2
*
* 2
N n N
n N
N
n N n N
N
Q P T
Z t
T T P P T = +
|
|
.
|

\
|
A
+ +




Para i = 1 y j = M

1 , , 2
2
3
1 ,
2
1
2
3 1 , , 1 1 , 1 , 1
2
1
*
* 2
+
+

+ +

+
|
|
.
|

\
|
A
+ +
n M
n i
M
n M n M
M
P T
Z t
T T P P T

1 1, 1, 1, , 3 1 3 2, ,
2 2 2 2
1,
2*
*
M n M n M n
M M
n
T P P T T T P
t Z


| |
+ + +
|
|
A
\ .
M
Q
, 1
* 2 =

Para j = 1 2 s i < N

1 , 2 ,
2
3 1 , 1 , 1
2
1
1 , 1
2
3
2
1
2
1 1 , 1 , 1 , 1 , 1
2
1
*
* 2
+ + +
+
+
+
+ +

+ +
|
|
.
|

\
|
A
+ + +
n I n i
i
n
i i
n i n i
i
P T P T
Z t
T T T P P T

n i n i
i
n I
i i
n i n i
i
P T P T
Z t
T T T P P T
, 2 ,
2
3 , 1 , 1
2
1
1 ,
2
3
2
1
2
1 , 1 , , 1 , 1
2
1
*
* 2 + +
|
|
.
|

\
|
|
|
.
|

\
|
A
+ + +
+
+
+
+


1 ,
* 2
i
Q =

Para j = M 2 s i < N

1 , , 1
2
1
1 ,
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
+ +
+
+
+
+ +

+
|
|
.
|

\
|
A
+ + + +
n j i
i
n i
j i i
n j i n j i
j
n j i
i
P T
Z t
T T T P P T P T

M I n j i
i
n i
j i i
n j i n j i
j
n j i
i
Q P T
Z t
T T T P P T P T
, , , 1
2
1
,
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
2
*
* 2 = +
|
|
.
|

\
|
A
+ + + +
+
+ +




Para i = 1 2 s j < M

1 , 1 ,
2
1 1 , , 1
2
1
1 ,
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1
*
* 2
+ +
+
+ +
+
+
+ +
+ +

+ +
|
|
.
|

\
|
A
+ + +
n j i
j
n j i
i
n i
j j i
n j i n j i
j
P T P T
Z t
T T T P P T

n j i
j
n j i
i
n i
j j i
n j i n j i
j
P T P T
Z t
T T T P P T
, 1 ,
2
1 , , 1
2
1
,
2
1
2
1
2
1 , , , 1 ,
2
1
*
* 2
+
+
+
+ + +

+ +
|
|
.
|

\
|
A
+ + +

j i
Q
,
* 2 =

Para i = N 2 s j < M

1 , 1 ,
2
1
1 ,
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
+ +
+
+
+
+ +

+
|
|
.
|

\
|
A
+ + + +
n j i
j
n i
j j i
n j i n j i
j
n j i
i
P T
Z t
T T T P P T P T

n j i
j
n i
j j i
n j i n j i
j
n j i
i
P T
Z t
T T T P P T P T
, 1 ,
2
1
,
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
*
* 2
+
+ +

+
|
|
.
|

\
|
A
+ + + +

j i
Q
,
* 2 =

Para i = N y j = M

|
|
.
|

\
|
A
+ + +
+

+ +

1 ,
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
n i
j i
n j i n j i
j
n j i
i
Z t
T T P P T P T

|
|
.
|

\
|
A
+ + +

n i
j i
n j i n j i
j
n j i
i
Z t
T T P P T P T
,
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
*
* 2

j i
Q
,
* 2 =

Para 2 s i < N 2 s j < M

1 , 1 ,
2
1 1 , , 1
2
1
1 ,
2
1
2
1
2
1
2
1 1 , , 1 , 1 ,
2
1 1 , , 1
2
1
*
* 2
+ +
+
+ +
+
+
+ +
+ +

+ +
|
|
.
|

\
|
A
+ + + + +
n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T

n j i
j
n j i
i
n i
j j i i
n j i n j i
j
n j i
i
P T P T
Z t
T T T T P P T P T
, 1 ,
2
1 , , 1
2
1
,
2
1
2
1
2
1
2
1 , , , 1 ,
2
1 , , 1
2
1
*
* 2
+
+
+
+ + +

+ +
|
|
.
|

\
|
A
+ + + + +

j i
Q
,
* 2 =

En conclusin, el programa trabaja con las transmisibilidades de tal forma que
se hagan cero en los puntos de frontera, es decir:

0, 1, J J
P P =
1, , N J N J
P P
+
=
,0 ,1 I I
P P =
, 1 , I M I M
P P
+
=


Asimismo, el modelo numrico resultante, escrito en forma de estncil, est
dado por:

ij
n
j i ij
n
j i ij
n
j i ij
n
j i ij
n
j i ij
F P N P E P C P W P S = + + + +
+
+
+
+
+ +

1
1 ,
1
, 1
1
,
1
, 1
1
1 ,


En la ecuacin anterior, los componentes del estncil estn definidos de la
siguiente forma:

*
2
1
,
,

=
j i
j i
T S

*
,
2
1 ,
j i
j i
T W

=

*
,
2
1 ,
j i
j i
T E
+
=

*
2
1
,
,
+
=
j i
j i
T N
|
|
.
|

\
|
A
+ + + + =
+1
, , , , ,
n
i
ij
j i j i j i j i j i
tZ
N E W S C


( )

|
|
.
|

\
|
A
+ + +
+ + +
+
|
|
.
|

\
|
A
=
+ +
+
+
+
+

n i
j j i i
n j i
n j i
j
n j i
i
n j i
j
n j i
i
cn
vij
n
ij
j i ij
j i
Z t
T T T T P
P T P T P T P T
Q
Z
P
t
F
,
*
2
1
*
2
1
*
2
1
*
2
1 , ,
, 1 ,
*
2
1 , , 1
*
2
1 , 1 ,
*
2
1 , , 1
*
2
1
,
,
*
* 2
2



En las ecuaciones anteriores, el smbolo * representa el tiempo
n
t o
1 + n
t ,
dependiendo de si las transmisibilidades se tratan implcita o explcitamente. En
nuestro caso realizamos el clculo de transmisibilidad al tiempo
1 + n
t
.


A manera de ejemplo, si se considera solucionar el sistema de ecuaciones
generado por la ecuacin mediante el mtodo de SOR, se reordena la ecuacin
de la siguiente forma:

( )
( )
( )
( ) ( ) ( )
( )
( )
( )
( ) k
j i
n
k
j i
k
j i
n
k
j i
k
j i
k
j i
k
j i
n
k
j i
k
j i j i m
j
m
j i
C
P N P E P W P S F
w P w P
,
1
1 , ,
1
, 1 ,
1
, 1 ,
1
1
1 , , ,
, 1
1
,
* 1
+
+
+
+
+

+
+
+

=


1.5. Validacin del mtodo: Criterio de balance de materiales

El criterio de balance de materiales nos permite validar la solucin que se est
obteniendo a un tiempo dado del sistema de ecuaciones que describe el
comportamiento del yacimiento. Esto sigue siendo vlido para el caso de un
yacimiento de gas pero la ecuacin para aplicar el criterio es diferente, dada la
naturaleza del gas como fluido compresible.

Si el yacimiento es cerrado se puede decir que la produccin de un yacimiento
se debe a la compresibilidad del fluido y la formacin; o sea

Fluidos producidos:

( )
,
,
*
P CNi j
i j
G q t = A



Mientras el yacimiento pas del tiempo t
n
al tiempo t
n+1
, la expansin del
volumen de fluido contenido en los poros, en PCN, est dada por

( ) ( )
( )
( )
1
,
,
* * / /
*
n n
CN
CN Pi j
i j
CN
T
V V P Z P Z
P T
+
A =



Por tanto el criterio de balance de materiales se puede plantear como

( ) ( )
( )
( )
( )
1
,
,
,
,
* * / /
*
1 .
*
n n
CN
Pi j
i j CN
CNi j
i j
T
V P Z P Z
P T
EBM Tol
q t
+

= <
A




2. Cdigo del software elaborado en fortran

*************************************************************************************************************

program SIMULACIONSOR

MODULE VARIABLES
CHARACTER (15),DIMENSION(12):PROPIEDADES,UNIDADES
REAL,DIMENSION(12)::VALOR
REAL,DIMENSION(:,:),ALLOCATABLE::PSUP,zn
REAL,DIMENSION(:,:),ALLOCATABLE::KGV,KGH,QG,KGXA,KGYA,P,TGYMAS,TGYMENOS,
TGXMAS,TGXMENOS
REAL,DIMENSION(:,:),ALLOCATABLE::TGYMASS,TGYMENOSS,TGXMASS,TGXMENOSS
REAL,DIMENSION(:,:),ALLOCATABLE::SW,SE,SS,SN,SC,SF,SWN,SEN,SSN,SNN,SCN,MAT
RIZ
REAL,DIMENSION(:,:),ALLOCATABLE::ppr,ZG,BG,DG,UG,ppr2,ZG2,BG2,DG2,UG2,PC,PN
REAL,DIMENSION(:),ALLOCATABLE::VSW,VSE,VSS,VSN,VSC,VSF,PCON,PSU,PCAL
REAL ::PCI,TCI,A,B,C,D,STRI,KA,KB,KC,NUM2,DEN2,NUM1,DEN1,W,SUMA,ERROR
REAL::DX,DY,FI,TY,PI,H,GG,TP,DT,API,K1,K2,NP,QP,LX,LY,AX,AY,VP
REAL::SUMA1,SUMA2,EBM,tpc,ppc,tpr
REAL::MWO,GEO,NMO,VGBN
INTEGER::M,N,CASO,UPI,UPJ,I,J,K,NN,L,ITER,ITER2

END MODULE

PROGRAM SIMULACIONSOR
USE VARIABLES
IMPLICIT NONE
CALL LECTURA_DE_DATOS
ALLOCATE(ppr(0:M+1,0:N+1),ZG(0:M+1,0:N+1),BG(0:M+1,0:N+1),DG(0:M+1,0:N+1),UG(0:M+
1,0:N+1),zn(0:M+1,0:N+1))
ALLOCATE(ppr2(0:M+1,0:N+1),ZG2(0:M+1,0:N+1),BG2(0:M+1,0:N+1),DG2(0:M+1,0:N+1),UG2
(0:M+1,0:N+1))
ALLOCATE(PSUP(0:M+1,0:N+1),PC(0:M+1,0:N+1),PN(0:M+1,0:N+1))
ALLOCATE(TGXMAS(1 + 1/2:M + 1/2,N),TGXMENOS(1/2:M - 1/2,N),TGYMAS(M,1 + 1/2:N +
1/2),TGYMENOS(M,1/2:N-1/2))
ALLOCATE(TGXMASS(1 + 1/2:M + 1/2,N),TGXMENOSS(1/2:M - 1/2,N),TGYMASS(M,1 +
1/2:N + 1/2),TGYMENOSS(M,1/2:N-1/2))
ALLOCATE(SW(M,N),SE(M,N),SS(M,N),SN(M,N),SC(M,N),SF(M,N),SWN(M,N),SEN(M,N),SS
N(M,N),SNN(M,N),SCN(M,N))
ALLOCATE(VSW(M*N),VSE(M*N),VSS(M*N),VSN(M*N),VSC(M*N),VSF(M*N),MATRIZ(M*N,M
*N),PCON(M*N),PSU(M*N),PCAL(M*N))

OPEN(5,FILE='PRESION.TXT',STATUS='UNKNOWN')
OPEN(6,FILE='ITERACION.TXT',STATUS='UNKNOWN')
OPEN(7,FILE='FACTORZ.TXT',STATUS='UNKNOWN')
OPEN(8,FILE='VISCOSIDAD.TXT',STATUS='UNKNOWN')
OPEN(9,FILE='FACTORBG.TXT',STATUS='UNKNOWN')
P(:,:)=PI
WRITE(6,*)'RESPUESTAS EN ITERACIONES SOR'
WRITE(6,*)
WRITE(6,*)
WRITE(5,*)'RESPUESTAS DE PRESIONES PARA EL METODO SOR'
WRITE(5,*)
WRITE(5,*)
WRITE(5,*)' TIEMPO == 0'
WRITE(5,'(1X,20F8.1)')((P(I,J),I=1,M),J=1,N)
WRITE(7,*)'FACTOR DE COMPRESIBILIDAD Z'
WRITE(7,*)
WRITE(7,*)
WRITE(8,*)'VISCOSIDAD DEL GAS'
WRITE(8,*)
WRITE(8,*)
WRITE(9,*)'FACTOR VOLUMETRICO DEL GAS'
WRITE(9,*)
WRITE(9,*)
DO 500 L = DT,TP,DT
CALL PVT
CALL TRANSMISIBILIDAD_TIEMPO_N
ITER2=1
DO I =0,M+1
DO J =0,N+1
PN(I,J)=P(I,J)
psup(i,j)=pi
Zn(i,j)=zg(i,j)
END DO
END DO

DO 100 NN =1,1000


CALL PVT_SUP
CALL TRANSMISIBILIDAD_TIEMPO_N_MAS_1
CALL STENCILS
CALL SOR

DO I =1,M
DO J=1,N

ERROR =ABS(PC(I,J) - PSUP(I,J))/PC(I,J)
IF (ERROR > 0.000001) THEN
GO TO 300
END IF
END DO
END DO
GO TO 400
300 DO J=1,N
DO I=1,M
Psup(I,J) = PC(i,j)
END DO
END DO
! ESTO PARA LAS CONDICIONES DE LMITE
DO I =1,M
Psup(I,0) = Psup(I,1)
Psup(I,N+1)=Psup(I,N)
END DO
DO J =1,N
Psup(0,J) = Psup(1,J)
Psup(M+1,J)=Psup(M,J)
END DO
100 CONTINUE
400 call pvt
CALL BALANCE
! PARA EL PROXIMO MES SE DEBE TRABAJAR CON
DO I=1,M
DO J=1,N
P(I,J) = Pc(I,J)
END DO
END DO
! ESTO PARA LAS CONDICIONES DE LMITE
DO I =1,M
P(I,0) = P(I,1)
P(I,N+1)=P(I,N)
END DO
DO J =1,N
P(0,J) = P(1,J)
P(M+1,J)=P(M,J)
END DO

DO I=1,M
DO J=1,N
Pn(I,J) = Pc(I,J)
END DO
END DO
! ESTO PARA LAS CONDICIONES DE LMITE
DO I =1,M
Pn(I,0) = Pn(I,1)
Pn(I,N+1)=Pn(I,N)
END DO
DO J =1,N
Pn(0,J) = Pn(1,J)
Pn(M+1,J)=Pn(M,J)
END DO

WRITE(*,*),L,' DIAS ', ' NUMERO DE ITERACIONES',ITER2,' ERROR ',ERROR
WRITE(*,*)' CRITERIO BALANCE DE MATERIALES',EBM
WRITE(*,*)
WRITE(5,*)' PRESION TIEMPO EN ==',L
WRITE(5,'(1X,20F10.1)')((P(I,J),I=1,M),J=1,N)
WRITE(5,*)
WRITE(6,*),L,' DIAS ', ' NUMERO DE ITERACIONES',ITER,' ERROR ',ERROR
WRITE(6,*)' CRITERIO BALANCE DE MATERIALES',EBM
WRITE(6,*)
WRITE(7,*)' FACTOR DE COMPRESIBILIDAD EN ==',L
WRITE(7,'(1X,20F8.4)')((ZG2(I,J),I=1,M),J=1,N)
WRITE(7,*)
WRITE(8,*)' VISCOSIDAD DEL GAS EN ==',L
WRITE(8,'(1X,20F8.4)')((UG2(I,J),I=1,M),J=1,N)
WRITE(8,*)
WRITE(9,*)' FACTOR VOLUMETRICO DEL GAS EN ==',L
WRITE(9,'(1X,20F8.4)')((BG2(I,J),I=1,M),J=1,N)
WRITE(9,*)
500 CONTINUE
END PROGRAM SIMULACIONSOR

***********************************************************************************************************

subroutine LECTURA_DE_DATOS

USE VARIABLES
IMPLICIT NONE
PRINT*,'OPCIONES DE ELECCION USUARIO. '
PRINT*,'1 :: ELIJA OPCION " 1 " SI DESEA INGRESAR TODOS SUS DATOS POR
PANTALLA '
PRINT*,'2 :: ELIJA OPCION " 2 " SI DESEA INGRESAR DATOS POR ARCHIVOS
ALMACENADOS '
PRINT*,'4 :: ELIJA OPCION " 3 " SI DESEA SALIR '
READ(*,*)CASO
SELECT CASE (CASO)

CASE (1)

PRINT*,' '
PRINT*,' USTED ESCOGIO LA OPCION 1, PRESIONE ENTER PARA CONTINUAR.. '
PRINT*,' '
PAUSE
PRINT*,' - - DIGITE EL NUMERO DE NODOS DE LA RED MATRICIAL DEL YACIMIENTO '
PRINT*,' DIGITE EL NUMERO DE COLUMNAS M '
READ(*,*),M
PRINT*,' DIGITE EL NUMERO DE FILAS N '
READ(*,*),N
ALLOCATE(KGV(M,N),KGH(M,N),QG(M,N))
PRINT*,''
PRINT*, 'POROSIDAD DEL YACIMIENTO (DEC)'
READ(*,*),FI
PRINT*,' '
PRINT*,'LECTURA DE LOS DELTA X DEL YACIMIENTO'
PRINT*,' '
PRINT*,'DELTA X DE LOS BLOQUES (FT)'
READ(*,*),LX
PRINT*,' '
PRINT*,'LECTURA DE LOS DELTA Y DEL YACIMIENTO'
PRINT*,' '
PRINT*,'DELTA Y DE LOS BLOQUES (FT)'
READ(*,*),LY
PRINT*,' '
PRINT*,'LECTURA DE LA ALTURA DE LOS BLOQUES (FT)'
READ(*,*),H
PRINT*,' '
PRINT*,'TEMEPARUTA DEL YACIMIENTO (R)'
READ(*,*),TY
PRINT*,' '
PRINT*,'GRAVEDAD ESPECIFICA DEL GAS (DEC)'
READ(*,*),Gg
PRINT*,' '
PRINT*,'TIEMPO FINAL DE LA SIMULACION (DIAS)'
READ(*,*),TP
PRINT*,' '
PRINT*,'PASOS DEL TIEMPO DELTA T (DIAS)'
READ(*,*),DT
PRINT*,' '
PRINT*,'GRAVEDAD API DEL YACIMIENTO EQUIVALENTE (DIAS)'
READ(*,*),API
PRINT*,' '
PRINT*,'PRESION INICIAL DEL YACIMIENTO (PSIA)'
READ(*,*),PI
PRINT*,' '
PRINT*,'PERMEABILIDAD DEL YACIMIENRO HORIZONTAL (mD)'
READ(*,*),k1
PRINT*,' '
DO I = 1,M
DO J = 1,N
KGH(I,J) = K1
END DO
END DO
PRINT*,'PERMEABILIDAD DEL YACIMIENRO VERTICAL (mD)'
READ(*,*),K2
DO I = 1,M
DO J = 1,N
KGV(I,J) = K2
END DO
END DO
PRINT*,' '
PRINT*,'NUMERO DE POZOS EN EL YACIMIENTO '
READ(*,*),NP
PRINT*,' '
QG(:,:)=0
DO I =1,NP
PRINT*,' POSICION DEL POZO ',I
PRINT*,' POSICION FILA'
READ(*,*)UPI
PRINT*,' POSICION COLUMNA'
READ(*,*)UPJ
PRINT*,' CAUDAL PRODUCIDO B/D'
READ(*,*)Qp
QG(UPJ,UPI)=QP
END DO
PRINT*,'LECTURA DE ARCHIVOS EXITOSA ,PRESIONES ENTER PARA CONTIUNAR
'
PAUSE
CLOSE (1)

CASE (2)

PRINT*,' '
PRINT*,' USTED ESCOGIO LA OPCION 2, PRESIONE ENTER PARA CONTINUAR.. '
PRINT*,' '
OPEN(1,FILE='DATOSSOR.TXT',STATUS='OLD')
READ(1,*)
READ(1,*)
DO I =1,12
READ(1,*),PROPIEDADES(I),VALOR(I), UNIDADES(I)
WRITE(*,*),PROPIEDADES(I),VALOR(I), UNIDADES(I)
END DO
LX=VALOR(1)
LY=VALOR(2)
H=VALOR(3)
M=VALOR(4)
N=VALOR(5)
FI=VALOR(6)
Gg=VALOR(7)
Ty=VALOR(8)
API=VALOR(9)
PI=VALOR(10)
TP=VALOR(11)
DT=VALOR(12)

ALLOCATE(KGV(M,N),KGH(M,N),QG(M,N))
OPEN(4,FILE='KGV.TXT',STATUS='OLD')
READ(4,*)
READ(4,*)
DO J =1,N
READ(4,*)(KGV(I,J),I=1,M)
END DO
OPEN(5,FILE='KGH.TXT',STATUS='OLD')
READ(5,*)
READ(5,*)
DO J =1,N
READ(5,*)(KGH(I,J),I=1,M)
END DO
OPEN(6,FILE='QG.TXT',STATUS='OLD')
READ(6,*)
READ(6,*)
DO J =1,N
READ(6,*)(QG(I,J),I=1,M)
END DO
PRINT*,' '
PRINT*,'LECTURA DE ARCHIVOS EXITOSA'
CLOSE (2)

CASE(3)
CALL EXIT
CLOSE(3)

END SELECT
DY = LY/N
DX = LX/M
AX=DY*H
AY=DX*H
VP=DX*DY*H*FI
! CAUDAL DE GAS EQUIVALENTE
MWO = 6084/(API-5.9) ! PESO MOLECULAR DEL ACEITE
GEO= 141.5/(API+131.5) !GRAVEDAD ESPECIFICA DEL ACEITE
NMO = (350*GEO)/MWO !NUMERO DE MOLES DEL LIQUIDO
VGBN = (NMO*10.73*520/14.7) !VOLUMEN DE GAS EN PIE3 ASOCIADO AL
CRUDO POR BN
!VOLUMEN DE GAS EN BARRILES ASOCIADO AL CRUDO POR BN
DO J =1,N
DO I=1,M
QG(I,J)=QG(I,J)*VGBN
END DO
END DO
!******************************************
!Creacion de matrices con bloques Fantasmas
!******************************************
ALLOCATE(KGXA(0:M+1,0:N+1),KGYA(0:M+1,0:N+1),P(0:M+1,0:N+1))
DO I=1,M
DO J=1,N
KGXA(I,J)=KGH(I,J)
KGYA(I,J)=KGV(I,J)
P(I,J) = PI
END DO
END DO
DO J =1,N
KGXA(0,J)= KGH(1,J)
KGYA(0,J)= KGV(1,J)
KGXA(M+1,J)= KGH(M,J)
KGYA(M+1,J)= KGV(M,J)
END DO
DO I =1,M
KGXA(I,0)= KGH(I,1)
KGYA(I,0)= KGV(I,1)
KGXA(I,N+1)= KGH(I,N)
KGYA(I,N+1)= KGV(I,N)
END DO

end subroutine LECTURA_DE_DATOS

***********************************************************************************************************

SUBROUTINE PVT

USE VARIABLES
IMPLICIT NONE

tpc = 187 + 330*gg - 71.5*(gg**2)
ppc = 706 - 51.7*gg - 11.1*(gg**2)
tpr = ty/tpc
ka =((9.379+0.01607*29*gg)*(ty**1.5))/(209.2 + 19.26*29*gg + ty)
kb =3.448 +986.14/ty +0.01009*29*gg
kc=2.447 - 0.224*kb
do i=0,m+1
do j=0,n+1
ppr(i,j) = p(i,j)/ppc
zg(i,j) = ppr(i,j)*(-0.0284*tpr + 0.0625) + 0.4714*tpr - 0.0011
bg(i,j) = (14.7*zg(i,j)*ty)/(520*p(i,j))
dg(i,j)=(ppr(i,j)*29*gg)/(zg(i,j)*10.73*ty)
ug(i,j)=0.0001*ka*exp(kb*(dg(i,j)**kc))
end do
end do
end subroutine pvt

SUBROUTINE PVT_SUP
USE VARIABLES
IMPLICIT NONE
tpc = 187 + 330*gg - 71.5*(gg**2)
ppc = 706 - 51.7*gg - 11.1*(gg**2)
tpr = ty/tpc
ka =((9.379+0.01607*29*gg)*(ty**1.5))/(209.2 + 19.26*29*gg + ty)
kb =3.448 +986.14/ty +0.01009*29*gg
kc=2.447 - 0.224*kb
do i=0,m+1
do j=0,n+1
ppr2(i,j) = psup(i,j)/ppc
zg2(i,j) = ppr2(i,j)*(-0.0284*tpr + 0.0625) + 0.4714*tpr - 0.0011
bg2(i,j) = (14.7*zg2(i,j)*ty)/(520*psup(i,j))
dg2(i,j)=(ppr2(i,j)*29*gg)/(zg2(i,j)*10.73*ty)
ug2(i,j)=0.0001*ka*exp(kb*(dg2(i,j)**kc))
end do
end do

END SUBROUTINE PVT_SUP

***********************************************************************************************************

SUBROUTINE TRANSMISIBILIDAD_TIEMPO_N
USE VARIABLES
IMPLICIT NONE
TGXMAS(1 + 1/2:M + 1/2,1:N)=0;TGXMENOS(1/2:M - 1/2,1:N)=0
DO J=1,N
TGXMAS(M + 1/2,J)=0
TGXMENOS(1/2,J)=0
END DO
DO I =1,M-1
DO J =1,N
NUM1 = 2*0.001127*AX*KGXA(I,J)*KGXA(I+1,J)
DEN1 = KGXA(I,J)*DX*BG(I+1,J)*UG(I+1,J) + KGXA(I+1,J)*DX*UG(I,J)*BG(I,J)
TGXMAS(I + 1/2,J)= (NUM1/DEN1)
END DO
END DO

DO I =2,M
DO J =1,N
NUM2 = 2*0.001127*AX*KGXA(I,J)*KGXA(I-1,J)
DEN2 = KGXA(I,J)*DX*BG(I-1,J)*UG(I-1,J) + KGXA(I-1,J)*DX*UG(I,J)*BG(I,J)
TGXMENOS(I - 1/2,J)= (NUM2/DEN2)
END DO
END DO

TGYMAS(1:M,1 + 1/2:N + 1/2)=0;TGYMENOS(1:M,1/2:N-1/2)=0
DO I =1,M
TGYMAS(I,N + 1/2)=0
TGYMENOS(I,1/2)=0
END DO
DO I =1,M
DO J =1,N-1
NUM1 = 2*0.001127*AY*KGYA(I,J)*KGYA(I,J+1)
DEN1 = KGYA(I,J)*DY*BG(I,J+1)*UG(I,J+1) +
KGYA(I,J+1)*DY*BG(I,J)*UG(I,J)
TGYMAS(I,J+ 1/2)=(NUM1/DEN1)
END DO
END DO
DO I =1,M
DO J =2,N
NUM2 = 2*0.001127*AY*KGYA(I,J)*KGYA(I-1,J)
DEN2 = KGYA(I,J)*DY*BG(I,J-1)*UG(I,J-1) + KGYA(I,J-1)*DY*BG(I,J)*UG(I,J)
TGYMENOS(I,J- 1/2)= (NUM2/DEN2)
END DO
END DO
END SUBROUTINE TRANSMISIBILIDAD_TIEMPO_N

SUBROUTINE TRANSMISIBILIDAD_TIEMPO_N_MAS_1

USE VARIABLES
IMPLICIT NONE
TGXMASS(1 + 1/2:M + 1/2,1:N)=0;TGXMENOSS(1/2:M - 1/2,1:N)=0
DO J=1,N
TGXMASS(M + 1/2,J)=0
TGXMENOSS(1/2,J)=0
END DO
DO I =1,M-1
DO J =1,N
NUM1 = 2*0.001127*AX*KGXA(I,J)*KGXA(I+1,J)
DEN1 = KGXA(I,J)*DX*BG2(I+1,J)*UG2(I+1,J) +
KGXA(I+1,J)*DX*UG2(I,J)*BG2(I,J)
TGXMASS(I + 1/2,J)= (NUM1/DEN1)
END DO
END DO
DO I =2,M
DO J =1,N
NUM2 = 2*0.001127*AX*KGXA(I,J)*KGXA(I-1,J)
DEN2 = KGXA(I,J)*DX*BG2(I-1,J)*UG2(I-1,J) + KGXA(I-
1,J)*DX*UG2(I,J)*BG2(I,J)
TGXMENOSS(I - 1/2,J)= (NUM2/DEN2)
END DO
END DO
TGYMASS(1:M,1 + 1/2:N + 1/2)=0;TGYMENOSS(1:M,1/2:N-1/2)=0
DO I =1,M
TGYMASS(I,N + 1/2)=0
TGYMENOSS(I,1/2)=0
END DO
DO I =1,M
DO J =1,N-1
NUM1 = 2*0.001127*AY*KGYA(I,J)*KGYA(I,J+1)
DEN1 = KGYA(I,J)*DY*BG2(I,J+1)*UG2(I,J+1) +
KGYA(I,J+1)*DY*BG2(I,J)*UG2(I,J)
TGYMASS(I,J+ 1/2)=(NUM1/DEN1)
END DO
END DO
DO I =1,M
DO J =2,N
NUM2 = 2*0.001127*AY*KGYA(I,J)*KGYA(I-1,J)
DEN2 = KGYA(I,J)*DY*BG2(I,J-1)*UG2(I,J-1) + KGYA(I,J-
1)*DY*BG2(I,J)*UG2(I,J)
TGYMENOSS(I,J- 1/2)= (NUM2/DEN2)
END DO
END DO
END SUBROUTINE TRANSMISIBILIDAD_TIEMPO_N_MAS_1

***********************************************************************************************************

SUBROUTINE STENCILS
USE VARIABLES
IMPLICIT NONE

! ****************************************************
! **** FORMACION DE LOS ESTENCILS:: IMPLICITA ****
! ****************************************************

DO I=1,M
DO J=1,N
SW(I,J)=TGXMENOSS(I - 1/2,J)
SE(I,J)=TGXMASS(I + 1/2,J)
SS(I,J)=TGYMENOSS(I,J - 1/2)
SN(I,J)=TGYMASS(I,J+ 1/2)
SC(I,J)=-SW(I,J) - SE(I,J)- SS(I,J)- SN(I,J)
2*VP*520/(TY*14.7*DT*ZG2(I,J))
SWN(I,J)=TGXMENOS(I - 1/2,J)
SEN(I,J)=TGXMAS(I + 1/2,J)
SSN(I,J)=TGYMENOS(I,J - 1/2)
SNN(I,J)=TGYMAS(I,J+ 1/2)
SCN(I,J)=-SWN(I,J) - SEN(I,J)- SSN(I,J)-SNN(I,J) +
2*VP*520/(TY*14.7*DT*Zn(I,J))
SF(I,J)= 2*QG(I,J) - SWN(I,J)*PN(I-1,J) - SEN(I,J)*PN(I+1,J) -
SSN(I,J)*PN(I,J-1) - SNN(I,J)*PN(I,J + 1) - SCN(I,J)*PN(I,J)
END DO
END DO

K=1
DO J =1,N
DO I = 1,M
VSS(K)=SS(I,J)
VSN(K)=SN(I,J)
VSE(K)=SE(I,J)
VSW(K)=SW(I,J)
VSC(K)=SC(I,J)
VSF(K)=SF(I,J)
pcon(k)=pn(i,j)
K=K+1
END DO
END DO

MATRIZ(:,:)=0
DO I = 1,M*N
MATRIZ(I,I)=VSC(I)
END DO
DO I=2,M*N
MATRIZ(I,I-1)=VSE(I-1)
END DO
DO I=M+1,M*N
MATRIZ(I,I-M)=VSN(I-M)
END DO
DO I=2,M*N
MATRIZ(I-1,I)=VSW(I)
END DO
DO I=M+1,M*N
MATRIZ(I-M,I)=VSS(I)
END DO

END SUBROUTINE STENCILS

***********************************************************************************************************

SUBROUTINE SOR
USE VARIABLES
IMPLICIT NONE
! PARA RESOLVER SOR SE INICIA CON LA PRESION ExPLICITA DE ESTA MANERA SE
REALIZAN MENOS ITERACIONES

W=1
K=1
DO J =1,N
DO I = 1,M
PSU(K)=PSUP(I,J)
K=K+1
end do
end do
ITER = 1
DO 300 K =1,1000
DO I=1,M*N
SUMA=0

! PRIMERA SUMATORIA ! PRESION EN K + 1
DO J =1,I-1
SUMA = SUMA + MATRIZ(I,J)*PSU(J)
END DO

! SEGUNDA SUMATORIA ! PRESION EN K
DO J = I+1,M*N
SUMA = SUMA + MATRIZ(I,J)*Pcon(J)
END DO
PCAL(I)=(1 - W)*PCON(I) + (W/VSC(I))*(VSF(I) - SUMA)
END DO
DO J =1,M*N
Pcon(J)=Pcon(J)
END DO
DO 400 I =1,M*N
ERROR = ABS(PSU(I) - PCAL(I))/pcal(i)
IF (ERROR > 0.01) THEN
ITER = ITER +1
goto 500
IF (ITER > 99999)THEN
GOTO 400
ENDIF
END IF
400 CONTINUE
go to 700
500 do i =1,M*N
psu(i)=pcal(i)
end do

300 CONTINUE
700 WRITE(*,*)'------------------------------------------------------------------'
WRITE(6,*)' SOR HA ITERANDO ',ITER,'VECES'
WRITE(*,*)' SOR HA ITERANDO ',ITER,'VECES'
WRITE(*,*)'------------------------------------------------------------------'

k=1
DO J=1,N
DO I=1,M
Pc(I,J) = PCAL(k)
k=k+1
END DO
END DO
! ESTO PARA LAS CONDICIONES DE LIMITE
DO I =1,M
Pc(I,0) = Pc(I,1)
Pc(I,N+1)=Pc(I,N)
END DO
DO J =1,N
Pc(0,J) = Pc(1,J)
Pc(M+1,J)=Pc(M,J)
END DO
END SUBROUTINE SOR

***********************************************************************************************************

SUBROUTINE BALANCE
USE VARIABLES
IMPLICIT NONE
SUMA1=0;SUMA2=0
DO I = 1, M
DO J = 1, N
SUMA1 = SUMA1 + ((VP*520)/(TY*14.7))*((Pn(I,J)/Zn(I,J))-(Pc(I,J)/ZG2(I,J)) )
SUMA2 = SUMA2 + QG(I,J)
END DO
END DO
EBM = SUMA1/(SUMA2*DT)

***********************************************************************************************************

También podría gustarte