UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
JUSTIFICACIÓN.La razón por la cual se realiza este programa para el cálculo de la temperatura del reservorio en un yacimiento o reservorio de gas, es debido a que con los datos conocidos como el peso molecular del gas del reservorio, la densidad del gas y la viscosidad del mismo, Lee-Gonzales-Aekin, desarrolla una relación para poder calcular la viscosidad de los gases naturales, para lo cual este expresa dicha relación en términos de temperatura, de donde si se tiene como dato la viscosidad de dicho gas, es posible resolver dicha ecuación no lineal, para poder determinar la temperatura del reservorio. Pero debemos hacer notar que dicha ecuación no es fácil de resolver manualmente, debido a que demandaría mucho tiempo en poder resolver dicha ecuación. Este programa está diseñado para que el usuario pueda introducir los datos que se dan y así poder encontrar la solución a esta ecuación mediante iteraciones que se realiza, por ello el programa realizará todas las iteraciones necesarias para poder encontrar la solución, de manará ,más rápida que si se lo haría manualmente.
DEFINICIÓN DEL PROBLEMA.El problema que representa la solución a la ecuación o relación planteada por LeeGonzales-Aekin, para poder hallar la temperatura del reservorio, está en que es imposible poder despejar dicha variable de temperatura del la ecuación. Por lo tanto para poder resolver el problema es necesario emplear métodos numéricos, con los cuales podamos hallar la solución a este problema. Los programas computacionales, ayudarán a resolver este problema, además de emplear y escoger un buen método numérico para la iteración, de la ecuación no lineal. Por ello viendo las posibilidades de utilizar un método numérico, se decide que para este caso, se utilizará el método de Newton Raphson. Que es un método iterativo para la resolución de este tipo de problemas. En nuestro caso primeramente plantearemos el problema y veremos las variables intervinientes en la ecuación, luego analizaremos el problema para elaborar el algoritmo a ser utilizado, para luego pasar a la programación de dicho método en un programa computacional. PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
OBJETIVOS.Los objetivos planteados para este caso son los siguientes: Determinar la temperatura del reservorio utilizando la relación de LeeGonzales-Aekin. Diseñar el algoritmo para poder programar la resolución de dicha relación. Diseñar el programa en un programa de programación para poder aplicar métodos numéricos en la resolución del problema. Una vez diseñado el programa, ejecutar el mismo para poder calcular la temperatura del reservorio utilizando la relación de Lee-Gonzales-Aekin. Aplicar el método de Newton Raphson para la resolución del problema. Plantear un problema práctico y resolverlo utilizando el programa diseñado para aplicar métodos numéricos.
MARCO TEÓRICO.Para entender y predecir el comportamiento volumétrico de los reservorios de gas y petróleo como función de la presión, debemos tener conocimiento de las propiedades físicas de los fluidos del reservorio. Estas propiedades de fluidos son normalmente determinadas por experimentos en laboratorio efectuados en muestras de los fluidos reales del reservorio. En ausencia de propiedades medidas experimentalmente, es necesario, en ingeniería petrolera, determinar las propiedades mediante correlaciones derivadas empíricamente. El objetivo es conocer una de las correlaciones para propiedades físicas bien establecidas para los gases naturales, tal es el caso de la correlación de Lee-Gonzales-Aekin. El conocimiento de las relaciones presión-volumen-temperatura (PVT) y las demás propiedades físicas y químicas de los gases es esencial para resolver problemas en ingeniería de reservorios del gas natural. Estas propiedades incluyen: Peso molecular aparente, Ma Gravedad específica, γg Factor de compresibilidad, z PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Densidad, ρg Volumen específico, v Coeficiente de compresibilidad isotérmica del gas, cg Factor volumétrico de formación del gas, Bg Factor de expansión del gas, Eg Viscosidad, μg Estas propiedades del gas pueden obtenerse de medidas directas en laboratorio o por predicción de expresiones matemáticas generalizadas. Se revisarán las leyes que describen el comportamiento volumétrico de los gases en términos de presión y temperatura y correlaciones matemáticas que son ampliamente usadas en la determinación de las propiedades físicas de los gases naturales. VISCOSIDAD DEL GAS La viscosidad del gas es la medida de la fricción interna del fluido o resistencia al flujo que afecta a la caída de presión por influjo del reservorio al agujero del pozo y a lo largo de las instalaciones. Si la fricción entre capas del fluido es pequeña, o sea, baja viscosidad, una fuerza distribuida aplicada resultará en un gradiente de velocidad grande. Mientras la viscosidad aumenta, cada capa del fluido ejerce una mayor fricción de arrastre en las capas adyacentes y el gradiente de velocidad decrece. La viscosidad puede estimarse con precisión de correlaciones empíricas. Como todas las propiedades intensivas, la viscosidad del gas natural es descrito completamente por la siguiente función: μg = f(p,T,yi) donde μg = viscosidad de la fase gas. La relación anterior simplemente establece que la viscosidad es una función de la presión, temperatura, y composición. Varias de las correlaciones para la viscosidad del gas ampliamente usadas pueden ser vistas como modificaciones de la expresión anterior.
MÉTODOS DE CÁLCULO DE LA VISCOSIDAD DEL GAS NATURAL Tres métodos populares que son comúnmente usados en la industria petrolera son:
Método de Carr-Kobayashi-Burrows Método de Standing-Dempsey
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Método de Lee-Gonzalez-Eakin
Método de Lee-Gonzalez-Eakin Lee, Gonzalez y Eakin (1966) presentaron una relación semi-empírica para calcular la viscosidad de los gases naturales. Los autores expresaron la viscosidad del gas en términos de la temperatura del reservorio, densidad del gas y el peso molecular del gas. Su ecuación propuesta está dada por:
g 10 Ke 4
g X 62.4
Y
1 Donde
K
(9.4 0.02 M a )T 1.5 209 19 M a T
2
X 5.3518 3
Y 2 .4 0 .2 X 4 ρg = densidad del gas a presión y temperatura del reservorio, lb/ft 3 T = temperatura del reservorio, °R Ma = peso molecular aparente de la mezcla del gas La correlación propuesta puede predecir valores de viscosidad con una desviación estándar de 2.7% y una desviación máxima de 8.99%. La correlación es menos exacta para gases con gravedades específicas muy altas. RESOLUCIÓN DEL PROBLEMA.Mientras se quiera calcular la viscosidad teniendo como dato a la temperatura del reservorio no se tiene inconvenientes para reemplazar los datos manualmente y resolver la ecuación. El problema principal radica cuando se quiera conocer la temperatura del reservorio en estudio, ya que cuando se tiene el dato de la viscosidad del gas se deberá predecir o calcular la temperatura del reservorio con los datos del gas que PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
se está extrayendo del mismo. Es decir que cuando queramos resolver la ecuación planteada para hallar la temperatura del reservorio, deberemos utilizar métodos numéricos para la resolución de esta ecuación. Veamos entonces el desarrollo de esta ecuación:
g 10 Ke 4
g X 62.4
Y
1
Donde
K
(9.4 0.02 M a )T 1.5 209 19 M a T
2
X 5.3518 3
Y 2.4 0.2 X 4 ρg = densidad del gas a presión y temperatura del reservorio, lb/ft 3 T = temperatura del reservorio, °R Ma = peso molecular aparente de la mezcla del gas Si reemplazamos las ecuaciones 2,3 y 4 en 1 que es la ecuación principal se tiene:
(9.4 0.02M a )T g 10 * *e 209 19 M a T 4
1.5
g 5.3518 62.4
2 . 4 0 .2 X
Ordenando y reemplazando nuevamente la ecc 3 en el término “Y” finalmente se tiene:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
(9.4 0.02 M a )T g 10 * *e 209 19 M a T 4
1.5
g 5.3518 62.4
1.32 96
Donde observamos que el hecho de despejar el término T (temperatura del reservorio), pues resulta muy dificultoso, por lo tanto se deberán utilizar métodos numéricos para su resolución, cuando se quiera calcular T. MÉTODO NUMÉRICO.Para este caso realizaremos iteraciones, para resolver esta ecuación no lineal, en donde el método numérico a ser utilizado será el de Newton-Raphson. Este método, que es un método iterativo, es uno de los más usados y efectivos. El método de Newton-Raphson no trabaja sobre un intervalo sino que basa su fórmula en un proceso iterativo. En análisis numérico, el método de NewtonRaphson (conocido también como el método de Newton o el método de NewtonFourier) es un algoritmo eficiente para encontrar aproximaciones de los ceros raíces de una función real. DESCRIPCIÓN DEL MÉTODO.-
La idea de este método es la siguiente: se comienza con un valor razonablemente cercano al cero (denominado punto de arranque), entonces se reemplaza la función por la recta tangente en ese valor, se iguala a cero y se despeja (fácilmente, por ser una ecuación lineal). Este cero será, generalmente, una aproximación mejor a la raíz de la función. Luego, se aplican tantas iteraciones como se deseen.
Supongamos que tenemos la aproximación xi a la raíz xr de f(x),
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Trazamos la recta tangente a la curva en el punto (xi, f(xi)); ésta cruza al eje x en un punto xi+1 que será nuestra siguiente aproximación a la raíz xr. Para calcular el punto xi+1, calculamos primero la ecuación de la recta tangente. Sabemos que tiene pendiente m = f’(xi) Y por lo tanto la ecuación de la recta tangente es: y – f(xi) = f’(xi)(x – xi) Hacemos y = 0: - f(xi) = f’(xi)(x - xi) Y despejamos x: x xi
f ( xi ) f ' ( xi )
Que es la fórmula iterativa de Newton-Raphson para calcular la siguiente aproximación: xi 1 xi
f ( xi ) f ' ( xi )
f ' ( xi ) 0 si
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
APLICACIÓN DEL MÉTODO AL CASO EN ESTUDIO.Para poder aplicar el método de Newton-Raphson a nuestro problema en cuestión, f ( xi ) f ' ( xi ) debemos generar las funciones y , que en nuestro caso deben ser: f (Ti )
f ' (Ti ) y
Utilizando la ecuación planteada se tiene:
(9.4 0.02M a )T g 10 * *e 209 19 M a T 1.5
4
g 5.3518 62.4
1.3 29 6
f (Ti ) Por lo tanto
=0 será de la siguiente manera:
(9.4 0.02 M a )T f (Ti ) 0 10 * *e 209 19M a T 1.5
4
g 5.3518 62.4
1.32 9 6
g
f ' (Ti ) Y para poder calcular
, será necesario derivar la anterior ecuación:
4
f ' (Ti ) 10 * e
g 5.3518 62.4
1.3296
(9.4 0.02 M a )T 0.5 (9.4 0.02 M a )T 1.5 * 1.5 2 209 19 M T 209 19 M T a a
Ordenando:
(9.4 0.02 M a )T 209 19 M a T
f ' (Ti ) 10 4 *
0. 5
T * 1.5 * e 209 19 M T a 1
g 5.3518 62.4
1.3296
Reemplazando estos valores en la fórmula iterativa de Newton-Raphson:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Ti 1 Ti
f (Ti ) f ' (Ti )
Don de queda de la siguiente manera: (9.4 0.02M a )T 0 10 * *e 209 19M a T 1.5
4
Ti 1 Ti
(9.4 0.02 M a )T 10 * 209 19M a T 4
0.5
g 5.3518 62.4
1.3296
g
T * 1.5 *e 209 19M a T 1
g 5.3518 62.4
1.3296
Esta última ecuación es la que será programada en el visual Basic: CÓDIGO UTILIZADO EN VISUAL BASIC: El código para desarrollar el programa es el siguiente: El código para el módulo es: Dim m, d, u As Double Dim A, B, C As Double Function f(x) 'f = ((10 ^ -4)) * 9.817 * (x ^ 1.5) * Exp(0.3661244) / (605.15 + x) - 0.0173 f = ((10 ^ -4)) * A * (x ^ 1.5) * Exp(C) / (B + x) - u
'f = ((10 ^ (-4)) * (9.4 + (0.002 * m)) * (x ^ (1.5)) * Exp(5.3518 * (((8.3) / 62.4) ^ (1.3296))) / ((209 + (19 * m)) + x)) - u 'f = 0.0001 * (9.4 + (0.02 * m)) * (x ^ 1.5) * Exp(5.3518 * ((d / 62.4) ^ 1.3296)) / (209 + (19 * m) + x) - u 'f = 0.0001 * (9.4 + (0.02 * m)) * (x ^ 1.5) * Exp(5.3518 * ((8.3 / 62.4) ^ 1.3296)) / (209 + (19 * m) + x) - u End Function Function df(x) 'df = (10 ^ -4) * 9.817 * (x ^ 0.5) * Exp(0.3661244) * (1.5 - (x / (605.15 + x))) / (605.15 + x) df = ((10 ^ -4)) * A * (x ^ 0.5) * Exp(C) * (1.5 - (x / (B + x))) / (B + x) PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
'df = ((10 ^ (-4)) * (9.4 + (0.002 * m)) * (x ^ (0.5)) * Exp(5.3518 * (((8.3) / 62.4) ^ (1.3296))) / ((209 + (19 * m)) + x)) * (1.5 - (x / (209 + (19 * m) + x))) 'df = 0.0001 * (9.4 + (0.02 * m)) * (x ^ 0.5) * Exp(5.3518 * ((d / 62.4) ^ 1.3296)) * (1.5 - (x / (209 + (19 * m) + x))) / (209 + (19 * m) + x) 'df = 0.0001 * (9.4 + (0.02 * m)) * (x ^ 0.5) * Exp(5.3518 * ((8.3 / 62.4) ^ 1.3296)) * (1.5 - (x / (209 + (19 * m) + x))) / (209 + (19 * m) + x) End Function
El código utilizado en el formulario correspondiente es: Private Sub Command1_Click() Label6.Caption = "" mat.Clear ' Definimos una matriz, para almacenar nuestros datos mat.TextMatrix(0, 0) = "Interación" mat.TextMatrix(0, 1) = "Error" mat.TextMatrix(0, 2) = "Valor aprox." ' Nos damos un valor de tolerancia en el Error tol = Val(Tole.Text) 'Definimos el valor inicial de T xo = Val(Text1.Text) 'Introducimos los datos Dim m As Double Dim d As Double Dim u As Double m = Val(mtex.Text) d = Val(dtex.Text) u = Val(utex.Text) mat.TextMatrix(1, 2) = xo mat.TextMatrix(1, 0) = "--" mat.TextMatrix(1, 1) = "--" sw = 0 For i = 1 To 100 PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
x = xo - (f(xo) / df(xo)) dif = Abs(x - xo) If Abs(dif) <= tol Then sw = 1 i = 100 Else xo = x mat.CellAlignment = flexAlignRightCenter mat.TextMatrix(i + 1, 2) = Format(xo, "######,######0.00000") mat.TextMatrix(i + 1, 1) = Format(dif, "######,######0.00000") mat.TextMatrix(i + 1, 0) = i End If Next i If sw = 1 Then Label6.Caption = Format(x, "########,########0.00000000") Else Label6.Caption = "Error" End If End Sub Private Sub Command2_Click() mtex = "" dtex = "" utex = "" Tole = "" Text1.Text = "" Label6.Caption = "" mat.Clear mtex.SetFocus End Sub Private Sub Command3_Click() End End Sub Private Sub dtex_KeyPress(KeyAscii As Integer) If (Chr(KeyAscii) >= "0" And Chr(KeyAscii) > "9" Or Chr(KeyAscii) = 13) Then Beep KeyAscii = 0 End If If (Chr(KeyAscii) = "/" Or Chr(KeyAscii) = "*" Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "+" Or Chr(KeyAscii) = ",") Then Beep KeyAscii = 0 End If If KeyAscii = 13 Then PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
utex.SetFocus End If End Sub Private Sub Form_Load() Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 End Sub Private Sub mtex_KeyPress(KeyAscii As Integer) If (Chr(KeyAscii) >= "0" And Chr(KeyAscii) > "9" Or Chr(KeyAscii) = 13) Then Beep KeyAscii = 0 End If If (Chr(KeyAscii) = "/" Or Chr(KeyAscii) = "*" Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "+" Or Chr(KeyAscii) = ",") Then Beep KeyAscii = 0 End If If KeyAscii = 13 Then dtex.SetFocus End If End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If (Chr(KeyAscii) >= "0" And Chr(KeyAscii) > "9" Or Chr(KeyAscii) = 13) Then Beep KeyAscii = 0 End If If (Chr(KeyAscii) = "/" Or Chr(KeyAscii) = "*" Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "+" Or Chr(KeyAscii) = ",") Then Beep KeyAscii = 0 End If If KeyAscii = 13 Then Tole.SetFocus End If End Sub Private Sub Tole_KeyPress(KeyAscii As Integer) If (Chr(KeyAscii) >= "0" And Chr(KeyAscii) > "9" Or Chr(KeyAscii) = 13) Then Beep KeyAscii = 0 End If If (Chr(KeyAscii) = "/" Or Chr(KeyAscii) = "*" Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "+" Or Chr(KeyAscii) = ",") Then Beep PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
KeyAscii = 0 End If If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Sub utex_KeyPress(KeyAscii As Integer) If (Chr(KeyAscii) >= "0" And Chr(KeyAscii) > "9" Or Chr(KeyAscii) = 13) Then Beep KeyAscii = 0 End If If (Chr(KeyAscii) = "/" Or Chr(KeyAscii) = "*" Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "+" Or Chr(KeyAscii) = ",") Then Beep KeyAscii = 0 End If If KeyAscii = 13 Then Text1.SetFocus End If End Sub
USO DEL PROGRAMA.Para el uso del programa únicamente debemos tener como datos los siguientes parámetros que se obtienen de laboratorio:
Luego de haber ingresado los datos debemos ingresar la tolerancia o error que se desea en la iteración, y luego seleccionar un T inicial, el cual para facilitar el cálculo tomaremos como parámetro a T inicial como Ti=100 [R]:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Si todos los datos ingresados son correctos, solo quedará realizar la iteración; para ello hacemos click en el comando Calcular. Y el programa automáticamente calculará y mostrará las iteraciones realizadas, además del valor de T calculado para la tolerancia dada. En caso de querer realizar un nuevo cálculo o iteración se debe hacer click en Nuevo para que se borren las anteriores variables utilizadas, y empezar un nuevo cálculo. En caso de querer mejorar la iteración se debe hacer click en el comando Modificar, con lo cual se habilita el texto donde se cambiará la tolerancia o el error permisible.
Ejemplo Calcular la Temperatura de la formación del un gas que cuenta con los siguientes datos, usando el método de Lee-Gonzalez-Eakin:
g 8 .3 lb/f3
g 0.0173 cp
Ma 20.85
lb/lb-mol
Solución: Introducimos los datos en el programa:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Para lo cual usamos un valor inicial de: T= 100 Y una tolerancia de 0.1 Donde al hacer click en calcular se tendrá el siguiente resultado:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
Donde sí queremos mejorar la iteración podemos cambiar la tolerancia, haciendo click en modificar:
PROGRAMACIÓN APLICADA (PET - 230)
JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS INGENIERÍA PETROLERA
En este caso se cambia el valor de la tolerancia y también se cambia el valor de T inicial por T=10, Donde para ver el resultado se hace click en Calcular nuevamente:
En donde observamos que el número de iteraciones esta vez es mayor, y asi podremos ir probando con distintos valores.
BIBLIOGRAFÍA UTILIZADA.La bibiliografía utilizada para desarrollar este programa fue: INGENIERÍA DE RESERVORIOS I, Callejas; La Paz, Febrero de 2011
Autor: Ing. Hermas Herrera
PROGRAMACIÓN APLICADA , Callejas; La Paz, Febrero de 2011
Autor: Ing. Hermas Herrera
COMPENDIO DE MATLAB PARA INGENIERÍA
Guerrero;
Autor: Ing. Caarlos J. Torrico
La Paz – Bolivia 2008
PROGRAMACIÓN APLICADA (PET - 230)
JSV