46
SIMULACIÓN DE FLUJO LINEAL 2D AGUA-PETRÓLEO MEDIANTE ESQUEMA IMPIS SIMULTÁNEO, POR EL MÉTODO DE SOLUCIÓN IADIP José Alejandro Lozano Arias 1 Haiver Jeison Morales Goyes 2 Juan David Vallejo Restrepo 3 Simulación de Yacimientos UNIVERSIDAD NACIONAL DE COLOMBIA Facultad de Minas Medellín Junio 4 de 2015 1 Estudiante de Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia. - [email protected] 2 Estudiante de Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia. - [email protected] 3 Estudiante de Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia. - [email protected]

Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

  • Upload
    coco

  • View
    11

  • Download
    0

Embed Size (px)

DESCRIPTION

Simulacion de yacimiento

Citation preview

Page 1: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

SIMULACIÓN DE FLUJO LINEAL 2D AGUA-PETRÓLEO MEDIANTE ESQUEMA IMPIS SIMULTÁNEO,

POR EL MÉTODO DE SOLUCIÓN IADIP

José Alejandro Lozano Arias1

Haiver Jeison Morales Goyes2

Juan David Vallejo Restrepo3

Simulación de Yacimientos

UNIVERSIDAD NACIONAL DE COLOMBIA Facultad de Minas

Medellín Junio 4 de 2015

1 Estudiante de Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia. - [email protected]

2 Estudiante de Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia. - [email protected]

3 Estudiante de

Ingeniería de petróleos, Universidad Nacional de Colombia, Colombia.

- [email protected]

Page 2: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

1

Contenido Resumen ............................................................................................................................................. 2

Introducción ........................................................................................................................................ 2

1. Modelo Físico. ................................................................................................................................. 2

2. Modelo matemático. ...................................................................................................................... 6

2.1 Expresiones para las condiciones de límite [2]. ....................................................................... 7

2.2 Relaciones usadas para permeabilidad relativa. ..................................................................... 7

2.3 Relaciones usadas para presión capilar. .................................................................................. 8

2.4 Cálculo de las Propiedades PVT. .............................................................................................. 8

2.4.1 Factor volumétrico del petróleo. ...................................................................................... 9

2.4.2 Factor volumétrico del agua. ............................................................................................ 9

2.4.3 Viscosidad del agua ......................................................................................................... 10

2.4.4 Viscosidad del petróleo ................................................................................................... 10

3. Modelo numérico. ........................................................................................................................ 11

3.1 IMPIS simultáneo .................................................................................................................... 11

3.2 Método IADIP ......................................................................................................................... 16

3.3 Balance de materiales ............................................................................................................ 22

5. Modelo computacional. ............................................................................................................... 22

5.1 Diagrama de flujo. .................................................................................................................. 23

6. Resultados. ................................................................................................................................... 24

6.1 ¿Por qué no corrió el simulador? ........................................................................................... 24

Referencias ....................................................................................................................................... 24

Anexos ............................................................................................................................................... 24

Page 3: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

2

Resumen

Éste trabajo muestra la simulación numérica y computacional del flujo de petróleo y agua a través

de un medio poroso 2D, con el fin de mostrar la distribución de presiones y saturaciones en un

esquema de yacimiento a lo largo de un año. Se utilizó el esquema IMPIS simultáneo (Implicit

Pressure Implicit Saturation) y se le dio solución al sistema usando el método IADIP (Iterative

Alternating Directions Implicit Pressure).

Introducción

Mirar la respuesta de un yacimiento a estimulaciones de producción, cambios en saturación,

puesta en marcha de nuevos pozos, etc; siempre ha sido tema de especial preocupación para los

ingenieros de casi todas las compañías petroleras. La simulación de yacimientos, ha pasado de ser

un proceso tedioso y complejo, a ser la mejor herramienta para estimar el comportamiento de los

yacimientos. Actualmente no es posible contemplar la producción a gran escala de un campo sin

antes prever su capacidad de flujo, empuje hidráulico, etc.

La simulación de yacimientos adquiere especial relevancia en este siglo de los computadores y la

tecnología, cuando se descubre que casi todas las propiedades están ligadas unas con otras, es

decir, es inconcebible pensar en la compresibilidad de un fluido sin mencionar la presión, la

viscosidad sin temperatura, etc. La simulación de yacimientos, de la mano con las matemáticas

especiales y los métodos numéricos, son los que permiten actualmente evaluar y analizar las

múltiples respuestas de un yacimiento al comportamiento de las variables mediante diferentes

técnicas, en este caso IMPIS simultáneo, método de solución IADIP.

1. Modelo Físico.

Para el modelo físico del yacimiento, es importante hacer un esquema que represente

adecuadamente todos los datos y posibles incógnitas del problema. A continuación se muestra

una imagen con las dimensiones del yacimiento:

Page 4: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

3

LON

GIT

UD

Y

15

00

0 f

t

LONGITUD X 15000 ft

Figura 1. Dimensiones del yacimiento en X-Y

El yacimiento tiene forma cuadrada, con 30 bloques en la dirección x y 30 bloques en la dirección

y. En la dirección z sólo se contempla la altura de una fila de bloques que es de 150 ft.

Ahora, se puede calcular el valor de y de teniendo en cuenta las longitudes en i y j, además

del hecho de que son 30 bloques tanto en la dirección x como en la dirección y.

Luego, el largo y el ancho de cada bloque se calcula como:

Page 5: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

4

… … …

Figura 2. Esquema de distribución de bloques en la malla.

Page 6: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

5

La siguiente imagen muestra un esquema del modelo físico tridimensional de los bloques:

Figura 3. Esquema tridimensional de los bloques de la malla.

Donde:

Y con respecto a las permeabilidades tanto en la dirección X como en la dirección Y

Los datos de porosidad son:

El espesor:

h = 150 ft

Y el ángulo de inclinación:

Page 7: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

6

Tener en cuenta que aunque la figura 3 muestra un esquema 3D (en tres dimensiones), la

simulación realizada es en 2D de acuerdo a lo planteado por el equipo de profesores.

2. Modelo matemático.

Partiendo de las siguientes ecuaciones diferenciales parciales de flujo, para flujo en las direcciones

X, Y y Z; tanto para el aceite como para el agua, se tiene [1]:

Para el agua

[

(

)]

[

(

)]

*

(

)+

(

) (1)

Análogamente para el agua se tienen las ecuaciones:

[

(

)]

[

(

)]

*

(

)+

(

) (2)

Donde:

Constante de conversión de unidades

Constante de conversión de unidades

Permeabilidades en la dirección x, y, z respectivamente, mD.

Viscosidad del agua, cP

Viscosidad del petróleo, cP

Permeabilidad relativa al agua, mD

Permeabilidad relativa al aceite, mD

Luego, es necesario tener en cuenta las siguientes suposiciones:

Sólo se tiene flujo en las direcciones X y Y (flujo bidimensional), es decir el flujo en la

dirección Z se hace cero.

La porosidad es constante, luego sale de la expresión de derivada.

Para este caso, es h, que es el espesor del yacimiento que se está modelando.

Page 8: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

7

Así, para la fase petróleo se obtiene:

*

(

)+

*

(

)+

(

) (3)

Similarmente para la fase agua:

*

(

)+

*

(

)+

(

) (4)

2.1 Expresiones para las condiciones de límite [2].

Existen dos tipos de condiciones de límite, que pueden ser de límite interno o limite externo, las

condiciones de límite interno están dadas para la interacción del yacimiento con los pozos y las de

limite externo para el contacto del yacimiento con el exterior; para este caso por escases de datos

en el contacto pozo-yacimiento, solo trabajaremos con las condiciones de limite externo.

Condiciones de límite externo

Suele manejarse dos tipos de condiciones de límite externo, las condiciones tipo Dirichlet y las

condiciones tipo Newman, las cuales establecen los valores de presión de poro y de flujo

respectivamente en las fronteras del sistema.

Para este caso se considerará un sistema cerrado (tiene fronteras de no flujo) y se establecerán las

condiciones de límite tipo Newman, así las fronteras x=0, x=15000 ft, y=0 y y= 15000 ft el flujo será

de . A continuación se muestran las expresiones matemáticas:

( ) *

+

(5)

( ) *

+

(6)

( ) *

+

(7)

( ) *

+

(8)

2.2 Relaciones usadas para permeabilidad relativa.

A lo largo del desarrollo del simulador, será necesario calcular las permeabilidades relativas al

agua y al aceite ( ), para un determinado valor de saturación de agua ( ); es así como

Page 9: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

8

basados en el archivo de texto suministrado por el equipo de profesores se construye una

ecuación general para interpolar valores de permeabilidades relativas correspondientes a datos de

saturación que no sean puntuales.

(9)

Donde los valores de son conocidos. La ecuación despejada para

es:

*( ) ( )

+ (10)

En primera instancia se encontró por medio de la herramienta Excel una función polinómica de

grado 6 que modelaba el comportamiento de las permeabilidades relativas del agua y del aceite

en función de la saturación de agua, que entre otras cosas proporcionaba valores mucho más

precisos que los obtenidos por una interpolación; pero teniendo en cuenta que el archivo de texto

puede variar a la hora de correr el simulador se llegó a la conclusión que era preferible hacer una

ecuación de interpolación.

Nota: los valores de las permeabilidades relativas del agua y el petróleo se calculan bloque a

bloque.

2.3 Relaciones usadas para presión capilar.

Análogamente, para obtener las presiones capilares de diferentes valores de saturación de agua,

se hace necesario realizar una interpolación de la siguiente manera.

(11)

Donde los valores de son conocidos. La ecuación despejada para es:

*( ) ( )

+ (12)

Nota: los valores de presión capilar se calculan bloque a bloque.

2.4 Cálculo de las Propiedades PVT.

De acuerdo a los datos suministrados, se tiene una presión de saturación de 150 psi; este valor es

muy bajo respecto al valor que tenemos asignado para la presión inicial (2000 psia), por lo que se

puede decir que hay escasa o nula cantidad de gas en el yacimiento, luego el valor del gas disuelto

en el crudo es aproximadamente cero .

Page 10: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

9

2.4.1 Factor volumétrico del petróleo.

Se escoge para el cálculo del Factor Volumétrico del Petróleo a la presión de burbuja, la

correlación de Glaso [3]

[ ( ) ] (13)

Donde:

(

)

(14)

Factor volumétrico del petróleo a , ⁄

Razón gas disuelto- petróleo a , ⁄ (Para nuestro caso es cero)

T Temperatura del yacimiento, °F

Gravedad específica del gas (Para nuestro caso es cero)

Gravedad específica del petróleo

Ahora, conociendo los valores de es posible calcular el Factor volumétrico , para ello se

hace uso de la ecuación:

[ ( )] [3] (15)

Donde:

Presión de burbuja, psi

Presión de interés, psi

Compresibilidad del petróleo,

Se supone un factor de compresibilidad del petróleo constante de .

2.4.2 Factor volumétrico del agua.

Para el cálculo del Factor volumétrico del agua se usó la correlación de McCain [3], donde el

cambio de volumen durante la reducción de presión es representado por y el cambio en

volumen debido a la reducción en temperatura es representado por como función de

presión y temperatura.

El factor volumétrico del agua puede determinarse utilizando estos valores mediante la siguiente

ecuación:

( )( ) (16)

Page 11: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

10

Donde:

(17)

(18)

P, psi T, °F

A continuación se muestran las expresiones para calcular tanto la viscosidad del agua como del

