Processing math: 100%

Bienvenidos a "Geoscience for Dummies", un espacio dedicado a la divulgación y análisis en el campo de las geociencias, creado por estudiantes y egresados del Instituto Politécnico Nacional especializados en ingeniería geofísica con énfasis en la exploración petrolera y métodos de exploración potencial. Nuestro objetivo es desmitificar y explicar de manera accesible los conceptos clave de las geociencias.

Únete al mejor blog de divulgación sobre geociencias

14229

Entradas populares

Volumen de Arcilla a partir del Registro de Rayos Gamma usando Python

¡Hola, lector! 

Esperamos que tu día esté lleno de descubrimientos, ya sea por la mañana, tarde o noche. Este sábado, como cada semana, te traemos un tema que no puede faltar en la caja de herramientas de quienes exploramos el subsuelo. Hoy continuaremos con la evaluación del volumen de arcilla usando Python, claves para descifrar zonas de interés en los yacimientos. Acompáñanos mientras exploramos cómo estas técnicas nos ayudan a entender mejor las formaciones y maximizar el potencial de cada pozo.



En el análisis petrofísico de formaciones geológicas, la identificación y cuantificación de la arcilla son pasos fundamentales, ya que la presencia de arcilla en las rocas puede afectar las propiedades de reserva, como la porosidad y la permeabilidad. Uno de los métodos más comunes para estimar el volumen de arcilla es el uso del registro de Rayos Gamma (GR). Este registro mide la radiación gamma natural emitida por las rocas, particularmente sensible a la presencia de minerales arcillosos como los feldespatos, micas y otros minerales de la serie de los arcillosos, debido a su contenido en potasio, uranio y torio.

A continuación, se describe el fundamento teórico y los métodos de cálculo del volumen de arcilla, incluyendo el Índice de Rayos Gamma (IGR) y su transformación en el Volumen de Arcilla (VSH) a través de modelos petrofísicos como los de Larionov, Clavier y Stieber. Cada modelo permite una interpretación diferente del comportamiento del volumen de arcilla, adaptándose a distintos contextos geológicos y tipos de formaciones.



Índice de Rayos Gamma (IGR)

El Índice de Rayos Gamma (IGR) es la medida fundamental que se utiliza para normalizar la respuesta del registro de GR, estableciendo un rango entre un valor mínimo (asociado a formaciones limpias, generalmente arenas) y un valor máximo (relacionado con arcillas). Este índice se calcula utilizando la siguiente fórmula:


IGR=GRregistroGRarenaGRarcillaGRarena

El IGR proporciona un índice normalizado entre 0 y 1, donde valores cercanos a 0 representan formaciones limpias y valores cercanos a 1 indican una alta concentración de arcilla.


Modelos de Volumen de Arcilla (VSH)

El IGR se puede transformar en el Volumen de Arcilla (VSH), que es una estimación directa de la fracción de arcilla en la formación. Existen varios modelos empíricos para calcular el VSH a partir del IGR, cada uno de los cuales tiene sus propias aplicaciones y limitaciones. A continuación se detallan los modelos de Larionov, Clavier y Stieber.



Modelo de Larionov

El modelo de Larionov considera dos contextos geológicos para calcular el VSH: rocas sedimentarias jóvenes y antiguas. En ambos casos, el modelo aplica un ajuste no lineal para reflejar la disminución de sensibilidad del GR a concentraciones de arcilla muy altas.

Para rocas sedimentarias jóvenes:

VSH=0.083×(23.7×IGR1)

Para rocas sedimentarias antiguas:

VSH=0.33×(22×IGR1)

El modelo de Larionov es especialmente útil en formaciones con historia de compactación, ya que tiene en cuenta la naturaleza de las formaciones geológicas y la compactación de los sedimentos a lo largo del tiempo.


Modelo de Clavier

El modelo de Clavier es adecuado para formaciones con alta concentración de arcilla. Este modelo considera una relación cuadrática entre el IGR y el VSH, proporcionando una estimación que ajusta el volumen de arcilla a valores más realistas en contextos de arcillas elevadas:

VSH=1.73.38(IGR+0.7)2

El modelo de Clavier es preferido en ciertas cuencas o formaciones geológicas donde la presencia de minerales de arcilla es muy alta, ya que ajusta la respuesta del GR para evitar sobreestimaciones del volumen de arcilla.



Modelo de Stieber

El modelo de Stieber propone un ajuste lineal para el cálculo del VSH en sistemas sedimentarios laminados. Este modelo es particularmente útil para formaciones delgadas y laminadas, en las cuales el registro de GR puede subestimar o sobreestimar la cantidad real de arcilla debido a la mezcla de litologías en capas finas:

