Función en VBA para el Calculo de z, Dranchuk y Abou-kassem

 

Antes del advenimiento del uso extendido de las computadoras los resultados de experimentos de laboratorio y  cálculos complejos eran traducidos a nomogramas, los cuales son gráficos que permiten obtener resultados mediante la entrada de ciertos parámetros en los ejes o en curvas.

Standing y Katz desarrollaron un nomograma para obtener el valor del factor z, basado en la graficación de datos experimentales en mezcla de gases hasta presiones de 10000 lpca, el cual fue publicado en el año 1942 (Transaction of AIME) y ha sido un estándar de la industria por mucho tiempo. La figura muestra el nomograma de la correlación de Standing Katz, la cual se encuentra en la mayoría de los libros de texto de Ingeniería de Yacimientos.

zfactor

En este articulo no vamos a entrar en los detalles del uso de este nomograma, solamente queremos referirnos al trabajo realizado por Dranchuk y Abou-Kassem. Ellos hicieron un ajustes de los puntos en el nomograma de standing katz utilizando la ecuación de estado de Starling. Esto permite que se puedan utilizar programas de computadora para el calculo de z, en lugar de utilizar un método grafico.

Dranchuk y Abou-Kassem ajustaron la ecuación de estado a 1500 puntos, con un error absoluto promedio de 0.486%.

La ecuación de estado (EOS) esta dentro de la exactitud requerida para cálculos de ingeniería en el siguiente rango de presión y temperatura reducida (o pseudo reducida).

0.2  <=  Pr  < 30

1.0  <  Tr  < =  3.0

y para

pr<1.0 ;  0.7<Tr<1.0

La ecuación da muy pobres resultados para

Tr=1.0  ; Pr>=1.0

La ecuación de Starling es una ecuación de la forma:

DRAK-1

Dranchuk y Abou-Kassem definieron las funciones en base a 11 constantes de A1 hasta A11.

DRAK-5

 

DRAK-2

La ecuación de z hay que resolverla por métodos iterativos, porque aparece a ambos lados de la igualdad, ya que

\rho_r es una función de z.

Básicamente lo que necesitamos es que ambos lados sean iguales, o que el lado derecho menos el izquierdo sean igual a cero.

DRAK-3

Podemos resolver la raíz de f(z) numéricamente utilizando el método de regula falsi, o el método de Newton-Raphson.

En el método de regula falsi o el de la secante debemos seleccionar dos puntos y calcular el valor de la función  f(z) en esos dos puntos.

En el método de Newton-Raphson necesitamos, ademas del valor de la función en un punto, obtener un valor analítico de la derivada de la función f(z). La derivada parcial de la función f(z) con respecto a z manteniendo constante Tr es:

DRAK-4

Con estos conceptos vamos a crear una función definida por el usuario en VBA para calcular el valor de z, dados los valor de la temperatura y presión pseudo reducida (Tr y Pr), utilizando el metodo de Newton-Raphson para resolver la ecuación f(z)=0. A continuación el código propuesto.

 

Public Function ZDRA(Tr As Double, Pr As Double) As Double
Dim A(1 To 11) As Double
Dim c1 As Double, c2 As Double, c3 As Double, c4 As Double
Dim rho As Double, z As Double, Count As Integer
Dim zn As Double, fofz As Double, dfdz As Double

‘Constantes de la ecuación de estado
A(1) = 0.3265
A(2) = -1.07
A(3) = -0.5339
A(4) = 0.01569
A(5) = -0.05165
A(6) = 0.5475
A(7) = -0.7361
A(8) = 0.1844
A(9) = 0.1056
A(10) = 0.6134
A(11) = 0.721

‘Valor inicial de z
z = 1#

‘Calculo de la densidad
rho = 0.27 * Pr / (z * Tr)

‘Calculo de Constantes C
c1 = A(1) + A(2) / Tr + A(3) / Tr ^ 3 + A(4) / Tr ^ 4 + A(5) / Tr ^ 5
c2 = A(6) + A(7) / Tr + A(8) / Tr ^ 2
c3 = A(9) * (A(7) / Tr + A(8) / Tr ^ 2)
c4 = A(10) * (1 + A(11) * rho ^ 2) * (rho ^ 2 / Tr ^ 3) * Exp(-A(11) * rho ^ 2)

Count = 0

‘Iteración utilizando el método de Newton-Raphson
‘Ciclo de 100 iteraciones maximo para evitar un loop sin fin

For i = 1 To 100

zn = 1 + (c1 * rho) + c2 * rho ^ 2 – c3 * rho ^ 5 + c4
fofz = z – zn
‘Derivada de la función con respecto a z

dfdz = 1 + c1 * rho / zn + 2 * c2 * rho ^ 2 / zn + 5 * c3 * rho ^ 5 / zn + 2 * A(10) * rho ^ 2 / (zn * Tr ^ 3) * _
(1 + A(11) * rho ^ 2 – ((A(11) * rho ^ 2) ^ 2) * Exp(-A(11) * rho ^ 2))

dz = -fofz / dfdz

z = z + dz
If Abs(z – zn) > 0.00001 Then
rho = 0.27 * Pr / (z * Tr)
c4 = A(10) * (1 + A(11) * rho ^ 2) * (rho ^ 2 / Tr ^ 3) * Exp(-A(11) * rho ^ 2)
Count = Count + 1
Else
GoTo 10

End If

Next i
10: ZDRA = z

End Function

 

Referencias Bibliográficas

https://www.e-education.psu.edu/png520/m8_p2.html

Dranchuk, P.M., and Abou-Kassem, J.H., “Calculations of Z- Factor For Natural Gases Using Equations of State,” JCPT, July-Sept. 1975, P. 34.

Lee, J.: Gas Reservoir Engineering, SPE Textbook Series Vol. 5., 1996.

Pérez Palacio, R.: Ingenieria de Gas Natural (Propiedades y Comportamiento de Fases). Universidad Nacional de Colombia, Medellin, 1979.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s