petróleo:

2.4.3 Viscosidad del agua

Para la viscosidad del agua se hará uso de la correlación de Van Wingen [3].

( ) (19)

2.4.4 Viscosidad del petróleo

La viscosidad del crudo se puede calcular mediante la Correlación de Glaso. Primero se calcula

que es la viscosidad del petróleo libre de gas a 1 atm

( )( ) (20)

Donde

Viscosidad del petróleo libre de gas a 1 atm y T, cP

Gravedad del petróleo, API

Temperatura del yacimiento, °F

Ahora se calcula la viscosidad del petróleo a presión de burbuja, usando la correlación de Beggs,

H.D y Robinson, J.R

La correlación es la siguiente:

( ) (21)

Donde:

( ) (22)

( ) (23)

Finalmente, con el valor de calculado, se puede proceder a calcular la viscosidad del petróleo a

cualquier presión, mediante la ecuación de Vázquez, ME y Beggs, H.D [3]

Page 12: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

11

(

)

(24)

Donde:

( ) (25)

3. Modelo numérico.

3.1 IMPIS simultáneo

Para el desarrollo del modelo numérico, partimos de la ecuación discretizada para cada una de las

fases, petróleo y agua (o, w). Así las ecuaciones estarán dadas por las expresiones:

Para el petróleo

( )

( ) (26)

Para el agua

( )

( ) (27)

Donde:

Transmisibilidades del petróleo, transmisibilidad del agua.

Potencial del petróleo, potencial del agua.

Presión del petróleo, presión del agua.

Gravedad especifica del petróleo, gravedad específica del agua.

Caudal del petróleo a condiciones normales, caudal del agua a condiciones

normales.

Volumen del bloque.

Paso en el tiempo.

Expansión en el tiempo.

Porosidad.

Saturación del petróleo, saturación del agua.

Inverso del factor volumétrico del petróleo, Inverso del factor volumétrico del

agua

Se sabe también que,

(28)

Donde Z es la altura

Page 13: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

12

Reemplazando y desarrollando las expresiones 26 y 27 se tiene,

Para el Petróleo:

( ( ))

( )

( )

( ) ( ( )) (29)

Similarmente para el agua:

( ( ))

( )

( )

( ) ( ( )) (30)

Ahora, haciendo la expansión de los términos ( ) y ( ) teniendo en cuenta

además que la porosidad es constante se tiene:

Para el Petróleo:

( ) ( )

[

]

[

]

[

] (31)

Recordar que

Y adicionalmente, mediante una expansión progresiva se define a como:

Para el agua:

( ) ( )

[

]

[

] (32)

Recordar que

Donde, mediante una expansión progresiva definimos a como:

Page 14: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

13

Además, por definición

Luego,

Además, tener en cuenta que se asumió que el yacimiento es humectable al aceite, por lo tanto,

Entonces

Reemplazando estas expresiones para la presión del aceite y la expansión en el tiempo de la

saturación de agua en la ecuación 32, tenemos finalmente que:

( ) [ ( )

( )]

[

] (33)

Introduciendo los resultados de las expansiones en el tiempo correspondientes a cada fase en (29)

y (30), se obtiene.

Para el petróleo: ecuación 31 en 29

( )

[

] ( ( ))

( ( )) (34)

Para el agua: ecuación 33 en 30,

( )

[

] ( ( ))

( ( )) (35)

Ahora, vemos que ya es posible nombrar como constantes ciertas expresiones que no varían, lo

cual permitirá simplificar las ecuaciones. A continuación se definen las constantes

, y sus respectivas expresiones:

(34)

(35)

(36)

(37)

Así, al reemplazarlas en la ecuación general para cada fase se tendría que,

Page 15: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

14

Para el petróleo:

( ) ( ( )) (38)

Para el agua:

( ) ( ( )) (39)

Con el objetivo de eliminar el término de saturación de aceite, se opera el término de la

siguiente manera.

(

) (

)

(

) (

)

( )

(40)

Reemplazando la ecuación 40 en las expresiones para cada fase, se tendrá,

Para el petróleo: ecuación 40 en 38

( ) (

) ( ( ))

( ( ))

( )

( ( )) (41)

Para el agua: Ecuación 40 en 39,

( ) (

) ( ( ))

( ( ))

( )

( ( )) (42)

Expandiendo los términos de y , tenemos que:

(43)

(44)

Después de reemplazar las expansiones en el tiempo correspondientes a las presiones del petróleo

y del agua, y resolviendo las operaciones matemáticas, las ecuaciones para cada fase quedarían de

la siguiente manera.

Page 16: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

15

Para el petróleo: Ecuaciones 43 y 44 en 41:

( ) (

) ( )

(

) ( ( ))

( ( )) (45)

Dejamos las presiones desconocidas al tiempo n+1 en un lado y las conocidas al tiempo n en el

otro, así,

( )

( ( ))

( ) ( )

( ( )) (46)

Para el agua: ecuaciones 43 y 44 en 42,

( ) (

)( )

(

)

( ( ))

( ( )) (47)

Al igual que con el petróleo, se dejan las presiones desconocidas al tiempo n+1 en un lado y las

conocidas al tiempo n en el otro, así,

( )

( ( ))

( ) ( )

( ( )) (48)

Ahora, como se tiene información de todas las propiedades al tiempo n, al igual que los caudales

de petróleo y agua a condiciones normales, podemos decir que el lado derecho de las ecuaciones

46 y 48 permanece constante en esa iteración, lo cual permite introducir y para

simplificar las expresiones; a continuación se definen las constantes:

( (

)) (49)

( ( )) (50)

Page 17: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

16

Expresando los términos ( ) y ( ) correspondientes a las transmisibilidades del

petróleo y el agua en las direcciones de x y de y se tiene,

Para el petróleo

( ) ( ) ( )

(50)

Para el agua

( ) ( ) ( )

(51)

3.2 Método IADIP

Para resolver estas ecuaciones se utilizará el método IADIP, el cual es el método ADIP, con la

excepción que para pasar del tiempo n al tiempo n+1, se debe aplicar un proceso iterativo y se le

adiciona el parámetro h(k) el cual acelera la convergencia. Para pasar de una iteración a otra se

hace en dos etapas: en la primera etapa se calcula una presión intermedia P* haciendo el barrido

por filas, en la segunda etapa ya con los P* calculados se hace un barrido por columnas

encontrando el valor de . Luego se chequea convergencia entre y . Cuando hay

convergencia se convierte en P al tiempo n+1 ( )

Las ecuaciones aplicadas en este método se definen como sigue:

PARA EL PETRÓLEO:

ETAPA 1:

( ) (

) ( )

(

) (52)

ETAPA 2:

( ) (

) ( )

(

) (53)

PARA EL AGUA:

ETAPA 1: (

) ( ) (

)

(

) (54)

ETAPA 2:

( ) (

) ( )

(

) (55)

Ahora se procede a hacer las expansiones en el espacio de los términos de , analizando el

comportamiento de cada bloque i, j y su interacción con los bloques i+1, j _ i-1, j _ i, j+1 _ i, j-1

que lo rodean, como se puede ver en la figura 4.

Page 18: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

17

Figura 4. Esquema para obtención de transmisibilidades.

Para el petróleo:

Etapa uno.

(

)

(

)

(

)

(

)

(

)

(

)

(56)

El término

viene de una fila anterior, por ende es conocido.

Etapa dos.

(

)

(

)

(

)

(

)

(

)

(

)

(57)

El término

viene de una fila anterior, por ende es conocido.

Page 19: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

18

Para el agua:

Etapa uno.

(

)

(

)

(

)

(

) |

(

)

(

)

(58)

El término viene de una fila anterior, por ende es conocido.

Etapa dos.

(

)

(

)

(

)

(

)

(59)

(

)

(

)

(60)

El término viene de una fila anterior, por ende es conocido.

Como se está trabajando con condiciones de límite adsorbidas, las ecuaciones de los bloques en el

borde del yacimiento varían con respecto a las de del interior, así:

Para petróleo:

Bloque Esquina Superior Izquierda:

(

)

( )

( )

( )

( ) (61)

Bloque Esquina Inferior Izquierda:

(

)

( )

( )

( )

( ) (62)

Page 20: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

19

Bloque Esquina Superior Derecha:

(

)

( )

( )

( )

( ) (63)

Bloque Esquina Inferior Derecha:

(

)

( )

( )

( )

( ) (64)

Bloques (i,j) Bordes Externos Superiores:

(

)

( )

(

) ( )

( )

( )

( ) (65)

Bloques (i,j) Bordes Externos Inferiores:

(

)

( )

(

) ( )

( )

( )

( ) (66)

Bloques (i,j) Bordes Externos Izquierdos:

(

)

(

)

( )

( )

( ) (

) ( )

( ) (67)

Bloques (i,j) Bordes Externos Derechos:

(

)

(

)

( )

( )

( ) (

) ( )

( ) (68)

Para agua:

Bloque Esquina Superior Izquierda:

(

)

( )

( )

( )

( ) (69)

Page 21: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

20

Bloque Esquina Inferior Izquierda:

(

)

( )

( )

( )

( ) (70)

Bloque Esquina Superior Derecha:

(

)

( )

( )

( )

( ) (71)

Bloque Esquina Inferior Derecha:

(

)

( )

( )

( )

( ) (72)

Bloques (i,j) Bordes Externos Superiores:

(

)

( )

(

) ( )

( )

( )

( ) (73)

Bloques (i,j) Bordes Externos Inferiores:

(

)

( )

(

) ( )

( )

( )

( ) (74)

Bloques (i,j) Bordes Externos Izquierdos:

(

)

(

)

( )

( )

( ) (

) ( )

( ) (75)

Bloques (i,j) Bordes Externos Derechos:

(

)

(

)

( )

( )

( ) (

) ( )

( ) (76)

Page 22: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

21

Recordemos que las transmisibilidades vienen dadas por:

Transmisibilidades en X:

Para el petróleo.

(

)

(77)

(

)

(78)

Para el Agua.

(

)

(79)

(

)

(80)

Transmisibilidades en Y:

Para el petróleo.

(

)

(81)

(

)

(82)

Para el Agua.

(

)

(83)

(

)

(84)

Aplicando estas transmisibilidades a nuestro problema de simulación podemos resumir mucho

más estas expresiones ya que tenemos que los espesores ( ), permeabilidades ( ), longitudes

verticales ( ) y horizontales ( ) de cada bloque son los mismos en todo el yacimiento,

además:

a continuación se resumen estas ecuaciones:

Page 23: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

22

Transmisibilidades en X:

Para el petróleo.

(

)

(86)

(

)

(87)

Para el Agua.

(

)

(89)

(

)

(90)

Transmisibilidades en Y:

Para el Petróleo.

(

)

(91)

(

)

(92)

Para el Agua.

(

)

(93)

(

)

(94)

3.3 Balance de materiales

Las aproximaciones numéricas deben satisfacer el balance de materiales, este plantea que:

[Producción neta acumulada] = [Contenido de fluido inicial en el yacimiento]-[Contenido actual]

Y matemáticamente obedece a que se cumpla la siguiente igualdad

∑∑ (

) ∑∑

5. Modelo computacional.

Page 24: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

23

5.1 Diagrama de flujo.

Page 25: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

24

6. Resultados.

6.1 ¿Por qué no corrió el simulador?

Pudieron ocurrir varias cosas por las cuales el simulador no corrió, a nuestro criterio se pudo deber