VSH=IGR32×IGR

Este modelo es empleado cuando se espera una heterogeneidad significativa en la distribución de arcillas y arenas, como en sistemas fluviales o deltaicos, donde los sedimentos pueden estar altamente estratificados.



Implementación en Python

Para aplicar estos modelos en datos de registro de Rayos Gamma, utilizaremos un script en Python que procesa el archivo de registros, calcula el IGR y estima el VSH mediante los diferentes modelos descritos anteriormente. A continuación, se detalla el paso a paso del código para su implementación.

Paso 1: Importar Bibliotecas

Comenzamos importando las bibliotecas necesarias para manipular archivos LAS y para visualización de datos:


import lasio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

Paso 2: Cargar el archivo LAS

Se carga el archivo LAS usando LASIO. Se reemplaza "POZO-1.LAS" en el argumento del modulo a utilizar.

las = lasio.read("POZO-1.LAS")


Paso 3: Extraer Registros de Interés

Seleccionamos las curvas que vamos a analizar: profundidad (DEPTH), Rayos Gamma (GR), Densidad (RHOB), y Porosidad Neutrónica (NPHI).


depth = las["DEPTH"]
GR = las["GR"]
RHOB = las["RHOB"]
NPHI = las["NPHI"]

Paso 4: Definir Valores de Referencia para el Registro GR

Definimos los valores de Rayos Gamma para formaciones limpias y arcillosas. Estos valores son críticos para calcular el índice de arcilla.


GR_limpio = 2
GR_arcilla = 220


Paso 5: Definir Zonas de Interés

Creamos un diccionario para definir las profundidades de cada zona de interés en el pozo.


zonas = [
    {"zona": "Zona 1", "profundidad_inicial": 2570.635, "profundidad_final": 2795.426},
    {"zona": "Zona 2", "profundidad_inicial": 2795.426, "profundidad_final": 3521.264},
    {"zona": "Zona 3", "profundidad_inicial": 3521.264, "profundidad_final": 3737.729}
]
colores_zonas = ["#e6f7ff", "#ffe6e6", "#e6ffe6"]


Paso 6: Separar Datos de Cada Zona

Para cada zona, aplicamos un filtro a los registros, calculamos el índice de arcilla (IGR) y distintos métodos de volumen de arcilla (VSH).


datos_zonas = {}
for zona in zonas:
    inicio = zona["profundidad_inicial"]
    fin = zona["profundidad_final"]
    mask = (depth >= inicio) & (depth <= fin)
    depth_zona = depth[mask]
    GR_zona = GR[mask]
    RHOB_zona = RHOB[mask]
    NPHI_zona = NPHI[mask]
    datos_zonas[zona["zona"]] = {
        "Profundidad": depth_zona,
        "GR": GR_zona,
        "RHOB": RHOB_zona,
        "NPHI": NPHI_zona,
        "IGR": IGR,
        "VSH_lineal": VSH_linear,
        "VSH_larionov_old": VSH_larionov_old,
        "VSH_clavier": VSH_clavier,
        "VSH_stieber": VSH_stieber,
        "VSH_larionov_tertiary": VSH_larionov_tertiary 
    }


Dentro del mismo bucle For anterior, en la parte media se involucra el calculo de los modelos de VSH, Larionov, Clavier y Stieber, esto se realiza con la siguiente sección de código:


    IGR = (GR_zona - GR_limpio) / (GR_arcilla - GR_limpio)
    IGR = np.clip(IGR, 0, 1)
    
    VSH_linear = IGR
    VSH_larionov_old = 0.33 * (2**(2 * IGR) - 1)
    VSH_clavier = 1.7 - np.sqrt(3.38 - (IGR + 0.7)**2)
    VSH_stieber = IGR / (3 - 2 * IGR)
    VSH_larionov_tertiary = 0.083 * (2**(3.7 * IGR) - 1)


Paso 7: Graficar el Registro GR con Zonas Coloreadas

Se crea una gráfica para el registro de Rayos Gamma con las zonas coloreadas. Cada zona se muestra en un color distinto para facilitar la identificación.


plt.figure(figsize=(6, 10))
for i, zona in enumerate(zonas):
    inicio = zona["profundidad_inicial"]
    fin = zona["profundidad_final"]
    plt.fill_betweenx(depth, GR.min(), GR.max(), where=(depth >= inicio) & (depth <= fin), 
                      color=colores_zonas[i % len(colores_zonas)], alpha=1)
