Академический Документы
Профессиональный Документы
Культура Документы
Trabajo presentado como requisito parcial para la obtencin del grado de:
Quito Ecuador
2015
DEDICATORIA
Al terminar una etapa ms en la vida, quiero dedicar ste trabajo a mis padres, Hctor Alfredo
y Blanca Lucila. A mi esposa Dora Irene, a mis hijas Emilia Simone y Milagros Valentina.
A mis hermanos: Nancy Carlota, Ana Guadalupe, Hctor Oswaldo (+), Hctor Alfredo y Luis
Roberto, que supieron apoyarme en cada una de las decisiones tomadas.
ii
AGRADECIMIENTOS
A mis amigos y compaeros de trabajo en Andespetroleum. Ing. Fabin Freire, por aquellas
travesas vividas cada maana en los viajes que realizbamos desde la ciudad de Ambato para
asistir a clases, sus consejos y su apoyo incondicional en cada una de las experiencias
subsistidas.
Finalmente, a todas aquellas personas, colegas y amigos que me brindaron su apoyo, tiempo e
informacin para el logro de este trabajo.
iii
AUTORIZACIN DE LA AUTORA INTELECTUAL
Yo, PROAO CARDENAS JUAN CARLOS en calidad de autor del trabajo de investigacin
o tesis realizada sobre SIMULACIN NUMRICA DE UN PROCESO DE SEPARACIN
TRIFSICO PARA UNA CORRIENTE DE HIDROCARBUROS, por la presente autorizo a
la UNIVERSIDAD CENTRAL DEL ECUADOR, hacer uso de todos los contenidos que me
pertenecen o de parte de los que contiene esta obra, con fines estrictamente acadmicos o de
investigacin.
Los derechos que como autor me corresponden, con excepcin de la presente autorizacin,
seguiran vigentes a mi favor, de conformidad con lo establecido en los artculos 5, 6, 8, 19 y
dems pertinentes de la Ley de Propiedad Intectual y su Reglamento.
C.C. 1803439916
iv
CERTIFICACIN
Certifico que el presente trabajo fue realizado en su totalidad por el Sr. Ing. JUAN CARLOS
PROAO CRDENAS como requisito parcial a la obtencin del ttulo de MAGISTER EN
PROCESOS INDUSTRIALES
v
CONTENIDO
1. EL PROBLEMA...............................................................................................................2
1.1 TEMA DE INVESTIGACIN ................................................................................... 2
1.2 PLANTEAMIENTO DEL PROBLEMA ................................................................... 2
1.3 HIPTESIS ................................................................................................................. 2
1.4 ANTECEDENTES ...................................................................................................... 2
1.5 OBJETIVOS................................................................................................................ 3
1.5.1 Objetivo general. .................................................................................................. 3
1.5.2 Objetivos especficos. .......................................................................................... 3
1.6 JUSTIFICACION........................................................................................................ 3
2. MARCO TERICO.........................................................................................................4
2.1. El petrleo. .................................................................................................................. 4
2.2. Flujo multifsico. ........................................................................................................ 4
2.3. Patrones de flujo. ......................................................................................................... 4
2.4. Facilidades de superficie. ............................................................................................ 7
2.4.1. Manifold. .............................................................................................................. 7
2.4.2. Separadores. ......................................................................................................... 8
2.4.3. Botas desgasificadoras. ........................................................................................ 8
2.4.4. Tanques. ............................................................................................................... 9
2.4.5. Tratadores. ......................................................................................................... 10
2.4.6. Unidades recuperadoras de vapor. ..................................................................... 10
2.4.7. Bombas. ............................................................................................................. 11
2.4.8. Vlvulas de control. ........................................................................................... 11
2.5. Coeficiente de Flujo. ................................................................................................. 13
2.6. Procesos de separacin .............................................................................................. 13
2.6.1. Tipos de procesos de separacin. ....................................................................... 13
2.6.2. Separacin por creacin de fase. ........................................................................ 15
3. MODELO MATEMATICO SEPARADOR TRIFASICO .........................................20
3.1. Propiedades de los fluidos. ........................................................................................ 20
3.1.1. Propiedades del petrleo. ................................................................................... 20
3.1.2. Propiedades del gas. ........................................................................................... 22
3.1.3. Propiedades del agua.......................................................................................... 24
3.2. Factor de compresibilidad del gas, ecuacin de estado de Peng - Robinson. .......... 25
3.3. Proceso del sistema de separacin ............................................................................ 27
3.3.1. Optimizacin del sistema. .................................................................................. 27
3.4. Leyes fundamentales del modelamiento ................................................................... 28
3.5. Mtodos de simulacin.............................................................................................. 31
3.6. Descripcin del modelo ............................................................................................. 31
3.7. rea del segmento circular. ....................................................................................... 33
3.8. Volumen del segmento circular del separador. ......................................................... 33
4. MODELO NUMERICO SEPARADOR TRIFASICO ...............................................36
4.1. Evaluacin del proceso.............................................................................................. 36
4.2. Desarrollo del modelo ............................................................................................... 37
vi
4.2.1. Clculo del volumen en el separador. ............................................................... 40
4.3. Flujo de crudo en el vertedero. .................................................................................. 41
4.4. Sistema de control ..................................................................................................... 42
4.4.1. Flujo de salida para lquidos y gases.................................................................. 43
4.5. Parmetros de variacin. ........................................................................................... 44
5. PROGRAMA COMPUTACIONAL Y VERIFICACION .........................................46
5.1. Algoritmo de programacin. ..................................................................................... 46
5.1.1. Algoritmo de programacin propiedades del petrleo....................................... 46
5.1.2. Algoritmo de programacin propiedades del gas. ............................................. 47
5.1.3. Algoritmo programacin factor de compresibilidad del gas.............................. 49
5.1.4. Algoritmo de programacin propiedades del agua. ........................................... 51
5.2. Estrategia de control del nivel de cmara de crudo. ................................................. 52
5.3. Estrategia de control del nivel colchn de agua cmara separacin. ........................ 52
5.4. Estrategia de control de la presin del separador. ..................................................... 52
5.5. Diagrama general estrategia de control del separador trifsico. ............................... 54
5.6. Lenguaje de programacin ........................................................................................ 55
5.7. Resultados obtenidos en la simulacin...................................................................... 55
5.8. Datos de entrada. ....................................................................................................... 55
5.9. Perturbaciones. .......................................................................................................... 56
5.9.1. Perturbacin de la fase gas. ................................................................................ 56
5.9.2. Perturbacin del agua. ........................................................................................ 58
5.9.3. Perturbacin crudo. ............................................................................................ 58
5.10. Verificacin de resultados ......................................................................................... 61
5.10.1. Propiedades fsico qumicas. .............................................................................. 61
5.10.2. Caudales proporcionados por el programa. ....................................................... 63
6. CONCLUSIONES Y RECOMENDACIONES ...........................................................66
6.1. Conclusiones ............................................................................................................. 66
6.2. Recomendaciones ...................................................................................................... 66
BIBLIOGRAFA ................................................................................................................67
vii
LISTADO DE TABLAS
viii
LISTADO DE FIGURAS
ix
Figura 2.23 Suposicin de flujo en un separador trifsico.......17
Figura 2.24 Trayectoria crtica real de las gotas y burbujas en un separador trifsico....18
Figura 3.1 Volumen de control arbitrario para la aplicacin de la ecuacin del balance de
momentum..30
x
Figura 5.17 Caudales de salida de crudo a distintas presiones.63
xi
ANEXOS
xii
RESUMEN
DESCRIPTORES:
xiii
ABSTRACT
One of the most important stages of the hydrocarbons production is the primary breakup of
oil, water and gas.
In the behavioral analysis of three phase of separators, a computing programme was designed
which allows to predict the fluid behaviour and its physics and chemistry properties using
correlations.
A computing programme was made to evaluate the separator performance, keeping in mind
the operating parameters, such as: pressure, temperature, specific gravities and fluid rates
coming from well.
DESCRIPTORS:
xiv
CERTIFICACIN DE TRADUCCIN
xv
xvi
INTRODUCCIN
El petrleo extrado est acompaado con agua en forma de emulsin la misma que requiere
un tratamiento, el contenido de agua incrementa con el tiempo y vara desde 1% hasta ms
all del 90%.
El flujo multifsico est caracterizado por patrones de flujo que son la distribucin de cada
una de las fases en el interior de las tuberas y por ende en los equipos de superficie, donde la
presin es uno de los factores importantes dentro de un sistema multifsico.
Bajo esta premisa es necesario lograr la caracterizacin de los sistemas existentes mediante el
modelado, el cual depende en gran medida de la informacin obtenida del proceso. Teniendo
a disposicin las leyes fsicas y dinmicas que gobiernan dicho proceso, as como datos
fidedignos del proceso.
Para lo cul es necesario un conocimiento de las leyes fsicas del proceso de separacin, la
conservacin de la masa, gases ideales y la disponibilidad de los datos geomtricos del
separador. Donde la interactuacin de todos estos elementos permite efectuar de manera
precisa el modelaje del comportamiento de dicho proceso.
1
CAPTULO I
1 EL PROBLEMA
Resumen
ste captulo est orientado a la bsqueda de una modelacin del proceso de separacin
trifsico para corrientes de hidrocarburos.
La industria del petrleo ha llevado a que las etapas de separacin en superficie adquiera una
gran importancia ya que permiten aumentar la calidad del crudo.
Una fase muy importante dentro de la deshidratacin de crudo es la separacin de cada una
de las corrientes producidas, y de esta manera maximizar la recuperacin de hidrocarburos
lquidos.
Los resultados presentados en la simulacin servirn como punto de partida para el diseo y
posteriormente como comparativo entre el estado real de la planta con el de su diseo.
1.3 HIPTESIS
1.4 ANTECEDENTES
2
b) Correlaciones Numricas PVT, Autor: Carlos Banzer. En el presente trabajo describe una
revisin de las propiedades fsicas de los fluidos y las correlaciones aplicadas para la
detrminacin de las mismas., tanto para elsubsuelo como en superficie.
c) API 12J., Specification and Oil and Gas Separators. Sptima Edicin.
1.5 OBJETIVOS
1.5.1 Objetivo general.
1.6 JUSTIFICACION
Lo cual nos permite predecir de una manera ms acertada las propiedades fsico-qumicas en
cada una de las corrientes presentes, y como complemento a la utilizacin de la simulacin
numrica hace de este trabajo una herramienta til que facilita el anlisis de los distintos
equipos de separacin.
3
CAPTULO II
2. MARCO TERICO
Resumen
En este captulo se describe una breve resea histrica de los primeros pozos petroleros
perforados en el Ecuador. Los principales equipos que conforman las plantas de
procesamiento primario en superficie y cada uno de los diferentes tipos de procesos de
separacin.
2.1. El petrleo.
El flujo de fluido multifsico es un fluido simultneo de gas libre y lquidos a travs de una
tubera, donde el gas puede estar mezclado en forma homognea con el lquido o puede
coexistir formando oleajes en el que el gas empuja al lquido, o el gas y el lquido fluyen en
forma paralela.
En el flujo multifsico existe un tipo de flujo para cualquier instante de tiempo, los patrones
de flujo se clasifican:
4
a) Flujo tipo burbuja
b) Flujo intermitente tipo pistn
c) Flujo estratificado suave
d) Flujo estratificado ondulante
e) Flujo intermitente tipo tapn
f) Flujo anular
g) Flujo tipo roco
A mayor cantidad de gas las burbujas se unen y forman secciones alternadas de gas y lquido
a lo largo de la tubera, con una fase continua de lquido en el fondo. En la figura 2.2 se
muestra este tipo de flujo. Mayor informacin podr encontrarse en [7], pginas 126-130.
En este tipo de fluido el gas fluye a lo largo de la tubera en el tope y el lquido en el fondo.
La fase es relativamente suave y la fraccin ocupada por cada fase tiende a permanecer
constante, para mayor referencia consultar [7], pginas 126-130. En la siguiente figura se
muestra este tipo de flujo.
5
Figura. 2.3 Flujo estratificado suave.
Cuando el flujo de gas es mucho mayor que el de lquido, el gas se mueve ms rpido que el
lquido y la friccin entre estos dos fluidos forman olas de lquido, en la figura 2.4 se ilustra
esta clase de fluido. Mayor detalle consultar [7], pginas 126-130.
Cuando el gas alcanza cierto valor crtico, las crestas de las olas de lquido forman tapones
espumosos. En la estructura del tapn de gas el lquido es presionado de manera que el gas
ocupa la mayor parte del rea de flujo, como se muestra en la figura 2.5. Mayor referencia
[7], pginas 126-130. Figura 2.1 Flujo intermitente tipo tapn
Flujo anular.
El lquido fluye como una pelcula anular a lo largo de la tubera, mientras que el gas fluye
como un ncleo a alta velocidad en el centro de la misma, mayor referencia ver [7], pginas
126 -130. En la siguiente figura se muestra este tipo de flujo.
6
Figura. 2.6 Flujo anular.
Flujo tipo roco.
Cuando la velocidad del gas es lo suficientemente alta, toda la pelcula de lquido se separa
de la pared y es arrastrada por el gas como gotas. La figura 2.7 ilustra este tipo de flujo.
Mayor informacin ver [7], pginas 126-130.
Una facilidad de produccin tiene como finalidad recolectar, direccionar, medir, procesar,
distribuir y transportar la produccin de los pozos productores.
2.4.1. Manifold.
El manifold de distribucin es un arreglo de tuberas donde converger cada uno de los pozos
productores, cuya funcin es direccionar la produccin de los pozos hacia los diferentes
procesos del sistema, donde la presin es ecualizada al ingreso de los separadores.
Cada uno de los pozos puede ser direccionado a un separador de prueba con la finalidad de
ser evaluados en su capacidad de produccin. En la figura 2.8 se ilustra el manifold de
distribucin, mayor detalle ver referencia bibliogrfica [8].
7
2.4.2. Separadores.
La separacin de mezclas constituye uno de los procesos ms complejos debido a los
mltiples componentes de los que estn constituidos los flujos multifsicos, y a las
diferencias de densidades presiones de vapor y otras caractersticas fsicas.
8
2.4.4. Tanques.
Tanque de lavado.
Los tanques de lavado o decantacin, son equipos donde la presin de trabajo est cercana a
la atmosfrica y son utilizados para completar el proceso de deshidratacin de crudo
proveniente de los separadores.
Tanques de almacenamiento.
Los tanques de almacenamiento reciben el crudo proveniente de los tanques de lavado, y
albergan el producto hasta ser transferido al oleoducto de transferencia. En la figura 2.11 se
ilustra la clasificacin de los tanques, para mayor referencia consultar [8].
(a) (b)
(c)
Figura. 2.11 Clases de tanques: (a) por su construccin (soldado), (b) por su forma (esfrico)
y (c) por su funcin (techo flotante).
9
2.4.5. Tratadores.
Los tratadores trmicos son equipos estticos, empleados para separar emulsiones petrleo
agua. El tratamiento trmico se realiza a los fluidos emulsionados con la finalidad de reducir
la viscosidad del petrleo y aumentar la coalescencia de las gotas de agua. En la figura 2.12
se muestra este tipo de equipo, mayor informacin referirse a [8].
10
2.4.7. Bombas.
Las bombas son mquinas que absorben energa mecnica y transfieren al fluido que las
atraviesa en energa hidrulica, sirven para impulsar toda clase de lquidos.
La clasificacin de estas se encuentran en dos grandes grupos como son las rotodinmicas y
las de desplazamiento positivo.
a) Segn la direccin de flujo: bombas de flujo radial, de flujo axial y de flujo radioaxial.
b) Segn la posicin del eje: bombas de eje horizontal, de eje vertical y de eje inclinado.
c) Segn la presin engendrada: bombas de baja presin, de media presin y de alta presin.
d) Segn el nmero de flujos en la bomba: de simple aspiracin y de doble aspiracin.
e) Segn el nmero de rodetes: de un escalonamiento o de varios escalonamientos.
Las vlvulas son unos de los instrumentos de control ms esenciales en la industria. stas
pueden abrir y cerrar, conectar y desconectar, regular, modular o aislar una enorme serie de
lquidos y gases.
Las vlvulas de control constan de dos partes que son el actuador y el cuerpo, en la figura
2.14 puede verse una vlvula de control tpica. Para mayor detalle [9] pginas 365-366.
11
Figura. 2.14 Vlvula de control.
Dependiendo del tipo de aplicacin tenemos vlvulas de apertura rpida, lineal, parablica e
igual porcentaje, para mayor informacin ver [9] pginas 380-381, en la figura 2.15 se
muestra los modelos de control de estas vlvulas.
Existen tres modelos de control, el de accin proporcional (P) donde la seal de error
actuante es proporcional a la seal de error, de accin integral (I) donde la seal de error es
proporcional al tiempo integral y el de accin derivativa (D) donde la seal actuante es
proporcional al tiempo derivativo de la seal de error.
12
Acciones Bsicas de Control Combinacin Acciones Bsicas
Proporcional (P) Proporcional-Integral (PI)
Derivador (D) Proporcional-Derivativo (PD)
Integrador (I) Proporcional-integral-Derivativo (PID)
( )
( ) ( ) ( )
El coeficiente de flujo Cv de una vlvula es la tasa de flujo de agua que atraviesa cuando se
encuentra completamente abierta, con una prdida de presin de 1 psi.
En la siguiente tabla se muestra valores tpicos para vlvulas de bola, para mayor detalle ver
[2] pgina 176.
Dimetro 1 1 2 2 3 4 6 8
Lineal 20.1 34.9 65.3 86.5 135 212 417 836
13
Durante el contacto, los componentes de la mezcla se redistribuyen entre las fases y se
separan por cualquier mtodo fsico simple.
Seleccionando las condiciones y fases apropiadas, una fase se enriquece mientras que la otra
se empobrece en uno o ms componentes.
14
Separacin por barrido.
La separacin por barrido utiliza micro-poros y membranas no porosas para un proceso a
diferentes tasas de difusin. En la figura 2.18 se puede ver este tipo de separacin, mayor
detalle ver [22] pginas 5-14.
15
Para la clasificacin de los separadores por creacin de fase se ha elaborado el siguiente
mapa conceptual.
Horizontales
Construccin
Verticales
Bi-fsico
Clasificacin
Tipo de
de los
Separacin
Separadores
Tri-fsico
Produccin
Utilizacin
Prueba
Figura. 2.20 Clasificacin de los separadores.
16
Todos los separadores verticales y horizontales pueden ser usados para la separacin trifsica,
independientemente de la forma. En este caso el agua es la impureza que prevalece en la
mezcla y debe ser retirada antes de liberar los productos finales. Se debe evitar la emulsin
de agua con alguno de los otros fluidos. Si ste se emulsiona ser necesario el uso de
qumicos, calor u otro mtodo para romperla.
El comportamiento del fluido en un separador trifsico se idealiza como flujo tipo pistn,
donde el patrn de flujo se muestra en la Fig.2.23. Mayor detalle referirse a [13], pginas 1-7.
El flujo tipo pistn es asumido tericamente como caminos lineales para que estos puedan ser
simulados numricamente. El tamao, la forma y la distribucin de las partculas son
fundamentales en el anlisis de un separador.
Trayectoria crtica.
La trayectoria crtica que deben seguir las gotas y burbujas para atravesar cada una de las
fases contnuas de separacin, dependen directamente de la velocidad de flujo de entrada, las
17
cuales cambian la trayectoria del flujo de gotas y burbujas. Fig.2.24., stas son idealizadas
para simplificar la trayectoria crtica Fig.2.25. Mayor detalle referirse a [13], pginas 1-7.
Figura. 2.24 Trayectoria crtica real de las gotas y burbujas en un separador trifsico.
Niveles de fase.
Los equipos se encuentran diseados para flujos promedios que incluyen niveles mnimos y
mximos en funcin de los sets de nivel, los cuales estn basados en las condiciones de
operacin del sistema. Mayor detalle referirse a [13], pginas 1-7.
18
Figura. 2.26 Control de nivel en un separador trifsico.
donde: HHLL es high high liquid level (nivel lquido alto alto), HLL es high liquid level
(nivel lquido alto), NLL es normal liquid level (nivel normal lquido), LLL es low liquid
level (bajo nivel lquido ), LLLL es low low liquid level (nivel liquido bajo bajo), HHIL es
high high linterface level (nivel interface alto alto), HIL es high interface level (nivel
interface alto), NIL es normal interface level (nivel normal interface), LIL es low interface
level (nivel interface bajo), LLIL es low low interface level (nivel interfase bajo bajo).
19
CAPTULO III
Resumen
En este captulo se consideran algunos conceptos muy elementales de las propiedades de los
fluidos presentes en la etapa de separacin como son: gravedad especfica, densidad, peso
molecular, viscosidad y el factor de compresibilidad para la fase gaseosa. Adems se expone
la ecuacin para el cambio de volumen en el separador.
20
Pero mediante los anlisis qumicos se ha determinado que posee miles de distintos
compuestos pertenecientes a 18 series de hidrocarburos.
Por eso se realizan anlisis qumicos simplificados, se miden las fracciones parafinas desde
C1 hasta C5. Las ms pesadas se agrupan como fracciones compuestas denominada C6+,
caracterizadas por su peso molecular.
Gravedad Especfica.
La gravedad especfica del petrleo se define como la razn entre la densidad del petrleo y
la densidad del agua.
S o . (1)
141.5
S o (2)
API 131.5
donde: es la gravedad especfica del petrleo (adimensional), API es la gravedad API del
petrleo en [oAPI] (unidades de campo), es la densidad del agua medida en [kg/m3]
(unidades en S.I.), es la densidad del petrleo medida en [kg/m3] (unidades en S.I.).
Viscosidad.
La viscosidad de un fluido es una medida de la friccin interna o resistencia que ofrecen sus
molculas a fluir, en el caso del petrleo se determina mediante la correlacin de Beggs y
Robinson. Mayor detalle referencia bibliogrfica [5] pginas 48-99.
o
10 -1 (3)
donde:
21
es la viscosidad del petrleo medida en [cp] (unidades de campo) [Pa-s] (unidades S.I.),
Ta es la temperatura del yacimiento en [F] (unidades de campo) [K] (unidades S.I.).
El gas de formacin o gas natural contiene tpicamente 0.6 a 0.8 porcentaje molar de metano,
con hidrocarburos C2 a C5 cada vez en menor proporcin, adems puede contener impurezas
como nitrgeno, dixido de carbono y sulfuro de hidrgeno. Los dos ltimos son corrosivos
en presencia de agua.
Las propiedades del gas se las calculan a partir de su composicin, donde es indispensable
contar con un anlisis cromatogrfico del mismo. Las propiedades relacionadas con el gas se
describen a continuacin.
Peso molecular.
El peso molecular de un gas est determinado con las fracciones molares de los componentes
del gas. Ver referencia bibliogrfica [5] pginas 2-3.
, (5)
La densidad del gas se estima en funcin del peso molecular, la constante universal de los
gases, la presin y temperatura de operacin. Mayor detalle referirse a [5] pginas 2-3.
PM
g
(6)
RT
donde: es la densidad del gas, medida en lb/ft3 (unidades de campo) [Kg/m3] (unidades
S.I.), P es la presin medida en [psia] (unidades de campo) [Pa] (unidades S.I.),
T es la temperatura medida en [R] (unidades de campo) [K] (unidades S.I.), z es el factor de
compresibilidad (adimensional), R es la constante universal de los gases 10.7314 [psia-
ft3/lbmol-R] (unidades de campo) o 8314.34 [ Pa-m3/Kgmol-K] (unidades S.I.).
22
Viscosidad del gas.
a) A bajas presiones (menores a 1000 psia) a medida que aumenta la temperatura aumenta la
viscosidad del gas debido al incremento de la energa cintica de las molculas que
producen gran nmero de choches intermoleculares.
b) A elevadas presiones (mayores a 1000 psia) a medida que aumenta la temperatura
disminuye la viscosidad del gas debido a la expansin trmica donde las distancias
intermoleculares son pequeas.
c) A cualquier temperatura, la viscosidad de un gas aumenta con el incremento de presin.
d) Cuando un gas es ms pesado, sus molculas sern ms grandes y su viscosidad mayor.
N M12 PC 23
0.00046 . 7
g
TC 16
Si Tr 1.5 tenemos:
N 0.00034 Tr 0.94 . 8
Si Tr 1.5 tenemos:
0.625
N 0.0001778 (4.58 Tr -1.67) . 9
En el cual:
5
[9 (Top 32)] 273
Tr 10
TC
23
TC yi TiC 11
PC yi PiC 12
donde: es la viscosidad del gas en [cp] (unidades de campo) [Pa-s] (unidades S.I.), M es el
peso molecular [lb-mol] (unidades de campo) [Kg-mol] (unidades S.I.), Tc es la temperatura
crtica medida en [oK] (unidades S.I.), Top es la temperatura operacin [oF] (unidades de
campo) [oK] (unidades S.I.), Tr es la temperatura reducida medida en [oK] (unidades S.I.),
yi es la fraccin molar (adimensional), Pc es la presin critica medida en [Pa] (unidades S.I.).
Las propiedades de los gases tpicos que se encuentran en los pozos petroleros se presentan
en el Anexo A.
Densidad.
( )
[ ( ) ]
donde : es la densidad del agua en [lb/ft3] (unidades de campo) [kg/m3] (unidades S.I.),
T es la temperatura medida en [K].
24
Tabla 3.1 Coeficientes de la densidad del agua.
Viscosidad.
La viscosidad del agua se determina por medio de la correlacin de Van Wingen, donde la
viscosidad del agua est en funcin de la temperatura, referencia bibliogrfica [5] pgina 127.
10 2 T 1.982 10 5 T2
e1.003 1.479 14
donde: es la viscosidad del gas en [cp] (unidades de campo) [Pa-s] (unidades S.I.), T es la
temperatura medida en [oK] (unidades S.I.).
( )
v v(v ) (v )
25
( )
( )
[ ( )] ( )
donde:
. (19)
[ ( ) ( )] ( )
( )
donde: P es la presin del sistema en [psi] (unidades de campo) [Pa] (unidades del S.I.),
T es la temperatura del sistema en [oR] (unidades de campo) [K] (unidades S.I.), a es el
parmetro de atraccin de la mezcla en [lb ft5/s2 mol2], es el factor adimensional, b es el
parmetro de repulsin de la mezcla [lb ft5/s2 mol2], v es el volumen molar [ft3/lbmol], es
el coeficiente de interaccin binaria entre los componentes i,j, R es la constante universal de
los gases 10.7314 [psia-ft3/lbmol-R] (unidades de campo) o 8314.34 [ Pa-m3/Kgmol-K]
(unidades S.I.), Pc :es la presin crtica en [psi] (unidades de campo) [Pa] (unidades S.I.),
Tc es la temperatura crtica [oR] (unidades de campo) [K] (unidades S.I.), i es el componente
ensimo de la mezcla.
De la ecuacin de estado de Peng Robinson, mayor detalle ver referencia [17], pginas 23-27,
se obtiene una expresin que permite determinar el factor de compresibilidad z el cual est
dado por la siguiente ecuacin cbica:
3 (B 1) 2
(A 3B2 2B) (B3 B2 AB) 0 22
26
la misma que ser desarrollada por el mtodo de Newton Raphson, referirse a [23], pginas
88-90, para determinar su solucin. Es decir, si:
f( i )
i 1 i 23
f( i ) f( i 1 )
i i1
aP
A 25
(RT)2
bP
B . 2
RT
En el proceso de separacin de cada una de las fases presentes en los hidrocarburos, se debe
determinar las condiciones ms adecuadas de operacin. Siendo la ms importante la presin
de funcionamiento del separador, para la recuperacin de lquidos a las condiciones de
almacenamiento del hidrocarburo. Tericamente para obtener mayor cantidad de lquidos
recuperados se debe disponer de varias etapas de separacin.
( )
donde,
27
( )
( )
( )
( )
( )
28
( ) ( ) ( )
( )
{ } { }
{ }
Por el teorema del transporte Reynolds se tiene que:
[ ( )] ( )
( ) ( )
( ) ] [ ( )
( ) ] [ ( )
[ ( ) ( ) ] ( )
( )
29
Ley de la conservacin de la energa.
, (39)
donde: Ein es la energa de ingreso al sistema, Eout es la energa de salida del Sistema y Esis es
el cambio de energa.
De la ecuacin (39), aplicada a la termodinmica nos conduce a la siguiente expresin:
U 40
Dado que el impulso es una cantidad vectorial, el balance de momento es una ecuacin
vectorial. Donde la gravedad es la nica fuerza que acta sobre el cuerpo, el principio de
momento lineal, aplicado a un volumen de control arbitrario nos proporciona la siguiente
expresin, como se muestra en la figura 3.1.
( ) ( )
donde, g es el vector gravedad, tn es la fuerza por unidad de rea del fluido circundante en el
volumen de control, Va es el volumen de control, Aa es la superficie de control, n vector
normal, w es la velocidad lmite y v es la velocidad del fluido. Mayor detalle ver [20],
captulo 6, pgina 6.
30
3.5. Mtodos de simulacin.
Los mtodos de simulacin deben ser resueltos por un algoritmo de solucin. Para un proceso
en estado estacionario el modelo numrico est constituido por sistemas de ecuaciones
no-lineales que pueden ser resueltas mediante: mtodo modular secuencial, mtodo orientado
a ecuaciones y el mtodo modular simultneo.
Este mtodo implica la interpretacin del diagrama de flujo del proceso como un grupo de
unidades de proceso (equipos), para cada uno de los cuales existen subrutinas de clculo.
Cada subrutina calcula las variables de las corrientes de salida de dicha unidad de proceso
con base al modelo matemtico correspondiente. Mayor detalle referirse a [18], pgina 50.
Este mtodo fusiona las ventajas de los dos mtodos anteriormente descritos, tienen un
manejo ms eficiente de las ecuaciones donde se requiere mltiples ciclos. Mayor detalle
referirse a [18], pginas 59-61.
Los modelos matemticos de un proceso como este (objeto de nuestro estudio) son el
elemento esencial para explicar algn tipo de fenmeno e identificar tanto cualitativamente
como cuantitativamente el proceso estudiado a fin de obtener las caractersticas del sistema.
Para la obtencin del modelo del separador trifsico se realiza las siguientes suposiciones:
a) Se desprecia los efectos trmicos por intercambio de calor entre el separador y el medio
ambiente (el separador se encuentra aislado trmicamente).
b) Se desprecia la influencia de agentes qumicos (no influyen en cambio alguno en las
propiedades fsico-qumicas).
c) No existe arrastre de lquido en la fase gaseosa (trampas de condensados).
31
El primer paso es definir las propiedades y las condiciones de los fluidos, las propiedades se
determinan a partir de la prueba assay (compilacin de datos de laboratorio que define las
propiedades de un crudo) que determinan las propiedades del crudo y el anlisis PVT que
determina las propiedades del gas.
El segundo paso es establecer las condiciones de operacin como son: presin de trabajo en
[psi], temperatura en [oF] y caudales en [BPD]. Donde la presin de trabajo debe garantizar el
flujo hacia los dems equipos utilizados en el proceso de deshidratacin.
En la figura 3.2, se muestra un separador trifsico controlado por dos vlvulas controladoras
de nivel (colchn agua y crudo) y una para el control de la presin del separador (gas), que
son retroalimentadas y de esta manera obtener el porcentaje de apertura de las mismas.
La presencia del vertedero entre la cmara de separacin y la cmara de crudo generar los
diferentes niveles que conforman la separacin trifsica, para lo cual se ha desarrollado la
figura 3.2.
En la cual el vertedero aislar una cmara de la otra y de esta manera se obtendr un crudo
limpio (bajo en porcentaje de BSW).
donde: P es la presin del separador en [psi] (medida de campo), Gin es el flujo de entrada
en fase gaseosa en [mscfd] (medida de campo), Ein es el flujo de entrada en fase emulsionada
en [BPD] (medida de campo), Win es el flujo de entrada en fase acuosa en [BPD] (medida de
campo), Gout es el volumen de salida fase gaseosa en [mscfd ] (medida de campo),
Oout es el volumen de salida fase oleosa en [BPD] (medida de campo), Wout es el volumen
de salida fase acuosa en [BPD] (medida de campo), hl es la altura fase oleosa en la cmara de
32
crudo en [m] (medida de campo), ht es la altura total de lquido en la cmara de separacin en
[m] (medida de campo), hw es la altura fase acuosa en la cmara de separacin en [m]
(medida de campo), Sg es la fraccin de abertura de la vlvula de gas (adimensional), So es la
fraccin de abertura de la vlvula de crudo (adimensional), Sw es la fraccin de abertura de la
vlvula de agua en (adimensional).
( ) ( ) ( )
( )
( )
donde: A es el rea del segmento circular ocupado por el lquido, L es la longitud del lquido
ocupado en el separador y D el dimetro del separador.
[ ( ) ( )] ( )
[ ( ) ( )] ( )
( ) ( )
[ ( ) ] ( )
33
( ) ( )
( )
( ) ( )
( )
se concluye
( ) ( )
141.5
Gravedad especfica: S o .
API 131.5
Viscosidad : o
10 -1 .
Peso molecular : .
PM
Densidad : g
.
RT
N M12 PC 23
Viscosidad: 0.00046 .
g TC 16
34
Propiedades fsicas del agua.
Densidad: .
[ ( ) ]
35
CAPTULO IV
Resumen.
En esta seccin tratamos el balance de masa como evaluacin del proceso presentando en
ecuaciones bsicas de balance de fluidos: petrleo, agua y gas. Y se detalla la secuencia de
clculo para determinar las propiedades fsicas de dichos fluidos.
Adems se detalla el desarrollo del modelo, all analizamos el balance de los fluidos en cada
una de las secciones del separador trifsico que son necesarios para comprender el
comportamiento del proceso de separacin.
Para desarrollar el modelo numrico del separador trifsico se debe tener un entendimiento de
la fsica del sistema de separacin, con lo cual se pueda representar el mismo mediante
ecuaciones diferenciales ordinarias.
Las ecuaciones a desarrollar son tanto para el lazo de nivel como para el lazo de presin.
Considerando el balance general de masa del lquido en el separador para el lazo de nivel se
tiene:
( )
Donde : es el rea del segment circular en [m] (unidades del S.I.), es la altura de lquido
en [m] (unidades del S.I.), t es el tiempo en [s] (unidades del S.I.), es el caudal de lquido
de ingreso en [BFPD] (unidades de campo) [m3/s] (unidades del S.I.) y es el caudal de
lquido de salida en [BFPD] (unidades de campo) [m3/s] (unidades del S.I.).
De manera anloga al lazo de nivel, se presenta para para el lazo de presin cuya ecuacin se
deduce ms adelante, la cual proviene de la ecuacin de los gases ideales:
( )
( )
donde: es la presin del separador en [psi] (unidades de campo) [Pa] (unidades del S.I.),
es el caudal de lquido de ingreso en [BFPD] (unidades de campo) [m3/s] (unidades del
36
S.I.), es el caudal de lquido de salida en [BFPD] (unidades de campo) [m3/s] (unidades
del S.I.), es el caudal de gas de ingreso en [SCFPD] (unidades de campo), es el
caudal de gas de salida en [SCFPD] (unidades de campo), es el volumen del separador en
[m3] (unidades S.I.), es el volumen cmara de separacin en [m3] (unidades S.I.) y es el
volumen cmara de crudo en [m3] (unidades S.I.).
Antes de iniciar el anlisis de la parte dinmica, es preciso determinar las propiedades fsico-
qumicas de los fluidos las cules fueron calculadas en el captulo precedente mediante
principios fsicos fundamentales o a travs de correlaciones empricas y datos de laboratorio
necesarios.
Luego de lo cul se ingresa las propiedades geomtricas del separador como longitud y
dimetro. Posteriormente se ingresar los niveles de trabajo tanto de la cmara de crudo como
de la cmara de separacin o set point y los coeficientes de flujo de las vlvulas de control.
Finalmente se obtiene la caracterizacin del separador trifsico de tipo horizontal bajo las
condiciones establecidas.
( )
( )
( )
37
Balance de petrleo en la cmara de crudo.
( )
( )
( )
( )
( )
( )
donde: Win es el caudal de ingreso de agua, Wout es el caudal de salida de agua, Lcs longitud
de la cmara de separacin, hw altura del agua en la cmara de separacin y D el dimetro
del separador.
Balance de gas.
38
( )
( ) ( )
que es una funcin dependiente del tiempo. Derivando respecto de t, obtenemos la relacin
( )
( ) ( )
De la ecuaciones (57) y (59) en (64) obtenemos, mayor detalle ver [24] pginas 10-15,
( )
( ) ( )
El flujo molar del gas de entrada y salida estn representadas por las siguientes ecuaciones:
( )
( )
( )
39
( )
donde
( ) ( )
( )
( )
El volumen de lquido en la cmara de separacin est dado por las siguientes ecuaciones,
( ) ( )
[ ( ) ] ( )
[( ) ( ) ( ) ( )] ( )
( ) ( )
[ ( ) ] ( )
40
[( ) ( ) ( ) ( )] ( )
( ) ( )
[ ( ) ] ( )
[( ) ( ) ( ) ( )] ( )
( )
Para determinar el flujo de lquido que sale a travs del vertedero se utiliza la frmula de
presa, referirse a [20] captulo-10, pgina 19, para el modelo del separador es:
[ ( )]( ) ( )
( ) ( )
41
4.4. Sistema de control
Todo el proceso interacta a travs de las variables de salida cuyo valor se desea conocer; las
variables manipuladas, que pueden ser modificadas durante el proceso; y las perturbaciones.
42
El controlador compensa la seal de error que es la derivacin del nivel actual de fluido
respecto al set point, y genera una seal que acta sobre la vlvula de control.
Las vlvulas de salida de los fluidos crudo, agua y gas son modeladas en funcin de flujo
unidireccional. Para mayor detalle referirse a [9], pginas 428 465.
El caudal de salida de crudo por la vlvula. Mayor detalle ver [11], paginas 41-42, viene dado
por :
( )
De manera anloga al flujo de salida de crudo se realiza el balance de masa para la cmara de
separacin. Mayor detalle ver [11], paginas 41-42,
[ ( )] ( )
43
de campo) o [Pa] (unidades S.I.), es la gravedad especfica del crudo (adimensional),
es ladensidad del agua en [lb/ft3] (unidades de campo) o [kg/m3] (unidades S.I.), es la
altura del colchn de agua en la cmara de separacin en [ft] (unidades de campo) o [m]
(unidades S.I.) y es la gravedad en [ft/s2] (unidades de campo) o [m/s2] (unidades S.I.).
El flujo de gas que atraviesa por la vlvula de control esta dada por la siguiente expresin
( )( ) ( )
( )
Adems de las variables primarias de campo tenemos las variables del separador trifsico que
tambin son susceptibles de variacin.
44
Temperatura del separador.
Set point.
Las constantes de las vlvulas de control generalmente no son modificables puesto que una
vez realizada las sintonizaciones estas permanecern constantes.
Cualquier variacin en dichas variables puede incurrir en una inestabilizacin del sistema.
45
CAPTULO V
Resumen.
En este captulo se ejecuta los diagramas de flujo de cada una de las propiedades de los
fluidos detalladas en el tercer captulo, se implementar un cdigo de clculo que permita
estimar estas propiedades en el proceso de la separacin trifsica.
Debido a la naturaleza del proceso, la solucin de las ecuaciones que componen el modelo
matemtico proporcionar una buena estimacin de las variables involucradas.
De acuerdo a las ecuaciones presentadas en el resumen de los captulos anteriores se elabora
los respectivos algoritmos que se presenta a continuacin.
PROPIEDADES DEL
CRUDO
PARAMETROS DE
ENTRADA
( 0 00 0 ) 6
[ ]
-1
46
5.1.2. Algoritmo de programacin propiedades del gas.
PARAMETROS DE ENTRADA
DENSIDAD
47
Algoritmo programacin viscosidad del gas.
En base a la ecuacin (7), (8) y (9) se elabora el siguiente algoritmo.
PARAMETROS DE ENTRADA
TEMPERATURA REDUCIDA
[ ( )]
N
O
S
I
9
( )
48
5.1.3. Algoritmo programacin factor de compresibilidad del gas.
En base a las ecuaciones (22), (25) y (26) se elabora el siguiente algoritmo.
FACTOR DE
COMPRESIBILIDAD Z
PARAMETROS DE ENTRADA
[ ( )]
49
1 2 3
()
( ) ( ) ( )
FACTOR
COMPRESIBILIDAD
Z
50
5.1.4. Algoritmo de programacin propiedades del agua.
En base a las ecuaciones (13) y (14) se elabora el siguiente algoritmo.
PARAMETROS DE ENTRADA
DENSIDAD
[ ( ) ]
VISCOSIDAD
79 9 5
51
5.2. Estrategia de control del nivel de cmara de crudo.
La figura 5.6 muestra el modelo realizado en Simulink del controlador de nivel, donde K es
el conversor de seal analgico a digital (0,75 psig/mA), e K1 representa la ganancia del
actuador de la vlvula. Mayor detalle se puede consultar en [23], pgina 773.
La figura 5.7 muestra el modelo elaborado en Simulink del controlador de nivel, del colchn
de agua en la cmara de separacin, donde K es el conversor de seal analgico a digital
(0,75 psig/mA), y K1 representa la ganancia del actuador de la vlvula, y las constantes del
controlador respectivamente.
La figura 5.8 muestra el modelo ejecutado en Simulink del controlador de presin, del
casquete de gas en el separador, donde K es el conversor de seal analgico a digital (0,75
psig/mA), y K1 representa la ganancia del actuador de la vlvula, y las constantes del
controlador respectivamente.
52
Figura. 5.8 Control de presin separador.
53
5.5. Diagrama general estrategia de control del separador trifsico.
54
5.6. Lenguaje de programacin
La aplicacin del diseo se realiz sobre un caso de estudio real, donde el punto de partida es
la informacin suministrada por campo.
Para el caso en estudio se toman los datos otorgadas por los anlisis cromatogrficos del gas
tabla 5.1 (Anexo B), y condiciones pre-establecidas tabla 5.2 (Anexo G).
Para un crudo de densidad 200 API y un caudal de 2000 BFPD, se tiene los correspondientes
valores de componentes mostrados en la tabla 5.1.
VALORES CROMATOGRAFICOS
COMPONENTE % MOLAR
VAPOR DE AGUA 12.9813
NITROGENO 3.9604
DIOXIDO DE CARBONO 51.5352
METANO 15.0215
ETANO 3.3403
PROPANO 6.5507
ISO-BUTANO 1.5202
N-BUTANO 3.0903
ISO-PENTANO 1.1901
N-PENTANO 0.6001
N-HEXANO 0.16
N-HEPTANO 0.0500
TOTAL 100
55
Tabla. 5.2 Parmetros mecnicos del separador.
5.9. Perturbaciones.
56
Resultado de la perturbacin de presin.
Como se aprecia en las figuras 5.10 y 5.11, el sistema inicia con un flujo de caudal de salida
cero hasta los 420 segundos donde la presin empieza a sobrepasar el set point.
Luego a los 500 segundos sufre un incremento de caudal de gas con una perturbacin
sinusoidal donde con el incremento repentino la presin llega hasta los 80 psi, el tiempo de
respuesta de la vlvula de control es de 300 segundos hasta estabilizar el sistema.
Posteriormente con el incremento de la presin en su set, bajo las mismas condiciones de
caudal el tiempo de respuesta de la vlvula es de 300 segundos y el sistema ha sido
estabilizado.
57
5.9.2. Perturbacin del agua.
La segunda perturbacin la realizamos en el flujo de ingreso y el control del colchn de agua
en la cmara de separacin con una variacin tipo sinusoidal y escaln, tabla 5.5.
PERTURBACION AMPLITUD
Sinusoidal 0.4
Flujo
Tiempo 1000
Escaln 0.2
Set point
Tiempo 1200
PERTURBACION AMPLITUD
Sinusoidal 0.02 Flujo
Tiempo 300
Escaln -0.2 Set point
Tiempo 1500
58
Figura.5.12 Caudal ingreso y salida de agua.
59
Figura.5.14 Caudal de ingreso y salida de crudo.
60
5.10. Verificacin de resultados
5.10.1. Propiedades fsico qumicas.
En esta ventana como se muestra en la figura 5.16. se ingresa los datos de la cromatografa del gas, presin y temperatura de operacin adems
de los datos mecnicos del separador.
61
Se han relacionado los datos de la densidad (Anexo B), cuya variable es subsecuente para la
determinacin de la simulacin, con los obtenidos en laboratorio.
densidad densidad
Temperatura presin error
(cromatografa) (programa)
F psi Kg/m3 Kg/m3
158 30 2.6389 2.43 0.07916177
32 14.7 1.6478 1.5 0.08969535
59 14.7 1.5593 1.37 0.12140063
77 14.7 1.5057 1.32 0.12333134
140 14.7 1.5598 1.18 0.24349276
62
5.10.2. Caudales proporcionados por el programa.
Se puede determinar que a mayor presin de operacin del sistema se puede recuperar mayor volumen de hidrocarburos as:
Se recuperan 0.0158 m^3/s (8586 BOPD) a una presin de trabajo de 120 psi.
63
De la Figura 5.18 se determina:
Se recuperan 0.006 m^3/s (3260 BGPD) a una presin de trabajo de 60 psi.
Se recuperan 0.006 m^3/s (3260 BGPD) a una presin de trabajo de 80 psi.
Al tener la misma capacidad de recuperacin en caudal de gas se determina que la presin ptima de trabajo se encuentra 60 a 80 psi.
As como se ha determinado el comportamiento del separador para distintos escenarios con cada una de las perturbaciones mencionadas en
funcin del tiempo, tambin se ha podido desarrollar nomogramas como los mostrados en la Figura 5.19., en funcin del corte de agua y la
presin de separacin.
64
Caudal vs. Presin
Crudo [BPD] Gas [MCFPD]
5,000 1800,0
4,500 1600,0
4,000 1400,0
3,500
1200,0
3,000
1000,0
2,500
800,0
2,000
600,0
1,500
1,000 400,0
0,500 200,0
0,000 0,0
0 50 100 150 200 250 300 350 400 450 500 550
gas 15% gas 30% gas 50% gas 80% oil 15% oil 30% oil 50% oil 80%
El anexo G muestra el caudal de lquido y gas recuperado para un vasto rango de presiones a distintos cortes de agua.
65
CAPTULO VI
6. CONCLUSIONES Y RECOMENDACIONES
6.1. Conclusiones
6.2. Recomendaciones
66
BIBLIOGRAFA
[1] API 12J., Specification and Oil and Gas Separators. Sptima Edicin. Washington1989.
[3] ARNOLD, Ken y STEWART, Maurice. Emulsions and Oil Treating Equipment, Editorial
Elsevier, Oxford, 2009.
[5] BANZER, Carlos, Correlaciones Numricas PVT [en lnea], 1996, [fecha de
consulta: 10 de Julio2013], disponible en:
<http://oilproduction.net/cms/files/correlaciones%20PVT-Carlos%20Banzer.pdf>.
[6] BENALCAZAR, Hernn, Resultados Fundamentales del Anlisis Vectorial. (2, 2010,
Quito, Ecuador). Universidad Central del Ecuador. Quito, 2010.
[10] DIONNE, Marc. The Simulation of a Three Phase Separator. Trabajo de Grado. Master
en Ciencias en Ingeniera Qumica. Universidad de Calgary. Departamento de Ingeniera
Qumica y Petrleo. Ottawa. CA, 1998.
67
[12] GONZALES, Ral, Apuntes de Simulacin y Optimizacin: Estrategias de Solucin en
el Modelado de Procesos, 12(80): 12-18, Abril 1995.
[15] ISA-75.01.01-2007. Flow Equations for Sizing Control Valves. Carolina del Norte.
2007.
68
[22] SEADER, J. y HENLEY, E, Separation Process Principles, Chapter 1, Editorial
Hamilton 1998.
[25] VERON, Smith y ARNOLD, Kenneth, Emulsion and Oil Treating an Equipment,
Editorial Elsevier, Oxford, 2009.
69
ANEXOS
70
71
Anexo.B. Cromatografa gases
72
Anexo.C. Coeficiente Cv de las vlvulas de control tipo globo
73
Anexo D. Coeficientes presin ptima.
74
Anexo E. Variacin de niveles en el separador trifsico.
( ( )) ( )
donde A es el rea del segmento circular ocupado por el lquido, h es la altura del lquido
ocupado, r es el radio del separador y es el ngulo central.
Como: , se tiene
( ( )) ( )
y de la relacin ( ) , se obtiene:
( ( ) ( )) ( )
( ( ) ( )) ( )
donde:
( ) ( )
( ) ( )
( )
( ( ) ( ) ) ( )
75
De la ecuacin (e) en (h) se obtiene
D2 2h D2 2h 2h 2
A ar cos (1 ) (1
) 1 (1 )
4 D 4 D D
( )
( ) ( ) ()
76
Anexo F. Desarrollo de la solucin en Matlab.
try
fname = 'PRUEBAquinta';
format long;
if exist(fname,'file') == 4
% If it does then check whether it's open
if bdIsLoaded(fname)
else
open_system(fname,'window')
end
end
catch
close(0);
end
handles.model_name=fname;
77
handles.colgdc_factorA=5; % factor acntrico pag. 184 Perry
handles.colgdc_PresionMpa=6; % presin critica elemento pg. 184 Perry
handles.colgdc_PresionPsi=7; % Transformacion de presin
handles.colgdc_TempCritica=8; % temperatura critica pg. 184 Perry handles.colgdc_cuno=9;
% constante C1 pg. 102 Perry
handles.colgdc_cdos=10; % constante C2 pg. 102 Perry
handles.colgdc_ctres=11; constante C3 pg. 102 Perry y
handles.colgdc_ccuatro=12; constante C4 pg. 102 Perry handles.colgdc_ccinco=13; %
constante C5 pg. 102 Perry pg. 102 Perry
handles.colgdc_PresVPa=14; % presin vapor en Pa
handles.colgdc_PresVPsi=15; % presin vapor en psi
handles.colgdc_Salida=16; % condicin de estado
handles.colgdc_Estado=17;
handles.output = hObject;
handles.C=12; % peso atmico carbn
handles.N=14; % peso atmico nitrgeno
handles.O=16; % peso atmico oxigeno
handles.H=1; % peso atmico hidrgeno
% carga de valores Ingresados
if exist('values.dat','file')==0
defaultData = [158 0 0 30 0 20 190 10.7314 0 0 0 0];
%get(handles.ParametrosConstantes,'data');
dlmwrite('values.dat',defaultData,'precision',12,'delimiter',';')
%currData = get(handles.ParametrosConstantes,'data');
%disp(currData);
end
valuesData=dlmread('values.dat',';');
set(handles.temp_F,'string',valuesData(1));
set(handles.presion_psi,'string',valuesData(4));
set(handles.api,'string',valuesData(6));
set(handles.temp_yacimiento,'string',valuesData(7));
set(handles.const_gas_r,'string',valuesData(8));
% Update handles structure
guidata(hObject, handles);
function varargout = CalculoT_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function slider1_Callback(hObject, eventdata, handles)
function slider1_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
function totalyipsi_Callback(hObject, eventdata, handles)
function totalyipsi_CreateFcn(hObject, eventdata, handles)
78
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function totalyitr_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.
function totalyitr_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function varA_Callback(hObject, eventdata, handles)
function varA_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function varB_Callback(hObject, eventdata, handles)
function varB_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function factam_Callback(hObject, eventdata, handles)
function factam_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
79
function viscosidad_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton4_Callback(hObject, eventdata, handles)
function pushbutton5_Callback(hObject, eventdata, handles)
function frac_moral_Callback(hObject, eventdata, handles)
function frac_moral_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function grav_espec_Callback(hObject, eventdata, handles)
function grav_espec_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
funtion visco_Callback(hObject, eventdata, handles)
function visco_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Actualizar_Callback(hObject, eventdata, handles) %actualizar datos
ActualizarData(hObject, eventdata, handles);
function const_gas_r_Callback(hObject, eventdata, handles)
function const_gas_r_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function const_gas_f_Callback(hObject, eventdata, handles)
function const_gas_f_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function const_gas_k_Callback(hObject, eventdata, handles)
function const_gas_k_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function api_Callback(hObject, eventdata, handles)
function api_CreateFcn(hObject, eventdata, handles)
.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
80
set(hObject,'BackgroundColor','white');
end
function temp_yacimiento_Callback(hObject, eventdata, handles)
function temp_yacimiento_CreateFcn(hObject, eventdata, handles)
.if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function presion_psi_Callback(hObject, eventdata, handles)
function presion_psi_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function presion_pa_Callback(hObject, eventdata, handles)
function presion_pa_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function temp_F_Callback(hObject, eventdata, handles)
function temp_F_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function temp_K_Callback(hObject, eventdata, handles)
function temp_K_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function temp_R_Callback(hObject, eventdata, handles)
function temp_R_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function viscom_Callback(hObject, eventdata, handles)
function viscom_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pesom_Callback(hObject, eventdata, handles)
function pesom_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
81
function temprm_Callback(hObject, eventdata, handles)
function temprm_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function densg_Callback(hObject, eventdata, handles)
function densg_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function densgmtres_Callback(hObject, eventdata, handles)
function densgmtres_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function viscompas_Callback(hObject, eventdata, handles)
function viscompas_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function tempsr_Callback(hObject, eventdata, handles)
function tempsr_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function factz_Callback(hObject, eventdata, handles)
function factz_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function presioncmpsi_Callback(hObject, eventdata, handles)
function presioncmpsi_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function factorn_Callback(hObject, eventdata, handles)
function factorn_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function guardar_Callback(hObject, eventdata, handles) % guarda cambios
SaveWorkspace(hObject, eventdata, handles);
82
display('guardado');
function ActualizarData(hObject, eventdata, handles)
RecalcularGrilla(hObject, eventdata, handles);
RecalcularTodo(hObject, eventdata, handles);
%ActualizaC(hObject, eventdata, handles);
SaveWorkspace(hObject, eventdata, handles);
function CalculosIngreso(hObject, eventdata, handles)
caudal=str2double(get(handles.ccaudal,'string'));
PORBSW=str2double(get(handles.cbsw,'string'));
ppsi=str2double(get(handles.presion_psi,'string'));
agua_flujo= (caudal*PORBSW)/100;
gas_flujo=(caudal-agua_flujo)*0.4946*2.7182^(-0.0082*ppsi);
crudo_flujo=(caudal-agua_flujo)-gas_flujo;
set(handles.ccrudo,'string',crudo_flujo)
set(handles.cagua,'string',agua_flujo)
set(handles.cgas,'string',gas_flujo)
function CalcularAceite(hObject, eventdata, handles)
GravEsp=get(handles.grav_espec,'string');
dencA=str2double(GravEsp)*1000;
set(handles.denc,'string',dencA);
%Actualiza los datos en el simulink
function SaveWorkspace(hObject, eventdata,handles)
try
gData=get(handles.GrillaData,'data');
fileID = fopen('saved.dat','w');
for i=1:size(gData,1)
try
v13=gData{i,handles.colgdc_Salida};
v13 = strrep(v13, '<html><span style="color: #FF0000; font-weight: bold;">',
v13 = strrep(v13, '</span></html>','');
v1=gData{i,handles.colgdc_nombre};
v2=gData{i,handles.colgdc_abrev};
v3=gData{i,handles.colgdc_formula};
v4=gData{i,handles.colgdc_fractM};
v5=gData{i,handles.colgdc_factorA};
v6=gData{i,handles.colgdc_PresionKpa};
v7=gData{i,handles.colgdc_PresionPsi};
v8=gData{i,handles.colgdc_TempCritica};
v9=gData{i,handles.colgdc_cuno};
v10=gData{i,handles.colgdc_cdos};
v11=gData{i,handles.colgdc_ctres};
v12=gData{i,handles.colgdc_ccuatro};
v14=gData{i,handles.colgdc_ccinco};
v15=gData{i,handles.colgdc_PresVPa};
v16=gData{i,handles.colgdc_PresVPsi};
v17=gData{i,handles.colgdc_Estado};
fprintf(fileID,'%s;%s;%s;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%1
83
2.12f;%12.12f;%12.12f;%12.12f;%12.12f;%s;%d\n',v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12
,v14,v15,v16,v13,v17);
catch
errordlg('Ocurrio un error al guardar los datos intentelo mas tarde.','Valor
incorrecto','modal')
fclose(fileID);
try
delete('saved.dat');
catch
end
return;
end
end
fclose(fileID);
% carga de valores Ingresados
defaultData = zeros(1,12);
defaultData(1,1)=str2num(get(handles.temp_F,'string'));
defaultData(1,2)=str2num(get(handles.temp_K,'string'));
defaultData(1,3)=str2num(get(handles.temp_R,'string'));
defaultData(1,4)=str2num(get(handles.presion_psi,'string'));
defaultData(1,5)=str2num(get(handles.presion_pa,'string'));
defaultData(1,6)=str2num(get(handles.api,'string'));
defaultData(1,7)=str2num(get(handles.temp_yacimiento,'string'));
defaultData(1,8)=str2num(get(handles.const_gas_r,'string'));
defaultData(1,9)=str2num(get(handles.const_gas_f,'string'));
defaultData(1,10)=str2num(get(handles.const_gas_k,'string'));
defaultData(1,11)=str2num(get(handles.grav_espec,'string'));
defaultData(1,12)=str2num(get(handles.visco,'string'));
dlmwrite('values.dat',defaultData,'precision',12,'delimiter',';')
catch
errordlg('Ocurrio un error al guardar los datos intentelo mas tarde.','Valor
incorrecto','modal')
return ;
end
function string = cell2str(cellstr)
if nargin~=1
error('CELL2STR:Nargin','Takes 1 input argument.');
end
if ischar(cellstr)
string = ['''' strrep(cellstr,'''','''''') ''''];
return
end
if ~iscellstr(cellstr)
error('CELL2STR:Class','Input argument must be cell array of strings.');
end
if ndims(cellstr)>2
error('CELL2STR:TwoDInput','Input cell array must be 2-D.');
end
ncols = size(cellstr,2);
for i=1:ncols-1
84
cellstr(:,i) = cellfun(@(x)['''' strrep(x,'''','''''') ''','],...
cellstr(:,i),'UniformOutput',false);
end
if ncols>0
cellstr(:,ncols) = cellfun(@(x)['''' strrep(x,'''','''''') ''';'],...
cellstr(:,ncols),'UniformOutput',false);
end
cellstr = cellstr';
string = ['{' cellstr{:} '}'];
function LoadGrillaCalculos(hObject, eventdata, handles)
gData=get(handles.GrillaData,'data');
%carga de datos guardados
% carga de constantes
if exist('dataconst.dat','file')==0
defaultData = [0.343 22064 3200.1 647.1 73.649 -7258.2 -7.3037 4.1653E-06 2;
0.037 3396 492.5 126.19 58.282 -1084.1 -8.3144 0.044127 1;
0.224 7377 1069.9 304.13 140.54 -4735 -21.268 0.040909 1;
0.011 4599 667.0 190.56 39.205 -1324.4 -3.4366 0.000031019 2;
0.098 4872 706.6 305.33 51.857 -2598.7 -5.1285 0.000014913 2;
0.149 4244 615.5 369.77 59.078 -3492.6 -6.0669 0.000010919 2;
0.197 3640 527.9 407.82 66.343 -4363.2 -7.046 9.4509E-06 2;
0.197 3798 550.9 425.12 66.343 -4363.2 -7.046 9.4509E-06 2;
0.251 3381 490.4 460.4 78.741 -5420.3 -8.8253 9.6171E-07 2;
0.251 3370 488.8 469.7 78.741 -5420.3 -8.8253 9.6171E-07 2;
0.304 3012 436.9 433.7 104.65 -6995.5 -12.702 0.000012381 2;
0.346 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2;
0.999666333 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2;
0.346 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2;
0.346 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2;
0.346 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2;
0.346 2736 396.8 540.3 87.829 -6996.4 -9.8802 7.2099E-06 2];
%get(handles.ParametrosConstantes,'data');
dlmwrite('dataconst.dat',defaultData,'precision',12,'delimiter',';')
%currData = get(handles.ParametrosConstantes,'data');
%disp(currData);
end
constData=dlmread('dataconst.dat',';');
%carga de grilla guardada
if exist('saved.dat','file') == 0
defaultNames={'agua';'nitrogeno';'monoxido carb';'metano';'etano';'propano';'i-butano';'n-
butano';'i-pentano';'n-pentano';'hexano';'heptano';'octano';'nonano';'decano';'un
decano';'dodecano';' tridecano';'AC SULFURICO'};
defaultAbrev={'H2O';'N2';'CO2';'CO2';'C2';'C3';'IC4';'NC4';'IC5';'NC5';'NC6';'NC7';'NC8';'N
C9';'NC10';'NC11';'NC12';'NC13';'H2S'};
defaultForms={'H*2+O';'N*2';'C+O*2';'C+H*4';'C*2+H*6';'C*3+H*8';'C*4+H*10';'C*4+H*
10';'C*5+H*12';'C*5+H*12';'C*6+H*14';'C*7+H*16';'C*8+H*18';'C*9+H*20';'C*10+H*22';
'C*11+H*24';'C*12+H*26';'C*13+H*28';'H*2+C'};
defaultData = [1 1 1 0.1298 0.343 21.94 3182.13 647.10 73.65 -7258.20 -7.304 4.1650E-06
2.00 2.51E+03 3.63E-01;
85
1 1 1 0.0396 0.037 3.39 491.68 126.19 58.28 -1084.10 -8.314 4.4127E-02 1.00 6.68E+08
9.69E+04;
1 1 1 0.5154 0.224 7.39 1071.83 304.13 140.54 -4735.00 -21.268 4.0909E-02 1.00 5.89E+06
8.55E+02;
1 1 1 0.1502 0.011 4.59 665.72 190.56 39.21 -1324.40 -3.437 3.1019E-05 2.00 5.68E+07
8.24E+03;
1 1 1 0.0334 0.098 4.85 703.43 305.33 51.86 -2598.70 -5.128 1.4913E-05 2.00 3.86E+06
5.59E+02;
1 1 1 0.0655 0.149 4.21 610.61 369.77 59.08 -3492.60 -6.067 1.0919E-05 2.00 8.62E+05
1.25E+02;
1 1 1 0.0152 0.197 3.77 546.79 425.12 66.34 -4363.20 -7.046 9.4500E-06 2.00 2.16E+05
3.13E+01;
1 1 1 0.0309 0.197 3.77 546.79 425.12 66.34 -4363.20 -7.046 9.4500E-06 2.00 2.16E+05
3.13E+01;
1 1 1 0.0119 0.251 3.36 487.33 469.70 78.74 -5420.30 -8.825 9.6171E-06 2.00 5.91E+04
8.57E+00;
1 1 1 0.006 0.251 3.36 487.33 469.70 78.74 -5420.30 -8.825 9.6171E-06 2.00 5.91E+04
8.57E+00;
1 1 1 1.60E-03 0.304 3.04 440.91 507.60 104.65 -6995.50 -12.702 1.2381E-05 2.00
1.71E+04 2.48E+00;
1 1 1 0.0005 0.346 2.72 394.50 540.20 87.83 -6996.40 -9.880 7.2099E-06 2.00 4.98E+03
7.22E-01;
1 1 1 0 0.396 2.47 358.24 568.70 96.08 -7900.20 -11.003 7.1802E-06 2.00 1.50E+03 2.17E-
01;
1 1 1 0.00E+00 0.446 2.31 335.04 594.60 109.35 -9030.40 -12.882 7.8544E-06 2.00
4.52E+02 6.56E-02;
1 1 1 0 0.488 2.09 303.13 617.70 112.73 -9749.60 -13.245 7.1266E-06 2.00 1.38E+02 1.99E-
02;
1 1 1 0 0.530 1.95 282.82 639.00 131.00 -11143.00 -15.855 8.1871E-06 2.00 4.10E+01
5.95E-03;
1 1 1 0 0.577 1.82 263.97 658.00 137.47 -11976.00 -16.698 8.0906E-06 2.00 1.28E+01
1.86E-03;
1 1 1 0 0.617 1.68 243.66 675.00 137.45 -12549.00 -16.543 7.1275E-06 2.00 3.99E+00
5.78E-04;
1 1 1 0 0.096 9.00 1305.34 373.53 85.58 -3839.90 -11.199 1.8848E-02 1.00 1.83E+06
2.66E+02;];
fileID = fopen('saved.dat','w');
for i=1:size(defaultNames,1)
try
fprintf(fileID,'%s;%s;%s;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%1
2.12f;%12.12f;%12.12f;%12.12f;%12.12f;%s;%d\n',defaultNames{i},defaultAbrev{i},defaul
tForms{i},defaultData(i,handles.colgdc_fractM),defaultData(i,handles.colgdc_factorA),defau
ltData(i,handles.colgdc_PresionKpa),defaultData(i,handles.colgdc_PresionPsi),defaultData(i,
handles.colgdc_TempCritica),defaultData(i,handles.colgdc_cuno),defaultData(i,handles.colg
dc_cdos),defaultData(i,handles.colgdc_ctres),defaultData(i,handles.colgdc_ccuatro),defaultD
ata(i,handles.colgdc_ccinco),defaultData(i,handles.colgdc_PresVPa),defaultData(i,handles.co
lgdc_PresVPsi),'LIQUIDO',1);
catch
86
errordlg('Ocurrio un error al guardar los datos intentelo mas tarde.','Valor
incorrecto','modal')
fclose(fileID);
try
delete('saved.dat');
catch
end
close(0);
return
end
end
fclose(fileID);
end
fileID = fopen('saved.dat','r');
try
TVals = textscan(fileID,'%s %s %s %f %f %f %f %f %f %f %f %f %f %f %f %s
%d','delimiter',';','EmptyValue',0);
catch
errordlg('Ocurrio un error al cargar los datos intentelo mas tarde.','Valor incorrecto','modal')
fclose(fileID);
try
delete('saved.dat');
catch
end
close(0);
return
end
fclose(fileID);
try
rows=size(TVals{1},1);
cols=size(gData,2);
for i=1:rows
for j=1:cols
if j==handles.colgdc_nombre || j == handles.colgdc_abrev || j == handles.colgdc_formula || j
== handles.colgdc_Salida
Valor=TVals{j};
gData{i,j}=Valor{i};
elseif j==handles.colgdc_Estado
Valor=TVals{j};
if Valor(i)==1
gData{i,j}=true;
else
gData{i,j}=false;
end
else
Valor=TVals{j};
gData{i,j}=Valor(i);
end
end
end
87
set(handles.GrillaData,'data',gData);
catch
try
delete('saved.dat');
catch
end
errordlg('No es posible cargar los datos guardados pueden que estos esten
corruptos.','Valor incorrecto','modal')
close(0);
end
function RecalcularTodo(hObject, eventdata, handles)
%calculo temperatura F K R
valor_F = str2num(get(handles.temp_F,'string'));
if isnan(valor_F)
errordlg('Es necesario ingresar un valor numerico','Valor incorrecto','modal')
uicontrol(handles.temp_F)
return
end
resultado=(5*(valor_F-32)/9)+273.15;
set(handles.temp_K,'string',resultado);
resultado=(valor_F-32)+491.67;
set(handles.temp_R,'string',resultado);
%calculo presin en Pascales
valor_psi = str2num(get(handles.presion_psi,'string'));
if isnan(valor_psi)
errordlg('Es necesario ingresar un valor numerico','Valor incorrecto','modal')
uicontrol(handles.presion_psi)
return
end
resultado=valor_psi*6894.75;
set(handles.presion_pa,'string',resultado);
%calculo const_gas
valor_gr = str2num(get(handles.const_gas_r,'string'));
if isnan(valor_gr)
errordlg('Es necesario ingresar un valor numerico','Valor incorrecto','modal')
uicontrol(handles.const_gas_r)
return
end
resultado=(valor_gr*2.2*460.67)/1000;
set(handles.const_gas_f,'string',resultado);
resultado=resultado/255.9278;
set(handles.const_gas_k,'string',resultado);
88
set(handles.visco,'string',visco);
function RecalcularGrilla(hObject, eventdata, handles)
data=get(handles.GrillaData,'data');
rows=size(data,1);
temp_K=str2num(get(handles.temp_K,'string'));
suma_frac=0;
for i=1:rows
%calculo presin de vapor
if isnumeric(data{i,handles.colgdc_cuno})
c1=data{i,handles.colgdc_cuno};
else
c1=str2num(data{i,handles.colgdc_cuno});
end
if isnumeric(data{i,handles.colgdc_cdos})
c2=data{i,handles.colgdc_cdos};
else
c2=str2num(data{i,handles.colgdc_cdos});
end
if isnumeric(data{i,handles.colgdc_ctres})
c3=data{i,handles.colgdc_ctres};
else
c3=str2num(data{i,handles.colgdc_ctres});
end
if isnumeric(data{i,handles.colgdc_ccuatro})
c4=data{i,handles.colgdc_ccuatro};
else
c4=str2num(data{i,handles.colgdc_ccuatro});
end
if isnumeric(data{i,handles.colgdc_ccinco})
c5=data{i,handles.colgdc_ccinco};
else
c5=str2num(data{i,handles.colgdc_ccinco});
end
if isnumeric(data{i,handles.colgdc_fractM})
valorFM=data{i,handles.colgdc_fractM};
else
valorFM=str2num(data{i,handles.colgdc_fractM});
end
if data{i,handles.colgdc_Estado}==0
salidatipo='APAGADO';
else
suma_frac=suma_frac+valorFM;
vapor_pa=c1+(c2/temp_K)+(c3*log(temp_K))+(c4*(temp_K^c5));
vapor_pa=exp(vapor_pa);
if isinf(vapor_pa)
valor_pa=0;
end
data{i,handles.colgdc_PresVPa}=vapor_pa;
psi = vapor_pa / 6894.75;
presion_psi_val=str2num(get(handles.presion_psi,'string'));
89
salidatipo='LIQUIDO';
if psi>=presion_psi_val
salidatipo='GAS';
end
end
90
end
end
end
RecalcularGrilla(hObject, eventdata, handles);
RecalcularTodo(hObject, eventdata, handles);
function cargar_Infoz(hObject, eventdata, handles)
if exist('values.dat','file')==0
defaultData = [158 0 0 30 0 20 190 10.7314 0 0 0 0];
dlmwrite('values.dat',defaultData,'precision',12,'delimiter',';')
end
valuesData=dlmread('values.dat',';');
handles.vtemp_F=valuesData(1);
handles.vtemp_K=valuesData(2);
handles.vtemp_R=valuesData(3);
handles.vpresion_psi=valuesData(4);
handles.vpresion_pa=valuesData(5);
handles.vapi=valuesData(6);
handles.vtemp_yacimiento=valuesData(7);
handles.vconst_gas_r=valuesData(8);
handles.vconst_gas_f=valuesData(9);
handles.vconst_gas_k=valuesData(10);
handles.vgrav_espec=valuesData(11);
handles.vvisco=valuesData(12);
if exist('tperiod.dat','file')==0
elementoNombre={'H';'N';'O';'C'};
elementoValor=[1;14;16;12];
fileID = fopen('tperiod.dat','w');
for index = 1:numel(elementoNombre)
try
nombre=elementoNombre{index};
valor=elementoValor(index);
fprintf(fileID,'%s;%12.12f\n',nombre,valor);
catch
errordlg('Ocurrio un error al intentar cargar los datos requeridos.','Valor
incorrecto','modal')
fclose(fileID);
close();
end
end
fclose(fileID);
end
fileID = fopen('tperiod.dat','r');
T = textscan(fileID,'%s %f','delimiter',';','EmptyValue',0);
fclose(fileID);
ce=T{2};
handles.H=ce(1);
handles.N=ce(2);
handles.O=ce(3);
handles.C=ce(4);
H=ce(1);
91
N=ce(2);
O=ce(3);
C=ce(4);
bTrue=true;
disp(exist('saved.dat','file'));
if exist('saved.dat','file')==2
fileID = fopen('saved.dat','r');
try
TVals = textscan(fileID,'%s %s %s %f %f %f %f %f %f %f %f %f %f %f %f %s
%d','delimiter',';','EmptyValue',0);
handles.TVals=TVals;
catch
errordlg('Ocurrio un error al cargar los datos intentelo mas tarde.','Valor incorrecto','modal')
fclose(fileID);
try
delete('saved.dat');
catch
end
close(0);
return
end
fclose(fileID);
else
errordlg('No existen los valores necesarios para realizar el calculo.','Valor
incorrecto','modal')
close(0);
return;
nd
TData_col=size(TVals,2);
TData_row=size(TVals{1},1);
tNombres = TVals{handles.colgdc_nombre};
tAbrev = TVals{handles.colgdc_abrev};
tFormula = TVals{handles.colgdc_formula};
tyi = TVals{handles.colgdc_fractM};
tfa = TVals{handles.colgdc_factorA};
tpre_kpa = TVals{handles.colgdc_PresionKpa};
tpre_psi = TVals{handles.colgdc_PresionPsi};
ttempc_k = TVals{handles.colgdc_TempCritica};
tc1 = TVals{handles.colgdc_cuno};
tc2 = TVals{handles.colgdc_cdos};
tc3 = TVals{handles.colgdc_ctres};
tc4 = TVals{handles.colgdc_ccuatro};
tc5 = TVals{handles.colgdc_ccinco};
tprevap_pa = TVals{handles.colgdc_PresVPa};
tprevap_psi = TVals{handles.colgdc_PresVPsi};
tSalidas = TVals{handles.colgdc_Salida};
tEstados = TVals{handles.colgdc_Estado};
aac=get(handles.const_gas_r,'string');
aad=get(handles.temp_R,'string');
cgr=str2num(get(handles.const_gas_r,'string'));
92
tmpr=str2num(get(handles.temp_R,'string'));
fileID = fopen('zconst.dat','w');
for bIndex = 1:numel(tNombres)
nombre=tNombres{bIndex};
abrev=tAbrev{bIndex};
formula=tFormula{bIndex};
if (strcmpi(strtrim(tSalidas{bIndex}),'LIQUIDO')==true) | tEstados(bIndex)==0
M=0;
yi=0;
Myi=0;
fa=0;
pre_kpa=0;
pre_psi=0;
yipre_psi=0;
tempc_k=0;
tempc_r=0;
yitempc_r=0;
tempr_r=0;
factorA=0;
factorR=0;
mi=0;
coeAlpha=0;
yiR=0;
c1=0;
c2=0;
c3=0;
c4=0;
c5=0;
prevap_pa=0;
prevap_psi=0;
estado='';
else
try
disp(eval(formula));
M=eval(formula);
catch
M=0;
end
yi=tyi(bIndex,1);
Myi=M*yi;
fa=tfa(bIndex);
pre_kpa=tpre_kpa(bIndex);
pre_psi=tpre_psi(bIndex);
yipre_psi=yi*pre_psi;
tempc_k=ttempc_k(bIndex);
tempc_r=(9/5)*tempc_k;
yitempc_r=yi*tempc_r;
%tempr_r=handles.temp_R/tempc_r;
tempr_r=handles.vtemp_R/tempc_r;
factorA=0.45724*(((cgr^2)*(tempc_r^2))/(pre_psi));
93
factorR=0.0778*((cgr*tempc_r)/pre_psi);
mi=0.37464+1.54226*fa-0.26992*(fa^2);
coeAlpha=(1+mi*(1-(tmpr/tempc_r)^0.5))^2;
yiR=yi*tempr_r;
c1=tc1(bIndex);
c2=tc2(bIndex);
c3=tc3(bIndex);
c4=tc4(bIndex);
c5=tc5(bIndex);
prevap_pa=tprevap_pa(bIndex);
prevap_psi=tprevap_psi(bIndex);
estado=tSalidas{bIndex};
end
try
fprintf(fileID,'%s;%s;%s;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%1
2.12f;%12.12f;%12.12f;%12.12f;%12.12f\n',nombre,abrev,formula,yi,pre_kpa,pre_psi,yipre_
psi,tempc_k,tempc_r,yitempc_r,fa,factorA,factorR,coeAlpha,mi);
catch
fclose(fileID);
close();
end
end
fclose(fileID);
dgvcol_Nombres=1;
dgvcol_Abrev=2;
dgvcol_Formula=3;
dgvcol_yi=4;
dgvcol_prekpa=5;
dgvcol_prepsi=6;
dgvcol_yiprepsi=7;
dgvcol_tempk=8;
dgvcol_tempr=9;
dgvcol_yitempr=10;
dgvcol_fa=11;
dgvcol_factA=12;
dgvcol_factR=13;
dgvcol_coeAlpha=14;
dgvcol_mi=15;
fileID = fopen('zconst.dat','r');
try
TValsZ = textscan(fileID,'%s %s %s %f %f %f %f %f %f %f %f %f %f %f
%f','delimiter',';','EmptyValue',0);
VData = get(handles.GrillaDataZ,'data');
[vRows,vCols]=size(VData);
tNombres=TValsZ{dgvcol_Nombres};
tAbrev=TValsZ{dgvcol_Abrev};
tFormula=TValsZ{dgvcol_Formula};
tyi=TValsZ{dgvcol_yi};
tpre_kpa=TValsZ{dgvcol_prekpa};
94
tpre_psi=TValsZ{dgvcol_prepsi};
tyipre_psi=TValsZ{dgvcol_yiprepsi};
ttempc_k=TValsZ{dgvcol_tempk};
ttempc_r=TValsZ{dgvcol_tempr};
tyitempc_r=TValsZ{dgvcol_yitempr};
tfa=TValsZ{dgvcol_fa};
tfactorA=TValsZ{dgvcol_factA};
tfactorR=TValsZ{dgvcol_coeAlpha};
tcoeAlpha=TValsZ{dgvcol_coeAlpha};
tmi=TValsZ{dgvcol_mi};
VData = [tNombres tAbrev tFormula num2cell(tyi) num2cell(tpre_kpa)
num2cell(tpre_psi) num2cell(tyipre_psi) num2cell(ttempc_k) num2cell(ttempc_r)
num2cell(tyitempc_r) num2cell(tfa) num2cell(tfactorA) num2cell(tfactorR)
num2cell(tcoeAlpha) num2cell(tmi)];
set(handles.GrillaDataZ,'data',VData);
[xRows,XCols] = size(TVals{1});
suma=0;
suma1=0;
suma2=0;
suma3=0;
for i=1:xRows
suma1=suma1+(tyi(i)*tpre_psi(i));
suma3=suma3+(tyi(i)*ttempc_r(i));
suma2=suma2 + (tyi(i)*tfactorR(i));
for j=i+1:xRows
suma = suma + ((tyi(i)*tyi(j)) * (tfactorA(i) * tfactorA(j) * tcoeAlpha(i) * tcoeAlpha(j) )
^ 0.5);
end
end
va=(suma*handles.vpresion_psi)/((handles.vconst_gas_r*handles.vtemp_R)^2);
vb=(suma2*handles.vpresion_psi)/(handles.vconst_gas_r*handles.vtemp_R)
for z=-1:0.15:2.75
if z>-1
zgraf=[zgraf ValueZ(z,va,vb)];
ejezG=[ejezG z];
else
ejezG=z;
zgraf=ValueZ(z,va,vb);
end
end
handles.ejex=ejezG;
y1=zgraf;
plot(handles.ejex,y1,'LineWidth',1);grid on;
axis([min(ejezG) max(ejezG) -2 1]);
set(handles.varA,'string',va);
set(handles.varB,'string',vb);
set(handles.factam,'string',suma);
set(handles.totalyipsi,'string',suma1);
set(handles.totalyitr,'string',suma3);
95
set(handles.repm,'string',suma2);
catch errorObj
errordlg(getReport(errorObj,'extended','hyperlinks','off'),'Error');
fclose(fileID);
close();
end
fclose(fileID);
96
try
fileID = fopen('zdatafact.dat','w');
[torows,tocols]=size(table_z);
for tc=1:torows
printf(fileID,'%12.12f;%12.12f%12.12f;%12.12f;%12.12f;\n',table_z(tc,1),table_z(tc,2),table
_z(tc,3),table_z(tc,4),table_z(tc,5));
end
catch errorObj
errordlg(getReport(errorObj,'extended','hyperlinks','off'),'Error');
fclose(fileID);
close();
end
fclose(fileID);
try
fileID = fopen('zvalues.dat','w');
[torows,tocols]=size(zgraf);
for tc=1:tocols
fprintf(fileID,'%12.12f;%12.12f\n',ejezG(tc),zgraf(tc));
end
catch errorObj
errordlg(getReport(errorObj,'extended','hyperlinks','off'),'Error');
fclose(fileID);
close();
end
fclose(fileID);
try
fileID = fopen('zdatavalues.dat','w');
fprintf(fileID,'%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f;%12.12f\n',suma,suma2
,suma1,suma3,va,vb,zFact);
catch errorObj
errordlg(getReport(errorObj,'extended','hyperlinks','off'),'Error');
fclose(fileID);
close();
end
fclose(fileID);
function valorZ=ValueZNRampshon(z,a,b)
valorZ=(3*(z^2))+((2*(b-1)*z)+(a-(3*(b^2)))-(2*b));
function valorZ=ValueZ(z,a,b)
valorZ=(z^3)+((b-1)*z^2)+(a-3*b^2-2*b)*z+(b^3+b^2-a*b);
function CalcularAgua(hObject, eventdata, handles)
if exist('tabla32.dat','file')==0
defaultData = [5.459 4.9669 4.391;0.30542 0.27788 0.2487;647.13 647.13 647.13;0.081
0.1874 0.2534];
dlmwrite('tabla32.dat',defaultData,'precision',12,'delimiter',';')
end
constCri=dlmread('tabla32.dat',';');
cValue=zeros(4,1);
valuesData=dlmread('values.dat',';');
if handles.temp_K >=273.16 && handles.temp_K <333.15
97
cValue(1)=constCri(1,1);
cValue(2)=constCri(2,1);
cValue(3)=constCri(3,1);
cValue(4)=constCri(4,1);
elseif handles.temp_K >=333.15 && handles.temp_K <403.15
cValue(1)=constCri(1,2);
cValue(2)=constCri(2,2);
cValue(3)=constCri(3,2);
cValue(4)=constCri(4,2);
else
cValue(1)=constCri(1,3);
cValue(2)=constCri(2,3);
cValue(3)=constCri(3,3);
cValue(4)=constCri(4,3);
end
%set(handles.temp_fc,'data',cValue);
c1=cValue(1);
c2=cValue(2);
c3=cValue(3);
c4=cValue(4);
temp_k=valuesData(2);
t=1.003-(0.01479*temp_k)+(0.00001982*(temp_k^2));
viscosidadx=exp(1)^t;
densidadx=(18.015*c1)/(16.01846*(c2^(1+(1-(temp_k/c3))*c4)));
set(handles.densidad,'string',densidadx);
set(handles.densidadA,'string',densidadx/0.062282);
set(handles.viscosidad,'string',viscosidadx);
function CalcularGas(hObject, eventdata, handles)
if exist('zdatavalues.dat','file')==0
defaultData = [0 0 0 0 0 0];
dlmwrite('zdatavalues.dat',defaultData,'precision',12,'delimiter',';')
end
zData=dlmread('zdatavalues.dat',';');
valuesData=dlmread('values.dat',';');
handles.vtemp_F=valuesData(1);
handles.vtemp_K=valuesData(2);
handles.vtemp_R=valuesData(3);
handles.vpresion_psi=valuesData(4);
handles.vpresion_pa=valuesData(5);
handles.vapi=valuesData(6);
handles.vtemp_yacimiento=valuesData(7);
handles.vconst_gas_r=valuesData(8);
handles.vconst_gas_f=valuesData(9);
handles.vconst_gas_k=valuesData(10);
handles.vgrav_espec=valuesData(11);
handles.vvisco=valuesData(12);
handles.factam=zData(1);
handles.repm=zData(2);
handles.tyipsi=zData(3);
handles.tyitr=zData(4);
98
handles.va=zData(5);
handles.vb=zData(6);
handles.zfact=zData(7);
if exist('tperiod.dat','file')==0
elementoNombre={'H';'N';'O';'C'};
elementoValor=[1;14;16;12];
fileID = fopen('tperiod.dat','w');
for index = 1:numel(elementoNombre)
try
nombre=elementoNombre{index};
valor=elementoValor(index);
fprintf(fileID,'%s;%f\n',nombre,valor);
catch
errordlg('Ocurrio un error al intentar cargar los datos requeridos.','Valor
incorrecto','modal')
fclose(fileID);
close();
end
end
fclose(fileID);
end
fileID = fopen('tperiod.dat','r');
T = textscan(fileID,'%s %f','delimiter',';','EmptyValue',0);
fclose(fileID);
Data=get(handles.tabla_periodica,'data');
ce=T{2};
for index = 1:4
Data{index,1}= T{1}{index} ;
Data(index,2)=num2cell(ce(index));
end
set(handles.tabla_periodica,'data',Data);
handles.H=ce(1);
handles.N=ce(2);
handles.O=ce(3);
handles.C=ce(4);
H=ce(1);
N=ce(2);
O=ce(3);
C=ce(4);
bTrue=false;
fileID = fopen('saved.dat','r');
try
TVals = textscan(fileID,'%s %s %s %f %f %f %f %f %f %f %f %f %f %f %f %s
%d','delimiter',';','EmptyValue',0);
catch
try
delete('saved.dat');
catch
end
close(0);
99
return
end
fclose(fileID);
handles.TVals=TVals;
tNames = TVals{handles.colgdc_nombre};
tAbrev = TVals{handles.colgdc_abrev};
tFormula = TVals{handles.colgdc_formula};
tyi = TVals{handles.colgdc_fractM};
tfa = TVals{handles.colgdc_factorA};
tpre_kpa = TVals{handles.colgdc_PresionKpa};
tpre_psi = TVals{handles.colgdc_PresionPsi};
ttempc_k = TVals{handles.colgdc_TempCritica};
tc1 = TVals{handles.colgdc_cuno};
tc2 = TVals{handles.colgdc_cdos};
tc3 = TVals{handles.colgdc_ctres};
tc4 = TVals{handles.colgdc_ccuatro};
tc5 = TVals{handles.colgdc_ccinco};
tprevap_pa = TVals{handles.colgdc_PresVPa};
tprevap_psi = TVals{handles.colgdc_PresVPsi};
tSalida = TVals{handles.colgdc_Salida};
tEstados = TVals{handles.colgdc_Estado};
syipsi=0;
syitr=0;
100
try
M=eval(formula);
catch
M=0;
end
yi=tyi(index);
Myi=M*yi;
fa=tfa(index);
pre_kpa=tpre_kpa(index);
pre_psi=tpre_psi(index);
tempc_k=ttempc_k(index);
tempc_r=(9/5)*tempc_k;
tempr_r=handles.vtemp_R/tempc_r;
yiR=yi*tempr_r;
c1=tc1(index);
c2=tc2(index);
c3=tc3(index);
c4=tc4(index);
c5=tc5(index);
prevap_pa=tprevap_pa(index);
prevap_psi=tprevap_psi(index);
estado=tSalida{index};
end
syipsi=syipsi+Myi;
syitr=syitr+yiR;
if index==1
gData={nombre abrev formula num2str(M) num2str(yi) num2str(Myi) num2str(fa)
num2str(pre_kpa) num2str(pre_psi) num2str(tempc_k) num2str(tempc_r) num2str(tempr_r)
num2str(yiR) num2str(c1) num2str(c2) num2str(c3) num2str(c4) num2str(c5)
num2str(prevap_pa) num2str(prevap_psi) num2str(estado)};
else
gData=[gData;{nombre abrev formula num2str(M) num2str(yi) num2str(Myi) num2str(fa)
num2str(pre_kpa) num2str(pre_psi) num2str(tempc_k) num2str(tempc_r) num2str(tempr_r)
num2str(yiR) num2str(c1) num2str(c2) num2str(c3) num2str(c4) num2str(c5)
num2str(prevap_pa) num2str(prevap_psi) num2str(estado)}];
end
end
try
set(handles.GrillaDataG,'data',gData);
catch
end
val_factorn=0;
if handles.temprm<=1.5
val_factorn=(0.00034*(syitr^0.94));
else
val_factorn=(0.0001778*(((4.58*syitr)-1.67)^0.625));
end
set(handles.factorn,'string',val_factorn);
val_factz=handles.zfact;
set(handles.temprm,'string',syitr);
101
set(handles.pesom,'string',syipsi);
set(handles.presioncmpsi,'string',handles.tyipsi);
set(handles.tempsr,'string',handles.tyitr);
val_viscom=0.00046*(val_factorn*(syipsi^0.5))*(handles.tyipsi^(2/3))/(handles.tyitr^(1/6));
set(handles.viscom,'string',val_viscom);
set(handles.viscompas,'string',val_viscom*0.001);
val_densg=(handles.vpresion_psi*syipsi)/(val_factz*handles.vconst_gas_r*handles.vtemp_R
);
set(handles.densg,'string',val_densg);
set(handles.densgmtres,'string',val_densg/(2.2*0.028831));
set(handles.factz,'string',val_factz);
valores=zeros(1,9);
valores(1,1)=str2num(get(handles.temprm,'string'));
valores(1,2)=str2num(get(handles.pesom,'string'));
valores(1,3)=str2num(get(handles.presioncmpsi,'string'));
valores(1,4)=str2num(get(handles.tempsr,'string'));
valores(1,5)=str2num(get(handles.viscom,'string'));
valores(1,6)=str2num(get(handles.viscompas,'string'));
valores(1,7)=str2num(get(handles.densg,'string'));
valores(1,8)=str2num(get(handles.densgmtres,'string'));
valores(1,9)=str2num(get(handles.factz,'string'));
dlmwrite('propgas.dat',valores,'precision',12,'delimiter',';')
function viscocidad_Callback(hObject, eventdata, handles)
function viscocidad_CreateFcn(hObject, ~, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function diametro_separdor_Callback(hObject, eventdata, handles)
function diametro_separdor_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function lcc_Callback(hObject, eventdata, handles)
function lcc_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function lcs_Callback(hObject, eventdata, handles)
function lcs_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function hvert_Callback(hObject, eventdata, handles)
function hvert_CreateFcn(hObject, eventdata, handles)
.
102
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function setagua_Callback(hObject, eventdata, handles)
.function setagua_CreateFcn(hObject, eventdata, handles)
.if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function setcrudo_Callback(hObject, eventdata, handles)
.function setcrudo_CreateFcn(hObject, eventdata, handles)
.if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function setgpres_Callback(hObject, eventdata, handles)
.function setgpres_CreateFcn(hObject, eventdata, handles)
.if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function denc_Callback(hObject, eventdata, handles)
function denc_CreateFcn(hObject, eventdata, handles)
.if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function CCaudal_Callback(hObject, eventdata, handles)
function CCaudal_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cBSW_Callback(hObject, eventdata, handles)
function cBSW_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function ccrudo_Callback(hObject, eventdata, handles)
function ccrudo_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cagua_Callback(hObject, eventdata, handles)
function cagua_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
103
set(hObject,'BackgroundColor','white');
end
function cgas_Callback(hObject, eventdata, handles)
function cgas_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function ccaudal_Callback(hObject, eventdata, handles)
function ccaudal_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cbsw_Callback(hObject, eventdata, handles)
function cbsw_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit52_Callback(hObject, eventdata, handles)
function edit52_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit53_Callback(hObject, eventdata, handles)
104
set_param(strcat(handles.model_name,'/h chic'),'Value',(get(handles.hvert,'String')));
set_param(strcat(handles.model_name,'/diametro'),'Value',(get(handles.diametro_separdor,'St
ring')));
set_param(strcat(handles.model_name,'/Ccl'),'Value',num2str((get(handles.lcc,'String'))));
set_param(strcat(handles.model_name,'/Css_cs'),'Value',(get(handles.lcs,'String')));
set_param(strcat(handles.model_name,'/densidad
agua'),'Value',(get(handles.densidadA,'String')));
set_param(strcat(handles.model_name,'/densidad crudo'),'Value',(get(handles.denc,'String')));
set_param(strcat(handles.model_name,'/Cv gas'),'Value',(get(handles.cvgas,'String')));
set_param(strcat(handles.model_name,'/CvCrudo'),'Value',(get(handles.cvcrudo,'String')));
set_param(strcat(handles.model_name,'/Cv agua'),'Value',(get(handles.cvagua,'String')));
set_param(strcat(handles.model_name,'/crudo/set
oil'),'Value',(get(handles.setcrudo,'String')));
set_param(strcat(handles.model_name,'/agua/set
water'),'Value',(get(handles.setagua,'String')));
vb=num2str((get(handles.setgpres,'String')));
set_param(strcat(handles.model_name,'/set Presion G'),'Value',vb);
set_param(strcat(handles.model_name,'/MW gas'),'Value',(get(handles.pesom,'String')));
set_param(strcat(handles.model_name,'/temperatura'),'Value',(get(handles.temp_F,'String')));
function simtime_Callback(hObject, eventdata, handles)
function simtime_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cvagua_Callback(hObject, eventdata, handles)
function cvagua_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cvcrudo_Callback(hObject, eventdata, handles)
function cvcrudo_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function cvgas_Callback(hObject, eventdata, handles)
function cvgas_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function densidadA_Callback(hObject, eventdata, handles)
function densidadA_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
105
Anexo G. Propiedades del separador.
106
Anexo H. Caudal recuperado a distintos cortes de agua.
107
2000BFPD 50% 2000BFPD 80%
Presin
oil gas oil gas oil gas oil gas
PSI MCD MCD BPD MCFD MCD MCD BPD MCFD
0 0.0009 0.00091 505.4 2.777 0.00037 0.00036 201.1 1.098
20 0.0011 0.00077 597.8 2.349 0.00043 0.00031 233.7 0.946
40 0.0012 0.00065 652.1 1.983 0.00047 0.00026 255.4 0.793
60 0.0013 0.00056 706.5 1.709 0.00051 0.00022 277.1 0.671
80 0.0014 0.00047 760.8 1.434 0.00055 0.00019 298.9 0.580
100 0.0014 0.0004 760.8 1.220 0.00058 0.00016 315.2 0.488
120 0.0015 0.00034 815.1 1.037 0.0006 0.00014 326.1 0.427
150 0.0016 0.00027 869.5 0.824 0.00063 0.00011 342.4 0.336
180 0.0016 0.0002 869.5 0.610 0.00065 8.3E-05 353.2 0.253
200 0.0017 0.00018 923.8 0.549 0.00067 0.00007 364.1 0.214
250 0.0017 0.00012 923.8 0.366 0.00069 4.7E-05 375.0 0.143
300 0.0018 7.8E-05 978.2 0.238 0.0007 3.1E-05 380.4 0.095
350 0.0018 5.2E-05 978.2 0.159 0.00072 2.1E-05 391.3 0.064
400 0.0018 3.4E-05 978.2 0.104 0.00072 1.3E-05 391.3 0.040
500 0.0018 1.5E-05 978.2 0.046 0.00073 6E-06 396.7 0.018
108
BIOGRAFIA DEL AUTOR
Se presenta al concurso para el cargo de asistente de ctedra del rea de materiales llegando a
ser el mejor puntuado y presta su colaboracin el departamento de metalrgia bajo la
direccin del Ing. Msc. Mario Edmundo Pstor Rodas.
109