a:

Error transcribiendo las ecuaciones al código de programación.

Inconsistencia con el parámetro de aceleración Hk.

El sistema de ecuaciones obtenido por el método IMPIS simultáneo y método de solución

IADIP pudo resultar insoluble.

A ser un algoritmo tan extenso es probable que se haya asignado una tarea equivocada y

después encontrar este error era difícil.

Complejidad y error humano al manejar tantos ciclos iterativos vinculados entre sí.

Referencias

[1] T. Ertekin, J. H. Abou-Kassem y G. R. King, Basic Applied Reservoir Simulation, Texas: Society of

Petroleum Engineers, 2001.

[2] G. Osorio, Simulación Numérica de Yacimientos, Medellin: Universidad Nacional de Colombia,

2005.

[3] C. Bánzer, Correlaciones numéricas P.V.T, Maracaibo: Universidad del Zulia, 1996.

Anexos

Código del simulador en lenguaje Fortran.

Program simulador2 implicit none Real :: lx, ly, grado, T, h, Kx, Ky, phi, Pinicial, API, gammaw, Pb, swi !Datos leidos del .txt cuidado con swi Real:: deltax, deltay, pcinicial, uw, uod, A_miu, B_miu, uob, m, F, aux3, Bob, deltavwt, deltavwp Real :: krwa, Krwb, Swa, Swb, Krob, Kroa, Pcb,Pca, Vp, deltat, aux4, z, rhosc, beta, aux5, suma, norma, aux6, aux7 real :: lamdax, lamday, aux8, aux9, wmin, wmax, Hki, alpha real :: maxerror, expp, expg, aux10, aux11 integer :: i, aux, j, nw, puntos, aux2, Nx, Ny, posx, posy, k, l, contador, nk, contadorHk character*100 datos(500)

Page 26: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

25

real, parameter :: bc = 1.127e-3 real, parameter :: co = 1.2e-5 real, parameter :: pi = 3.141592 real, parameter :: ac = 5.614583 real, dimension (:,:), allocatable :: well real, dimension (:,:), allocatable :: tablapuntos Real, dimension(:,:), allocatable :: Po Real, dimension(:,:), allocatable :: Pw Real, dimension(:,:), allocatable :: Pc Real, dimension(:,:), allocatable :: Tox Real, dimension(:,:), allocatable :: Toy Real, dimension(:,:), allocatable :: Twx Real, dimension(:,:), allocatable :: Twy Real, dimension(:,:), allocatable :: Sw Real, dimension(:,:), allocatable :: So Real, dimension(:,:), allocatable :: Kro Real, dimension(:,:), allocatable :: Krw Real, dimension(:,:), allocatable :: uo Real, dimension(:,:), allocatable :: Bo Real, dimension(:,:), allocatable :: Bw Real, dimension(:,:), allocatable :: Q Real, dimension(:,:), allocatable :: ifila Real, dimension(:,:), allocatable :: icolumna Real, dimension(:,:), allocatable :: Pon !al tiempo n Real, dimension(:,:), allocatable :: Pwn !al tiempo n Real, dimension(:,:), allocatable :: Bon !al tiempo n Real, dimension(:,:), allocatable :: Bwn !al tiempo n Real, dimension(:,:), allocatable :: Son !al tiempo n Real, dimension(:,:), allocatable :: Swn !al tiempo n Real, dimension(:,:), allocatable :: Pcn !al tiempo n Real, dimension(:,:), allocatable :: Co1 Real, dimension(:,:), allocatable :: Co2 Real, dimension(:,:), allocatable :: Cw1 Real, dimension(:,:), allocatable :: Cw2 Real, dimension(:,:), allocatable :: Cw3 Real, dimension(:,:), allocatable :: gammaoz Real, dimension(:,:), allocatable :: gammawz Real, dimension(:,:), allocatable :: fo Real, dimension(:,:), allocatable :: fw Real, dimension(:,:), allocatable :: Pko Real, dimension(:,:), allocatable :: Pk1o Real, dimension(:,:), allocatable :: Pkw Real, dimension(:,:), allocatable :: Pk1w Real, dimension(:,:), allocatable :: errorIADIP Real, dimension(:,:), allocatable :: errorPo Real, dimension(:,:), allocatable :: errorSo Real, dimension(:,:), allocatable :: Soc Real, dimension (:), allocatable :: Hk Real, dimension (:), allocatable :: vectorx

Page 27: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

26

Real, dimension (:), allocatable :: vectory Real, dimension (:), allocatable :: Pasteriscox Real, dimension (:), allocatable :: Pasteriscoy Real, dimension (:), allocatable :: Vinix Real, dimension (:), allocatable :: Viniy !Lectura de los datos open(unit=1, file= 'datos_o-w.txt') read(1,*) (datos(i), i = 1, 43) read(datos(6)(index(datos(6),', ')+1:len(datos(6))),*) lx read(datos(8)(index(datos(8),', ')+1:len(datos(8))),*) ly read(datos(10)(index(datos(10),', ')+1:len(datos(10))),*) grado read(datos(12)(index(datos(12),', ')+1:len(datos(12))),*) T read(datos(14)(index(datos(14),', ')+1:len(datos(14))),*) h read(datos(16)(index(datos(16),', ')+1:len(datos(16))),*) Kx read(datos(18)(index(datos(18),', ')+1:len(datos(18))),*) Ky read(datos(22)(index(datos(22),', ')+1:len(datos(22))),*) phi read(datos(24)(index(datos(24),', ')+1:len(datos(24))),*) Pinicial read(datos(32)(index(datos(32),', ')+1:len(datos(32))),*) API read(datos(34)(index(datos(34),', ')+1:len(datos(34))),*) gammaw read(datos(36)(index(datos(36),', ')+1:len(datos(36))),*) pb read(datos(43)(index(datos(43),', ')+1:len(datos(43))),*) nw allocate (well(nw,3)) aux = 43+(6*nw)+14 read(1,*) (datos(i), i =44, aux) Do i = 1, nw !En la primera columna se guarda el caudal, en la segunda posicion en x, en la tercera posicion en y Do j = 1, 3 read(datos((6*(i-1))+43+(2*j))(index(datos((6*(i-1))+43+(2*j)),', ')+1:len(datos((6*(i-1))+43+(2*j)))),*) well(i,j) end do end do read(datos(43+(6*nw)+6)(index(datos(43+(6*nw)+6),', ')+1:len(datos(43+(6*nw)+6))),*) Nx read(datos(43+(6*nw)+8)(index(datos(43+(6*nw)+8),', ')+1:len(datos(43+(6*nw)+8))),*) Ny read(datos(aux)(index(datos(aux),', ')+1:len(datos(aux))),*) puntos aux2 = (aux+1+(puntos*4)) read(1,*) (datos(i), i = aux+1, aux2) allocate (tablapuntos(puntos,4)) Do i = 1, puntos !Lectura tabla de sw, kro, krw, pc Do j = 1, 4 read(datos((4*(i-1))+aux+1+j)(index(datos((4*(i-1))+aux+1+j),', ')+1:len(datos((4*(i-1))+aux+1+j))),*) tablapuntos(i,j) end do end do close(1) !Termina de leer datos del .txt deltax = lx/Nx !Calculo del tamaño de paso en x deltay = ly/Ny !Calculo del tamaño de paso en y allocate (Po(nx,ny)) allocate (Pw(nx,ny)) allocate (Pc(nx,ny))

Page 28: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

27

allocate (Sw(nx,ny)) allocate (So(nx,ny)) allocate (Kro(nx,ny)) allocate (Krw(nx,ny)) allocate (Tox(ny,nx-1)) allocate (Twx(ny,nx-1)) allocate (Toy(ny-1,nx)) allocate (Twy(ny-1,nx)) allocate (uo(nx,ny)) allocate (Bo(nx,ny)) allocate (Bw(nx,ny)) allocate (Pon(nx,ny)) allocate (Pwn(nx,ny)) allocate (Bon(nx,ny)) allocate (Bwn(nx,ny)) allocate (Pcn(nx,ny)) allocate (Son(nx,ny)) allocate (Swn(nx,ny)) allocate (Q(nx,ny)) allocate (Co1(nx,ny)) allocate (Co2(nx,ny)) allocate (Cw1(nx,ny)) allocate (Cw2(nx,ny)) allocate (Cw3(nx,ny)) allocate (gammaoz(nx,ny)) allocate (gammawz(nx,ny)) allocate (fo(nx,ny)) allocate (fw(nx,ny)) allocate (Pko(nx,ny)) allocate (Pk1o(nx,ny)) allocate (Pkw(nx,ny)) allocate (Pk1w(nx,ny)) allocate (errorIADIP(nx,ny)) allocate (errorPo(nx,ny)) allocate (errorSo(nx,ny)) allocate (Soc(nx,ny)) allocate (ifila(2*nx,2*nx)) allocate (icolumna(2*ny,2*ny)) allocate (vectorx(2*nx)) allocate (vectory(2*ny)) allocate (Pasteriscox(2*nx)) allocate (Pasteriscoy(2*ny)) allocate (Vinix(2*nx)) allocate (Viniy(2*ny)) allocate (Hk(100)) Q = 0 !Posicionamiento de los pozos productores e inyectores Do i = 1, nw posx = well(i, 2)/deltax

Page 29: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

28

posy = well(i, 3)/deltay Q(posx,posy) = well(i,1) end do rhosc = 141.5/(131.5+API) !Densidad del petróleo condiciones estandar uw = exp(1.003-((1.479e-2)*T)+((1.982e-5)*T**2)) !Viscosidad del agua, NO VARIA CON PRESION Vp = phi*deltax*deltay*h !Volumen poroso write (*,*) 'Escribe el delta t' !Asignación de valor del paso en el tiempo read *, deltat !Asignacion de valores iniciales swi = tablapuntos(1,1) Swn = swi !Asinnamos la saturación inicial a cada bloque Son = 1-tablapuntos(1,1) Pon = Pinicial !Asignamos P petroleo inicial Pcn = tablapuntos(1,4) Pwn = Pcn + Pon ! Asignamos valores iniciales a P del agua Do i = 1, ny !Calculo de Bon Do j = 1, nx F = 0.968*T aux3 = alog10(F) Bob = 1+10**(-6.58511+(2.91329*aux3)-(0.27683*(aux3**2))) Bon(i,j) = 1/(Bob*exp(co*(pb-pon(i,j)))) end do end do Do i = 1, ny !Calculo de Bwn Do j = 1, nx deltavwt = (-1.0001e-2)+((1.33391e-4)*T)+((5.550654e-7)*(T**2)) deltavwp = ((-1.95301e-9)*pwn(i,j)*T)-((1.72834e-13)*(pwn(i,j)**2)*T)-((3.58922e-7)*pwn(i,j))-((2.25341e-10)*(pwn(i,j)**2)) Bwn(i,j) = 1/((1+deltavwp)*(1+deltavwt)) end do end do contador = 1 ciclo: Do while (contador*deltat < 365) So = 0.99*Son cicloSo: Do Sw = 1 - So Do i = 1 , ny !Asignación de valores de Kr a cada bloque Do j = 1, nx

Page 30: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

29