plt.plot(GR, depth, color="black", linewidth=0.3)
plt.axvline(GR_limpio, color="blue", linestyle="-", linewidth=2, label="GR limpio")
plt.axvline(GR_arcilla, color="green", linestyle="-", linewidth=2, label="GR arcilla")
plt.gca().invert_yaxis()
plt.xlabel("Rayos Gamma (GR)")
plt.ylabel("Profundidad (m)")
plt.title("Rayos Gamma (GR) - Evaluación")
plt.legend()
plt.grid(True)
plt.savefig("GR_Eval.png", dpi=300)
plt.show()




En la siguiente figura se observa el resultado obtenido a partir del código antes mencionado, donde se observan las líneas bases de lutita y zona limpia, la zonificación del registro GR y la curva sombreada del registro.

Paso 8: Crear Subplots para Comparar Diferentes VSH

Se construye una figura con múltiples subplots, cada uno mostrando un cálculo diferente del volumen de arcilla (VSH) para cada zona.


fig, axs = plt.subplots(1, 6, figsize=(15, 10), sharey=True)
# Subplot para cada cálculo de VSH
for i, (titulo, clave) in enumerate([
    ("GR", "GR"), 
    ("VCL", "VSH_lineal"), 
    ("VSH Larionov (Jóvenes)", "VSH_larionov_tertiary"), 
    ("VSH Larionov (Antiguas)", "VSH_larionov_old"),
    ("VSH Clavier", "VSH_clavier"),
    ("VSH Stieber", "VSH_stieber")
]):
    axs[i].set_title(titulo)
    for zona_data in datos_zonas.values():
        VSH_data = zona_data[clave]
        depth_zona = zona_data["Profundidad"]
        for j in range(len(depth_zona) - 1):
            axs[i].fill_betweenx(
                [depth_zona[j], depth_zona[j + 1]], 0, VSH_data[j], 
                color=cmap(norm(VSH_data[j])), edgecolor="none"
            )
        axs[i].plot(VSH_data, depth_zona, color="black", linewidth=0.5)
    axs[i].set_xlabel("VSH" if i > 0 else "GR")
    axs[i].grid(True)

axs[0].invert_yaxis()
fig.supylabel("Profundidad (m)")
plt.tight_layout()
plt.savefig("VSH_comparison.png", dpi=300)
plt.show()


Una vez realizado el código antes descrito se obtienen las curvas de VCL y VSH con los modelos mencionados anteriormente, así como también, de la curva GR mostrada anteriormente, como se muestra a continuación: 


Este código permite comparar varios modelos de cálculo de VSH y visualizarlos para evaluar la cantidad de arcilla en función de la profundidad y su relación con las zonas seleccionadas. La visualización facilita la interpretación en contexto geológico.



Conclusión

La implementación del análisis del volumen de arcilla (VSH) en Python representa un avance significativo en la automatización y precisión de los estudios geofísicos. Utilizando herramientas y librerías como pandas, numpy y matplotlib, se facilita la manipulación de datos y la visualización de resultados, permitiendo realizar análisis más rápidos y efectivos.

Python no solo facilita el cálculo de VSH a partir de diferentes métodos, sino que también permite la integración de modelos de machine learning para mejorar la predicción y clasificación de formaciones. Esta capacidad de procesamiento masivo de datos geofísicos, combinada con la personalización en los cálculos y gráficos, optimiza el proceso de interpretación en el contexto de exploración y producción de hidrocarburos.

En resumen, Python no solo simplifica el flujo de trabajo, sino que también abre puertas a análisis más sofisticados y a la creación de herramientas que integren diversos registros geofísicos para una caracterización más completa y precisa de los yacimientos. Con esta implementación, los geofísicos pueden tomar decisiones más informadas y basadas en datos, mejorando la eficiencia y precisión en sus estudios de litología y porosidad.



Bibliografía

[1] Asquith, G., & Krygowski, D. (2004). Basic Well Log Analysis. AAPG Methods in Exploration Series.

[2] Ellis, D. V., & Singer, J. M. (2007). Well Logging for Earth Scientists. Springer Science & Business Media.

[3] Doveton, J. H. (1994). Geologic Log Interpretation. SEPM Society for Sedimentary Geology.

[4] Tiab, D., & Donaldson, E. C. (2015). Petrophysics: Theory and Practice of Measuring Reservoir Rock and Fluid Transport Properties. Gulf Professional Publishing.

[5] Rider, M., & Kennedy, M. (2011). The Geological Interpretation of Well Logs. Rider-French Consulting Ltd.



Publicación realizada por Hiram Arias y Emiliano Flores

Contacto


LinkedIn: Hiram Arias y Emiliano Flores


Correo: hiram0809@gmail.com y jemilianofl@gmail.com















No hay comentarios.:

Publicar un comentario