Sunteți pe pagina 1din 15

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 Lee-Gonzales-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 Lee-Gonzales-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

 Densidad, ρg

 Volumen específico, v

 Coeficiente de compresibilidad isotérmica del gas, cg

 Factor volumétrico de formación del gas, Bg

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

 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
 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:

   Y 
X  g  
  62.4  
 g  10 4 Ke  
1

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

Donde

(9.4  0.02M a )T 1.5


K 2
209  19M a  T

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 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:

   Y 
X  g  
  62.4  
 g  10 4 Ke  
1

Donde

(9.4  0.02M a )T 1.5


K 2
209  19M a  T

X  5.3518 3

Y  2.4  0.2 X 4

ρg = densidad del gas a presión y temperatura del reservorio, lb/ft3

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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:

 2.4  0.2 X 
  
 5.3518 g  
(9.4  0.02M a )T 1.5   62.4 
  
 g  10 *
4
*e  
209  19M a  T
Ordenando y reemplazando nuevamente la ecc 3 en el término “Y” finalmente se tiene:
   
1.3296
 5.3518 g  
(9.4  0.02M a )T1.5
  62.4 
  
 g  10 4 * *e  
209  19M a  T
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 Newton-Raphson (conocido también como el método de
Newton o el método de Newton-Fourier) 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:

f ( xi )
x  xi 
f ' ( xi )

Que es la fórmula iterativa de Newton-Raphson para calcular la siguiente aproximación:

f ( xi )
xi 1  xi  si f ' ( xi )  0
f ' ( xi )

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, debemos generar
las funciones f ( xi ) y f ' ( xi ) , que en nuestro caso deben ser:

f (Ti ) y f ' (Ti )

Utilizando la ecuación planteada se tiene:


   
1.3296
 5.3518 g  
(9.4  0.02M a )T 1.5
 


62.4  
 g  10 4 * *e  
209  19M a  T
Por lo tanto f (Ti ) =0 será de la siguiente manera:

   
1.3296
 5.3518 g  
(9.4  0.02M a )T 1.5
  62.4 
  
f (Ti )  0  10 4 * *e  
 g
209  19M a  T
Y para poder calcular f ' (Ti ) , será necesario derivar la anterior ecuación:

   
1.3296
 5.3518 g  
 


   (9.4  0.02M a )T 0.5 (9.4  0.02M a )T 1.5 
* 1.5 
4 62.4
f ' (Ti )  10 * e  
 2 
 209  19 M a  T 209  19 M a  T  

Ordenando:
   
1.3296
 5.3518 g  
 (9.4  0.02M a )T 0.5
  T 1
   62.4 
  
f ' (Ti )  10 4 *   * 1.5   * e  

 209  19M a  T   209  19 M a  T  

Reemplazando estos valores en la fórmula iterativa de Newton-Raphson:

f (Ti )
Ti 1  Ti 
f ' (Ti )

Don de queda de la siguiente manera:


   
1.3296
 5.3518 g  
(9.4  0.02 M a )T 1.5
  
 62.4  
0  10  4 * *e  
 g
209  19 M a  T
Ti 1  Ti   1.3296
  
 5.3518 g  
 (9.4  0.02 M a )T 0.5
  T 1
   62.4 
  
10  4 *   * 1.5  *e  

 209  19 M a  T   209  19M a  T  

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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)

'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

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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
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
PROGRAMACIÓN APLICADA (PET - 230) JSV
UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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
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

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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
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

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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]:

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.

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

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:

Para lo cual usamos un valor inicial de: T= 100

Y una tolerancia de 0.1

PROGRAMACIÓN APLICADA (PET - 230) JSV


UNIVERSIDAD MAYOR DE SAN ANDRÉS
INGENIERÍA PETROLERA

Donde al hacer click en calcular se tendrá el siguiente resultado:

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, Autor: Ing. Hermas Herrera Callejas;


La Paz, Febrero de 2011

 PROGRAMACIÓN APLICADA , Autor: Ing. Hermas Herrera Callejas;


La Paz, Febrero de 2011

 COMPENDIO DE MATLAB PARA INGENIERÍA Autor: Ing. Caarlos J. Torrico Guerrero;


La Paz – Bolivia 2008

PROGRAMACIÓN APLICADA (PET - 230) JSV

S-ar putea să vă placă și