Do k = 1, puntos if (sw(i,j)>tablapuntos(k,1) .and. sw(i,j)<tablapuntos(k+1,1))then Swb = tablapuntos(k,1) Swa = tablapuntos(k+1,1) Krob = tablapuntos(k,3) Kroa = tablapuntos(k+1,3) Krwb = tablapuntos(k,2) Krwa = tablapuntos(k+1,2) Krw(i,j) = (((Krwa-Krwb)/(Swa-Swb))*(Sw(i,j)-Swb))+Krwb Kro(i,j) = (((Kroa-Krob)/(Swa-Swb))*(Sw(i,j)-Swb))+Krob else if (sw(i,j) .EQ. tablapuntos(k,1))then Kro(i,j) = tablapuntos(k,3) Krw(i,j) = tablapuntos(k,2) end if end do end do end do Do i = 1 , ny !Asignación de valores de Pc a cada bloque Do j = 1, nx Do k = 1, puntos if (sw(i,j)>tablapuntos(k,1) .and. sw(i,j)<tablapuntos(k+1,1))then Swb = tablapuntos(k,1) Swa = tablapuntos(k+1,1) Pcb = tablapuntos(k,4) Pca = tablapuntos(k+1,4) Pc(i,j) = (((Pca-Pcb)/(Swa-Swb))*(Sw(i,j)-Swb))+Pcb else if (sw(i,j) .EQ. tablapuntos(k,1))then Pc(i,j) = tablapuntos(k,4) end if end do end do end do Po = 0.99*Pon !Presion suspuesta cicloPo: Do Pw = Po + Pc Do i = 1, ny !Calculo de Bo Do j = 1, nx F = 0.968*T aux3 = alog10(F) Bob = 1+10**(-6.58511+(2.91329*aux3)-(0.27683*(aux3**2))) Bo(i,j) = 1/(Bob*exp(co*(pb-po(i,j)))) end do end do Do i = 1, ny !Calculo de Bw Do j = 1, nx deltavwt = (-1.0001e-2)+((1.33391e-4)*T)+((5.550654e-7)*(T**2))

Page 31: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

30

deltavwp = ((-1.95301e-9)*pw(i,j)*T)-((1.72834e-13)*(pw(i,j)**2)*T)-((3.58922e-7)*pw(i,j))-((2.25341e-10)*(pw(i,j)**2)) Bw(i,j) = 1/((1+deltavwp)*(1+deltavwt)) end do end do Do i = 1, ny !Calculo de Viscosidad del petroleo do j = 1, nx uod = (3.141e10)*(T**(-3.444))*((alog10(API))**((10.313*alog10(T))-36.447)) A_miu = 10.715*(100**(-0.515)) B_miu = 5.44*(150**(-0.338)) uob = A_miu*((uod)**B_miu) m = 2.6*(po(i,j)**1.187)*exp(-11.513-((8.98e-5)*po(i,j))) uo(i,j) = uob*((po(i,j)/pb)**m) end do end do Do i = 1, ny !calculo de cortes de agua y aceite Do j = 1, nx fw(i,j) = (Krw(i,j)/uw)/((kro(i,j)/uo(i,j))+(krw(i,j)/uw)) fo(i,j) = 1-fw(i,j) end do end do Do i = 1, ny !Calculo de trasmisibilidades Do j = 1, nx-1 Tox(i,j)= bc*(h*kx*deltay*Bo(i,j)/(deltax))*(2*kro(i,j)/(uo(i,j)+uo(i+1,j))) Twx(i,j)= bc*(h*kx*deltay*Bw(i,j)/(deltax))*(krw(i,j)/uw) end do end do Do j = 1, nx Do i = 1, ny-1 Toy(i,j)= bc*(h*ky*deltax*Bo(i,j)/(deltay))*(2*kro(i,j)/(uo(i, j)+uo(i+1, j))) !Revisar lo de los deltas Twy(i,j)= bc*(h*ky*deltax*Bw(i,j)/(deltay))*(krw(i,j)/uw) end do end do Do i = 1, ny !Calculo gamma z del aceite y del agua z = (((deltay*i)-(deltay/2)))*sin(grado*pi/180) Do j = 1, nx gammaoz(i,j) = 0.433*Bo(i,j)*rhosc*z gammawz(i,j) = 0.433*Bw(i,j)*1*z end do end do Do i = 1, ny !Calculo de las constantes Do j = 1, nx aux4 = ((Vp*Son(i,j)*(Bo(i,j)-Bon(i,j)))/(ac*deltat*(Po(i,j)-Pon(i,j)))) Co1(i,j) = aux4 -((Vp*bo(i,j)*(So(i,j)-Son(i,j)))/(ac*deltat*(pc(i,j)-Pcn(i,j)))) Co2 = (Vp*Bo(i,j)*(So(i,j)-Son(i,j)))/(ac*deltat*(pc(i,j)-Pcn(i,j))) aux4 = (Vp*Swn(i,j)*(Bw(i,j)-Bwn(i,j)))/(ac*deltat*(Po(i,j)-Pon(i,j)))

Page 32: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

31

Cw1(i,j) = aux4 -((Vp*bw(i,j)*(So(i,j)-Son(i,j)))/(ac*deltat*(pc(i,j)-Pcn(i,j)))) Cw2 = (Vp*Bw(i,j)*(So(i,j)-Son(i,j)))/(ac*deltat*(pc(i,j)-Pcn(i,j))) Cw3 = -(Vp*Swn(i,j)*(bw(i,j)-bwn(i,j)))/(ac*deltat*(Po(i,j)-Pon(i,j))) end do end do lamdax = 0 lamday = 0 Do i = 1, ny-1 !Calculo de parametros Hk Do j = 1, nx-1 aux8 = Toy(i,j)/Tox(i,j) if (aux8 > lamdax) then lamdax = aux8 end if aux9 = Tox(i,j)/Toy(i,j) if (aux9 > lamday) then lamday = aux9 end if end do end do aux8 = (pi**2)/(2*(nx**2)*(1+lamdax)) aux9 = (pi**2)/(2*(ny**2)*(1+lamday)) wmin = MIN(aux8,aux9) nk = 1 Do if ((0.172)**(nk-1) .LE. (wmin/1)) exit nk = nk + 1 end do Hk(1) = wmin alpha = ((1/wmin)**(1.0/(nk-1))) Do i = 2, nk Hk(i) = alpha*Hk(i-1) end do contadorHk = 1 Pko = Pon Pk1o = Pon Pkw = Pwn Pk1w = Pwn cicloIADIP: Do !Aca empieza el ciclo para el IADIP if (MOD(contadorHk,nk) .EQ. 0)then Hki = Hk(nk) else Hki = Hk(MOD(contadorHk,nk)) end if !creacion de la matriz ifila para hallar P* !Adición de los ecuaciones obtenias de la ecuación para petróleo del primera fila ifila(1,1) = -Tox(1,1)-Co1(1,1)-Hki ifila(1,2) = Tox(1,1) ifila(1, nx+1) = -Co2(1,1) aux5 = Q(1,1)*fo(1,1)-Co1(1,1)*Pon(1,1)-Co2(1,1)*Pwn(1,1) beta = aux5 + Tox(1,1)*gammaoz(1,2)+Toy(1,1)*gammaoz(2,1)-(Tox(1,1)+Toy(1,1))*gammaoz(1,1)

Page 33: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

32

vectorx(1) = Toy(1,1)*Pk1o(1,1)-Toy(1,1)*Pk1o(2,1)-Pk1o(1,1)*Hki+beta Do i = 2, nx-1 ifila(i,i-1) = Tox(1,i-1) ifila(i,i) = -(Tox(1,i-1)+Tox(1,i)+Co1(1,i)+Hki) ifila(i,i+1) = Tox(1,i) ifila(i,nx+i) = -Co2(1,i) aux5 = Q(1,i)*fo(1,i)-Co1(1,i)*Pon(1,i)-Co2(1,i)*Pwn(1,i) beta=aux5+Tox(1,i-1)*gammaoz(1,i-1)+Tox(1,i)*gammaoz(1,i+1)+Toy(1,i)*gammaoz(2,i)-(Tox(1,i-1)+Tox(1,i)+Toy(1,i))*gammaoz(1,i) vectorx(i) = Toy(1,i)*Pk1o(1,i)-Toy(1,i)*Pk1o(2,i)-Hki*Pk1o(1,i)+beta end do ifila(nx,nx-1) = Tox(1,nx-1) ifila(nx,nx) = -Tox(1,nx-1)-Co1(1,nx)-Hki ifila(nx,nx+nx) = -Co2(1,nx) aux5 = Q(1,nx)*fo(1,nx)-Co1(1,nx)*Pon(1,nx)-Co2(1,nx)*Pwn(1,nx) beta = aux5 + Tox(1,nx-1)*gammaoz(1,nx-1)+Toy(1,nx)*gammaoz(2,nx)-(Tox(1,nx-1)+Toy(1,nx))*gammaoz(1,nx) vectorx(nx) = Toy(1,nx)*Pk1o(1,nx)-Toy(1,nx)*Pk1o(2,nx)-Hki*Pk1o(1,nx)+beta !Adición de los ecuaciones obtenias de la ecuación para agua primera fila ifila(nx+1,nx+1) = -Twx(1,1)-Cw1(1,1)-Hki ifila(nx+1,nx+2) = Twx(1,1) ifila(nx+1,1) = -Cw2(1,1) aux5 = Q(1,1)*fw(1,1)-Cw1(1,1)*Pwn(1,1)-Cw2(1,1)*Pon(1,1)+Cw3(1,1)*Pc(1,1)-Cw3(1,1)*Pcn(1,1) beta = aux5 + Twx(1,1)*gammawz(1,2)+Twy(1,1)*gammawz(2,1)-(Twx(1,1)+Twy(1,1))*gammawz(1,1) vectorx(nx+1) = Twy(1,1)*Pk1w(1,1)-Twy(1,1)*Pk1w(2,1)-Hki*Pk1w(1,1)+beta Do i = 2, nx-1 ifila(i+nx,i+nx-1) = Twx(1,i-1) ifila(i+nx,i+nx) = -(Twx(1,i-1)+Twx(1,i)+Cw1(1,i)+Hki) ifila(i+nx,i+nx+1) = Twx(1,i) ifila(i+nx,i) = -Cw2(1,i) aux5 = Q(1,i)*fw(1,i)-Cw1(1,i)*Pwn(1,i)-Cw2(1,i)*Pon(1,i)+Cw3(1,i)*Pc(1,i)-Cw3(1,i)*Pcn(1,i) beta=aux5+Twx(1,i-1)*gammawz(1,i-1)+Twx(1,i)*gammawz(1,i+1)+Twy(1,i)*gammawz(2,i)-(Twx(1,i-1)+Twx(1,i)+Twy(1,i))*gammawz(1,i) vectorx(i+nx) = Twy(1,i)*Pk1w(1,i)-Twy(1,i)*Pk1w(2,i)-Hki*Pk1w(1,i)+beta end do ifila(nx+nx,nx+nx-1) = Twx(1,nx-1) ifila(nx+nx,nx+nx) = -Twx(1,nx-1)-Cw1(1,nx)-Hki ifila(nx+nx,nx) = -Cw2(1,nx) aux5 = Q(1,nx)*fw(1,nx)-Cw1(1,nx)*Pwn(1,nx)-Cw2(1,nx)*Pon(1,nx)+Cw3(1,nx)*Pc(1,nx)-Cw3(1,i)*Pcn(1,nx) beta = aux5 + Twx(1,nx-1)*gammawz(1,nx-1)+Twy(1,nx)*gammawz(2,nx)-(Twx(1,nx-1)+Twy(1,nx))*gammawz(1,nx) vectorx(nx+nx) = Twy(1,nx)*Pk1w(1,nx)-Twy(1,nx)*Pk1w(2,nx)-Hki*Pk1w(1,nx)+beta !Solución de la primera fila por metodo de jacobi !Vector de condiciones iniciales Do i = 1, nx

