1
UMSA
VISCOSIDAD
NATURAL
MEDIANTE
DEL
GAS
LEE-GONZALES-EAKIN
Facultad De Ingeniería
Ingeniería Petrolera
Programación Aplicada
PET 230
VISCOSIDAD DEL
GAS NATURAL
MEDIANTE
LEE-GONZALES-EAKIN
NOMBRE DEL
ESTUDIANTE:
Tola Mayta
Limberg
2
VISCOSIDAD DEL GAS
NATURAL MEDIANTE
LEE-GONZALES-EAKIN
1. Introducción:
La viscosidad del gas (µg), es más baja que la de un líquido, ya que las distancias intermoleculares de un gas son mayores que las de un líquido. Además, todos los gases tienen comportamiento reológico Newtoniano y se rigen por la Ley de viscosidad de Newton.
En el presente proyecto trataremos el cálculo de la viscosidad, teniendo como base a la correlación de Lee-Gonzales-Eakin, es de esta correlación que se parte para el diseño del programa de VISCOSIDAD DEL GAS, el cual será explicado más adelante, el cual se diseño mediante Microsoft Visual Basic 6.0.
2. Justificación:
La viscosidad del gas natural es de suma importancia para varios procesos dentro de la industria petrolera, por lo que su cuantificación es vital. Es de saber que la viscosidad del gas es menor a la de los líquidos, es por esto que su determinación en laboratorio es difícil, usualmente se utilizan correlaciones para su cálculo tal
como ser el de Lee-Gonzales-Eakin, Carr-Kobayashi-Burrows y la de
Lohrenz-Bray-Clark, estas dos últimas correlaciones se basan fundamentalmente en principio de los estados correspondientes que establece que las propiedades físicas de hidrocarburos expresadas en forma adimensional pueden ser correlacionadas en términos de otras propiedades, también expresadas en forma adimensional.cabe recalcar que en su determinación se deben de usar graficas y correcciones (en el
caso de Carr-Kobayashi-Burrows) y ecuaciones muy complejas por as í decirlo (el
caso de Lohrenz-Bray-Clark) no obstante para el caso de la correlación de
Lee-Gonzales-Eakin da buenos resultados en la aproximación de la viscosidad del gas dando un error aceptable en comparación con las demás correlaciones en donde deben de cumplir condiciones para mantenerse en un rango de error aceptable, ya sea por la gravedad especifica del gas o la temperatura, es por esta razón que se
3
ve apreciable y practico el hecho de usar este método para el cálculo rápido de la viscosidad de un gas natural.
El proyecto trata en si del cálculo de la viscosidad por medio de esta correlación: Lee Gonzales Eakin, teniendo en como datos esenciales para tal calculo al factor Z del gas, su gravedad especifica, así como también la temperatura y presión en al que se encuentra el gas.
3. Objetivo:
3.1.Objetivo General:
Tener noción de los alcances que tienen los diferentes métodos para el cálculo de la viscosidad del gas así como la importancia de la viscosidad en la rama petrolera.
3.2.Objetivo Específico:
Crear un programa mediante la correlación de Lee Gonzales Eakin y así encontrar en forma sencilla el valor de la viscosidad del gas.
4. Marco Teórico: 4.1. Viscosidad:
La viscosidad de un fluido es una medida de la resistencia interna que ofrecen sus moléculas a fluir. En general, la viscosidad de un gas es mucho menor que la de un líquido, ya que las distancias intermoleculares de un gas son mayores que las de un líquido. Todos los gases o condensados tienen comportamiento reológico Newtoniano y se rigen por la ley de la viscosidad de Newton.
4.2. Expresiones cuantitativas:
Existen diversos modelos de viscosidad aplicables a sustancias que presentan comportamientos viscosos de diferente tipo. El modelo o tipo de fluido viscoso más sencillo de caracterizar es el fluido newtoniano, que es un modelo lineal (entre el gradiente de velocidades y las tensiones tangenciales) pero también existen modelos no lineales con adelgazamiento o espesamiento por cortante o como los plásticos de Bingham.
4
4.2.1.Fluido newtoniano:
Fig.1 Fluido newtoniano
Esquema que permite entender la resistencia al avance de una placa horizontal sobre la superficie de un fluido newtoniano.
En un fluido newtoniano la fuerza de resistencia experimentada por una placa que
se mueve, a velocidad constante por la superficie de un fluido viene dada por:
(1)
Donde:
FR = fuerza cortante (paralela a la velocidad).
A = área superficial del sólido en contacto con el fluido. = coeficiente de viscosidad dinámica.
= altura del nivel de fluido o distancia entre la placa horizontal y el fondo del recipiente que contiene al fluido.
Esta expresión se puede reescribir en términos de tensiones tangenciales sobre la placa como:
5
(2)
Donde µ es la velocidad del fluido.
4.3. Medidas de la viscosidad:
La viscosidad de un fluido puede medirse por un parámetro dependiente de la temperatura llamado coeficiente de viscosidad o simplemente viscosidad:
Coeficiente de viscosidad dinámico, designado como η o μ. En unidades en el SI: [µ] = [Pa·s] = [kg·m-1·s-1] ; otras unidades: 1 poise = 1 [P] = 10-1 [Pa·s] = [10-1 kg·s-1·m-1]
Coeficiente de viscosidad cinemático, designado como ν, y que resulta ser igual al cociente entre el coeficiente de viscosidad
dinámica y la densidad del fluido. ν = μ/ρ. (En unidades en el SI: [ν] = [m2.s-1]. En el sistema cegesimal es el stokes (St).
4.4. Factores que Afectan la Viscosidad de un Gas:
A bajas presiones (< 1000 - 1500 LPCA), a medida que aumenta la
temperatura aumenta la viscosidad de un gas debido al incremento de la energía cinética de las moléculas que producen gran número de choques intermoleculares. Gas (a 0 °C): Viscosidad dinámica [μPa·s] Hidrógeno 8,4 Aire 17,4 Xenón 21,2 Agua (20ºC) 1002
6
A elevadas presiones (>1000 - 1500 LPCA), a medida que aumenta
la temperatura disminuye la viscosidad de un gas debido a la expansión térmica de las moléculas. A elevadas presiones las distancias intermoleculares de los gases son pequeñas y un gas tiende a comportarse como un líquido.
A cualquier temperatura, la viscosidad de un gas aumenta con el
incremento de presión debido a la disminución de las distancias intermoleculares.
A medida que un gas es más pesado, sus moléculas serán más
grandes y por tanto su viscosidad será mayor.
4.5. Factores que Afectan la Viscosidad de un Líquido:
Los mismos factores que afectan la viscosidad de un gas afectan la de un líquido yen la misma forma con excepción de la temperatura; a cualquier presión, la viscosidad de un líquido (condensado) disminuye con el aumento de temperatura.
4.6. Determinación de viscosidades:
La viscosidad de un gas natural (µg) o de un gas condensado (µgc) puede ser determinada experimentalmente o por medio de ecuaciones. La determinación de y µg en el laboratorio es sumamente difícil debido a que su valor es muy pequeño (~ 0.02 cp) para ser medido con exactitud. Por esta razón se prefiere usar métodos numéricos en su evaluación.
4.7. Método de Lee-González-Eakin:
Lee y Cols. midieron experimentalmente la viscosidad de 4 gases naturales con impurezas (CO2 + H2S+N2) a temperaturas desde 100 hasta 400 °F y presiones desde 100 hasta 8000 LPCA. A partir de los datos experimentales ellos obtuvieron la siguiente correlación:
𝛍𝐠 = 𝟏𝟎
−𝟒∗ 𝐤 ∗ 𝐞𝐱𝐩 𝐗 ∗
𝛒𝐠𝟔𝟐,𝟒 𝐘
7
𝐊 = 𝟗.𝟑𝟕𝟗+𝟎.𝟎𝟏𝟔𝟎𝟕∗𝐏𝐌 ∗𝐓𝟏.𝟓 𝟐𝟎𝟗.𝟐+𝟏𝟗.𝟐𝟔∗𝐏𝐌+𝐓 … (4) 𝐗 = 𝟑. 𝟒𝟒𝟖 +𝟗𝟖𝟔.𝟒 𝐓 + 𝟎. 𝟎𝟏𝟎𝟎𝟗 ∗ 𝐏𝐌... (5) 𝐘 = 𝟐. 𝟒𝟒𝟕 − 𝟎. 𝟐𝟐𝟐𝟒 ∗ 𝐗…(6)Donde: µg = Viscosidad del gas (Cp)
ρg = Densidad del gas a presión y temperatura del reservorio (lb/ft3
). T = Temperatura del reservorio (R).
PM = Peso molecular aparente de la mezcla de gas.
El método de Lee y Cols también puede utilizarse para determinar la viscosidad de un gas condensado (µgc) usando PMc y ρgc en vez de PM y ρg.
La figura muestra una comparación entre los valores experimentales de viscosidad y calculados con la correlación. La ecuación (3) reproduce los datos experimentales con una desviación estándar de aproximadamente 2.7% y una desviación máxima de 8.99%.
8
4.8.Otros metodos para el cálculo de la viscosidad del gas:
4.8.1. Método de Carr Kobayashi y Burrows:
Esta correlación se presenta en la Fig. 3, y permite determinar la viscosidad del gas a presión atmosférica y temperatura del yacimiento , a partir de su peso molecular gravedad especifica.
Fig.3 Viscosidad de gases naturales a 1atm y temperatura de yacimiento.
De la figura podemos calcular las correcciones de los gases contenidos en la mezcla: CO2, H2S y N2.
4.8.2. Método de Lohrenz, Bray y Clark:
Lohrenz y Cols presentaron un método para determinar las viscosidades de mezclas de hidrocarburos en fase líquida y gaseosa. Este método está basado en el trabajo de Jossi, Sticl y Thodos sobre viscosidades de hidrocarburos. La correlación de Thodos y Cols se basó en el principio de los estados correspondientes que establece que las propiedades físicas de hidrocarburos
9
expresadas en forma adimensional pueden ser correlacionadas en térmi nos de otras propiedades, también expresadas en forma adimensional.
Para usar la correlación de Lohrenz y Cols se necesita conocer la composición de la mezcla (C1, C2,..C7+), las propiedades del seudo componente (Mc7+ y yc7+) y las condiciones de presión y temperatura.
La correlación de Lohrentz y Cols fue desarrollada para determinar la viscosidad de mezclas de hidrocarburos en estado líquido pero los autores sugirieron que también puede aplicarse a mezclas en estado gaseoso. Nolen utilizó esta correlación tanto para gases como para líquidos en un simulador composicional. Cuando la correlación fue comparada con 512 datos experimentales de viscosidad de mezclas de hidrocarburos e impurezas en fase liquida, la desviación promedia fue del 16%, la densidad de las mezclas cubría un rango de 0,4812 a 0,903 g/cc.
5. Desarrollo:
La resolución trata en si de introducir 4 datos principales, estos datos están en relación con el método de LEE GONZALES EAKIN.La figura 4 muestra el menú de acceso a la correlación de LEE GONZALES EAKIN.
Fig.4 correlación para determinar la µg.
10
Fig.5 Lee Gonzales Eakin.
Temperatura (°R).
Gravedad especifica del gas.
Presión (PSIA).
Factor de compresibilidad del gas (Z).
Como se observa en el grafico, estas variables son las que determinan la
viscosidad del gas, las constantes de LEE GONZALES EAKIN: x, y, k, así como también si se lo desea la densidad del gas (según la ecuación general de los gases) y el peso molecular del gas, mediante solo pulsar el botón de su lado que puede ser: GENERAR, RESULTADO.
6. Algoritmo: Si No Inicio Def: n1, n2, n3, n4,T,P,SG,Z,PM,DG,X,Y,K,µg n1, n2, n3, n4 n1, n2, n3, n4 = 0 A B L EL ALGORITMO ES SOLO DEL FORMULARIO EN DONDE ESTA EL LA CORRELACION.
11
NO SI 7. Programa Fig.6 FRM_CLAVE. FRM_CLAVE:Private Sub Form_Load()
Dim mRGN As Long, Cnt As Long, mBrush As Long, R As RECT mDC = CreateCompatibleDC(GetDC(0))
mBitmap = CreateCompatibleBitmap(GetDC(0), Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY) SelectObject mDC, mBitmap A N1=T N2=P N3=SG N4=Z 𝐷𝐺(𝐿𝐵𝐶𝐹) = 𝑝 ∗ 𝑃𝑀 𝑍 ∗ 𝑇 ∗ 10.7 𝑃𝑀(𝐿𝐵/𝐿𝐵𝑀𝑂𝐿) = 28.96 ∗ 𝑆𝐺 𝐊 = 𝟗. 𝟑𝟕𝟗 + 𝟎. 𝟎𝟏𝟔𝟎𝟕 ∗ 𝐏𝐌 ∗ 𝐓 𝟏.𝟓 𝟐𝟎𝟗. 𝟐 + 𝟏𝟗. 𝟐𝟔 ∗ 𝐏𝐌 + 𝐓 𝐗 = 𝟑. 𝟒𝟒𝟖 +𝟗𝟖𝟔. 𝟒 𝐓 + 𝟎. 𝟎𝟏𝟎𝟎𝟗 ∗ 𝐏𝐌 𝐘 = 𝟐. 𝟒𝟒𝟕 − 𝟎. 𝟐𝟐𝟐𝟒 ∗ 𝐗
𝛍𝐠 = 𝟏𝟎
−𝟒∗ 𝐤 ∗ 𝐞𝐱𝐩 𝐗 ∗
𝛒𝐠
𝟔𝟐, 𝟒
𝐘𝛍𝐠
C𝐅𝐈𝐍
0<Z≤1 DEBE DE INTRODUCIR OTRO Z L12
SetBkMode mDC, TRANSPARENT
SetRect R, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY
FillRect mDC, R, GetSysColorBrush(COLOR_WINDOW) For Cnt = 0 To 350 Step 30
DeleteObject SelectObject(mDC, CreateMyFont(24, Cnt))
TextOut mDC, (Me.Width / Screen.TwipsPerPixelX) / 2, (Me.Height / Screen.TwipsPerPixelY) / 2, Message, Len(Message)
Next Cnt
mRGN = CreateEllipticRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
SetWindowRgn Me.hwnd, mRGN, True DeleteObject mRGN
End Sub
Function CreateMyFont(nSize As Integer, nDegrees As Long) As Long CreateMyFont = CreateFont(-MulDiv(nSize, GetDeviceCaps(GetDC(0), LOGPIXELSY), 72), 0, nDegrees * 10, 0, FW_NORMAL, False, False, False, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "Times New Roman")
End Function
Private Sub Form_Paint()
BitBlt Me.hdc, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, mDC, 0, 0, vbSrcCopy
End Sub
Private Sub Form_Unload(Cancel As Integer) DeleteDC mDC
DeleteObject mBitmap End Sub
Private Sub Command1_Click() Dim usuario As String
Dim contraseña As String 'instertar datos En la aplicacion usuario = Text1.Text
contraseña = Text2.Text Text1.SetFocus
If usuario = "LIMBERG" And contraseña = "ALIZEE" Then FRM_CLAVE.Hide
FRM_WELLCOME.Show Else
13
Beep
mensaje = "TIENE QUE INTRODUCIR LOS DATOS CORRECTOS" estilo = vbOKOnly
titulo = "VISCOSIDAD DEL GAS" rpta = MsgBox(mensaje, estilo, titulo) End If
End Sub
Private Sub Command2_Click() Text1.Text = ""
Text2.Text = "" Text1.SetFocus End Sub
Private Sub Command3_Click() End
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
Text2.SetFocus End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
Text1.SetFocus End If
End Sub
Private Sub Text1_Change() Dim i As Integer
Text1.Text = UCase(Text1.Text) i = Len(Text1.Text)
Text1.SelStart = i End Sub
Private Sub Text2_Change() Dim i As Integer
Text2.Text = UCase(Text2.Text) i = Len(Text2.Text)
Text2.SelStart = i End Sub
14
Fig.7 FRM_ WELLCOME.
FRM_WELLCOME:
Option Explicit
'Declaraciones de funciones Api 'Crea la región
Private Declare Function CreateRoundRectRgn Lib "gdi32" ( _ ByVal X1 As Long, _
ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long, _ ByVal X3 As Long, _
ByVal Y3 As Long) As Long 'Establece la región
Private Declare Function SetWindowRgn Lib "user32" ( _ ByVal hwnd As Long, _
ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long
Private Sub Redondear_Formulario(El_Form As Form, Radio As Long) Dim Region As Long
15
Dim Ancho As Long Dim Alto As Long
Dim old_Scale As Integer ' guardar la escala
old_Scale = El_Form.ScaleMode ' cambiar la escala a pixeles El_Form.ScaleMode = vbPixels
'Obtenemos el ancho y alto de la region del Form Ancho = El_Form.ScaleWidth
Alto = El_Form.ScaleHeight
'Pasar el ancho alto del formualrio y el valor de redondeo .. es decir el radio Region = CreateRoundRectRgn(0, 0, Ancho, Alto, Radio, Radio)
' Aplica la región al formulario
Ret = SetWindowRgn(El_Form.hwnd, Region, True) ' restaurar la escala
El_Form.ScaleMode = old_Scale End Sub
Private Sub Command8_Click() FRM_MENU.Show
FRM_WELLCOME.Hide End Sub
Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 Call Redondear_Formulario(Me, 100)
16
End Sub
Private Sub Timer1_Timer()
'Declaramos la variable que almacenara el Índice de cada imagen del control ImageList.
Static IndiceImagen 'Incrementamos el Índice.
IndiceImagen = IndiceImagen + 1
'Cargamos en el PictureBox la imagen correspondiente al Índice incrementado. Image1.Picture = ImageList1.ListImages(IndiceImagen).Picture
'Cuando el Índice de la imagen sea igual al último (21), empezamos nuevamente.
'Esto hace que el ciclo repetitivo vuelva a iniciar. If IndiceImagen = 21 Then IndiceImagen = 0 End If End Sub Fig.8 FRM_ MENU. FRM_MENU:
17
Static msgpalabra, a As Integer Static mitexto As String
'Se crea variables Estáticas de tipo Integer y String
mitexto = "-BY:LIMBERG TOLA MAYTA-ING. PETROLERA-" msgpalabra = msgpalabra + 1
pctTitulo.Cls
'el método CLS limpia el contenido de pctTitulo pctTitulo.Print Mid$(mitexto, msgpalabra); mitexto;
'se imprime en el picturebox MITEXTO, desde el número de letra que valga MSGPALABRA, esto gracias a la función Mid$
If msgpalabra > Len(mitexto) Then msgpalabra = 1
'Si el valor de msgpalabra es mayor a la cantidad de letras de mitexto, entonces msgpalabra vuelve a ser 1
'esto para asegurar que el titulo siga reimprimiéndose más de una vez
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
' Desactiva el color de fondo de las opciones If Label3.BackStyle = 1 Then Label3.BackStyle = 0 If Label4.BackStyle = 1 Then Label4.BackStyle = 0 If Label5.BackStyle = 1 Then Label5.BackStyle = 0 If Label6.BackStyle = 1 Then Label6.BackStyle = 0 If Label7.BackStyle = 1 Then Label7.BackStyle = 0 End Sub
18
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
' Desactiva el color de fondo de las opciones If Label3.BackStyle = 1 Then Label3.BackStyle = 0 If Label4.BackStyle = 1 Then Label4.BackStyle = 0 If Label5.BackStyle = 1 Then Label5.BackStyle = 0 If Label6.BackStyle = 1 Then Label6.BackStyle = 0 If Label7.BackStyle = 1 Then Label7.BackStyle = 0 End Sub
Private Sub Label3_Click() FRM_MENU.Hide
FRM_MENU_DE_CALCULO.Show End Sub
Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
'Verifica si la Etiqueta NO tiene el color de fondo activado If Label3.BackStyle = 0 Then
Label3.BackStyle = 1 ' Permite que se establezca el color de fondo Label3.BackColor = &H8000& ' Pone el color verde
'Desactiva el color de fondo de las demás opciones Label2.BackStyle = 0
Label4.BackStyle = 0 Label5.BackStyle = 0 Label6.BackStyle = 0 End If
19
End Sub
Private Sub Label4_Click()
CommonDialog1.ShowOpen 'Muestra el cuadro de diálogo Abrir. End Sub
Private Sub Label4_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
'Verifica si la Etiqueta NO tiene el color de fondo activado If Label4.BackStyle = 0 Then
Label4.BackStyle = 1 ' Permite que se establezca el color de fondo Label4.BackColor = &H8000& ' Pone el color verde
'Desactiva el color de fondo de las demás opciones Label2.BackStyle = 0 Label3.BackStyle = 0 Label5.BackStyle = 0 Label6.BackStyle = 0 End If End Sub
Private Sub Label5_Click() FRM_MENU.Hide
CREDITOS.Show End Sub
Private Sub Label5_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
20
'Verifica si la Etiqueta NO tiene el color de fondo activado If Label5.BackStyle = 0 Then
Label5.BackStyle = 1 ' Permite que se establezca el color de fondo Label5.BackColor = &H8000& ' Pone el color verde
'Desactiva el color de fondo de las demás opciones Label2.BackStyle = 0 Label3.BackStyle = 0 Label4.BackStyle = 0 Label6.BackStyle = 0 End If End Sub
Private Sub Label6_Click() Beep
mensaje = "¿DESEA SALIR DEL SISTEMA?" estilo = vbOKCancel
titulo = "VISCOSIDAD DEL GAS NATURAL" rpta = MsgBox(mensaje, estilo, titulo)
If rpta = vbOK Then End
End If End Sub
Private Sub Label6_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
21
If Label6.BackStyle = 0 Then
Label6.BackStyle = 1 ' Permite que se establezca el color de fondo Label6.BackColor = &H8000& ' Pone el color verde
'Desactiva el color de fondo de las demás opciones Label2.BackStyle = 0 Label3.BackStyle = 0 Label5.BackStyle = 0 Label4.BackStyle = 0 End If End Sub
Private Sub Timer1_Timer()
'Declaramos la variable que almacenara el Índice de cada imagen del control ImageList.
Static IndiceImagen 'Incrementamos el Índice.
IndiceImagen = IndiceImagen + 1
'Cargamos en el PictureBox la imagen correspondiente al Índice incrementado. Image1.Picture = ImageList1.ListImages(IndiceImagen).Picture
'Cuando el Índice de la imagen sea igual al último (8), empezamos nuevamente.
'Esto hace que el ciclo repetitivo vuelva a iniciar. If IndiceImagen = 14 Then
IndiceImagen = 0 End If
End Sub
22
'Declaramos la variable que almacenara el Índice de cada imagen del control ImageList.
Static IndiceImagen 'Incrementamos el Índice.
IndiceImagen = IndiceImagen + 1
'Cargamos en el PictureBox la imagen correspondiente al Índice incrementado. Image2.Picture = ImageList2.ListImages(IndiceImagen).Picture
'Cuando el Índice de la imagen sea igual al último (8), empezamos nuevamente.
'Esto hace que el ciclo repetitivo vuelva a iniciar. If IndiceImagen = 7 Then
IndiceImagen = 0 End If
End Sub
Private Sub Timer3_Timer()
Label7.Caption = Format(Time, "HH:MM:SS AMPM") End Sub
Private Sub Timer4_Timer() Call mostrarmensaje
'Timer convoca a MOSTRARMENSAJE cada 250milisegundos, y es lo que da la impresión de que el titulo gire
23
Fig.9 FRM_ MENÚ DE CALCULO.
FR_MENÚ DE CALCULO:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Sub CALCULO_DE_LA_VISCOSIDAD_DEL_GAS_Click() FRM_MENU_DE_CALCULO.Hide
FRM_VISCOSIDAD.Show End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
' Desactiva el color de fondo de las opciones If Label3.BackStyle = 1 Then Label3.BackStyle = 0 End Sub
Private Sub
GRAFICO_DE_ERROR_DEL_METODO_DE_LEE_GONZALES_EAKIN_Cli c() FRM_GRAFICO_DE_ERROR.Show
24
End Sub
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
' Desactiva el color de fondo de las opciones If Label3.BackStyle = 1 Then Label3.BackStyle = 0 End Sub
Private Sub Label3_Click() FRM_MENU.Show
FRM_MENU_DE_CALCULO.Hide End Sub
Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
'‘Verifica si la Etiqueta NO tiene el color de fondo activado If Label3.BackStyle = 0 Then
Label3.BackStyle = 1 ' Permite que se establezca el color de fondo Label3.BackColor = &H8000& ' Pone el color verde
'Desactiva el color de fondo de las demás opciones End If End Sub Private Sub METODOS_PARA_EL_CALCULO_DE_LA_VISCOSIDAD_DEL_GAS_Click() FRM_MENU_DE_CALCULO.Hide FRM_EAKIN.Show End Sub
25
Private Sub Timer1_Timer()
'Declaramos la variable que almacenara el Índice de cada imagen del control ImageList.
Static IndiceImagen 'Incrementamos el Índice.
IndiceImagen = IndiceImagen + 1
'Cargamos en el PictureBox la imagen correspondiente al Índice incrementado. Image1.Picture = ImageList2.ListImages(IndiceImagen).Picture
'Cuando el Índice de la imagen sea igual al último (8), empezamos nuevamente.
'Esto hace que el ciclo repetitivo vuelva a iniciar. If IndiceImagen = 9 Then
IndiceImagen = 0 End If
End Sub
Private Sub Timer2_Timer()
Label2.Caption = Format(Time, "HH:MM:SS AMPM") End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Key
Case "MNUGUARDAR"
'Especifica el tipo de archivo que se podrán abrir.
CommonDialog1.Filter = "Archivos (*.PDF)|*.WORD|Archivos de TEXTO " CommonDialog1.ShowSave
26
CommonDialog1.ShowOpen Case "MNUCALCULADORA" FRM_CALCULADORA.Show
Case "MNUCAPTURAR LA PANTALLA" 'Captura toda la pantalla
keybd_event 44, 0, 0&, 0&
Case "MNUCAPTURAR LA VENTANA ACTIVA" 'Captura la ventana activa
keybd_event 44, 1, 0&, 0& Case "MNUAYUDA"
CommonDialog1.ShowHelp End Select
End Sub
Private Sub Z11_Click() Z1.Show
FRM_MENU_DE_CALCULO.Hide End Sub
Private Sub Z22_Click() Z2.Show
FRM_MENU_DE_CALCULO.Hide End Sub
Private Sub Z33_Click() Z3.Show
FRM_MENU_DE_CALCULO.Hide End Sub
27
Z4.Show
FRM_MENU_DE_CALCULO.Hide End Sub
Calculo de la viscosidad
Private Sub Command1_Click() FRM_MENU_DE_CALCULO.Show FRM_VISCOSIDAD.Hide
End Sub
Private Sub Command2_Click()
FRM_LEE_GONZALES_EAKIN.Show FRM_VISCOSIDAD.Hide
End Sub
Fig.10 FRM_ LEE GONZALES EAKIN.
FRM_LEE GONZALES EAKIN:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Sub Command1_Click()
28
Dim T, SG, p, Z As Single T = Val(Text1.Text) SG = Val(Text2.Text) p = Val(Text3.Text) Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) If Text3.Text = "" ThenMsgBox "DEBE DE INTRODUCIR DATOS DE PRESION" End If
If Text1.Text = "" Then
MsgBox "DEBE DE INTRODUCIR DATOS DE TEMPERATURA" End If
If Text4.Text = "" Then
MsgBox "DEBE DE INTRODUCIR DATOS DE Z" End If
If Text2.Text = "" Then
MsgBox "DEBE DE INTRODUCIR DATOS DE SG" End If
If T > 0 And Z > 0 And Z <= 1 Then
Text5.Text = p * 28.96 * SG / 10.7 * 1 / T * 1 / Z Else
MsgBox "!!!Los valores de T y Z deben de ser mayores a cero¡¡¡ Z debe ser menor de 1 o igual que 1"
End If End Sub
29
Private Sub Command10_Click() CommonDialog1.ShowPrinter End Sub
Private Sub Command2_Click() Dim T, SG, p, Z As Single T = Val(Text1.Text) SG = Val(Text2.Text) p = Val(Text3.Text) Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) If Text2.Text = "" Then
MsgBox "DEBE DE INTRODUCIR DATOS DE SG" End If
If SG > 0 Then
Text6.Text = SG * 28.96 Else
MsgBox "!!!Los valores de SG del GAS deben de ser mayores a cero¡¡¡" End If
End Sub
Private Sub Command4_Click() Dim T, SG, p, Z As Single T = Val(Text1.Text)
SG = Val(Text2.Text) p = Val(Text3.Text)
30
Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) If PM > 0 And T > 0 Then Text7.Text = (9.379 + 0.016 * PM) * T ^ (1.5) / (209.2 + 19.26 * PM + T) ElseMsgBox "!!!Los valores de T y PMG deben de ser mayores a cero¡¡¡" End If
End Sub
Private Sub Command5_Click() Dim T, SG, p, Z As Single T = Val(Text1.Text) SG = Val(Text2.Text) p = Val(Text3.Text) Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) If T > 0 Then Text8.Text = 3.448 + 986.4 / T + 0.01009 * PM Else
MsgBox "!!!Los valores de T deben de ser mayores a cero¡¡¡" End If
End Sub
31
Dim T, SG, p, Z As Single T = Val(Text1.Text) SG = Val(Text2.Text) p = Val(Text3.Text) Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) If T > 0 Then Text9.Text = 2.447 - 0.2224 * (3.448 + 986.4 / T + 0.01009 * PM) ElseMsgBox "!!!Los valores de T deben de ser mayores a cero¡¡¡" End If
End Sub
Private Sub Command7_Click()
Dim T, SG, p, Z, DG, K, PM, X, y As Single T = Val(Text1.Text) SG = Val(Text2.Text) p = Val(Text3.Text) Z = Val(Text4.Text) DG = Val(Text5.Text) PM = Val(Text6.Text) K = Val(Text7.Text) X = Val(Text8.Text) y = Val(Text9.Text)
32
End Sub
Private Sub Command8_Click() FRM_LEE_GONZALES_EAKIN.Hide FRM_VISCOSIDAD.Show
End Sub
Private Sub Command9_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Text1.SetFocus End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
33
If KeyAscii = 13 Then Text2.SetFocus End If
End Sub
Private Sub Text10_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el sig no de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If If KeyAscii = 13 Then Text3.SetFocus End If End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
34
End If If KeyAscii = 13 Then Text4.SetFocus End If End SubPrivate Sub Text4_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0 End If If KeyAscii = 13 Then Text1.SetFocus End If End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
Private Sub Text6_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
35
KeyAscii = 0 End If
End Sub
Private Sub Text7_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
Private Sub Text8_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
Private Sub Text9_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Key
36
Case "MNUGUARDAR"
'Especifica el tipo de archivo que se podrán abrir.
CommonDialog1.Filter = "Archivos (*.PDF)|*.WORD|Archivos de TEXTO " CommonDialog1.ShowSave
Case "MNUDOCUMENTOS" CommonDialog1.ShowOpen Case "MNUCALCULADORA" FRM_CALCULADORA.Show
Case "MNUCAPTURAR LA PANTALLA" 'Captura toda la pantalla
keybd_event 44, 0, 0&, 0&
Case "MNUCAPTURAR LA VENTANA ACTIVA" 'Captura la ventana activa
keybd_event 44, 1, 0&, 0& Case "MNUAYUDA"
CommonDialog1.ShowHelp End Select
End Sub
37
FRM_EAKIN:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Sub Command1_Click()
FRM_MENU_DE_CALCULO.Show FRM_EAKIN.Hide
End Sub
Private Sub Command2_Click() 'Captura la ventana activa keybd_event 44, 1, 0&, 0& End Sub
Private Sub Form_Load()
'Este bloque de código hace que todos los Picture se posiciones adecuadamente,
'dentro del control TabStrip.
'Este es un código estándar, lo podrá copiar en sus proyectos sin ningún problema.
Dim ctlControl As Object On Error Resume Next
For Each ctlControl In Me.Controls 'Recorremos todos los controles del formulario.
'Determinamos si el control leído es un Picture. If TypeOf ctlControl Is PictureBox Then
'Asignamos el tamaño y la posición adecuada al Picture leído. ctlControl.Move TabStrip1.ClientLeft, TabStrip1.ClientTop, _
38
TabStrip1.ClientWidth, TabStrip1.ClientHeight 'Quitamos los bordes del Picture.
ctlControl.BorderStyle = 0 End If
ctlControl.ListIndex = -1 DoEvents
Next ctlControl
'Hacemos que el primer Picture sea el que aparezca cada vez que cargue el formulario.
viscosidad.Visible = True End Sub
Private Sub TabStrip1_Click()
'Este es un truco para no tener que crear un array de controles. 'El siguiente bloque de código determina la ficha que es pulsada, 'y muestra el PictureBox correspondiente a esa ficha.
Dim ctlControl As Object On Error Resume Next
For Each ctlControl In Me.Controls 'Recorremos todos los controles del formulario.
'Verificamos si el control leído es un PictureBox. If TypeOf ctlControl Is PictureBox Then
'Verificamos si el nombre del Picture leído corresponde al Caption de la ficha. If ctlControl.Name = TabStrip1.SelectedItem.Caption The n
'Si es verdadera la comparación anterior ponemos el PictureBox Visible. ctlControl.Visible = True
39
'Si es falsa la comparación ponemos el Picture invisible. ctlControl.Visible = False End If End If ctlControl.ListIndex = -1 DoEvents Next ctlControl End Sub Fig.12 FRM_ CALCULADORA. FRM_CALCULADORA:
Private Sub cmdBoton1_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Redondea el valor de la caja de texto.
txtNumero.Text = Round(CDbl(txtNumero.Text))
End Sub
Private Sub cmdBoton10_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el coseno del valor de la caja de texto.
40
End Sub
Private Sub cmdBoton11_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula la tangente del valor de la caja de texto.
txtNumero.Text = Round(Tan(CDbl(txtNumero.Text) * (3.141592 / 180)), 14) End Sub
Private Sub cmdBoton12_Click()
'Te muestra en un cuadro de mensaje si el número es positivo o negativo . If Len(txtNumero.Text) > 0 Then
If Sgn(CDbl(txtNumero.Text)) = 1 Then MsgBox (" EL NUMERO ES POSITIVO ")
If Sgn(CDbl(txtNumero.Text)) = -1 Then MsgBox (" EL NUMERO ES NEGATIVO ")
End If End Sub
Private Sub cmdBoton13_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula la secante del valor de la caja de texto.
txtNumero.Text = Round(1 / Cos(CDbl(txtNumero.Text) * (3.141592 / 180)),14) End Sub
Private Sub cmdBoton14_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula la cosecante del valor de la caja de texto.
41
txtNumero.Text = Round(1 / Sin(CDbl(txtNumero.Text) * (3.141592 / 180)), 14) End Sub
Private Sub cmdBoton15_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula la cotangente del valor de la caja de texto.
txtNumero.Text = Round(1 / Tan(CDbl(txtNumero.Text) * (3.141592 / 180)), 14) End Sub
Private Sub cmdBoton16_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el arcotangente del valor de la caja de texto.
txtNumero.Text = Round(Atn(CDbl(txtNumero.Text) * (3.141592 / 180)), 14) End Sub
Private Sub cmdBoton2_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Elimina la parte decimal del valor de la caja de texto. txtNumero.Text = Int(CDbl(txtNumero.Text))
End Sub
Private Sub cmdBoton3_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcular el valor absoluto del valor de la caja de texto. txtNumero.Text = Abs(CDbl(txtNumero.Text))
42
Private Sub cmdBoton4_Click() 'Limpia la caja de texto.
txtNumero.Text = "" txtNumero.SetFocus End Sub
Private Sub cmdBoton5_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el logaritmo natural del valor de la caja de texto. txtNumero.Text = Log(CDbl(txtNumero.Text))
End Sub
Private S ub cmdBoton6_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el logaritmo base diez del valor de la caja de texto. txtNumero.Text = Log(CDbl(txtNumero.Text)) / Log(10) End Sub
Private Sub cmdBoton7_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula la raíz cuadrada del valor de la caja de texto. txtNumero.Text = Sqr(CDbl(txtNumero.Text))
End Sub
43
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el cuadrado del valor de la caja de texto.
txtNumero.Text = CDbl(txtNumero.Text) * CDbl(txtNumero.Text) End Sub
Private Sub cmdBoton9_Click()
On Error Resume Next 'En caso que la caja este vacía. 'Calcula el seno del valor de la caja de texto.
txtNumero.Text = Round(Sin(CDbl(txtNumero.Text) * (3.141592 / 180)), 14) End Sub
Private Sub SALIR_Click() FRM_CALCULADORA.Hide End Sub
Private Sub txtNumero_GotFocus()
'Hace que el punto de inserción se coloque al final de la caja. txtNumero.SelStart = Len(txtNumero.Text)
End Sub
Private Sub txtNumero_KeyPress(KeyAscii As Integer)
'Hace que una caja solo acepte números, el punto y el signo de menos. If InStr("0123456789.-" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End If End Sub
44
Private Sub txtNumero_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
txtNumero.SetFocus End Sub
Fig.13 FRM_ GRAFICO_DE_ERROR.
FRM_GRAFICO_DE_ERROR:
Private Sub Command2_Click() CommonDialog1.ShowPrinter End Sub
Private Sub Command8_Click() FRM_GRAFICO_DE_ERROR.Hide FRM_MENU_DE_CALCULO.Show End Sub
Private Sub Form_Load() Dim i As Long
45
FRM_GRAFICO_DE_ERROR.Cls FRM_GRAFICO_DE_ERROR.AutoRedraw = True FRM_GRAFICO_DE_ERROR.DrawStyle = 6 FRM_GRAFICO_DE_ERROR.DrawMode = 13 FRM_GRAFICO_DE_ERROR.DrawWidth = 2 FRM_GRAFICO_DE_ERROR.ScaleMode = 3 FRM_GRAFICO_DE_ERROR.ScaleHeight = (256 * 2) For i = 0 To 255 FRM_GRAFICO_DE_ERROR.Line (0, y)-(FRM_GRAFICO_DE_ERROR.Width, y + 2), RGB(0, 0, i), BF y = y + 2 Next i End Sub Fig.14 FRM_ Z1. FRM_Z1: Z1.Hide FRM_MENU_DE_CALCULO.Show End Sub46
Private Sub Form_Load() Dim i As Long Dim y As Long Z1.Cls Z1.AutoRedraw = True Z1.DrawStyle = 6 Z1.DrawMode = 13 Z1.DrawWidth = 2 Z1.ScaleMode = 3 Z1.ScaleHeight = (256 * 2) For i = 0 To 255
Z1.Line (0, y)-(Z1.Width, y + 2), RGB(0, 0, i), BF y = y + 2
Next i End Sub
47
FRM_Z2:
Private Sub Command2_Click() CommonDialog1.ShowPrinter End Sub
Private Sub Command8_Click() Z2.Hide
FRM_MENU_DE_CALCULO.Show End Sub
Private Sub Form_Load() Dim i As Long Dim y As Long Z2.Cls Z2.AutoRedraw = True Z2.DrawStyle = 6 Z2.DrawMode = 13 Z2.DrawWidth = 2 Z2.ScaleMode = 3 Z2.ScaleHeight = (256 * 2) For i = 0 To 255
Z2.Line (0, y)-(Z2.Width, y + 2), RGB(0, 0, i), BF y = y + 2
Next i End Sub
48
Fig.16 FRM_ Z3.
FRM_Z3:
Private Sub Command2_Click() CommonDialog1.ShowPrinter End Sub
Private Sub Command8_Click() Z3.Hide
FRM_MENU_DE_CALCULO.Show End Sub
Private Sub Form_Load() Dim i As Long
Dim y As Long Z3.Cls
Z3.AutoRedraw = True Z3.DrawStyle = 6
49
Z3.DrawMode = 13 Z3.DrawWidth = 2 Z3.ScaleMode = 3 Z3.ScaleHeight = (256 * 2) For i = 0 To 255Z3.Line (0, y)-(Z3.Width, y + 2), RGB(0, 0, i), BF y = y + 2
Next i End Sub
Fig.17 FRM_ Z4.
FRM_Z4:
Private Sub Command2_Click() CommonDialog1.ShowPrinter End Sub
Private Sub Command8_Click() Z4.Hide
50
End Sub
Private Sub Form_Load() Dim i As Long Dim y As Long Z4.Cls Z4.AutoRedraw = True Z4.DrawStyle = 6 Z4.DrawMode = 13 Z4.DrawWidth = 2 Z4.ScaleMode = 3 Z4.ScaleHeight = (256 * 2) For i = 0 To 255
Z4.Line (0, y)-(Z4.Width, y + 2), RGB(0, 0, i), BF y = y + 2
Next i End Sub
8. Datos de prueba:
Para la demostración de la aplicabilidad del método lee Gonzales y del programa, se plantea el siguiente ejemplo:
Utilizando el método de Lee Gonzales Eakin determinar la viscosidad
del gas natural teniendo en cuenta los siguientes datos:
Z= 0.792 2014.7 lpca 600°R
Sg(gas)= 0.75
Solución: Primero se introducen los datos respectivos al programa, manera que
51
Fig.18 datos introducidos en el programa.
A continuación debemos de oprimir los botones de y de
debidamente para poder obtener los resultados correspondientes:
Fig.19 resultados de la densidad del gas y el peso molecular.
En la figura 19 podemos ver los resultados pertinentes de la densidad del gas y su respectivo peso molecular, cabe recalcar que para el cálculo de la viscosidad
52
Fig.20 resultados de las constantes de Lee Gonzales Eakin.
A continuación procedemos a encontrar K, X, Y mediante las teclas . Esto
se observa en la grafica 20.
Fig.21 viscosidad del gas.
53
9. Resultados:
Del anterior problema podemos ver que el programa saco los resultados
correspondientes mediante el método de Lee Gonzales Eakin , dendonos un valor de la viscosidad del gas de : 0.02220546(cp).
Así como de los valores de:
Densidad del gas en lb/cf.
Peso molecular del gas en moles/lb-mol. K.
y. x.
10. conclusiones:
De una manera general podemos concluir que se cumplieron los objetivos propuestos, mediante el diseño del programa de VISCOSIDAD DEL GAS, teniendo en cuenta los demás métodos para el cálculo de la viscosidad así mismo de sus alcances en el cálculo de esta osea sus errores y complejidad de cálculo mediante correcciones.
Un problema que se encontró fue las unidades de la densidad con la que trabajaría la correlación ya que en michas bibliografías se contradecían dándonos datos erróneos de ecuaciones de Lee Gonzales Eakin; en consecuencia se pudo arreglar por así decirlo tales errores, afirmando que la densidad del gas para este método siempre debe de estar en las unidades de g/cc.
11. Bibliografía
VISUAL BASIC 6.0,ORIENTADO A BASES DE DATOS
SEGUNDA EDICIÓN
Carlos M. Rodriguez Bucarelly
TRABAJO ESPECIAL DE GRADO-GENERAR UN MODELO ANALÍTICO QUE PERMITA ESTIMAR PRESIÓN
MÍNIMA DE MISCIBILIDAD Y RECOBROS UTILIZANDO DISTINTOS GASES DE INYECCIÓN EN YACIMIENTOS DE CRUDO.
Landáez I., Rosa I. y Medina M., Elías E.
INGENIERIA DE YACIMIENTOS DE GAS CONDENSADO (2003). Gonzalo Rojas .
CORRELACIONES PVT. Carlos Banzer.