MODELAMIENTO DEL FLUJO LINEAL 2D DE UN FLUIDO COMPRESIBLE
Elaborado Por
ANDRES DAVID HERRERA PALACIO
ELKIN DANIEL PAEZ
JACOBO GIRALDO LOPEZ
GRUPO 14
Presentado a
ABEL NARANJO
JUAN MANUEL
UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MEDELLIN ā FACULTAD DE MINAS
SIMULACION DE YACIMIENTOS
NOVIEMBRE 2012
INTRODUCCION.
En los Ćŗltimos aƱos la alta demanda de energĆa en la sociedad ha llevado a la industria
del petrĆ³leo a superar nuevos retos, cada dĆa aumenta la necesidad por este preciado
recurso y los ingenieros han tenido que ir desarrollando nuevas tecnologĆas para suplir
esta demanda.
Una poderosa herramienta llamada simulaciĆ³n de yacimientos ha venido cobrando fuerza
en la industria gracias a que con ella el ingeniero tiene la posibilidad de entender mucho
mejor los diferentes fenĆ³menos que trae consigo el desarrollo de un yacimiento de
petrĆ³leo, permitiendo predecir su comportamiento y realizar diferentes tipos de proceso
que a este se le puedan realizar con el fin de ahorrar costos y lograr adquirir un mejor
desempeƱo a la hora de producir.
La simulaciĆ³n de yacimientos tiene como objetivo especĆfico y principal predecir la
distribuciĆ³n de presiones en el yacimiento con el tiempo. Estos patrones de distribuciĆ³n
tambiƩn pueden ser determinados incluyendo pozos tanto productores como inyectores y,
mediante la ubicaciĆ³n estratĆ©gica de los mismos se puede determinar la mejor distribuciĆ³n
de presiones en el yacimiento.
DEFINICION DEL PROBLEMA
Se quiere analizar el comportamiento de la presiĆ³n en un yacimiento de gas seco durante
un tiempo determinado, con un arreglo especĆfico de pozos inyectores y productores y en
el cual las propiedades de los fluidos varĆan con el tiempo de producciĆ³n e inyecciĆ³n.
Simularemos este fenĆ³meno mediante flujo lineal en dos direcciones (2-D) durante un aƱo
con reportes de caĆda de presiĆ³n cada mes por el mĆ©todo de soluciĆ³n directo de
eliminaciĆ³n gaussiana y analizaremos si es viable este arreglo.
MODELO FISICO
En esta secciĆ³n definiremos todos los parĆ”metros a utilizar para el desarrollo de nuestro
simulador; se especificaran condiciones para la malla, el fluido y el yacimiento; estas se
muestran a continuaciĆ³n:
GeometrĆa de flujo:
Se simulara con un flujo bidimensional, es decir el flujo se caracteriza por que se
puede realizar en un plano sin que exista paralelismo entre las direcciones, la
figura 1 ilustra este tipo de geometrĆa.
Figura 1. GeometrĆa de flujo bidimensional
Tipo de fluido:
Como el fluido es gas, entonces el tipo de fluido es compresible, es decir la
variaciĆ³n del volumen es funciĆ³n de la presiĆ³n.
c=ā 1V
d Vdp=f ( p )
y
x
Numero de fases:
Para este trabajo se simulara flujo monofƔsico.
Arreglo de pozos:
Ubicaremos a travƩs de la malla un arreglo de 5 puntos, donde cuatro de ellos
serƔn inyectores y el restante serƔ un pozo productor.
Propiedades de la Roca reservorio:
o Permeabilidades: Se asumiĆ³ que la permeabilidad del reservorio tiene un
comportamiento anisotrĆ³pico y en cada direcciĆ³n varĆan de forma lineal
para cada uno de los bloques (el nĆŗmero de bloques se definirĆ” mas
adelante); en la tabla 1 se muestra la variaciĆ³n de permeabilidad en cada
direcciĆ³n:
Tabla 1: variaciĆ³n de permeabilidades en X y Y.
Kx Ky10 1012 1214 1416 1618 1820 2022 2224 2426 2628 2830 30
o Espesor de la formaciĆ³n: 30 pies (constante para toda la formaciĆ³n).
o Porosidad de la formaciĆ³n: 0.15 (constante para toda la formaciĆ³n).
o Temperatura de la formaciĆ³n: 570Ā° Ranking (constante para toda la
formaciĆ³n)
Propiedades del fluido:
Las propiedades del gas son funciĆ³n de la presiĆ³n, temperatura y composiciĆ³n,
pero para este trabajo solo serĆ” funciĆ³n de la presiĆ³n:
o Factor volumĆ©trico del gas (Bg): Utilizamos la ecuaciĆ³n de estado (ver
modelo matemƔtico).
o Viscosidad del gas: Para esta propiedad aplicamos la correlaciĆ³n de Lee,
A.L., Gonzalez, M.H. y Eakin, B.E.
o Factor de compresibilidad del gas: Trabajamos con los ajustes de las
curvas de Standing por el mƩtodo de Brill, Z.P. y Beggs, H. D.
o Gravedad especifica del gas: 0.765 (constante para toda la formaciĆ³n).
Dimensionamiento de la malla:
Se utilizaron las siguientes dimensiones para malla de bloque centrado:
La longitud del yacimiento en la direcciĆ³n Y= 1100 ft. Y en la direcciĆ³n X= 1100 ft.,
como se tienen 11 bloques en cada direcciĆ³n, el tamaƱo de paso para āY= 100 ft y
āX= 100 ft. El tamaƱo de paso en el tiempo es de 1 dĆa, se asume que la
inclinaciĆ³n del yacimiento con respecto a la horizontal es de 0Ā° y la ubicaciĆ³n de
los pozos se puede ver en la figura 2 y es la siguiente:
o Bloque (1,1): pozo productor= 1 MPCN/DIA
o Bloque (11,1): Pozo productor= 1 MPCN/DIA
o Bloque (6,6): Pozo productor= 5 MPCN/DIA
o Bloque (1,11): Pozo productor= 1 MPCN/DIA
o Bloque (11,11): Pozo productor= 1 MPCN/DIA
12
11 Bloqu
e
(1,11)
Bloque
(11,11)
10
9
8
7
6 Bloque
(6,6)
5
4
3
2
1 Bloqu
e (1,1)
Bloque
(11,1)
0
iā 0 1 2 3 4 5 6 7 8 9 10 11 12
jā Figura 2: esquematizaciĆ³n de la malla de trabojo
Bloques Fantasma
Pozos Productores
Condiciones de frontera y condiciĆ³n inicial:
o PresiĆ³n inicial = 3000 psi
o Condiciones de frontera: Condiciones tipo von neuman para yacimiento
cerrado y absorbidas, solo con 2 Nx y 2 My bloques fantasma.
o Constante para la transmisibidad: C= 1.127*10-3 para nuestras unidades
de trabajo que son: longitud: ft, Ć”rea: ft2,k: mD, É„:cp, Q=BPD, P:psi,Ť
BPD/psi.
MODELO MATEMATICO
Como simularemos el flujo de un fluido compresible monofƔsico a travƩs de un medio
poroso utilizaremos la ecuaciĆ³n fundamental de Darcy y la ecuaciĆ³n de difusividad; estas
ecuaciones en forma diferencial toman la siguiente forma para flujo lineal en 2-D:
EcuaciĆ³n fundamental de Darcy lineal
En x:
ux=āk x
Ī¼ā pā x
En y:
u y=āk y
Ī¼ā pā y
EcuaciĆ³n general de Difusividad lineal 2D:
Donde:
Ī±: A si es 1D, H si es 2D, 1 si es 3D
āā x (HĻ
k x
Ī¼ā pā x )+ āā y (HĻ
k y
Ī¼ā pā y )=H
ā ( ĻĻ )ā t
+H~q
En estas ecuaciones por ser un fluido compresible, las propiedades PVT dependen de la
presiĆ³n, del tiempo y de la composiciĆ³n. Considerando que la composiciĆ³n es constante
para este trabajo, debemos una hallar una expresiĆ³n para la densidad en funciĆ³n de la
presiĆ³n y el tiempo, entonces de la definiciĆ³n de factor VolumĆ©trico se tiene:
La densidad a condiciones de yacimiento se expresa como:
g CN gCN CNg CY
CN CN
CN
T PP ZT P T Z
T P
q
tp ~
K
ā
Y remplazando en la ecuaciĆ³n de difusividad llegamos a:
āā x ( kH
Ī¼Bg
ā āPā x )+ ā
ā y ( kHĪ¼Bg
ā āPā y )=HĻT cn
Pcn Tā āā t (Pz )+H (qv )CN
Esta ecuaciĆ³n representa el flujo de un fluido altamente compresible a travĆ©s de un medio
poroso en dos dimensiones, coordenadas cartesianas, expresadas en funciĆ³n del Bg,
presiĆ³n, temperatura y gravedad especifica del gas.
Existen otros mĆ©todos para relacionar la densidad en funciĆ³n de la presiĆ³n como son los
casos de la ecuaciĆ³n de estado y la pseudopresion, por motivos de comodidad y
practicidad utilizaremos el factor bolumetrico del gas para solucionar este problema.
CONDICIONES TIPO VON NEUMAN
En X=0
(q )x=0=( kAĪ¼ā pā x )x=0
=q xcero
En X=lX
(q )x=lx=( kAĪ¼ā pā x )x=lx
=qlxcero
En Y=0
(q )y=0=( kAĪ¼ā pā y ) y=0
=q ycero
En Y=lY
(q )y=ly=( kAĪ¼ā pā y )y=ly
=q lycero
Como se tiene yacimiento cerrado, entonces:
En X=0
(ā pā x )x=0
=0
En X=lX
(ā pā x )x=lx
=0
En Y=0
(ā pā y )y=0
=0
En Y=lY
yN
j
1
1 ixN
j,i
1j,i 1j,1i
j,1i j,1i
1j,i
1j,1i
1j,1i 1j,1i
1i 1i
1j
1j
(ā pā y )y=ly
=0
MODELO NUMERICO MALLA DE BLOQUE CENTRADO
A continuaciĆ³n se desarrollara la expansiĆ³n en diferencias finitas de la ecuaciĆ³n de
difusividad en coordenadas cartesianas para una malla de bloque centrado con Nx por Ny
bloques, en la figura 3 se muestra el esquema para la expansiĆ³n.
Figura 3. Sistema Bidimensional Cartesiana de N x Filas y
N y Columnas ā Malla de
Bloque Centrado
La ecuaciĆ³n diferencial es:
āā x ( kH
Ī¼Bg
ā āPā x )+ ā
ā y ( kHĪ¼Bg
ā āPā y )=HĻT cn
Pcn Tā āā t (Pz )+H (qv )CN
(1)
ix
ji,
21i 21i
21ixx 21ixx a
a
21j
21j
jy
Sea:
U i=( kHĪ¼Bg
ā ā pā x )i (2)
U j=( kHĪ¼Bg
ā ā pā y ) j (3)
Entonces la ecuaciĆ³n puede se rescrita como:
āU i
ā x+āU j
ā y=
HĻT cn
PcnTā āā t ( P
z )+H (qv )CN(4)
Considere el i,j-esimo bloque de la malla como se ilustra en la figura 4:
Figura 4: Esquema del i ,j-Ć©simo Bloque de un Sistema Lineal ā Malla de Bloque Centrado.
Entonces la ecuaciĆ³n anterior puede ser expandida por series de taylor tanto para i como para j alrededor de un punto a una distancia (x-a) de la siguiente forma:
Para X:
U ( x )=ān=0
ā U(n )(a ) (xāa )n
n! (5)
Para Y:
U ( y )=ān=0
ā U (n)(a ) ( yāa )n
n! (6)
Ahora realicemos una expansiĆ³n a la funciĆ³n U(X) alrededor del punto a = Xi evaluando U
en X = Xi+1/2 = Xi + Ī Xi/2 por tanto (X-a) = Ī Xi/2
Entonces:
Ui+1
2
=U i +U i
'
1 ! ( Īxi
2 )+ U i' '
2 ! ( Īx i
2 )2
+U i
' ' '
3 ! ( Īxi
2 )3
+(7)
De manera anĆ”loga el para punto a = Xi evaluando U en X = Xi-1/2 = Xi - Ī Xi/2 por tanto (X-
a) = -Ī Xi/2,
Uiā1
2
=U iāU i
'
1 ! ( Īxi
2 )+ U i' '
2 ! ( Īxi
2 )2
āU i
' ' '
3! ( Īxi
2 )3
+(8)
Ahora restĆ”ndole a la ecuaciĆ³n * la ecuaciĆ³n ** y resolviendo para U i'
llegamos a:
U i'=
Ui+1
2
āUiā1
2
Īxi
āU i
' ' '
3 !(Īx i )2
4āā¦=
Ui+1
2
āUiā1
2
Īx i
+Ric
U i'ā
Ui+1
2
āUiā1
2
Īxi (9)
Donde Ric
es el error que se comete en la expansiĆ³n centrada de segundo orden ya que la menor potencia a la que esta elevado delta de X es 2.
Siguiendo un procedimiento similar y resolviendo para Y llegamos a:
U j' =
Uj+1
2
āUjā1
2
Īy j
āU j
' ' '
3 !(Īy j )2
4āā¦=
Uj+1
2
āUjā1
2
Īy j
+R jc
U j' ā
Uj+1
2
āUjā1
2
Īy j (10)
Donde R jc
es el error de segundo orden ya que la menor potencia a la que esta elevado delta Y es 2.
Ahora remplazando (9) y (10) en (4) la ecuaciĆ³n queda:
En X:
āā x ( kx H
Ī¼Bg
ā ā pā x )iā
( k x H
Ī¼Bg)i+1
2, j[ 2 (Pi+1, jāPi , j )
Īxi+1+Īx i]ā( k x H
Ī¼Bg)iā1
2, j[ 2 (Pi , jāPiā1 , j )
Īxi+Īxiā1]
Īxi
En Y:
āā y ( k y H
Ī¼Bg
ā ā pā y )jā
( k y H
Ī¼Bg)i , j+1
2[ 2 (Pi , j+1āPi , j )
Īy j+1+Īy j]ā( k y H
Ī¼Bg)i , jā1
2[ 2 (Pi , jāPi , jā1 )
Īy j+Īy jā1]
Īy j
Las transmisibidades se pueden obtener de manera anƔloga a las que se obtienen en
fluidos incompresibles y levemente compresibles:
Nota: las transmisibidades se trabajan a un tiempo *, de la siguiente forma: T* donde:
* = n+1 si es implĆcita
* = n si es explicita.
Para este trabajo se toman las transmisibidades de forma implĆcita, ademĆ”s las transmisibidades se multiplican por una constante C definida en el modelo numerico.
Para el tiempo utilizamos una expansiĆ³n en diferencias finitas progresiva:
Despejando Para cada direcciĆ³n y reorganizando la ecuaciĆ³n llegamos a:
(11)
Donde Ęi= (Vp*520)/(14.7*Tempcy).
Tomando la presiĆ³n implĆcita y las transmisibidades implĆcitas finalmente llegamos a la ecuaciĆ³n:
(12)
La cual se aplica a cada uno de los bloques.
Ahora expandamos las condiciones de frontera. Como tenemos yacimiento cerrado entonces:
Para X = 0 Pn+1
1 , jāPn+1
0 , j=0
Pn+1
1 , j=Pn+1
0 , j
Para X= lX:
Pn+1
Nx+1, jāPn+1
Nx , j=0
Pn+1
Nx+1, j=Pn+1
Nx , j
Para Y= 0
Pn+1
i ,1āPn+1
i ,0=0
Pn+1
i ,1=Pn+1
i ,0
Para Y= lY
Pn+1
i ,My+1āPn+1
i , My=0
Pn+1
i ,My+1=Pn+1
i , My
SISTEMA DE ECUACIONES PARA MALLA DE BLOQUE CENTRADO CONDICIONES ABSORBIDAS YACIMIENTO CERRADO.
Bloques de la izquierda sin tomar esquinas (para todo i,j/ i=1 y 1<j<11)
Ti+1
2, j
n+1 Pi+1 , jn+1 +T
i , j+12
n+1 Pi , j+1n+1 ā(T i+1
2, j
n+1 +Ti , j+1
2
n+1 +Ti , jā1
2
n+1 +Ī³ ij
ĪtZi , jn+1 )Pi , j
n+1+Ti , jā1
2
n+1 Pi , jā1n+1 =ā
Ī³ij
Īt ( Pi , j
Z i , j)n
+(Q vi , j )CN
Bloques de la derecha sin tomar esquinas (para todo i,j/ i=11 y 1<j<11)
Ti , j+1
2
n+1 Pi , j+1n+1 ā(T iā1
2, j
n+1 +Ti , j+1
2
n+1 +Ti , jā1
2
n+1 +Ī³ ij
ĪtZi , jn+1 )P i , j
n+1+Tiā1
2, j
n+1 Piā1 , jn+1 +T
i , jā12
n+1 Pi , jā1n+1 =ā
Ī³ij
Īt ( Pi , j
Z i , j)
n
+(Q vi , j )CN
Bloques inferiores sin tomar esquinas (para todo i,j/ j=1 y 1<i<11)
Ti+1
2, j
n+1 Pi+1 , jn+1 +T
i , j+12
n+1 Pi , j+1n+1 ā(T i+1
2, j
n+1 +Tiā1
2, j
n+1 +Ti , j+1
2
n+1 +Ī³ ij
ĪtZi , jn+1 )Pi , j
n+1+Tiā1
2, j
n+1 Piā1 , jn+1 =ā
Ī³ij
Īt ( Pi , j
Z i , j)n
+(Q vi , j )CN
Bloques superiores sin tomar esquinas (para todo i,j/ j=11 y 1<i<11)
Ti+1
2, j
n+1 Pi+1 , jn+1 ā(T i+1
2, j
n+1 +Tiā1
2, j
n+1 +Ti , jā1
2
n+1 +Ī³ ij
ĪtZi , jn+1 )P i , j
n+1+Tiā1
2, j
n+1 Piā1 , jn+1 +T
i , jā12
n+1 Pi , jā1n+1 =ā
Ī³ij
Īt ( Pi , j
Z i , j)
n
+(Q vi , j )CN
Esquina (1,1)
Ti+1
2, j
n+1 Pi+1 , jn+1 +T
i , j+12
n+1 Pi , j+1n+1 ā(T i+1
2, j
n+1 +Ti , j+1
2
n+1 +Ī³ij
ĪtZ i , jn+1 )Pi , j
n+1=āĪ³ij
Īt ( Pi , j
Z i , j)n
+(Qvi , j )CN
Esquina (11,1)
Ti , j+1
2
n+1 Pi , j+1n+1 ā(T iā1
2, j
n+1 +Ti , j+1
2
n+1 +Ī³ij
ĪtZ i , jn+1 )Pi , j
n+1+Tiā1
2, j
n+1 Piā1, jn+1 =ā
Ī³ ij
Īt (P i , j
Z i , j)n
+ (Qvi , j )CN
Esquina(1,11)
Ti+1
2, j
n+1 Pi+1 , jn+1 ā(T i+1
2, j
n+1 +Ti , jā1
2
n+1 +Ī³ij
ĪtZ i , jn+1 )Pi , j
n+1+Ti , jā1
2
n+1 Pi , jā1n+1 =ā
Ī³ ij
Īt (P i , j
Z i , j)n
+ (Qvi , j )CN
Esquina(11,11)
ā(T i+12
, j
n+1 +Tiā1
2, j
n+1 +Ti , j+1
2
n+1 +Ti , jā1
2
n+1 +Ī³ij
ĪtZi , jn+1 )Pi , j
n+1+Tiā1
2, j
n+1 Piā1 , jn+1 +T
i , jā12
n+1 Pi , jā1n+1 =ā
Ī³ij
Īt ( Pi , j
Z i , j)n
+(Q vi , j )CN
Bloques centrales (para todo i,j/ i=1 y 1<j<11)
Ti+1
2, j
n+1 Pi+1 , jn+1 +T
i , j+12
n+1 Pi , j+1n+1 ā(T i+1
2, j
n+1 +Tiā1
2, j
n+1 +Ti , j+1
2
n+1 +Ti , jā1
2
n+1 +Ī³ij
ĪtZ i , jn+1 )Pi , j
n+1+Tiā1
2, j
n+1 P iā1, jn+1 +T
i , jā12
n+1 Pi , jā1n+1 =ā
Ī³ ij
Īt (P i , j
Z i , j)n
+(Qvi , j )CN
CRITERIO DE BALANCE DE MATERIALES.
El criterio de balance de materiales nos permite validar la soluciĆ³n que se estĆ” obteniendo a un tiempo dado del sistema de ecuaciones que describe el comportamiento del yacimiento. Esto sigue siendo vĆ”lido para el caso de un yacimiento de gas pero la ecuaciĆ³n para aplicar el criterio es diferente, dada la naturaleza del gas como fluido compresible.
Si el yacimiento es cerrado se puede decir que la producciĆ³n de un yacimiento se debe a la compresibilidad del fluido y la formaciĆ³n; o sea
Fluidos producidos:
Mientras el yacimiento pasĆ³ del tiempo tn al tiempo tn+1, la expansiĆ³n del volumen de fluido contenido en los poros, en PCN, estĆ” dada por
Por tanto el criterio de balance de materiales se puede plantear como:
MODELO DE SOLUCION.
Se debe organizar la matriz de tal forma que nos de el menor ancho de banda, en este informe se numero la malla por filas luego el ancho de banda es
2*(11) + 1 = 23.
Para este informe se plantea el mĆ©todo de soluciĆ³n directo Gauss el cual se explica a continuaciĆ³n:
DespuĆ©s de organizar la malla se organiza el sistema en forma matricial y se realiza eliminaciĆ³n gaussiana hasta que la matriz tome la siguiente forma:
|
1 a121 .. .. .. . . . . .. Ɣ1n
1
0 1 a232 .. . .. . . . . a2n
2
0 0 .1 .. a343 . .. . . . a3 n
3
. .. . . . .. . .. . . . . . ..0 0 0 0 1 anā1 , n
nā1 ..
0 0 .0 . . o .. . . . . 1
|
*Āæ
Āæ|
x1
x2
x3
. ..xnā1
xn
|=|
b11
b22
b33
.. .bnā1
nā1
bnn
|
Luego por sustituciĆ³n regresiva se procede a solucionar el sistema encontrando asi las presiones al tiempo n+1 de la siguiente manera:
xn=bnn
(2.11)
xnā1=bnā1nā1āanā1, n
nā1 āxn
xnā2=bnā2nā2āanā2 , nā1
nā2 āxnā1āanā2, nnā2 āxn
x i=biiā ā
j=i+1
n
aiji x j ā i=nā1 , 1
.
DIAGRAMA DE FLUJO SIMULADOR.
ASUMIR
PN+1 = PN
CALCULAR PROPIEDADES PVT
RESOLVER SISTEMA DE ECUACIONES POR ELIMINACION GAUSSIANA
VERIFICAR TOLERANCIA
(PN+1-PN)/PN<TOL.
Verificar criterio de Balance de Materiales
NO
SI
CALCULAR TRANSMISIVIDADES IMPLICITAS
PK+1= PK
MODELO COMPUTACIONAL.
MODULO:
MODULE VARIABLES
IMPLICIT NONE
INTEGER:: I,J,K,T,NX,NY,NT,NP,NB
REAL:: CONVERGENCIA,PO,TEMP,LX,LY,H,Q,T_IMPRESION,DX,DY,GEGAS,TIEMPO_TOTAL,TIEMPO,DT,PORO,GAMA,Vp,MB
REAL,DIMENSION(:,:),ALLOCATABLE::A,P,PN1,PN1M,CAUDAL,TX,TY
REAL,DIMENSION(:),ALLOCATABLE::X,B,KX,KY
REAL,PARAMETER:: C=0.001127,ERROR=0.00001
END MODULE
PRINCIPAL:
PROGRAM GAS_GAUSS_2D
USE VARIABLES
IMPLICIT NONE
REAL::ZETA_GAS,FACT_BG,VISCOSIDAD_GAS
!LECTURA DE DATOS
CALL LECTURA
!INICIALIZACION
Verificar criterio de Balance de Materiales
OPEN (12,FILE="RESULTADOS.TXT",STATUS="UNKNOWN")
WRITE(12,*)
WRITE(12,*)
WRITE(12,*)
WRITE(12,*) "SIMULADOR 2D FLUJO DE GAS SOLUCION POR ELIMINACION DE GAUSS"
WRITE(12,*)
WRITE(12,*)
P=PO
PN1=PO
TIEMPO=0
GAMA=(520*PORO*H*DX*DY)/(14.7*TEMP*5.615) !FACTOS DE CONVERSION A BARRILES
CAUDAL=CAUDAL*1000/5.615 !FACTOR DE CONVERSION A BARRILES
DT=1
!ITERACION EN EL TIEMPO
DO WHILE (TIEMPO.LE.TIEMPO_TOTAL)
CONVERGENCIA=1
DO WHILE(CONVERGENCIA.GT.ERROR)
PN1M=PN1
!CALCULO DE LAS TRANSMISIBILIDADES
DO I=1,NX+1
TX(I,:)=(2*C*H/DX)*((KX(I)*KX(I-1))/((VISCOSIDAD_GAS(PN1(I-1,:))*KX(I)*FACT_BG(PN1(I-1,:)))+(VISCOSIDAD_GAS(PN1(I,:))*KX(I-1)*FACT_BG(PN1(I,:)))))
ENDDO
DO J=1,NY+1
TY(:,J)=(2*C*H/DY)*((KY(J)*KY(J-1))/((VISCOSIDAD_GAS(PN1(:,J-1))*KY(J)*FACT_BG(PN1(:,J-1)))+(VISCOSIDAD_GAS(PN1(:,J))*KY(J-1)*FACT_BG(PN1(:,J)))))
ENDDO
!ORGANIZAR EL SISTEMA DE ECUACIONES
CALL SISTEMA_ECUACIONES
!SOLUCIONAR
CALL GAUSS
!EVALUAR CONVERGENCIA
!SI NO CONVERGE ACTUALIZAR PRESION Y VOLVER A LAS TRASMISIBILIDADES
CONVERGENCIA=MAXVAL(ABS(PN1-PN1M)/PN1M)
ENDDO
!BALANCE DE MATERIALES
CALL BALANCE
P=PN1
TIEMPO=TIEMPO+DT
!IMPRESION DE RESULTADOS
IF (MOD(INT(TIEMPO),30).EQ.0) THEN
CALL RESULTADOS
ENDIF
ENDDO
!FIN
END PROGRAM
SUBRUTINAS:
SUBROUTINE BALANCE
USE VARIABLES
IMPLICIT NONE
REAL::ZETA_GAS
Po=0
Q=0
DO J=1,NY
DO I=1,NX
Vp=(DX*DY*H*PORO*520*((P(i,j)/ZETA_GAS(P(i,j)))-(PN1(i,j)/ZETA_GAS(PN1(i,j)))))/(14.7*TEMP)
Q=Q+Caudal(i,j)
PO=PO+Vp
END DO
END DO
MB=ABS((PO/(DT*Q*5.615))-1)
END SUBROUTINE BALANCE
SUBROUTINE RESULTADOS
USE VARIABLES
IMPLICIT NONE
WRITE(12,*) "RESULTADOS PARA EL MES=",TIEMPO/30," BALANCE DE MATERIALES=",MB
WRITE(12,*)
DO j=1,NY
WRITE(12,1000)(PN1(I,J),I=1,NX)
ENDDO
WRITE(12,*)
WRITE(12,*)
1000 FORMAT(1000(F10.3,1X))
END SUBROUTINE
SUBROUTINE GAUSS
USE VARIABLES
IMPLICIT NONE
DO I=1,NX*NY
B(I)=B(I)/A(I,I)
A(I,:)=A(I,:)/A(I,I)
DO J=I+1,NX*NY
B(J)=B(J)-(B(I)*A(J,I))
DO K=NX*NY,I,-1
A(J,K)=A(J,K)-(A(I,K)*A(J,I))
ENDDO
ENDDO
ENDDO
X(NX*NY)=B(NX*NY)/A(NX*NY,NX*NY)
DO I=(NX*NY)-1,1,-1
X(I)=B(I)
DO J=NX*NY,I+1,-1
X(I)=X(I)-A(I,J)*X(J)
ENDDO
X(I)=X(I)/A(I,I)
ENDDO
NB=0
DO J=1,NY
DO I=1,NX
NB=NB+1
PN1(I,J)=X(NB)
ENDDO
ENDDO
END SUBROUTINE
REAL FUNCTION VISCOSIDAD_GAS(PRESS)
USE VARIABLES,ONLY:TEMP,GEGAS
IMPLICIT NONE
REAL,INTENT(IN)::PRESS
REAL MWG,DENSIDADG,VISCOK,VISCOX,VISCOY,VISCOSIDAD,ZETA_GAS
MWG=GEGAS*28.96
DENSIDADG=0.0014935*PRESS*MWG/(ZETA_GAS(PRESS)*TEMP)
VISCOK=((9.379+0.01607*MWG)*(TEMP**1.5))/(209.2+19.26*MWG+TEMP)
VISCOX=3.448 + (986.4/TEMP)+0.01009*MWG
VISCOY=2.447-0.2224*VISCOX
VISCOSIDAD=(VISCOK*0.0001)*EXP(VISCOX*(DENSIDADG)**VISCOY)
VISCOSIDAD_GAS=VISCOSIDAD
END FUNCTION VISCOSIDAD_GAS
REAL FUNCTION FACT_BG(PRESS)
USE VARIABLES,ONLY:TEMP
IMPLICIT NONE
REAL, INTENT(IN)::PRESS
REAL ::BG,ZETA_GAS
BG=(0.00503*ZETA_GAS(PRESS)*TEMP)/PRESS !PCY/PCN
FACT_BG=BG
END FUNCTION FACT_BG
REAL FUNCTION ZETA_GAS(PRESS)
USE VARIABLES,ONLY:TEMP,GEGAS
IMPLICIT NONE
REAL,INTENT(IN)::PRESS
REAL SPR,STR, STC, SPC, A, B, C, D
SPC=677+15*GEGAS-37.5*GEGAS**2
STC=168+325*GEGAS-12.5*GEGAS**2
SPR=PRESS/SPC
STR=TEMP/STC
IF (((1.2.LT.STR).AND.(STR.LT.1.4)).AND.((0.LT.SPR).AND.(SPR.LT.13))) THEN
A=1.39*((STR-0.92)**0.5)-0.36*STR-0.101
B=(0.62-0.23*STR)*SPR+((0.066/(STR-0.86))-0.037)*SPR**2+((0.32/(10**(9*(STR-1))))*SPR**6)
C=0.132-(0.32*(LOG10(STR)))
D=10**(0.3106-(0.49*STR)+(0.1824*(STR**2)))
ZETA_GAS=A+((1-A)/(2.718**B))+C*(SPR**D)
ELSE
WRITE(*,*) "ERROR EN LA FUNCIN PARA CALCULAR EL FACTOR DE COMPRESIBILIDAD"
END IF
END FUNCTION
SUBROUTINE SISTEMA_ECUACIONES
USE VARIABLES
IMPLICIT NONE
REAL::ZETA_GAS
NB=0
A=0
DO J=1,NY
DO I=1,NX
NB=NB+1
IF ((I.EQ.1).AND.(J.EQ.1)) THEN
A(NB,NB+1) =TX(I+1,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB)=-(TX(I+1,J)+TY(I,J+1)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF((I.EQ.1).AND.(J.EQ.NY)) THEN
A(NB,NB+1) =TX(I+1,J)
A(NB,NB-NX) =TY(I,J)
A(NB,NB)=-(TX(I+1,J)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF((I.EQ.NX).AND.(J.EQ.1)) THEN
A(NB,NB-1) =TX(I,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB)=-(TX(I,J)+TY(I,J+1)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF((I.EQ.NX).AND.(J.EQ.NY)) THEN
A(NB,NB-1) =TX(I,J)
A(NB,NB-NX) =TY(I,J)
A(NB,NB)=-(TX(I,J)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF((I.EQ.1).AND.((J.GT.1).AND.(J.LT.NY))) THEN
A(NB,NB+1) =TX(I+1,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB-NX) =TY(I,J)
A(NB,NB)=-(TX(I+1,J)+TY(I,J+1)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF((I.EQ.NX).AND.((J.GT.1).AND.(J.LT.NY)))THEN
A(NB,NB-1) =TX(I,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB-NX) =TY(I,J)
A(NB,NB)=-(TX(I,J)+TY(I,J+1)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF(((I.GT.1).AND.(I.LT.NX)).AND.(J.EQ.1)) THEN
A(NB,NB+1) =TX(I+1,J)
A(NB,NB-1) =TX(I,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB)=-(TX(I+1,J)+TX(I,J)+TY(I,J+1)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE IF(((I.GT.1).AND.(I.LT.NX)).AND.(J.EQ.NY))THEN
A(NB,NB+1) =TX(I+1,J)
A(NB,NB-1) =TX(I,J)
A(NB,NB-NX) =TY(I,J)
A(NB,NB)=-(TX(I+1,J)+TX(I,J)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ELSE
A(NB,NB+1) =TX(I+1,J)
A(NB,NB-1) =TX(I,J)
A(NB,NB+NX)=TY(I,J+1)
A(NB,NB-NX) =TY(I,J)
A(NB,NB) =-(TX(I+1,J)+TX(I,J)+TY(I,J+1)+TY(I,J)+(GAMA/(DT*ZETA_GAS(PN1(I,J)))))
B(NB)=CAUDAL(I,J)-(GAMA*P(I,J)/(DT*ZETA_GAS(P(I,J))))
ENDIF
ENDDO
ENDDO
END SUBROUTINE
SUBROUTINE LECTURA
USE VARIABLES
IMPLICIT NONE
OPEN (11,FILE ="DATOS.TXT",STATUS="UNKNOWN")
READ(11,*)
READ(11,*) LX,LY
READ(11,*)
READ(11,*)
READ(11,*) TEMP,PO,H,GEGAS,PORO
READ(11,*)
READ(11,*) NX,NY
DX=LX/REAL(NX)
DY=LY/REAL(NY)
READ(11,*)
ALLOCATE(KX(0:NX+1),KY(0:NY+1),A(NX*NY,NX*NY),B(NX*NY),X(NX*NY),CAUDAL(NX,NY),TX(NX+1,NY),TY(NX,NY+1),P(0:NX+1,0:NY+1),PN1(0:NX+1,0:NY+1),PN1M(0:NX+1,0:NY+1))
CAUDAL=0
READ(11,*) (KX(I),I=1,NX)
READ(11,*)
READ(11,*) (KY(I),I=1,NY)
KX(0)=KX(1)
KX(NX+1)=KX(NX)
KY(0)=KY(1)
KY(NY+1)=KY(NY)
READ(11,*)
READ(11,*) NP
READ(11,*)
DO K=1,NP
READ(11,*) Q,I,J
CAUDAL(I,J)=Q
ENDDO
READ(11,*)
READ(11,*) T_IMPRESION,TIEMPO_TOTAL
CLOSE (11)
END SUBROUTINE
RESULTADOS