Page 34: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

33

vinix(i) = Po(1,i) vinix(i+nx) = Pw(1,i) end do print *, vinix !Calculo de las P* l=0 ciclojacobi: Do while(l<100) Do i = 1, 2*nx suma = 0 Do j = 1, 2*nx if (j .NE. i) then suma = suma + (ifila(i,j)*vinix(j)) end if end do Pasteriscox(i) = (Vectorx(i)-suma)/ifila(i,i) end do norma = abs(vinix(1)-Pasteriscox(1)) ! Calculo error Do i = 2, 2*nx if (abs(vinix(i)-Pasteriscox(i)) > norma) then norma = abs(vinix(i)-Pasteriscox(i)) end if end do if (norma < 0.1) exit ciclojacobi Vinix = Pasteriscox l = l+1 end do ciclojacobi Do i = 1, nx !Asiganacion de los valores P* a la primera fila de la matriz Pk1o(1,i) = Pasteriscox(i) Pk1w(1,i) = Pasteriscox(i+nx) end do !Ciclo para calcular P* filas restantes (menos la ultima fila) Do k = 2, ny-1 !Adición de los ecuaciones obtenias de la ecuación para petróleo ifila(1,1) = -Tox(k,1)-Co1(k,1)-Hki ifila(1,2) = Tox(k,1) ifila(1, nx+1) = -Co2(k,1) aux5 = Q(k,1)*fo(k,1)-Co1(k,1)*Pon(k,1)-Co2(k,1)*Pwn(k,1) aux6 = Toy(k-1,1)*gammaoz(k-1,1) + Tox(k,1)*gammaoz(k,2)+Toy(k,1)*gammaoz(k+1,1)-(Toy(k-1,1)+Tox(k,1)+Toy(k,1))*gammaoz(k,1) beta = aux5 + aux6 vectorx(1) = -Toy(k-1,1)*Pk1o(k-1,1) + (Toy(k-1,1)+Toy(k,1))*Pk1o(k,1)-Toy(k,1)*Pk1o(k+1,1)-Hki*Pk1o(k,1)+beta Do i = 2, nx-1 ifila(i,i-1) = Tox(k,i-1) ifila(i,i) = -(Tox(k,i-1)+Tox(k,i)+Co1(k,i)+Hki) ifila(i, i+1) = Tox(k,i) ifila(i,nx+i) = -Co2(k,i) aux5 = Q(k,i)*fo(k,i)-Co1(k,i)*Pon(k,i)-Co2(k,i)*Pwn(k,i) aux6 = Tox(k,i-1)*gammaoz(k,i-1)+ Toy(k-1,i)*gammaoz(k-1,i) + Tox(k,i)*gammaoz(k,i+1) aux7 = Toy(k,i)*gammaoz(k+1,i)-(Tox(k,i-1)+ Toy(k-1,i) +Tox(k,i)+Toy(k,i))*gammaoz(k,i)

Page 35: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

34

beta = aux5+ aux6 + aux7 vectorx(i) = -Toy(k-1,i)*Pk1o(k-1,i) + (Toy(k-1,i) + Toy(k,i))*Pk1o(k,i)-Toy(k,i)*Pk1o(k+1,i)-Hki*Pk1o(k,i) + beta end do ifila(nx,nx-1) = Tox(k,nx-1) ifila(nx,nx) = -Tox(k,nx-1)-Co1(k,nx)-Hki ifila(nx,nx+nx) = -Co2(k,nx) aux5 = Q(k,nx)*fo(k,nx)-Co1(k,nx)*Pon(k,nx)-Co2(k,nx)*Pwn(k,nx) aux6 = Tox(k,nx-1)*gammaoz(k,nx-1)+ Toy(k-1,nx)*gammaoz(k-1,nx) aux7 = Toy(k,nx)*gammaoz(k+1,nx)-(Tox(k,nx-1)+Toy(k-1,nx) +Toy(k,nx))*gammaoz(k,nx) beta = aux5 + aux6 + aux7 vectorx(nx) = -Toy(k-1,nx)*Pk1o(k-1,nx) + (Toy(k-1,nx)+Toy(k,nx))*Pk1o(k,nx)-Toy(k,nx)*Pk1o(k+1,nx)-Hki*Pk1o(k,nx)+beta !Adición de los ecuaciones obtenias de la ecuación para agua ifila(nx+1,nx+1) = -Twx(k,1)-Cw1(k,1)-Hki ifila(nx+1,nx+2) = Twx(k,1) ifila(nx+1,1) = -Cw2(k,1) aux5 = Q(k,1)*fw(k,1)-Cw1(k,1)*Pwn(k,1)-Cw2(k,1)*Pon(k,1)+Cw3(k,1)*Pc(k,1)-Cw3(k,1)*Pcn(k,1) aux6 = Twx(k,1)*gammawz(k,2)+Twy(k,1)*gammawz(k+1,1)+Twy(k-1,1)*gammawz(k-1,1)-(Twx(k,1)+Twy(k,1)+Twy(k-1,1))*gammawz(k,1) beta = aux5 + aux6 vectorx(nx+1) = (Twy(k,1)+Twy(k-1,1))*Pk1w(k,1)-Twy(k,1)*Pk1w(k+1,1)-Twy(k-1,1)*Pk1w(k-1,1)+beta-Hki*Pk1w(k,1) Do i = 2, nx-1 ifila(i+nx,i+nx-1) = Twx(k,i-1) ifila(i+nx,i+nx) = -(Twx(k,i-1)+Twx(k,i)+Cw1(k,i)+Hki) ifila(i+nx,i+nx+1) = Twx(k,i) ifila(i+nx,i) = -Cw2(k,i) aux5 = Q(k,i)*fw(k,i)-Cw1(k,i)*Pwn(k,i)-Cw2(k,i)*Pon(k,i)+Cw3(k,i)*Pc(k,i)-Cw3(k,i)*Pcn(k,i) aux6 = Twx(k,i-1)*gammawz(k,i-1)+Twy(k-1,i)*gammawz(k-1,i)+Twx(k,i)*gammawz(k,i+1)+Twy(k,i)*gammawz(k+1,i) aux7 = (Twx(k,i-1)+Twy(k-1,i)+Twx(k,i)+Twy(k,i))*gammawz(k,i) beta=aux5+aux6+aux7 vectorx(i+nx) = (Twy(k,i)+Twy(k-1,i))*Pk1w(k,i)-Twy(k,i)*Pk1w(k+1,i)-Twy(k-1,i)*Pk1w(k-1,i)-Hki*Pk1w(k,i)+beta end do ifila(nx+nx,nx+nx-1) = Twx(k,nx-1) ifila(nx+nx,nx+nx) = -Twx(k,nx-1)-Cw1(k,nx)-Hki ifila(nx+nx,nx) = -Cw2(k,nx) aux5 = Q(k,nx)*fw(k,nx)-Cw1(k,nx)*Pwn(k,nx)-Cw2(k,nx)*Pon(k,nx)+Cw3(k,nx)*Pc(k,nx)-Cw3(k,nx)*Pcn(k,nx) aux6 = Twx(k,nx-1)*gammawz(k,nx-1)+Twy(k,nx)*gammawz(k+1,nx)-(Twx(k,nx-1)+Twy(k,nx)+Twy(k-1,nx))*gammawz(k,nx) aux7 = Twy(k-1,nx)*gammawz(k-1,nx) beta = aux5 + aux6 + aux7 vectorx(nx+nx) = (Twy(k-1,nx)+Twy(k,nx))*Pk1w(k,nx)-Twy(k,nx)*Pk1w(k+1,nx)-Twy(k-1,nx)*Pk1w(k-1,nx)-Hki*Pk1w(k,nx)+beta !Vector de condiciones iniciales

Page 36: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

35

Do i = 1, nx vinix(i) = Po(k,i) vinix(i+nx) = Pw(k,i) end do !Calculo de las P* l=0 ciclojacobi1: Do while(l<100) Do i = 1, 2*nx suma = 0 Do j = 1, 2*nx if (j .NE. i) then suma = suma + (ifila(i,j)*vinix(j)) end if end do Pasteriscox(i) = (Vectorx(i)-suma)/ifila(i,i) end do norma = abs(vinix(1)-Pasteriscox(1)) ! Calculo error Do i = 2, 2*nx if (abs(vinix(i)-Pasteriscox(i)) > norma) then norma = abs(vinix(i)-Pasteriscox(i)) end if end do if (norma < 0.1) exit ciclojacobi1 l = l+1 Vinix = Pasteriscox end do ciclojacobi1 Do i = 1, nx !Asignacion del valor P* a la fila k Pk1o(k,i) = Pasteriscox(i) Pk1w(k,i) = Pasteriscox(i+nx) end do END DO !Este cierra el ciclo que calcula P* para cada fila !Creacion de la amtriz ifila para la ultima fila !Adicion de las ecuaciones para el petroleo ifila(1,1) = -Tox(ny,1)-Co1(ny,1)-Hki ifila(1,2) = Tox(ny,1) ifila(1, nx+1) = -Co2(ny,1) aux5 = Q(ny,1)*fo(ny,1)-Co1(ny,1)*Pon(ny,1)-Co2(ny,1)*Pwn(ny,1) aux6 = Toy(ny-1,1)*gammaoz(ny-1,1) + Tox(ny,1)*gammaoz(ny,2)-(Toy(ny-1,1)+Tox(ny,1))*gammaoz(ny,1) beta = aux5 + aux6 vectorx(1) = -Toy(ny-1,1)*Pk1o(ny-1,1) + (Toy(ny-1,1))*Pk1o(ny,1)-Hki*Pk1o(ny,1)+beta Do i = 2, nx-1 ifila(i,i-1) = Tox(ny,i-1) ifila(i,i) = -(Tox(ny,i-1)+Tox(ny,i)+Co1(ny,i)+Hki) ifila(i, i+1) = Tox(ny,i) ifila(i,nx+i) = -Co2(ny,i) aux5 = Q(ny,i)*fo(ny,i)-Co1(ny,i)*Pon(ny,i)-Co2(ny,i)*Pwn(ny,i) aux6 = Tox(ny,i-1)*gammaoz(ny,i-1)+ Toy(ny-1,i)*gammaoz(ny-1,i) + Tox(ny,i)*gammaoz(ny,i+1) aux7 = -(Tox(ny,i-1)+ Toy(ny-1,i) +Tox(ny,i))*gammaoz(ny,i)

Page 37: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

36

