Simulación de Inyección de Agua en Yacimientos
Simulación de Inyección de Agua en Yacimientos
TESIS
QUE PARA OPTAR POR EL GRADO DE:
MAESTRO EN CIENCIAS DE LA TIERRA
P R E S E N T A:
ROBERTO CARLOS M A R T Í N E Z CARRADA
Director de Tesis:
Dr. Luis M. De la Cruz Salas
Instituto de Geofı́sica
DERECHOS RESERVADOS ©
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL
Todo el material contenido en esta tesis esta protegido por la Ley Federal
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México).
El presente trabajo no habrı́a sido posible sin la generosa ayuda de muchas per-
sonas e intituciones. A mi alma máter, la Universidad Nacional Autónoma de México,
al Instituto de Geofı́sica y al Posgrado en Ciencias de la Tierra, ası́ como a su person-
al académico y administrativo que me apoyaron durante mis estudios de posgrado. Al
programa nacional de Becas de Posgrado del CONACyT que disfruté durante dos años.
A mi director de tesis, el Dr. Luis De la Cruz por la paciencia que me tuvo durante
la elaboración de la tesis, sus consejos, observaciones y al tiempo dedicado en las se-
siones de tutorı́a.
A mi jurado de examen de grado: Dr. Ismael Herrera Revilla, Dra. Graciela Herrera
Zamarrón, Dr. Ernesto Rubio Acosta, Dr. Carlos Ortiz Alemán y al Dr. Luis M. De la
Cruz Salas. Sus comentarios y correcciones sobre mi trabajo enriquecieron el contenido
de éste.
Índice General 4
Índice de Figuras 7
Índice de Tablas 9
1 Introducción 15
1.1. Estructura de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Simulación de Yacimientos 19
2.1. Métodos Clásicos en Ingenierı́a de Yacimientos . . . . . . . . . . . . . . 20
2.1.1. Métodos de Balance de Materiales . . . . . . . . . . . . . . . . . 20
2.1.2. Métodos de Curva de Declinación . . . . . . . . . . . . . . . . . 20
2.1.3. Métodos Estadı́sticos . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.4. Métodos Analı́ticos . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. Métodos de Simulación de Yacimientos . . . . . . . . . . . . . . . . . . 21
2.2.1. Etapas de la Simulación . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2. Clasificación de Simuladores de Yacimientos . . . . . . . . . . . 22
2.2.3. Aplicaciones de la Simulación de Yacimientos . . . . . . . . . . 23
2.3. Términos Usados en la Simulación Numérica . . . . . . . . . . . . . . . 24
3 Modelo Conceptual 27
3.1. Formación del Aceite y Gas . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1. Transformación de la Materia Orgánica . . . . . . . . . . . . . . 28
3.2. Sistema Petrolero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3. Propiedades de la Roca y los Fluidos en el Yacimiento . . . . . . . . . . 30
3.3.1. Propiedades de la Roca . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2. Propiedades de los Fluidos . . . . . . . . . . . . . . . . . . . . . 33
3.4. Mojabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4
Índice General
4 Modelos Matemáticos 41
4.1. Formulación Axiomática . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. Forma Conservativa de las Ecuaciones de Balance . . . . . . . . . . . . 42
4.3. Modelo Matemático para Sistemas Multifásicos . . . . . . . . . . . . . 43
4.4. Formulación Presión-Saturación para Flujos Bifásicos . . . . . . . . . . 44
4.5. Método de Lı́neas de Corriente . . . . . . . . . . . . . . . . . . . . . . 45
4.5.1. Conceptos Fundamentales . . . . . . . . . . . . . . . . . . . . . 45
4.5.2. Lı́neas de Corriente . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.5.3. Funciones de Corriente en 2D . . . . . . . . . . . . . . . . . . . 50
4.5.4. Funciones de Corriente y Lı́neas de Corriente en 3D . . . . . . . 51
4.5.5. Lı́neas de Corriente y Tiempo de Vuelo . . . . . . . . . . . . . . 53
[Link]. Tiempo de Vuelo como Coordenada Espacial . . . . . . 55
[Link]. Cálculo del Tiempo de Vuelo y Lı́neas de Corriente en
2D y 3D . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5 Modelo Numérico 61
5.1. Método de Volumen Finito (MVF) . . . . . . . . . . . . . . . . . . . . 61
5.2. Modelo Discreto de Flujo en dos Fases con MVF . . . . . . . . . . . . . 62
5.2.1. Discretización de la Ecuación de Presión . . . . . . . . . . . . . 62
5.2.2. Discretización de la Ecuación de Saturación . . . . . . . . . . . 66
5.2.3. Algoritmo IMPES . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3. Condiciones Iniciales y de Frontera . . . . . . . . . . . . . . . . . . . . 69
5.4. Cálculo de la Saturación en las Caras . . . . . . . . . . . . . . . . . . . 71
5.5. Cálculo del Transporte a lo largo de las Lı́neas de Corriente . . . . . . 71
5.5.1. Discretización de la Ecuación de Saturación 1D . . . . . . . . . 72
7 Conclusiones 93
A Formulación Presión-Saturación 95
A.1. Ecuación de Presión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5
Índice General
Referencias 105
6
Índice de Figuras
7
Índice de Figuras
4.8. Dos superficies de corriente en (a) y en (b) y sus intersecciones en (c) definen
un tubo de corriente. Los bordes del tubo de corriente son lı́neas de corriente. 53
4.9. Bloque de volumen finito para el cálculo del tiempo de vuelo. . . . . . . . 56
4.10. Partı́cula en un esquema de celdas 2D para el cálculo del tiempo de vuelo. 59
4.11. Cálculo del tiempo de vuelo para una sola celda. . . . . . . . . . . . . . . . 59
4.12. Representación del algoritmo de Pollock en 2D. . . . . . . . . . . . . . . . 60
4.13. Lı́nea de corriente en un sistema 3D. . . . . . . . . . . . . . . . . . . . . . 60
6.1. (a) Arquitectura general de TUNAM. (b) Los paquetes FVM y Geom se
muestran de manera esquemática: las letras G, S y A, a la derecha de la
figura, significan Generalization, Specialization y Adaptor, respectivamente. 75
6.2. Medio homogéneo de 300 m de longitud, en un principio saturado de aceite. 76
6.3. Saturación obtenida mediante lı́neas de corriente en rojo y con volumen
finito en verde. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4. Geometrı́a del dominio del caso de cinco pozos. . . . . . . . . . . . . . . . 78
6.5. Evolución del frente de saturación para un medio homogéneo. . . . . . . . 82
6.6. Valores de permeabilidad en el dominio de estudio, de izquierda a derecha:
permeabilidad en dirección x, y y z. . . . . . . . . . . . . . . . . . . . . . . 83
6.7. Evolución del frente de saturación para un medio de permeabilidad variable. 86
6.8. Campo de velocidad para el dominio con permeabilidad variable. . . . . . 89
6.9. Comparación de los métodos MVF y SLS en los mismos dı́as de la simulación. 92
8
Índice de Tablas
9
Abstract
11
Resumen
13
Capı́tulo 1
Introducción
15
1. Introducción
16
1.1. Estructura de la Tesis
Objetivo
Desarrollar herramientas computacionales que implementen el método de lı́neas
de corriente para simular el desplazamiento de aceite por agua en un yacimiento
petrolero y evaluar el desempeño del Método de Lı́neas de Corriente contra los métodos
tradicionales, particularmente, el Método de Volumen Finito.
17
Capı́tulo 2
Simulación de Yacimientos
19
2. Simulación de Yacimientos
20
2.2. Métodos de Simulación de Yacimientos
21
2. Simulación de Yacimientos
discretización numérica. Cada una de estas etapas es esencial para la simulación del
yacimiento, en ocasiones es necesario iterar un determinado número de veces alguna de
las etapas de la simulación a fin de ajustar los modelos fı́sicos, matemáticos, numéricos
y algoritmos computacionales para obtener un pronóstico preciso sobre el rendimiento
del yacimiento.
La creciente aceptación de la simulación de yacimientos puede atribuirse a los avances
en el desarrollo computacional, modelos matemáticos, métodos numéricos, técnicas de
solución y herramientas de visualización cientı́fica.
22
2.2. Métodos de Simulación de Yacimientos
Diseñar el simulador. Una vez que los datos son recogidos y validados, se diseña
el simulador. Este paso implica las cuatro etapas principales interrelacionados
descritas arriba: la construcción de un modelo fı́sico conceptual, el desarrollo
de modelos matemáticos y modelos numéricos ası́ como el diseño de códigos
computacionales.
Validación histórica del simulador. Una ves que el simulador es construido, este
debe ser calibrado con datos disponibles de producción ya que gran parte de los
datos en un simulador tı́pico necesitan ser verificados.
23
2. Simulación de Yacimientos
Malla 2D.- Es una estructura hecha para mirar hacia abajo en el yacimiento.
Para un sistema de coordenadas cartesianas, es una división del yacimiento en
las direcciones x1 − x2 y utilizando pasos espaciales h1 y h2 , figura 2.2.
24
2.3. Términos Usados en la Simulación Numérica
(masa dentro del bloque) - (masa fuera del bloque) = acumulación de masa
dentro del bloque.
Los modelos de simulación de yacimientos se componen básicamente de la
conservación de masa y la ley de Darcy, en relación a la velocidad del fluido a un
25
2. Simulación de Yacimientos
26
Capı́tulo 3
Modelo Conceptual
27
3. Modelo Conceptual
28
3.2. Sistema Petrolero
lı́quidos y termina a los 175◦ C. Entre los 3 y 3.5 km se produce menos aceite y
más gas.
Roca Generadora.- Éste tipo de roca debe ser rica en materia orgánica
y preferentemente de gran espesor, a condiciones adecuadas de presión y
temperatura se forman el aceite y el gas, los cuales se acumulan en la trampa
petrolera.
Roca Almacén.- Éste tipo de roca debe ser porosa, permeable y tener
continuidad lateral y vertical. Las rocas almacenadoras permiten el flujo de fluidos
dentro de ellas debido a la intercomunicación de los poros. Se dice que una roca
tiene una permeabilidad adecuada para permitir el paso de los hidrocarburos si
posee poros interconectados y de tamaño supercapilar.
Roca Sello.- Para que los hidrocarburos puedan quedar confinados en las rocas
almacenadoras, es necesario que las paredes del depósito estén selladas de manera
efectiva. Éste tipo de rocas deben contar con escasa permeabilidad o, por contener
29
3. Modelo Conceptual
Figura 3.2: Trampa tı́pica con sincronı́a de los distintos elementos del Sistema Petrolero.
30
3.3. Propiedades de la Roca y los Fluidos en el Yacimiento
y la porosidad efectiva
V olumen del espacio del poro disponible
φe =
V olumen representativo
en general
φe ≤ φ
La porosidad está en función de la presión debido a la compresibilidad de la roca,
la cual comúnmente se asume constante y presenta valores que oscilan entre 10−6
y los 10−7 psi−1 . La compresibilidad de la roca la expresamos como
1 ∂φ
CR =
φ ∂p
integrando es posible expresar a la porosidad de la siguiente manera
0)
φ = φ0 eCR (p−p
donde φ0 es la porosidad a la presión de referencia p0 , la cual comúnmente es la
atmosférica. Podemos hacer una expansión en series de Tylor y despreciando los
términos de alto orden para una roca ligeramente compresible obtenemos
φ ≈ φ0 1 + CR (p − p0 ) .
31
3. Modelo Conceptual
ρα g
K = krα k .
µα
k11 0 0
k = 0 k22 0
0 0 k33
32
3.3. Propiedades de la Roca y los Fluidos en el Yacimiento
Componente.- Es una especie quı́mica que puede estar contenida en una fase.
Por ejemplo, la fase acuosa (w) contiene componentes agua (H2 O), cloruro de
sodio (NaCl), y oxı́geno disuelto (O2 ), mientras que la fase aceite puede contener
cientos de componentes por ejemplo Nitrógeno, Oxı́geno, Sodio, Azufre, etc.
33
3. Modelo Conceptual
34
3.3. Propiedades de la Roca y los Fluidos en el Yacimiento
WG ρOs
Rso = .
WO ρGs
(WO + WG )ρOs
Bo = .
WO ρo
Densidad del fluido.- La densidad de una fase (agua, aceite o gas) está dada
por
ρs
ρ= .
B
Las fracciones de masa de aceite y gas disuelto en aceite son respectivamente:
WO ρOs
COo = = ,
WO + WG Bo ρo
WO Rso ρGs
CGo = = .
WG + WG Bo ρo
Tomando COo + CGo = 1 obtenemos la densidad de la fase aceite
Rso ρGs + ρOs
ρo = .
Bo
35
3. Modelo Conceptual
3.4. Mojabilidad
El desempeño de un yacimiento se ve afectado por el hecho de que la roca sea
preferencialmente mojable por agua o por aceite, particularmente en las técnicas de
inyección de agua y recuperación mejorada de hidrocarburos. La mojabilidad es la
preferencia de un sólido por estar en contacto con un fluido en lugar de otro. Una gota
de un fluido preferentemente mojante va a desplazar a otro fluido dispersándose por
la superficie, por el contrario un fluido no mojante formará gotas, disminuyendo su
contacto con la superficie del sólido, figura 3.6.
Mojabilidad por agua.- La fase agua es la mojadora y forma una pelı́cula sobre
las paredes del poro aún incluso en aquellos que contienen aceite.
Mojabilidad por aceite.- La fase mojadora es el aceite y forma una capa sobre
la superficie de la roca, aún en los poros que contienen agua.
Mojabilidad intermedia.- Las fases agua y aceite son mojantes hasta cierto
grado en la matriz porosa. El equilibrio de estos casos creará un ángulo de
contacto θ entre los fluidos de la superficie que está determinado por el equilibrio
de fuerzas resultante de la interacción de las tensiones intersticiales.
36
3.5. Procesos de Desplazamiento de Fluidos
Imbibición espontánea.- Este proceso ocurre cuando una fase mojadora invade
un medio poroso en ausencia de fuerzas externas. La fase mojadora invade bajo
la acción de fuerzas superficiales. La figura 3.7 muestra los procesos de drenaje
e imbibición.
Sw + So + Sg = 1
La expresión anterior significa que las tres fases llenan completamente el espacio
poroso. La presión capilar, la permeabilidad relativa entre otras, dependen
fuertemente de la saturación.
37
3. Modelo Conceptual
es mayor que la presión para el lado del fluido mojante (pw ). Esta diferencia de
presiones se define como presión capilar (pc ).
pc = po − pw .
La presión capilar depende de la saturación de la fase mojadora y de la dirección
de cambio de ésta (drenaje o imbibición), figura 3.8. Cabe señalar que la pc
depende también de la tensión superficial σ, la porosidad φ, la permeabilidad k
y el ángulo θ de contacto con la superficie de la roca de la fase mojadora, el cual
depende a su vez de la temperatura y de la composición del fluido. En un flujo
de tres fases, se requieren de dos presiones capilares, a saber:
pcow = po − pw , pcgo = pg − po ,
es posible obtener una tercera expresión de presión capilar haciendo
pcgw = pg − pw = pcow + pcgo .
Permeabilidad relativa.- Denotada por krα , mide la habilidad de una fase para
fluir en una formación porosa y en presencia de otras fases, pues la presencia de
más de una fase en un sistema inhibe el flujo.
38
3.7. Etapas de la Recuperación de Hidrocarburos
λ = λw + λo + λg .
39
3. Modelo Conceptual
40
Capı́tulo 4
Modelos Matemáticos
41
4. Modelos Matemáticos
La ecuación (4.1) se satisface para cada cuerpo B(t) de un sistema. Aplicando varios
resultados matemáticos a la ecuación (4.1) se obtiene:
Z Z Z
∂ψ
+ ∇ · (vψ) dx = q dx + ∇ · τ dx. (4.2)
∂t
B(t) B(t) B(t)
La expresión anterior trae como consecuencia que podamos escribir una ecuación
diferencial de balance local para la propiedad extensiva ψ,
∂ψ
+ ∇ · (vψ) = q + ∇ · τ . (4.3)
∂t
42
4.3. Modelo Matemático para Sistemas Multifásicos
43
4. Modelos Matemáticos
dpc
−∇ · (kλ∇po ) + ∇ · kλw ∇Sw + ∇ · (k(λw ρw + λo ρo )g) = Qw + Qo . (4.14)
dSw
A fin de obtener una ecuación de saturación para la fase agua, partimos de la
ecuación (A.9) y tomando en cuenta las suposiciones al inicio de esta sección, obtenemos
44
4.5. Método de Lı́neas de Corriente
∂Sw
φ + ∇ · uw = Qw . (4.15)
∂t
Sustituimos ahora en la ecuación (4.15) la Ley de Darcy para la fase acuosa, la
ecuación pc = pcow = po − pw con el objeto de eliminar pw y la relación (4.13), de modo
que ahora llegamos a:
∂Sw dpc
φ − ∇ · (kλw ∇po ) + ∇ · kλw ∇Sw + ∇ · (kλw ρw g) = Qw . (4.16)
∂t dSw
45
4. Modelos Matemáticos
46
4.5. Método de Lı́neas de Corriente
47
4. Modelos Matemáticos
dy vy (x, y, z, t0 ) dz vz (x, y, z, t0 )
= , = . (4.17)
dx vx (x, y, z, t0 ) dx vx (x, y, z, t0 )
Estas ecuaciones diferenciales pueden ser integradas analı́tica o numéricamente
desde un punto (x0 , y0 , z0 ) y resolver para y(x) y z(x) a fin de determinar las lı́neas
de corriente que corren a través del punto de partida. Alternativamente, es posible
expresar estas mismas ecuaciones en su forma paramétrica:
48
4.5. Método de Lı́neas de Corriente
dx dy dz
dt = = = , (4.18)
vx (x, y, z, t0 ) vy (x, y, z, t0 ) vz (x, y, z, t0 )
y determinar x(t), y(t) y z(t).
La ecuación de una trayectoria fı́sica (pathline) es muy similar, excepto que el campo
de velocidad puede ser independiente del tiempo.
dx dy dz
dt = = = . (4.19)
vx (x, y, z, t) vy (x, y, z, t) vz (x, y, z, t)
Esta diferencia nos recuerda que una lı́nea de corriente es definida como una linea en
el espacio obtenida trazando el campo de velocidad instantáneo. Es importante recalcar
algunos aspectos, es posible definir lı́neas de corriente para cualquier velocidad, y si
la velocidad en la ecuación (4.17) varı́a con el tiempo, entonces las lı́neas de corriente
cambiarán con el tiempo. Para las condiciones de estado no estacionario, se emplean
campos de velocidad instantánea para un tiempo de interés. A menudo, se aproximan
problemas de estado no-estacionario como series de campos de velocidad de estado
estacionario. Para definir lı́neas de corriente, la permeabilidad del medio puede ser
homogénea o heterogénea, isótropo o anisótropo y los fluidos pueden ser compresibles
o incompresibles.
Existe una relación entre el potencial y las lı́neas de corriente que se obtiene a partir
de la Ley de Darcy de una fase:
1
u = − k · ∇Φ, (4.20)
µ
donde Φ denota el potencial del fluido, para nuestro caso en particular se trata de
la presión. Matemáticamente, dr × u = 0. Para un medio poroso isótropo, donde el
tensor de la permeabilidad es un escalar, tenemos que:
dr × ∇Φ = 0.
49
4. Modelos Matemáticos
Por lo tanto, los contornos del potencial son ortogonales a las lı́neas de corriente para
un medio isótropo.
∇ · u = qt , (4.22)
∇ · (−λ∇P ) = qt . (4.23)
Para flujos incompresibles, no hay una dependencia temporal explı́cita en la
ecuación (4.22) ya que u es una velocidad instantánea. A medida que qt varı́a, o se
produzcan cambios en la saturación que provoquen que los coeficientes en la ecuación
(4.23) cambien, u también cambia, de otra manera, permanece fija.
Consideremos ahora la velocidad total lejos de fuentes y sumideros, es decir, qt = 0.
Para fluidos en dos dimensiones, la ecuación (4.22) la resolvemos si representamos la
velocidad en términos de la función de corriente de Lagrange ψ(x, y).
∂ψ ∂ψ
ux = , uy = . (4.24)
∂y ∂x
Si la velocidad u es conocida, puede ser expresada como una integral para ψ(x, y) :
Z Z Z
∂ψ ∂ψ
ψ(x, y) − ψ0 = dψ = dx + dy = (ux dy − uy dx). (4.25)
∂x ∂y
0 0 0
La diferencia ψ(x, y) − ψ0 es el flujo total que fluye a través de una lı́nea arbitraria
trazada desde (x, y) a un punto inicial. Por ejemplo, en la figura 4.7 observamos una
trayectoria que va de 0 a A y de A a (x, y). La primera porción de la trayectoria es
a lo largo de una lı́nea de corriente donde uy = 0. De la ecuación (4.25), ningún flujo
cruza la lı́nea. Para la segunda porción de la trayectoria, ∂ψ/∂y = ux > 0, la función
de corriente incrementa. En otras palabras, ψ es una coordenada de flujo. La diferencia
entre dos valores de la función de corriente es igual a la tasa de flujo volumétrico entre
50
4.5. Método de Lı́neas de Corriente
las dos lı́neas de corriente definida por estos valores. Esto define un tubo de corriente
en 2D. De la ecuación (4.24) podemos observar que las unidades para ψ son de flujo
volumétrico por unidad de espesor.
o en su forma diferencial:
∂ ∂P ∂ ∂P ∂ 1 ∂ψ ∂ 1 ∂ψ
0=− + = + = ∇ · (λ−1 ∇ψ). (4.26)
∂x ∂y ∂y ∂x ∂x λ ∂x ∂y λ ∂y
Esta es la ecuación diferencial para la función de corriente. A diferencia de
la solución en lı́neas de fuentes y sumideros, no está limitada a medios porosos
homogéneos, pues la movilidad total (λ) puede depender de la posición.
51
4. Modelos Matemáticos
ρu = ∇ψ × ∇χ. (4.27)
Las funciones ψ y χ son conocidas como bifunciones de corriente. La “porosidad
efectiva”ρ es importante en la descripción de los fluidos compresibles. Por el momento
ρ = 1, hasta que se trate a fondo la compresibilidad más adelante.
u = ∇ψ × ∇χ. (4.28)
Las bifunciones de corriente tienen muchas de las ventajas de las funciones de
corriente en dos dimensiones. Del cálculo vectorial llegamos a que ∇ · (∇ψ × ∇χ) = 0.
Es importante hacer notar que cualquier velocidad que se puede expresar de acuerdo
a la ecuación (4.28), debe ser incompresible, esto es, que satisfaga:
∇ · u = 0. (4.29)
El campo de velocidad obtenido de las ecuaciones (4.27) o (4.28) tiene una inter-
pretación geométrica. Tanto ψ como χ son funciones en el espacio. Consideremos ahora
las superficies definidas por ψ = constante y por χ = constante, la intersección de am-
bos planos define una lı́nea, que es la lı́nea de corriente trazada por la velocidad u.
Es posible obtener diferentes lı́neas de corriente seleccionando diferentes valores con-
stantes para ψ y χ. En la figura 4.8, se muestran dos superficies definidas por ψ y
otras dos por χ, las cuatro juntas definen un tubo en el espacio, con lı́neas de corriente
a lo largo de sus bordes.
Las trayectorias de las partı́culas nunca cruzan las superficies de corriente; el flujo total
que entra al tubo de corriente permanece en él.
Esto muestra que la rapidez |u| variará inversamente a la sección transversal del
área del tubo |δa|. La relación inversa entre el área y la velocidad es fundamental en
el modelado con tubos de corriente. Dicha ecuación también demuestra la relación
52
4.5. Método de Lı́neas de Corriente
Figura 4.8: Dos superficies de corriente en (a) y en (b) y sus intersecciones en (c)
definen un tubo de corriente. Los bordes del tubo de corriente son lı́neas de corriente.
53
4. Modelos Matemáticos
u · ∇τ = φ, (4.32)
o de otra forma,
u ∆ξ
= . (4.33)
φ ∆τ
Aunque el tiempo de vuelo se mide en unidades de tiempo, por ejemplo dı́as, se
usará como una coordenada espacial.
Ahora veamos la transformación espacial del dominio (x, y, z) a (τ, ψ, χ). El
Jacobiano de la transformación relaciona los elementos de volumen en ambos espacios
coordenados,
∂(τ, ψ, χ)
= |(∇ψ × ∇χ) · ∇τ | = |u · ∇τ | = φ, (4.34)
∂(x, y, z)
en términos de volumen tenemos que:
φ dx dy dz = dτ dψ dχ. (4.35)
Una unidad de volumen en las coordenadas de tiempo de vuelo corresponde a
una unidad de volumen de poro en el espacio fı́sico. La ecuación (4.35) muestra un
importante vı́nculo entre la discretización espacial en diferencias finitas y la simulación
con lı́neas de corriente.
Los gradientes espaciales a lo largo de lı́neas de corriente también tienen una forma
muy simple en las coordenadas de tiempo de vuelo. Usando las coordenadas (τ, ψ, χ),
el operador gradiente se expresa ahora como:
∂ ∂ ∂
∇ = (∇τ ) + (∇ψ) + (∇χ) . (4.36)
∂τ ∂ψ ∂χ
54
4.5. Método de Lı́neas de Corriente
∂
u·∇=φ . (4.37)
∂τ
La ecuación (4.37) representa una relación importante en la simulación con lı́neas de
corriente, ya que servirá para transformar ecuaciones del espacio fı́sico a coordenadas
de tiempo de vuelo de lı́neas de corriente.
∂Sw
φ + ∇ · (Fw ut ) = 0.
∂t
En la ecuación anterior se han despreciado por ahora los efectos de la aceleración
gravitacional y la capilaridad. Fw representa el flujo fraccional y lo denotamos como
Fw = λw /λ. Usando las ecuaciones (4.29) y (4.37) tenemos que:
∂Fw
∇ · (Fw ut ) = ut · ∇Fw = φ .
∂τ
Nótese el uso del operador identidad de la ecuación (4.29) para transformar del
espacio fı́sico a coordenadas de tiempo de vuelo, por lo tanto;
∂Sw ∂Fw
+ = 0. (4.38)
∂t ∂τ
Esta transformación de coordenadas descompone el flujo del fluido tridimensional
en series de ecuaciones 1D para la saturación a lo largo de las lı́neas de corriente. Esta
ecuación es válida para una, dos y tres dimensiones, ası́ como para medios homogéneos
y heterogéneos. Lo que se requiere para la implementación es el campo de velocidad y
el cálculo de la integral de lı́nea en la ecuación (4.31).
55
4. Modelos Matemáticos
Figura 4.9: Bloque de volumen finito para el cálculo del tiempo de vuelo.
ux = ux1 + cx (x − x1 ),
uy = uy1 + cy (y − y1 ), (4.39)
uz = uz1 + cz (z − z1 ),
donde los coeficientes dependen de la diferencia de las velocidades de Darcy en las
caras del volumen,
56
4.5. Método de Lı́neas de Corriente
3
X
∇·u= cj = cx + cy + cz . (4.41)
j=1
Zx1
∆τxi dx 1 uxi
= = ln ,
φ ux0 + cx (x − x0 ) cx ux0
x0
Zy1
∆τyi dy 1 uyi
= = ln , (4.43)
φ uy0 + cy (y − y0 ) cy uy0
y0
Zz1
∆τzi dz 1 uzi
= = ln .
φ uz0 + cz (z − z0 ) cz uz0
z0
57
4. Modelos Matemáticos
ecx ∆τ /φ − 1
x = x0 + ux0 = x0 + ux0 · ηx ,
cx
cy ∆τ /φ
e −1
y = y0 + uy0 = y0 + uy0 · ηy , (4.45)
cy
cz ∆τ /φ
e −1
z = z0 + uz0 = z0 + uz0 · ηz .
cz
1 ux x − x0
ln → , (4.46)
cx ux0 ux0
cx ∆τ /φ
e −1 ∆τ
ηx = → , (4.47)
cx φ
x = x0 + ux0 ∆τ /φ. (4.48)
Una vez descrito el algoritmo para el tiempo de vuelo, se ilustrará con un ejemplo
simple en 2D, figura 4.10. Supongamos una partı́cula p situada en el punto (xp , yp ) en
un tiempo t que entra a una celda (i, j) en el plano (x, y). El primer paso es calcular
el tiempo de vuelo de acuerdo a la ecuación (4.44). De acuerdo con la figura 4.11,
el tiempo en en las caras y1 y x2 estará dado por la intersección de la trayectoria con
la extension de dichas caras de las celdas (en lı́neas punteadas). Para y1 el tiempo
será negativo, basándonos en la dirección del flujo. El tiempo para la cara x1 es cero
porque es ahı́ donde la partı́cula entra en la celda. Por lo tanto, el tiempo de vuelo
mı́nimo será en la cara y2 , que es la cara de salida de la partı́cula, una vez conocido el
tiempo de vuelo, podemos calcular la coordenada de salida usando (4.46).
El tiempo al cual la partı́cula abandona la celda está dado por t = tp + ∆τ . Esta
secuencia de cálculos se repite y los tiempos de tránsito serán acumulados a lo largo de
58
4.5. Método de Lı́neas de Corriente
Figura 4.10: Partı́cula en un esquema de celdas 2D para el cálculo del tiempo de vuelo.
Figura 4.11: Cálculo del tiempo de vuelo para una sola celda.
59
4. Modelos Matemáticos
Este es el algoritmo usado para calcular el tiempo de vuelo hacia un pozo productor
para un punto arbitrario dentro del dominio. Para calcular el tiempo de vuelo al pozo
inyector, se utiliza el mismo enfoque, excepto que ahora se hace el seguimiento de la
partı́cula hacia atrás, es decir, para τ negativa.
60
Capı́tulo 5
Modelo Numérico
61
5. Modelo Numérico
Figura 5.1: Volumen de control en tres dimensiones. Las letras mayúsculas representan
los centros de los volúmenes de control, mientras que las minúsculas las caras de dichos
volúmenes.
dpc
F = −kλ∇p + kλw ∇S. (5.1)
dS
con k11 6= k22 6= k33 , ası́ pues, las componentes de la función de flujo son:
62
5.2. Modelo Discreto de Flujo en dos Fases con MVF
∂p dpc ∂S
Fx = −k11 λ − λw ,
∂x dS ∂x
∂p dpc ∂S
Fy = −k22 λ − λw ,
∂y dS ∂y
∂p dpc ∂S
Fz = −k33 λ − λw .
∂z dS ∂z
Zf Zn Ze
∂Fx
dx dy dz = ((Fx )e − (Fx )w )Ax , (5.4)
∂x
b s w
((Fx )e − (Fx )w ) Ax + ((Fy )n − (Fy )s )Ay + ((Fz )f − (Fz )b )Az = (Q̄w + Q̄o )∆V, (5.5)
63
5. Modelo Numérico
∂p dpc ∂S
(Fx )e = −k11 λ − λw ,
∂x dS ∂x e
∂p dpc ∂S
= k11 (−λ)e + λw ,
∂x e dS e ∂x e
pE − pP dpc SE − SP
= k11 (−λ)e + λw ,
∆xe dS e ∆xe
donde las derivadas parciales son aproximadas a través del método de diferencias
finitas centrales y los subı́ndices E y P indican que la variable se evalúa en el centro
del volumen de control correspondiente. Cuando evaluamos Fx en la cara w se hace
de forma similar, por lo que el primer término de la ecuación (5.5) quedarı́a expresado
por,
donde
pE − pP dpc SE − SP
c = k11 (−λ)e + λw ,
∆xe dS e ∆xe
p P − pW dpc SP − SW
v = k11 (−λ)w + λw ,
∆xw dS w ∆xw
aP p P = aE p E + aW p W + aN p N + aS p S + aF p F + aB p B + q P , (5.6)
64
5.2. Modelo Discreto de Flujo en dos Fases con MVF
k11 (λ)e Ax
aE = ≡ TE ,
∆xe
k11 (λ)w Ax
aW = ≡ TW ,
∆xw
k22 (λ)n Ay
aN = ≡ TN ,
∆yn
k22 (λ)s Ay
aS = ≡ TS , (5.7)
∆ys
k33 (λ)f Az
aF = ≡ TF ,
∆zf
k33 (λ)b Az
aB = ≡ TB ,
∆zb
donde:
a P = a E + a W + a N + a S + a F + a B ≡ TP ; (5.8)
!
dpc dpc dpc dpc dpc dpc
qP = Te + Tw + Tn + Ts + Tf + Tb SP −
dSe dS w dS n dS s dS f dS b
dpc dpc dpc dpc
Te SE + Tw SW + Tn SN + Ts SS +
dS e dS w dS n dS s
!
dpc dpc
Tf SF + Tb SB + (Q̄w + Q̄o )∆V ; (5.9)
dS f dS b
k11 (λw )e Ax
Te = ,
∆xe
k11 (λw )w Ax
Tw = ,
∆xw
k22 (λw )n Ay
Tn = , (5.10)
∆yn
k22 (λw )s Ay
Ts = ,
∆ys
k33 (λw )f Az
Tf = ,
∆zf
k33 (λw )b Az
Tb = .
∆zb
65
5. Modelo Numérico
dpc
F = −kλw ∇P + kλw ∇S. (5.11)
dS
A diferencia de la ecuación (5.1), en el primer término del lado derecho aparece la
movilidad del agua λw en lugar de la movilidad total λ. La obtención de las componentes
Fx , Fy y Fz es similar a como se hizo para la ecuación de presión. Tomando la definición
(5.11), la ecuación de la saturación (4.16) la escribimos como:
66
5.2. Modelo Discreto de Flujo en dos Fases con MVF
Las derivadas con dependencia temporal se tratan, en el MVF, haciendo una integral
de toda la expresión en el intervalo [t, t + ∆t]. Ası́ pues, integramos la ecuación (5.13)
en dicho intervalo, obteniendo:
n+1 Z
Z
∂S ∂Fx ∂Fy ∂Fz
φ + + + − Qw dV dt = 0. (5.14)
∂t ∂x ∂y ∂z
n ∆V
n+1 Z
Z n+1
Z
(∇·F −Qw )dV dt = bP pP −(bE pE +bW pW +bN pN +bS pS +bF pF +bB pB +qP ) dt,
n ∆V n
(5.17)
donde los coeficientes b son similares a los coeficientes a de la ecuación (5.6), sólo
que en esta ocasión usamos la movilidad del agua λw en sustitución de la movilidad
total λ, incluso el término qP es similar al mostrado en la ecuación (5.9), exceptuando
67
5. Modelo Numérico
n+1 Z
Z
n n n n n n n n n n n n n n n
(∇·F −qw )dV dt = bP pP −(bE pE +bW pW +bN pN +bS pS +bF pF +bB pB +qP ) ∆t.
n ∆V
(5.18)
Sustituyendo (5.16) y (5.18) en (5.14) y reordenando términos obtenemos la relación
explı́cita para la saturación:
∆t
SPn+1 = SPn − n n n n n n n n n n n n n n n
bP pP −(bE pE +bW pW +bN pN +bS pS +bF pF +bB pB +qP ) , (5.19)
φ∆V
de modo que los coeficientes quedan expresados como:
n n n n
∆t n dpc dpc dpc n dpc
q = bnE + bWn n
+ bN + bS +
φ∆V P dS e dS w dS n dS s
n n
n dpc n dpc
bF + bB SPn −
dS f dS b
n n n n
n dpc n n dpc n n dpc n n dpc
bE SE + bW S W + bN SN + bS SSn +
dS e dS w dS n dS s
n n !
Q̄n
dpc dpc
bnF SFn + bnB SBn + w . (5.22)
dS f dS b φ
68
5.3. Condiciones Iniciales y de Frontera
Algoritmo 1 IMPES
1: Definir condiciones iniciales y de frontera del problema S 0 , p0 , Tmax , ∆t, ∆x, ∆y, ∆z.
2: while t < Tmax do
3: calcular los coeficientes de la ecuación de presión usando (5.8), (5.9) y (5.11).
Dichos coeficientes se calculan usando valores de la saturación del paso anterior.
4: Resolver la ecuación de presión (5.6) de manera explı́cita usando un método
iterativo.
5: Calcular los coeficientes de la ecuación de saturación usando (5.21) y (5.22).
6: Resolver la ecuación de saturación (5.19) de manera explı́cita.
7: t ← t + ∆t
8: end while
Presión Saturación
Condiciones iniciales p(t0 ) = 1e + 07 Pa S(t0 ) = 0
Tabla 5.1: Condiciones iniciales para la presión y la saturación.
69
5. Modelo Numérico
σ
krw = Sef , kro = (1 − Sef )σ . (5.24)
El exponente σ vale 1 en el caso lineal y 2 para el caso cuadrático. Las saturaciones
residuales del agua y del aceite son Srw y Sro respectivamente. Para evaluar los
coeficientes definidos en (5.8) determinamos el valor de λ en las caras nb=e,w,n,s,f,b
del volumen de control. Hacemos uso de las relaciones (5.23) y (5.24), la movilidad
total (λ) se define como la suma de las movilidades de cada fase:
λ = λw + λo ,
o bien
krw kro
λ= + , (5.25)
µw µo
sustituyendo el valor de las permeabilidades relativas en función de la saturación
efectiva tenemos que:
σ
Sef (1 − Sef )σ
λ= + .
µw µo
Haciendo las respectivas sustituciones y reduciendo términos obtenemos:
70
5.4. Cálculo de la Saturación en las Caras
n
σ
1 Snb − Srw
(λw )nnb = . (5.29)
µw 1 − Srw − Sro
Upwind.- Se comparan los valores de presión en los puntos vecinos a la cara del
volumen de control donde se desea evaluar la saturación S n tomándose el valor
de la saturación del punto donde la presión es mayor.
Esta es una aproximación lineal donde se asumen conocidos los valores de presión
para el instante n. Produce dispersión numérica, aunque se trata de un esquema estable,
por lo que es recomendable usar un número considerablemente grande de volúmenes
de control.
71
5. Modelo Numérico
n+1
Z Z Z
∂Sw
dτ dt = (S n+1 − S n )dτ,
∂t
∆τ n ∆τ
= (Spn+1 − Spn )∆τ.
=⇒ Discretización de 2:
n+1Ze
Z n+1
Z
∂Fw
dtdτ = [(Fw )e − (Fw )w ] dt,
∂τ
n w n
= [(Fw )ne − (Fw )nw ]∆t.
Reacomodando términos:
∆t
Spn+1 = Spn − [(Fw )ne − (Fw )nw ] . (5.31)
∆τ
Finalmente, empleando la relación (5.30) obtenemos la ecuación discreta de la
saturación sobre las lı́neas de corriente:
n n
n+1 n λw λw ∆t
Sp = Sp − − . (5.32)
λ e λ w ∆τ
En el capı́tulo siguiente abordaremos la codificación para la solución computacional
de la ecuación anterior y, en general, de las ecuaciones discretas de presión y saturación.
72
Capı́tulo 6
Modelo Computacional y
Resultados Numéricos
73
6. Modelo Computacional y Resultados Numéricos
Generalizaciones :
GeneralMesh<> : Representa cualquier tipo de malla, por ejemplo la figura 5.1.
GeneralEquation<> : Representa la ecuación general discretizada, por ejemplo
ecuación (5.6), junto con sus respectivos coeficientes.
GeneralMatrix<> : Representa una matriz en general.
Especializaciones :
StructuredMesh<> : Representa mallas estructuradas como que se muestra en
la figura 5.1.
TwoPhaseEquation<> : Son ecuaciones diferenciales particulares para flujo
bifásico.
SparseMatrix<> : Representa matrices ralas o dispersas, [41, 46].
Adaptadores :
Uniform, NonUniform<> : Definen mallas uniformes y no uniformes en dominios
rectangulares.
CDS, Upwind, Quick<> : Definen los esquemas numéricos apropiados que se
emplearán en el cálculos de los coeficientes de volumen finito.
Diagonal<> : Define matrices ralas en formato diagonal.
74
6.2. Implementación
(a)
(b)
Figura 6.1: (a) Arquitectura general de TUNAM. (b) Los paquetes FVM y Geom
se muestran de manera esquemática: las letras G, S y A, a la derecha de la figura,
significan Generalization, Specialization y Adaptor, respectivamente.
6.2. Implementación
6.2.1. Calibración 1D con el modelo de Buckley- Leverett
Las primeras pruebas para calibrar el método de lineas de corriente se harán sobre
un modelo 1D de Buckley- Leverett, el cual describe el desplazamiento de aceite por
agua en un dominio horizontal como el que se muestra en la figura 6.2. Se han
contemplado las siguientes suposiciones:
75
6. Modelo Computacional y Resultados Numéricos
−∇ · (kλ∇p) = 0, (6.1)
∂S
φ − ∇ · (kλw ∇p) = 0, (6.2)
∂t
para po = p y Sw = S.
A continuación se muestran los modelos discretos 1D de Buckley-Leverett, (6.3) y
lı́neas de corriente, (6.4) para el cálculo de la saturación, ambas discretizaciones son en
volumen finito.
76
6.2. Implementación
Presión Saturación
Condiciones iniciales p(t0 ) = 1e + 07 Pa S(t0 ) = 0
(S in )A = 0.8
(gpin )A = 3.4722e − 07 m/s
Condiciones de frontera
(S out )B = 0
(pout )B = 1e + 07 Pa
Tabla 6.1: Condiciones iniciales y de frontera para la presión y la saturación.
Las condiciones de frontera para la saturación son de tipo Dirichlet, mientras que
para la presión, tenemos condiciones tipo Dirichlet a la salida y una condición tipo
Neumann a la entrada dada en términos de la velocidad de inyección.
En este ejemplo se ha puesto una lı́nea de corriente que parte del extremo izquierdo,
donde inicia la inyección, y termina en el extremo derecho, coincidente en sus puntos
con los centros de los volúmenes de control, lo que nos permite hacer una comparación
puntual entre ambos métodos. La figura 6.3 muestra una comparación de la solución
para la ecuación de saturación 1D con MVF en verde y SLS en rojo. Nótese que
la solución es muy similar, por lo que ambos métodos resuelven adecuadamente la
ecuación de transporte.
Figura 6.3: Saturación obtenida mediante lı́neas de corriente en rojo y con volumen
finito en verde.
77
6. Modelo Computacional y Resultados Numéricos
el valor obtenido para las curvas de la figura anterior es de 387.59e−6, lo que refleja
que la solución a la ecuación de transporte mediante lı́neas de corriente es una buena
aproximación en una simulación de este tipo.
78
6.2. Implementación
lo anterior define el tipo ScalarField3D como una clase para construir arreglos
tridimensionales de doble precisión. Enseguida, se define la malla para el problema, se
hace como se muestra a continuación:
2 StructuredMesh<Uniform<double , 3> > mesh ( l e n g t h x , num nodes x ,
3 l e n g t h y , num nodes y ,
4 l e n g t h z , num nodes z ) ;
5 double dx = mesh . g e t D e l t a (X) ;
6 double dy = mesh . g e t D e l t a (Y) ;
7 double dz = mesh . g e t D e l t a ( Z ) ;
8 mesh . p r i n t ( ) ;
El código anterior define una malla estructurada 3D, uniforme y de precisión doble.
El objeto mesh es construido a partir de los argumentos de entrada length x, length y,
length z los cuales representan las longitudes del dominio en las direcciones x, y y z,
los parámetros num nodes x, num nodes y y num nodes z el número de nodos en cada
dirección. Los datos son definidos por el usuario. El objeto mesh nos puede proporcionar
información de la malla. En las lı́neas 5, 6 y 7 obtenemos el tamaño de la malla en
las direcciones x, y y z. Dicho objeto también realiza acciones como la impresión a
salida estándar en la lı́nea 8. Es posible obtener información de la malla en términos
de los nodos y de los volúmenes de control, resulta de utilidad para crear arreglos que
almacenarán la solución del problema y otros que sean definidos sobre la malla. La
siguiente fracción del código implementa estas caracterı́sticas y define las condiciones
iniciales:
9 ScalarField3D p ( mesh . getExtentVolumes ( ) );
10 S c a l a r F i e l d 3 D Sw ( mesh . getExtentVolumes ( ) );
11 S c a l a r F i e l d 3 D p n ( mesh . g e t E x t e n t N o d e s ( ) );
12 S c a l a r F i e l d 3 D Sw n ( mesh . g e t E x t e n t N o d e s ( ) );
13 S c a l a r F i e l d 3 D u1 ( mesh . getExtentVolumes ( ) );
14 S c a l a r F i e l d 3 D u2 ( mesh . getExtentVolumes ( ) );
15 S c a l a r F i e l d 3 D u3 ( mesh . getExtentVolumes ( ) );
16 Sw = 0 ; // I n i t i a l c o n d i t i o n
17 p = p r e s o u t ; // I n i t i a l c o n d i t i o n
18 Range a l l = Range : : a l l ( ) ;
19 NumUtils : : i n t e r p o l a t e T o N o d e s ( p n , p ) ;
79
6. Modelo Computacional y Resultados Numéricos
20 InOut : : w r i t e T o F i l e D X ( p n , 0 , ” . / DataFS3D/ p r e s . ” , dx , dy , dz ) ;
21 NumUtils : : i n t e r p o l a t e T o N o d e s ( Sw n , Sw) ;
22 InOut : : w r i t e T o F i l e D X ( Sw n , 0 , ” . / DataFS3D/ s a t u . ” , dx , dy , dz ) ;
80
6.2. Implementación
Las lı́neas 59-67 implementan el algoritmo IMPES. En el ciclo del código anterior,
se hacen iteraciones desde t=0 hasta Tmax con incrementos de paso de tiempo
dt. La función calcCoefficients llena la matriz A y el vector b, mientras que
Solver::TDMA3D es una función que implementa el algoritmo descrito en el apéndice
B para resolver sistemas lineales. En la lı́nea 62 se actualiza la presión. De manera
análoga, se calculan los coeficientes de la ecuación discreta de la saturación en la
lı́nea 63 y se actualiza el valor de la saturación en la lı́nea 65. Nótese que la presión
se resuelve de manera implı́cita (lı́nea 61) mientras que la saturación es resuelta de
manera explı́cita mediante la función Solver::solExplicit3D (lı́nea 64). La figura
6.5 muestra un cuarto del dominio de estudio y la evolución del frente de saturación
del agua. La simulación se llevó a cabo para un tiempo de 1000 dı́as con incrementos
de 1 hora.
81
6. Modelo Computacional y Resultados Numéricos
82
6.2. Implementación
83
6. Modelo Computacional y Resultados Numéricos
Concluidas las adaptaciones al código para llevar a cabo el cálculo de los coeficientes
3D de las ecuaciones de presión y saturación, implementamos el cálculo de la
permeabilidad variable en el dominio de estudio como se muestra en la siguiente fracción
de código:
1 S c a l a r F i e l d 3 D k 1 1 ( mesh . g e t E x t e n t N o d e s ( ) ) ; // v a l o r e s de p e r m e a b i l i d a d
2 S c a l a r F i e l d 3 D k 2 2 ( mesh . g e t E x t e n t N o d e s ( ) ) ; // v a l o r e s de p e r m e a b i l i d a d
3 S c a l a r F i e l d 3 D k 3 3 ( mesh . g e t E x t e n t N o d e s ( ) ) ; // v a l o r e s de p e r m e a b i l i d a d
4 double xmin = num nodes x / 3 ;
5 double xmax = 2 ∗ num nodes x / 3 ;
6 double ymin = num nodes y / 3 ;
7 double ymax = 2∗ num nodes y / 3 ;
8 double zmin = 0 ;
9 double zmax = num nodes z ;
10 f o r ( i n t i = 0 ; i < num nodes x ; i++ ) {
11 f o r ( i n t j = 0 ; j < num nodes y ; j ++){
12 f o r ( i n t k = 0 ; k < num nodes z ; k++){
13 i f ( i < num nodes x / 2 ) { s r a n d ( i ∗ 2 ) ; }
14 else srand ( i ∗2) ;
15 k 1 1 ( i , j , k ) = p e r m e a b i l i t y ∗ rand ( ) ;
16 i f ( i >= num nodes x / 2 ) { s r a n d ( j ∗ 3 ) ; }
17 else srand ( j ∗3) ;
18 k 1 1 ( i , j , k ) = p e r m e a b i l i t y ∗ rand ( ) ;
19 i f ( j < num nodes y / 2 ) { s r a n d ( i +3) ; }
20 e l s e s r a n d ( i +3) ;
21 k 2 2 ( i , j , k ) = p e r m e a b i l i t y ∗ rand ( ) ;
22 i f ( j >= num nodes y / 2 ) { s r a n d ( j ∗ 2 ) ; }
84
6.2. Implementación
85
6. Modelo Computacional y Resultados Numéricos
Figura 6.7: Evolución del frente de saturación para un medio de permeabilidad variable.
La imagen anterior nos muestra un frente de saturación, que a diferencia del caso
anterior, ya no evoluciona de manera geométrica, esto es por la heterogeneidad del
medio al introducir una permeabilidad aleatoria en el dominio de estudio. Dado que
el agua encuentra más difı́cil su recorrido por el domino, observamos que los dı́as de
86
6.2. Implementación
simulación son más, del orden de 4800 dı́as, a diferencia de los mil del caso anterior,
para llegar al pozo extractor. Nótese que el cuerpo de baja permeabilidad impacta
directamente sobre el frente de saturación, el agua se ve obligada a rodear el cuerpo y
muy poca penetra en él.
La malla sigue siendo del mismo número de nodos, el dominio tiene 80 nodos en
las direcciones x y y y 4 en la dirección z.
13 ScalarField3D p ( mesh . getExtentVolumes ( ) ) ;
14 ScalarField3D p n ( mesh . g e t E x t e n t N o d e s ( ) );
15 ScalarField3D u1 ( num nodes x , num vols y , n u m v o l s z ) ;
16 ScalarField3D u2 ( num vols x , num nodes y , n u m v o l s z ) ;
17 ScalarField3D u3 ( num vols x , num vols y , num nodes z ) ;
18 ScalarField3D u1 n ( mesh . g e t E x t e n t N o d e s ( ) );
19 ScalarField3D u2 n ( mesh . g e t E x t e n t N o d e s ( ) );
20 ScalarField3D u3 n ( mesh . g e t E x t e n t N o d e s ( ) );
En las lı́neas 13-20 vemos la declaración de los campos escalares que almacenarán
la información concernientes tanto a la presión como a la velocidad. Hay que hacer una
distinción especial para el campo de la velocidad, ya que los campos con nomenclatura
u1, u2 y u3 son atribuidos a cada centro de volumen de control de la malla, de modo
que hay que interpolar a los nodos y para eso reservamos un espacio en memoria con
los nombres u1 n, u2 n y u3 n.
21 // I n i c i a l i z a m o s campos para e l c a l c u l o s o b r e l a s l i n e a s de c o r r i e n t e
22 S c a l a r F i e l d 1 D SwSLS [ N l i n e s S L S ] ;
87
6. Modelo Computacional y Resultados Numéricos
24 // C a l c u l o de l a v e l o c i d a d
25
26 double Sef = (Sw( i , j , kk )−Srw ) /(1−Srw−Sro ) ;
27 double krw = Sef ;
28 double kro = 1− S e f ;
29 double lam T = ( krw/mu w) + ( k r o /mu o ) ;
30 double lam w = krw / mu w ;
31
32 f o r ( i n t i = b i ; i <= e i ; ++i ) {
33 f o r ( i n t j = b j ; j <= e j ; ++j ) {
34 f o r ( i n t k = bk ; k <= ek ; ++k ) {
35 S e f = (Sw( i , j , kk )−Srw ) /(1−Srw−Sro ) ;
36 krw = S e f ;
37 k r o = 1− S e f ;
38 lam T = ( krw/mu w) + ( k r o /mu o ) ;
39 lam w = krw / mu w ;
40 u1 ( i , j , k ) = −k 1 1 ( i , j , k ) ∗ lam T ∗ ( ( p ( i +1 , j , k )−p ( i −1 , j , k ) ) / ( 2 ∗ dx ) ) ;
41 }
42 }
43 }
44 f o r ( i n t i = b i ; i <= e i ; ++i ) {
45 f o r ( i n t j = b j ; j <= e j ; ++j ) {
46 f o r ( i n t k = bk ; k <= ek ; ++k ) {
47 S e f = (Sw( i , j , kk )−Srw ) /(1−Srw−Sro ) ;
48 krw = S e f ;
49 k r o = 1− S e f ;
50 lam T = ( krw/mu w) + ( k r o /mu o ) ;
51 lam w = krw / mu w ;
52 u2 ( i , j , k ) = −k 2 2 ( i , j , k ) ∗ lam T ∗ ( ( p ( i , j +1 ,k )−p ( i , j −1 ,k ) ) / ( 2 ∗ dy ) ) ;
53 }
54 }
55 }
56 f o r ( i n t i = b i ; i <= e i ; ++i ) {
57 f o r ( i n t j = b j ; j <= e j ; ++j ) {
58 f o r ( i n t k = bk ; k <= ek ; ++k ) {
59 S e f = (Sw( i , j , kk )−Srw ) /(1−Srw−Sro ) ;
60 krw = S e f ;
61 k r o = 1− S e f ;
62 lam T = ( krw/mu w) + ( k r o /mu o ) ;
63 lam w = krw / mu w ;
64 u3 ( i , j , k ) = −k 3 3 ( i , j , k ) ∗ lam T ∗ ( ( p ( i , j , k+1)−p ( i , j , k−1) ) / ( 2 ∗ dz ) ) ;
65 }
66 }
67 }
88
6.2. Implementación
89
6. Modelo Computacional y Resultados Numéricos
Recibe como argumentos los campos escalares de velocidad para las componentes
x, y y z, las coordenadas de las lı́neas, la porosidad y los deltas espaciales en cada
dirección. Se trata de una interpolación trilineal del campo de velocidad local a la
posición j de la lı́nea i en cuestión. La velocidad interpolada de los nodos de la malla
a los puntos de cada lı́nea de corriente se hace por componentes, de modo que UI, VI
y WI son los valores para la dirección x, y y z respectivamente. Esta función es para
calcular el tiempo de vuelo según la ecuación (4.33). Los resultados que se muestran
en la figura 6.9 son una comparación cualitativa de los métodos MVF y SLS.
90
6.2. Implementación
91
6. Modelo Computacional y Resultados Numéricos
Figura 6.9: Comparación de los métodos MVF y SLS en los mismos dı́as de la
simulación.
92
Capı́tulo 7
Conclusiones
93
7. Conclusiones
94
Apéndice A
Formulación Presión-Saturación
X 1 ∂(φρα Sα )
+ ∇ · (ρα uα ) − qα = 0,
α
ρα ∂t
95
A. Formulación Presión-Saturación
∂φ X X 1 ∂ρα
X
qα
+ ∇ · uα + φSα + uα · ∇ρα − = 0. (A.1)
∂t α α
ρα ∂t α
ρα
∂φ X 1 ∂ρα
X
qα
+∇·u+ φSα + uα · ∇ρα − = 0. (A.4)
∂t α
ρ α ∂t α
ρ α
Definamos ahora una función de flujo fraccional para la fase α, de manera que,
λα
fα = =⇒ λα = fα λ, (A.6)
λ
P
P donde λ = α λα representa la movilidad total y como consecuencia se cumple que
α fα = 1. Sustituyendo la ecuación (A.6) en (A.5) llegamos a:
" #
X X
u = −λk fα ∇pα − fα ρ α g . (A.7)
α α
" #
∂φ X X X 1 ∂ρα
X
qα
− ∇ · λk fα ∇pα − fα ρ α g + φSα + uα · ∇ρα − = 0.
∂t α α α
ρα ∂t α
ρα
(A.8)
96
A.2. Ecuación de Saturación
∂(φρw Sw )
+ ∇ · (ρw uw ) = qw , (A.9)
∂t
Hay que hacer notar que tanto la ecuación (A.8) como la ecuación (4.7) fueron
formuladas en términos de una presión de fase (la del aceite por ejemplo).
97
Apéndice B
Si se requiere que los vectores r(j) sean ortogonales, entonces es necesario que
(r − α(j) Ap(j) , r(j) ) = 0 y, como resultado:
(j)
(j) r(j) , r(j)
α = . (B.2)
Ap(j) , r(j)
99
B. Gradiente Conjugado para Sistemas Lineales Dispersos
Por otra parte, escribiendo p(j+1) como se definió en (B.3) y dado que es ortogonal
a Ap(j) , tenemos que:
r(j+1) , Ap(j)
β (j) = − .
p(j) , Ap(j)
y, por lo tanto
(j) 1 r(j+1) , r(j+1) − r(j) r(j+1) , r(j+1)
β = (j) = .
α (j)
Ap , p (j) (r(j) , r(j) )
Algoritmo 2 CGM
1: Calcular r (0) = b − Ax(0) , p(0) = r (0)
2: for j = 0, 1, ..., hastaconvergerdo
3: α(j) = r(j) , r(j) / Ap(j) , p(j)
4: x(j+1) = x(j) + α(j) p(j)
5: r(j+1) = r(j) − α(j) Ap(j)
6: β (j) = r(j+1) , r(j+1) / r(j) , r(j)
7: p(j+1) = r(j+1) − β (j) p(j)
8: end for
100
En este algoritmo, (·, ·) es el producto interno adecuado al sistema lineal en
particular. Se debe considerar, en términos de memoria, almacenar 4 vectores (x, p, Ap
y r), la solución aproximada será x(j+1) y el vector residual es r(j+1) .
La gran ventaja del Método de Gradiente Conjugado radica en que cuando se utiliza
este procedimiento basta con asegurar la ortogonalidad de un nuevo miembro con
respecto al último que se ha construido, para que automáticamente esta condición se
cumpla con respecto a todos los anteriores.
101
Apéndice C
En este apéndice se describe la aplicación del MVF a problemas de una fase, siendo
extensible a más fases en un sistema.
Zn Ze Z
n+1 n+1Zn Ze
∂ 2p ∂ 2p
Z
∂p
dt dx dy = Γ + dx dy dt.
∂t ∂x2 ∂y 2
s w n n s w
donde Γ = k/φµcT .
103
C. Aplicación del Método de Volumen Finito
n+1
Z e n
∂p ∂p
(pn+1
P − pnP )∆x∆y = Γ ∆y + ∆x dt
∂x w ∂y s
n
n+1
pE − pP pP − pW
Z
= Γ − ∆y
∆xe ∆xw
n
!
pN − p P pP − pS
+ − ∆x dt
∆yn ∆ys
n+1
Z
= aE pE + aW pW + aN pN + aS pS
n
!
− aE + aW + aN + aS pP dt.
∆y ∆y ∆x ∆x
donde aE = Γ ∆x e
; aW = Γ ∆x w
; aN = Γ ∆y n
; aS = Γ ∆y s
.
La integral temporal se aproxima usando el esuqema θ:
Dada una función f (x), la integral de n a n + 1 de dicha función, se aproxima de
la siguiente manera
n+1
Z
f dt = [θf n+1 + (1 − θ)f n ]∆t,
n
1
donde para θ = 0 se tiene un esquema explı́cito (f n ∆t) y para θ = 2
se tiene un
esquema conocido como de Crank-Nicolson ([f n+1 + f n ] ∆t2
).
Usando un esquema implı́cito (θ = 1) se tiene que
aP pn+1
P = aE pn+1
E + aW pn+1 n+1
W + aN pN + aS pn+1
S + sP pnP ,
∆x∆y ∆x∆y
donde aP = aE + aW + aN + aS + ∆t
y sP = ∆t
.
Para cada volumen de control de la malla se obtiene una ecuación discreta, lo que
genera un sistema lineal de ecuaciones. Dicho sistema tiene la forma mostrada
en la figura 5.2. La matriz del sistema es rala, simétrica y positivo definida.
Existen varios algoritmos para resolver este tipo de sistemas, en este trabajo se
empleó el método de gradiente conjugado, ver apéndice B.
104
Referencias
[2] Allen, M. B., Herrera, I., Pinder, G., “Numerical Modeling in Science and
Engineering.”, 1988.
[4] Ames, W. F., “Numerical Methods for Partial Differential Equations.”, Academic
Press, INC., 1977.
[5] Baker, R., “Streamline Technology: Reservoir History Matching and Forecasting
= Its Succes, Limitations, and Future”, Distinguished Author Series, Journal of
Canadian Petroleum Technology, volumen 40 No. 4.
[8] Batycky, R.P., Förster, M., Thiele, M.R., Stüben, K., “Parallelization
of a Commercial Streamline Simulator and Performance on Practical Models.”,
Society of Petroleum Engineers, 2010.
[9] Berre, I., Dahle, H. K., Karlsen, K. H., Nordhaug, H. F., “A Streamline
Front Tracking Method for Two- and Three-Phase Flow Including Capillary
Forces.”, American Mathematical Society, 2000.
105
Referencias
[14] Chen, Z., Huan, G., y Ma ,Y., “Computational Methods for Multiphase Flows
in Porous Media”, SIAM, 2006.
[17] De la Cruz, L., “Flujo en una y dos fases en medios porosos: modelos
matemáticos, numéricos y computacionales”, Reportes Internos 2012-04 Instituto
de Geofı́sica UNAM, 2012.
[18] De la Cruz, L., “Tunam: Template units for numerical applications and
modeling.”
[Link]
[23] Golub, H., Van Loan, C. “Matrix Computations”, The Johns Hopkins
University Press, 3er Ed. 1996.
[24] Hægland, HÅkon “Streamline methods with application to flow and transport
in fractured media.”, Ph. D. Thesis, University of Bergen. 2009.
[26] Hasle, G., Lie, K., Quak, E. “Geometric Modelling, Numerical Simulation,
and Optimization.”, Springer, 2007.
106
Referencias
[37] Saad, Y., “Iterative Methods for Sparse Linear Systems”, segunda edición, SIAM,
2003.
[39] Shapira, Y., “Solving PDEs in C++. Numerical Methods in a Unified Object-
Oriented Approach.”, SIAM, 2006.
[40] Shonkwiler, R. W., Lefton, L., “An introduction to Parallel and Vector
Scientifc Computation.”, Cambridge University Press, 2006.
107
Referencias
[43] Vasco, D. W, Yoon, S., Datta-Gupta, A., “Integrating Dynamic Data Into
High-Resolution Reservoir Models Using Streamline-Based Analytic Sensitivity
Coefficients ”, SPE, 1999.
[44] Velten, K., “Mathematical Modeling and Simulation. Introduction for Scientists
and Engineers”, Wiley-VCH, 2009.
[48] Yoon, S., Malallah, A. H., Datta-Gupta, A., Vasco, D. W., Behrens,
R. A., , “A Multiscale Approach to Production-Data Integration Using Streamline
Models.”, SPE, 2001.
[50] Zhong, H., Yoon, S., Datta-Gupta, A., “Streamline-Based Production Data
Integration With Gravity and Changing Field Conditions.”, SPE, 2002.
108