Correlaciones de Aceite en Python: Flujo de Cálculo de Rs, Bo y Viscosidad
De los datos de entrada a las curvas PVT, por debajo y por encima de la presión de burbuja
Yacimientos
PVT
Python
Calcula la presión de burbuja, el gas en solución, el factor de volumen y la viscosidad del aceite con un ejemplo en Python. Flujo paso a paso con Standing, Beggs–Robinson y Vázquez–Beggs.
Cuando calculamos propiedades PVT del aceite, las ecuaciones no trabajan de manera aislada. Primero necesitamos conocer la presión de burbuja, Pb, para decidir cómo calcular el gas en solución, el factor de volumen y la viscosidad a cada presión.
En este ejemplo usamos los siguientes métodos: Standing para Pb, Rs y Bo, Beggs–Robinson para viscosidad de aceite muerto y saturado, y Vázquez–Beggs para las correcciones por encima de Pb. No aplicamos corrección de la gravedad del gas por condiciones de separador.
El objetivo es seguir el cálculo completo y generar las tres curvas con fragmentos sencillos de Python.
Propiedad
Qué representa
Unidades
Rs
Gas disuelto por barril de aceite a condiciones de tanque
scf/STB
Bo
Volumen de aceite con su gas disuelto a condiciones de yacimiento por barril de aceite de tanque
rb/STB
μo
Viscosidad dinámica del aceite
cP
Visita el canal @rigopetrodata
Tutoriales de R, Python y Excel para ingeniería petrolera
La temperatura se mantiene constante. Para visualizar ambos regímenes calcularemos de 500 a 5000 psia e incluiremos explícitamente Pb y la presión de evaluación. Este intervalo es una elección para el ejemplo, no un rango universal de validez de las correlaciones.
Rsb no es el GOR producido
Rsb es el gas disuelto en el aceite a la presión de burbuja. No debe sustituirse automáticamente por la relación gas–aceite de producción, que puede incluir gas libre. Las ecuaciones siguientes requieren presión absoluta en psia y temperatura en °F.
El flujo de cálculo
Con API, gravedad del gas, temperatura y Rsb, calcular Pb.
Calcular las propiedades de referencia: Bob, viscosidad de aceite muerto μod y viscosidad a Pb μob.
Para P ≤ Pb, calcular Rs con Standing; usar ese Rs en Bo y μo.
Para P > Pb, mantener Rs = Rsb; corregir Bob y μob por presión.
Reunir los resultados en una tabla y graficar Rs(P), Bo(P) y μo(P).
Paso 1 — Entradas y presión de burbuja
Necesitamos NumPy, pandas y Matplotlib. Puedes instalarlos con python -m pip install numpy pandas matplotlib. Ejecuta los fragmentos en orden, dentro del mismo notebook o sesión.
La gravedad relativa del aceite se obtiene de \(\gamma_o=141.5/(API+131.5)\). Para Pb usamos Standing:
Presión de burbuja: 2633.95 psia
A 4000 psia: aceite subsaturado
Pb es el punto de cambio entre las dos ramas del cálculo. A presiones mayores que Pb, el gas del sistema permanece disuelto en el aceite; al reducir la presión por debajo de Pb comienza a liberarse gas.
Paso 2 — Gas en solución, Rs
Invertimos la ecuación de Standing para calcular Rs por debajo de Pb. Por encima de Pb, fijamos Rs en el valor de entrada Rsb:
np.where selecciona la expresión correspondiente a cada presión. No continuamos aumentando Rs después de Pb: para este fluido el límite es 650 scf/STB.
Paso 3 — Factor de volumen del aceite, Bo
Para el aceite saturado, Standing relaciona Bo con Rs, las gravedades relativas y la temperatura:
Al sustituir Rs por Rsb obtenemos Bob, el valor a Pb. Por encima de Pb necesitamos representar la compresión del aceite. Usamos la compresibilidad de Vázquez–Beggs, sin corrección de separador:
Esta forma conserva la dependencia de \(c_o\) con la presión. La expresión \(B_{ob}\exp[-c_o(P-P_b)]\) corresponde a tratar \(c_o\) como constante en el intervalo; no son exactamente la misma aproximación.
El cálculo tiene tres niveles. Primero estimamos la viscosidad del aceite muerto, sin gas disuelto, a la temperatura del ejemplo. Después incorporamos el efecto de Rs para el aceite saturado. Finalmente corregimos por presión en la región subsaturada.
Viscosidad de aceite muerto: 2.1833 cP
Viscosidad a Pb: 0.5520 cP
μod es una referencia de cálculo, no la viscosidad del aceite vivo a la presión de yacimiento. El gas disuelto reduce la viscosidad respecto al aceite muerto en este ejemplo.
Reunimos las propiedades calculadas en una tabla. Como incluimos P_eval y Pb explícitamente en el arreglo, podemos consultar esos valores sin interpolar.
P (psia) Rs (scf/STB) Bo (rb/STB) Viscosidad (cP)
2633.9504 650.0 1.3610 0.5520
4000.0000 650.0 1.3358 0.6369
La fila de Pb muestra las condiciones de referencia. A 4000 psia, Rs permanece en 650 scf/STB, Bo es menor que Bob y la viscosidad es mayor que μob.
Paso 6 — Graficar Rs, Bo y viscosidad
Usamos tres paneles porque las propiedades tienen unidades y escalas distintas. La línea punteada marca Pb y el punto negro identifica la presión de evaluación.
Figura 1: Propiedades del aceite a 180 °F. Línea punteada: Pb; punto negro: 4000 psia.
¿Cómo leer las curvas?
Si recorremos el gráfico desde baja hacia alta presión:
Rs aumenta hasta Pb y después queda constante. El aceite no puede incorporar más gas que el Rsb definido para este sistema.
Bo aumenta hasta Pb por el efecto del gas disuelto. Por encima de Pb disminuye debido a la compresión del aceite.
La viscosidad disminuye hasta Pb al aumentar el gas en solución. Por encima de Pb aumenta con la presión, manteniendo Rs constante.
En una depleción partiendo de 4000 psia, el recorrido es en sentido contrario: primero el aceite se expande al reducir la presión hasta Pb; después libera gas, se reduce Bo y aumenta la viscosidad del aceite remanente.
Alcance del ejemplo
Estas curvas son estimaciones por correlaciones, no datos de laboratorio. Se mantienen constantes API, gravedad del gas, temperatura y Rsb; no se modelan cambios composicionales, emulsiones ni una separación multietapa. La selección de métodos sigue la pantalla de PVT oil; para Bo subsaturado se ha explicitado la integración de la compresibilidad, por lo que una app que use compresibilidad constante puede dar un valor ligeramente distinto. Antes de aplicar el resultado a otro crudo, revisa el dominio de cada correlación y contrasta con datos PVT medidos.
Para repetir el ejercicio
Modifica únicamente las entradas del primer fragmento y vuelve a ejecutar todas las celdas. Comprueba que el intervalo de presión cubra las condiciones que deseas estudiar y revisa la unión de las curvas en Pb. No se necesita un dataset externo: todos los datos de entrada están al inicio del ejemplo.
Referencias
Standing, M. B. (1947). A Pressure-Volume-Temperature Correlation for Mixtures of California Oils and Gases. Drilling and Production Practice, API, pp. 275–287.