beta = aux5+ aux6 + aux7 vectorx(i) = -Toy(ny-1,i)*Pk1o(ny-1,i) + (Toy(ny-1,i))*Pk1o(ny,i)-Hki*Pk1o(ny,i) + beta end do ifila(nx,nx-1) = Tox(ny,nx-1) ifila(nx,nx) = -Tox(ny,nx-1)-Co1(ny,nx)-Hki ifila(nx,nx+nx) = -Co2(ny,nx) aux5 = Q(ny,nx)*fo(ny,nx)-Co1(ny,nx)*Pon(ny,nx)-Co2(ny,nx)*Pwn(ny,nx) aux6 = Tox(ny,nx-1)*gammaoz(ny,nx-1)+ Toy(ny-1,nx)*gammaoz(ny-1,nx) aux7 = -(Tox(ny,nx-1)+Toy(ny-1,nx))*gammaoz(ny,nx) beta = aux5 + aux6 + aux7 vectorx(nx) = -Toy(ny-1,nx)*Pk1o(ny-1,nx) + (Toy(ny-1,nx))*Pk1o(ny,nx)-Hki*Pk1o(ny,nx)+beta !Adición de los ecuaciones obtenias para agua ifila(nx+1,nx+1) = -Twx(ny,1)-Cw1(ny,1)-Hki ifila(nx+1,nx+2) = Twx(ny,1) ifila(nx+1,1) = -Cw2(ny,1) aux5 = Q(ny,1)*fw(ny,1)-Cw1(ny,1)*Pwn(ny,1)-Cw2(ny,1)*Pon(ny,1)+Cw3(ny,1)*Pc(ny,1)-Cw3(ny,1)*Pcn(ny,1) aux6 = Twx(ny,1)*gammawz(ny,2)+Twy(ny-1,1)*gammawz(ny-1,1)-(Twx(ny,1)+Twy(ny-1,1))*gammawz(ny,1) beta = aux5 + aux6 vectorx(nx+1) = (Twy(ny-1,1))*Pk1w(ny,1)-Twy(ny-1,1)*Pk1w(ny-1,1)+beta-Hki*Pk1w(ny,1) Do i = 2, nx-1 ifila(i+nx,i+nx-1) = Twx(ny,i-1) ifila(i+nx,i+nx) = -(Twx(ny,i-1)+Twx(ny,i)+Cw1(ny,i)+Hki) ifila(i+nx,i+nx+1) = Twx(ny,i) ifila(i+nx,i) = -Cw2(ny,i) aux5 = Q(ny,i)*fw(ny,i)-Cw1(ny,i)*Pwn(ny,i)-Cw2(ny,i)*Pon(ny,i)+Cw3(ny,i)*Pc(ny,i)-Cw3(ny,i)*Pcn(ny,i) aux6 = Twx(ny,i-1)*gammawz(ny,i-1)+Twy(ny-1,i)*gammawz(ny-1,i)+Twx(ny,i)*gammawz(ny,i+1) aux7 = (Twx(ny,i-1)+Twy(ny-1,i)+Twx(ny,i))*gammawz(ny,i) beta=aux5+aux6+aux7 vectorx(i+nx) = (Twy(ny-1,i))*Pk1w(ny,i)-Twy(ny-1,i)*Pk1w(ny-1,i)-Hki*Pk1w(ny,i)+beta end do ifila(nx+nx,nx+nx-1) = Twx(ny,nx-1) ifila(nx+nx,nx+nx) = -Twx(ny,nx-1)-Cw1(ny,nx)-Hki ifila(nx+nx,nx) = -Cw2(ny,nx) aux5 = Q(ny,nx)*fw(ny,nx)-Cw1(ny,nx)*Pwn(ny,nx)-Cw2(ny,nx)*Pon(ny,nx)+Cw3(ny,nx)*Pc(ny,nx)-Cw3(ny,nx)*Pcn(ny,nx) aux6 = Twx(ny,nx-1)*gammawz(ny,nx-1)+Twy(ny-1,nx)*gammawz(ny-1,nx)-(Twx(ny,nx-1)+Twy(ny-1,nx))*gammawz(ny,nx) beta = aux5 + aux6 vectorx(nx+nx) = (Twy(ny-1,nx))*Pk1w(ny,nx)-Twy(ny-1,nx)*Pk1w(ny-1,nx)-Hki*Pk1w(ny,nx)+beta !Vector de condiciones iniciales Do i = 1, nx vinix(i) = Po(ny,i) vinix(i+nx) = Pw(ny,i) end do !Calculo de las P*

Page 38: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

37

l=0 ciclojacobi2: Do while(l<100) Do i = 1, 2*nx suma = 0 Do j = 1, 2*nx if (j .NE. i) then suma = suma + (ifila(i,j)*vinix(j)) end if end do Pasteriscox(i) = (Vectorx(i)-suma)/ifila(i,i) end do norma = abs(vinix(1)-Pasteriscox(1)) ! Calculo error Do i = 2, 2*nx if (abs(vinix(i)-Pasteriscox(i)) > norma) then norma = abs(vinix(i)-Pasteriscox(i)) end if end do if (norma < 0.1) exit ciclojacobi2 l = l+1 Vinix = Pasteriscox end do ciclojacobi2 Do i = 1, nx Pk1o(ny,i) = Pasteriscox(i) Pk1w(ny,i) = Pasteriscox(i+nx) end do !Calculo de las presiones k+1 !Creacion de la matriz icolumna para la primera columna !Adición de los ecuaciones obtenias de la ecuación para petróleo icolumna(1,1) = -Toy(1,1)-Co1(1,1)-Hki icolumna(1,2) = Toy(1,1) icolumna(1, ny+1) = -Co2(1,1) aux5 = Q(1,1)*fo(1,1)-Co1(1,1)*Pon(1,1)-Co2(1,1)*Pwn(1,1) beta = aux5 + Tox(1,1)*gammaoz(1,2)+Toy(1,1)*gammaoz(2,1)-(Tox(1,1)+Toy(1,1))*gammaoz(1,1) vectory(1) = Tox(1,1)*Pk1o(1,1)-Tox(1,1)*Pk1o(1,2)-Pk1o(1,1)*Hki+beta Do i = 2, ny-1 icolumna(i,i-1) = Toy(i-1,1) icolumna(i,i) = -(Toy(i-1,1)+Toy(i,1)+Co1(1,i)-Hki) icolumna(i, i+1) = Toy(i,1) icolumna(i,ny+i) = -Co2(i,1) aux5 = Q(i,1)*fo(i,1)-Co1(i,1)*Pon(i,1)-Co2(i,1)*Pwn(i,1) beta=aux5+Toy(i-1,1)*gammaoz(i-1,1)+Toy(i,1)*gammaoz(i+1,1)+Tox(i,1)*gammaoz(i,2)-(Toy(i-1,1)+Toy(i,1)+Tox(i,1))*gammaoz(i,1) vectory(i) = Tox(i,1)*Pk1o(i,1)-Tox(i,1)*Pk1o(i,2)-Hki*Pk1o(i,1)+beta end do icolumna(ny,ny-1) = Toy(ny-1,1) icolumna(ny,ny) = -Toy(ny-1,1)-Co1(ny,1)-Hki icolumna(ny,ny+ny) = -Co2(ny,1) aux5 = Q(ny,1)*fo(ny,1)-Co1(ny,1)*Pon(ny,1)-Co2(ny,1)*Pwn(ny,1)

Page 39: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

38

beta = aux5 + Toy(ny-1,1)*gammaoz(ny-1,1)+Tox(ny,1)*gammaoz(ny,2)-(Toy(ny-1,1)+Tox(ny,1))*gammaoz(ny,1) vectory(ny) = Tox(ny,1)*Pk1o(ny,1)-Tox(ny,1)*Pk1o(ny,2)-Hki*Pk1o(ny,1)+beta !Adición de los ecuaciones obtenias de la ecuación para agua icolumna(ny+1,ny+1) = -Twy(1,1)-Cw1(1,1)-Hki icolumna(ny+1,ny+2) = Twy(1,1) icolumna(ny+1,1) = -Cw2(1,1) aux5 = Q(1,1)*fw(1,1)-Cw1(1,1)*Pwn(1,1)-Cw2(1,1)*Pon(1,1)+Cw3(1,1)*Pc(1,1)-Cw3(1,1)*Pcn(1,1) beta = aux5 + Twy(1,1)*gammawz(2,1)+Twx(1,1)*gammawz(1,2)-(Twy(1,1)+Twx(1,1))*gammawz(1,1) vectory(nx+1) = Twx(1,1)*Pk1w(1,1)-Twx(1,1)*Pk1w(1,2)-Hki*Pk1w(1,1)+beta Do i = 2, ny-1 icolumna(i+ny,i+ny-1) = Twy(i-1,1) icolumna(i+ny,i+ny) = -(Twy(i-1,1)+Twy(i,1)+Cw1(i,1)+Hki) icolumna(i+ny,i+ny+1) = Twy(i,1) icolumna(i+ny,i) = -Cw2(i,1) aux5 = Q(i,1)*fw(i,1)-Cw1(i,1)*Pw(i,1)-Cw2(i,1)*Po(i,1)+Cw3(i,1)*Pc(i,1)-Cw3(i,1)*Pcn(i,1) beta=aux5+Twy(i-1,1)*gammawz(i-1,1)+Twy(i,1)*gammawz(i+1,1)+Twx(i,1)*gammawz(i,2)-(Twy(i-1,1)+Twy(i,1)+Twx(i,1))*gammawz(i,1) vectory(i+ny) = Twx(i,1)*Pk1w(i,1)-Twx(i,1)*Pk1w(i,2)-Hki*Pk1w(i,1)+beta end do icolumna(ny+ny,ny+ny-1) = Twy(ny-1,1) icolumna(ny+ny,ny+ny) = -Twy(ny-1,1)-Cw1(ny,1)-Hki icolumna(ny+ny,ny) = -Cw2(ny,1) aux5 = Q(ny,1)*fw(ny,1)-Cw1(ny,1)*Pwn(ny,1)-Cw2(ny,1)*Pon(ny,1)+Cw3(ny,1)*Pc(ny,1)-Cw3(ny,1)*Pcn(ny,1) beta = aux5 + Twy(ny-1,1)*gammawz(ny-1,1)+Twx(ny,1)*gammawz(ny,2)-(Twy(ny-1,1)+Twx(ny,1))*gammawz(ny,1) vectory(ny+ny) = Twx(ny,1)*Pk1w(ny,1)-Twx(ny,1)*Pk1w(ny,2)-Hki*Pk1w(ny,1)+beta !Solución de la primera columna por metodo de jacobi !Vector de condiciones iniciales Do i = 1, ny viniy(i) = Po(i,1) viniy(i+ny) = Pw(i,1) end do !Calculo de las Pk+1 l=0 ciclojacobi3: Do while(l<100) Do i = 1, 2*ny suma = 0 Do j = 1, 2*ny if (j .NE. i) then suma = suma + (icolumna(i,j)*viniy(j)) end if end do Pasteriscoy(i) = (Vectory(i)-suma)/icolumna(i,i) end do norma = abs(viniy(1)-Pasteriscoy(1)) ! Calculo error Do i = 2, 2*ny

Page 40: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

39

if (abs(viniy(i)-Pasteriscoy(i)) > norma) then norma = abs(viniy(i)-Pasteriscoy(i)) end if end do if (norma < 0.1) exit ciclojacobi3 l = l+1 Viniy = Pasteriscoy end do ciclojacobi3 Do i = 1, ny !Asiganacion de los valores Pk+1 a la primera columna de la matriz Pk1o(i,1) = Pasteriscoy(i) Pk1w(i,1) = Pasteriscoy(i+ny) end do !Ciclo para calcular Pk+1 restantes (menos la ultima columna) Do k = 2, ny-1 !Adición de los ecuaciones obtenias de la ecuación para petróleo icolumna(1,1) = -Toy(1,k)-Co1(1,k)-Hki icolumna(1,2) = Toy(1,k) icolumna(1, ny+1) = -Co2(1,k) aux5 = Q(1,k)*fo(1,k)-Co1(1,k)*Pon(1,k)-Co2(1,k)*Pwn(1,k) aux6 = Tox(1,k-1)*gammaoz(1,k-1) + Toy(1,k)*gammaoz(2,k)+Tox(1,k)*gammaoz(1,k+1)-(Tox(1,k-1)+Toy(1,k)+Tox(1,k))*gammaoz(1,k) beta = aux5 + aux6 vectory(1) = -Tox(1,k-1)*Pk1o(1,k-1) + (Tox(1,k-1)+Tox(1,k))*Pk1o(1,k)-Tox(1,k)*Pk1o(1,k+1)-Hki*Pk1o(1,k)+beta Do i = 2, ny-1 icolumna(i,i-1) = Toy(i-1,k) icolumna(i,i) = -(Toy(i-1,k)+Toy(i,k)+Co1(i,k)+Hki) icolumna(i, i+1) = Toy(i,k) icolumna(i,nx+i) = -Co2(i,k) aux5 = Q(i,k)*fo(i,k)-Co1(i,k)*Pon(i,k)-Co2(i,k)*Pwn(i,k) aux6 = Toy(i-1,k)*gammaoz(i-1,k)+ Tox(i,k-1)*gammaoz(i,k-1) + Toy(i,k)*gammaoz(i+1,k) aux7 = Tox(i,k)*gammaoz(i,k+1)-(Toy(i-1,k)+ Tox(i,k-1) +Toy(i,k)+Tox(i,k))*gammaoz(i,k) beta = aux5+ aux6 + aux7 vectory(i) = -Tox(i,k-1)*Pk1o(i,k-1) + (Tox(i,k-1) + Tox(i,k))*Pk1o(i,k)-Tox(i,k)*Pk1o(i,k+1)-Hki*Pk1o(i,k) + beta end do icolumna(ny,ny-1) = Toy(ny-1,k) icolumna(ny,ny) = -Toy(ny-1,k)-Co1(ny,k)-Hki icolumna(ny,ny+ny) = -Co2(ny,k) aux5 = Q(ny,k)*fo(ny,k)-Co1(ny,k)*Pon(ny,k)-Co2(ny,k)*Pwn(ny,k) aux6 = Toy(ny-1,k)*gammaoz(ny-1,k)+ Tox(ny,k-1)*gammaoz(ny,k-1) aux7 = Tox(ny,k)*gammaoz(ny,k+1)-(Toy(ny-1,k)+Tox(ny,k-1) +Tox(ny,k))*gammaoz(ny,k) beta = aux5 + aux6 + aux7 vectory(ny) = -Tox(ny,k-1)*Pk1o(ny,k-1) + (Tox(ny,k-1)+Tox(ny,k))*Pk1o(ny,k)-Tox(ny,k)*Pk1o(ny,k+1)-Hki*Pk1o(ny,k)+beta !Adición de los ecuaciones obtenias para agua icolumna(ny+1,ny+1) = -Twy(1,k)-Cw1(1,k)-Hki

Page 41: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

40

icolumna(ny+1,ny+2) = Twy(1,k) icolumna(ny+1,1) = -Cw2(1,k) aux5 = Q(1,k)*fw(1,k)-Cw1(1,k)*Pwn(1,k)-Cw2(1,k)*Pon(1,k)+Cw3(1,k)*Pc(1,k)-Cw3(1,k)*Pcn(1,k) aux6 = Twy(1,k)*gammawz(2,k)+Twx(1,k)*gammawz(1,k+1)+Twx(1,k-1)*gammawz(1,k-1)-(Twy(1,k)+Twx(1,k)+Twx(1,k-1))*gammawz(1,k) beta = aux5 + aux6 vectory(ny+1) = (Twx(1,k)+Twx(1,k-1))*Pk1w(1,k)-Twx(1,k)*Pk1w(1,k+1)-Twx(1,k-1)*Pk1w(1,k-1)+beta-Hki*Pk1w(1,k) Do i = 2, ny-1 icolumna(i+ny,i+ny-1) = Twy(i-1,k) icolumna(i+ny,i+ny) = -(Twy(i-1,k)+Twy(i,k)+Cw1(i,k)+Hki) icolumna(i+ny,i+ny+1) = Twy(i,k) icolumna(i+ny,i) = -Cw2(i,k) aux5 = Q(i,k)*fw(i,k)-Cw1(i,k)*Pwn(i,k)-Cw2(i,k)*Pon(i,k)+Cw3(i,k)*Pc(i,k)-Cw3(i,k)*Pcn(i,k) aux6 = Twy(i-1,k)*gammawz(i-1,k)+Twx(i,k-1)*gammawz(i,k-1)+Twy(i,k)*gammawz(i+1,k)+Twx(i,k)*gammawz(i,k+1) aux7 = (Twy(i-1,k)+Twx(i,k-1)+Twy(i,k)+Twx(i,k))*gammawz(i,k) beta=aux5+aux6+aux7 vectory(i+ny) = (Twx(i,k)+Twx(i,k-1))*Pk1w(i,k)-Twx(i,k)*Pk1w(i,k+1)-Twx(i,k-1)*Pk1w(i,k-1)-Hki*Pk1w(i,k)+beta end do icolumna(ny+ny,ny+ny-1) = Twy(ny-1,k) icolumna(ny+ny,ny+ny) = -Twy(ny-1,k)-Cw1(ny,k)-Hki icolumna(ny+ny,ny) = -Cw2(ny,k) aux5 = Q(ny,k)*fw(ny,k)-Cw1(ny,k)*Pwn(ny,k)-Cw2(ny,k)*Pon(ny,k)+Cw3(ny,k)*Pc(ny,k)-Cw3(ny,k)*Pcn(ny,k) aux6 = Twy(ny-1,k)*gammawz(ny-1,k)+Twx(ny,k)*gammawz(ny,k+1)-(Twy(ny-1,k)+Twx(ny,k)+Twx(ny,k-1))*gammawz(ny,k) aux7 = Twx(ny,k-1)*gammawz(ny,k-1) beta = aux5 + aux6 + aux7 vectory(ny+ny) = (Twx(ny,k-1)+Twx(ny,k))*Pk1w(ny,k)-Twx(ny,k)*Pk1w(ny,k+1)-Twx(ny,k-1)*Pk1w(ny,k-1)-Hki*Pk1w(ny,k)+beta !Vector de condiciones iniciales Do i = 1, ny viniy(i) = Po(i,k) viniy(i+ny) = Pw(i,k) end do !Calculo de las Pk+1 l=0 ciclojacobi4: Do while(l<100) Do i = 1, 2*ny suma = 0 Do j = 1, 2*ny if (j .NE. i) then suma = suma + (icolumna(i,j)*viniy(j)) end if end do Pasteriscoy(i) = (Vectory(i)-suma)/icolumna(i,i) end do

Page 42: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

41

norma = abs(viniy(1)-Pasteriscoy(1)) ! Calculo error Do i = 2, 2*ny if (abs(viniy(i)-Pasteriscoy(i)) > norma) then norma = abs(viniy(i)-Pasteriscoy(i)) end if end do if (norma < 0.1) exit ciclojacobi4 l = l+1 Viniy = Pasteriscoy end do ciclojacobi4 Do i = 1, ny Pk1o(i,k) = Pasteriscoy(i) Pk1w(i,k) = Pasteriscoy(i+ny) end do END DO !Este cierra el ciclo que calcula Pk+1 para cada columna interior !Calculo de Pk+1 para ultima columna !Ecuaciones de petroleo icolumna(1,1) = -Toy(1,nx)-Co1(1,nx)-Hki icolumna(1,2) = Toy(1,nx) icolumna(1, ny+1) = -Co2(1,nx) aux5 = Q(1,nx)*fo(1,nx)-Co1(1,nx)*Pon(1,nx)-Co2(1,nx)*Pwn(1,nx) aux6 = Tox(1,nx-1)*gammaoz(1,nx-1) + Toy(1,nx)*gammaoz(2,nx)-(Tox(1,nx-1)+Toy(1,nx))*gammaoz(1,nx) beta = aux5 + aux6 vectory(1) = -Tox(1,nx-1)*Pk1o(1,nx-1) + (Tox(1,nx-1))*Pk1o(1,nx)-Hki*Pk1o(1,nx)+beta Do i = 2, ny-1 icolumna(i,i-1) = Toy(i-1,nx) icolumna(i,i) = -(Toy(i-1,nx)+Toy(i,nx)+Co1(i,nx)+Hki) icolumna(i, i+1) = Toy(i,nx) icolumna(i,ny+i) = -Co2(i,nx) aux5 = Q(i,nx)*fo(i,nx)-Co1(i,nx)*Pon(i,nx)-Co2(i,nx)*Pwn(i,nx) aux6 = Toy(i-1,nx)*gammaoz(i-1,nx)+ Tox(i,nx-1)*gammaoz(i,nx-1) + Toy(i,nx)*gammaoz(i+1,nx) aux7 = -(Toy(i-1,nx)+ Tox(i,nx-1) +Toy(i,nx))*gammaoz(i,nx) beta = aux5+ aux6 + aux7 vectory(i) = -Tox(i,nx-1)*Pk1o(i,nx-1) + (Tox(i,nx-1))*Pk1o(i,nx)-Hki*Pk1o(i,nx) + beta end do icolumna(ny,ny-1) = Toy(ny-1,nx) icolumna(ny,ny) = -Toy(ny-1,nx)-Co1(ny,nx)-Hki icolumna(ny,ny+ny) = -Co2(ny,nx) aux5 = Q(ny,nx)*fo(ny,nx)-Co1(ny,nx)*Pon(ny,nx)-Co2(ny,nx)*Pwn(ny,nx) aux6 = Tox(ny,nx-1)*gammaoz(ny,nx-1)+ Toy(ny-1,nx)*gammaoz(ny-1,nx) aux7 = -(Tox(ny,nx-1)+Toy(ny-1,nx))*gammaoz(ny,nx) beta = aux5 + aux6 + aux7 vectory(ny) = -Tox(ny,nx-1)*Pk1o(ny,nx-1) + (Tox(ny,nx-1))*Pk1o(ny,nx)-Hki*Pk1o(ny,nx)+beta !Adición de los ecuaciones para agua icolumna(ny+1,ny+1) = -Twy(1,nx)-Cw1(1,nx)-Hki icolumna(ny+1,ny+2) = Twy(1,nx)

Page 43: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

42

icolumna(ny+1,1) = -Cw2(1,nx) aux5 = Q(1,nx)*fw(1,nx)-Cw1(1,nx)*Pwn(1,nx)-Cw2(1,nx)*Pon(1,nx)+Cw3(1,nx)*Pc(1,nx)-Cw3(1,nx)*Pcn(1,nx) aux6 = Twy(1,nx)*gammawz(2,nx)+Twx(1,nx-1)*gammawz(1,nx-1)-(Twy(1,nx)+Twx(1,nx-1))*gammawz(1,nx) beta = aux5 + aux6 vectory(ny+1) = (Twx(1,nx-1))*Pk1w(1,nx)-Twx(1,nx-1)*Pk1w(1,nx-1)+beta-Hki*Pk1w(1,nx) Do i = 2, ny-1 icolumna(i+ny,i+ny-1) = Twy(i-1,nx) icolumna(i+ny,i+ny) = -(Twy(i-1,nx)+Twy(i,nx)+Cw1(i,nx)+Hki) icolumna(i+ny,i+ny+1) = Twy(i,nx) icolumna(i+ny,i) = -Cw2(i,nx) aux5 = Q(i,nx)*fw(i,nx)-Cw1(i,nx)*Pwn(i,nx)-Cw2(i,nx)*Pon(i,nx)+Cw3(i,nx)*Pc(i,nx)-Cw3(i,nx)*Pcn(i,nx) aux6 = Twy(i-1,nx)*gammawz(i-1,nx)+Twx(i,nx-1)*gammawz(i,nx-1)+Twy(i,nx)*gammawz(i+1,nx) aux7 = (Twy(i-1,nx)+Twx(i,nx-1)+Twy(i,nx))*gammawz(i,nx) beta=aux5+aux6+aux7 vectory(i+ny) = (Twx(i,nx-1))*Pk1w(i,nx)-Twx(i,nx-1)*Pk1w(i,nx-1)-Hki*Pk1w(i,nx)+beta end do icolumna(ny+ny,ny+ny-1) = Twy(ny-1,nx) icolumna(ny+ny,ny+ny) = -Twy(ny-1,nx)-Cw1(ny,nx)-Hki icolumna(ny+ny,ny) = -Cw2(ny,nx) aux5 = Q(ny,nx)*fw(ny,nx)-Cw1(ny,nx)*Pwn(ny,nx)-Cw2(ny,nx)*Pon(ny,nx)+Cw3(ny,nx)*Pc(ny,nx)-Cw3(ny,nx)*Pcn(ny,nx) aux6 = Twx(ny,nx-1)*gammawz(ny,nx-1)+Twy(ny-1,nx)*gammawz(ny-1,nx)-(Twx(ny,nx-1)+Twy(ny-1,nx))*gammawz(ny,nx) beta = aux5 + aux6 vectory(ny+ny) = (Twx(ny,nx-1))*Pk1w(ny,nx)-Twx(ny,nx-1)*Pk1w(ny,nx-1)-Hki*Pk1w(ny,nx)+beta !Vector de condiciones iniciales Do i = 1, ny viniy(i) = Po(i,nx) viniy(i+ny) = Pw(i,nx) end do !Calculo de las Pk+1 l=0 ciclojacobi5: Do while(l<100) Do i = 1, 2*ny suma = 0 Do j = 1, 2*ny if (j .NE. i) then suma = suma + (icolumna(i,j)*viniy(j)) end if end dooy(i) = (Vectory(i)-suma)/icolumna(i,i) end do norma = abs(viniy(1)-Pasteriscoy(1)) ! Calculo error Do i = 2, 2*ny if (abs(viniy(i)-Pasteriscoy(i)) > norma) then norma = abs(viniy(i)-Pasteriscoy(i)) end if end do

Page 44: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

43

if (norma < 0.1) exit ciclojacobi5 l = l+1 Viniy = Pasteriscoy end do ciclojacobi5 Do i = 1, ny Pk1o(i,nx) = Pasteriscoy(i) Pk1w(i,nx) = Pasteriscoy(i+ny) end do errorIADIP = Pk1o - Pko maxerror = abs(errorIADIP(1,1)) Do i = 1, ny Do j = 1, nx if (abs(errorIADIP(i,j)) > maxerror) then maxerror = abs(errorIADIP(i,j)) end if end do end do if (maxerror < 0.1) exit cicloIADIP Pko = Pk1o Pkw = pk1w contadorHK = contadorHk + 1 end do cicloIADIP errorPo = Pk1o - Po maxerror = abs(errorPo(1,1)) Do i = 1, ny Do j = 1, nx if (abs(errorPo(i,j)) > maxerror) then maxerror = abs(errorPo(i,j)) end if end do end do if (maxerror < 0.1) exit cicloPo Po = Pk1o end do cicloPo !Calculo de la saturacion al tiempo n+1 !Primer bloque expp = Tox(1,1)*Po(1,2)-(Tox(1,1)+Toy(1,1))*Po(1,1)+Toy(1,1)*Po(2,1) expg = Tox(1,1)*gammaoz(1,2)-(Tox(1,1)+Toy(1,1))*gammaoz(1,1)+Toy(1,1)*gammaoz(2,1) Soc(1,1) = ((((expp-expg-Q(1,1)*fo(1,1))*(deltat/Vp))+(Son(1,1)*(bo(1,1)-bon(1,1))))*(1/bo(1,1))) + Son(1,1) !Bloques internos de la primera columna Do i = 2, ny-1 expp = Toy(i-1,1)*Po(i-1,1)+Tox(i,1)*Po(i,2)+Toy(i,1)*Po(i+1,1)-(Toy(i-1,1)+Tox(i,1)+Toy(i,1))*Po(i,1)

Page 45: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

44

expg = Toy(i-1,1)*gammaoz(i-1,1)+Tox(i,1)*gammaoz(i,2)+Toy(i,1)*gammaoz(i+1,1)-(Toy(i-1,1)+Tox(i,1)+Toy(i,1))*gammaoz(i,1) Soc(i,1) = ((((expp-expg-Q(i,1)*fo(i,1))*(deltat/Vp))+(Son(i,1)*(bo(i,1)-bon(i,1))))*(1/bo(i,1))) + Son(i,1) end do !Ultimo bloque primera columna expp = Tox(ny,1)*Po(ny,2)-(Tox(ny,1)+Toy(ny-1,1))*Po(ny,1)+Toy(ny-1,1)*Po(ny-1,1) expg = Tox(ny,1)*gammaoz(ny,2)-(Tox(ny,1)+Toy(ny-1,1))*gammaoz(ny,1)+Toy(ny-1,1)*gammaoz(ny-1,1) Soc(ny,1) = ((((expp-expg-Q(ny,1)*fo(ny,1))*(deltat/Vp))+(Son(ny,1)*(bo(ny,1)-bon(ny,1))))*(1/bo(ny,1))) + Son(ny,1) !Iteracion para todas las columnas centrales !Primer bloque do k = 2, nx-1 expp = Tox(1,k-1)*Po(1,k-1)+Toy(1,k)*Po(2,k)+Tox(1,k)*Po(1,k+1)-(Tox(1,k-1)+Toy(1,k)+Tox(1,k))*Po(1,k) expg = Tox(1,k-1)*gammaoz(1,k-1)+Toy(1,k)*gammaoz(2,k)+Tox(1,k)*gammaoz(1,k+1)-(Tox(1,k-1)+Toy(1,k)+Tox(1,k))*gammaoz(1,k) Soc(1,k) = ((((expp-expg-Q(1,k)*fo(1,k))*(deltat/Vp))+(Son(1,k)*(bo(1,k)-bon(1,k))))*(1/bo(1,k))) + Son(1,k) !Bloques internos Do i = 2, ny-1 aux10 = Tox(i,k-1)*Po(i,k-1)+Toy(i,k)*Po(i+1,k)+Tox(i,k)*Po(i,k+1)+Toy(i-1,k)*Po(i-1,k) expp = aux10 - (Tox(i,k-1)+Toy(i,k)+Tox(i,k)+Toy(i-1,k))*Po(i,k) aux11 = Tox(i,k-1)*gammaoz(i,k-1)+Toy(i,k)*gammaoz(i+1,k)+Tox(i,k)*gammaoz(i,k+1)+Toy(i-1,k)*gammaoz(i-1,k) expg = aux11 - (Tox(i,k-1)+Toy(i,k)+Tox(i,k)+Toy(i-1,k))*gammaoz(i,k) Soc(i,k) = ((((expp-expg-Q(i,k)*fo(i,k))*(deltat/Vp))+(Son(i,k)*(bo(i,k)-bon(i,k))))*(1/bo(i,k))) + Son(i,k) end do !Ultimo bloque expp = Tox(ny,k-1)*Po(ny,k-1)+Toy(ny-1,k)*Po(ny-1,k)+Tox(ny,k)*Po(ny,k+1)-(Tox(ny,k-1)+Toy(ny-1,k)+Tox(ny,k))*Po(ny,k) aux10 = Tox(ny,k-1)*gammaoz(ny,k-1)+Toy(ny-1,k)*gammaoz(ny-1,k)+Tox(ny,k)*gammaoz(ny,k+1) expg = aux10 -(Tox(ny,k-1)+Toy(ny-1,k)+Tox(ny,k))*gammaoz(ny,k) Soc(ny,k) = ((((expp-expg-Q(ny,k)*fo(ny,k))*(deltat/Vp))+(Son(ny,k)*(bo(ny,k)-bon(ny,k))))*(1/bo(ny,k))) + Son(ny,k) end do !Ultima columna !Primer bloque expp = Tox(1,nx-1)*Po(1,nx-1)+Toy(1,nx)*Po(2,nx)-(Tox(1,nx-1)+Toy(1,nx))*Po(1,nx) expg = Tox(1,nx-1)*gammaoz(1,nx-1)+Toy(1,nx)*gammaoz(2,nx)-(Tox(1,nx-1)+Toy(1,nx))*gammaoz(1,nx) Soc(1,nx) = ((((expp-expg-Q(1,nx)*fo(1,nx))*(deltat/Vp))+(Son(1,nx)*(bo(1,nx)-bon(1,nx))))*(1/bo(1,nx))) + Son(1,nx) !Bloques internos Do i = 2, ny-1 expp = Toy(i-1,nx)*Po(i-1,nx)+Tox(i,nx-1)*Po(i,nx-1)+Toy(i,nx)*Po(i+1,nx)-(Toy(i-1,nx)+Tox(i,nx-1)+Toy(i,nx))*Po(i,nx) aux10 = Toy(i-1,nx)*gammaoz(i-1,nx)+Tox(i,nx-1)*gammaoz(i,nx-1)+Toy(i,nx)*gammaoz(i+1,nx)

Page 46: Simulación de Flujo Lineal 2d Agua-petróleo Mediante Esquema Impis Simultáneo, Por El Método de Solución Iadip

45

expg = aux10 -(Toy(i-1,nx)+Tox(i,nx-1)+Toy(i,nx))*gammaoz(i,nx) Soc(i,nx) = ((((expp-expg-Q(i,nx)*fo(i,nx))*(deltat/Vp))+(Son(i,nx)*(bo(i,nx)-bon(i,nx))))*(1/bo(i,nx))) + Son(i,nx) end do !Ultimo bloque expp = Tox(ny,nx-1)*Po(ny,nx-1)+Toy(ny-1,nx)*Po(ny-1,nx)-(Tox(ny,nx-1)+Toy(ny-1,nx))*Po(ny,nx) expg = Tox(ny,nx-1)*gammaoz(ny,nx-1)+Toy(ny-1,nx)*gammaoz(ny-1,nx)-(Tox(ny,nx-1)+Toy(ny-1,nx))*gammaoz(ny,nx) Soc(ny,nx) = ((((expp-expg-Q(ny,nx)*fo(ny,nx))*(deltat/Vp))+(Son(ny,nx)*(bo(ny,nx)-bon(ny,nx))))*(1/bo(ny,nx))) + Son(ny,nx) !Fin del calculo de la saturacion al tiempo n+1 errorSo = Soc - So maxerror = abs(errorSo(1,1)) Do i = 1, ny Do j = 1, nx if (abs(errorSo(i,j)) > maxerror) then maxerror = abs(errorSo(i,j)) end if end do end do if (maxerror < 0.01) exit cicloSo So = Soc end do cicloSo Son = So Swn = 1-So Pon = Po Pcn = Pc Pwn = Pon + Pcn Bon = Bo Bwn = Bw contador = contador + 1 print *, Po end do ciclo end program