.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "advanced_examples/CO2_seismic.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_advanced_examples_CO2_seismic.py: CO2 seismic properties ====================== .. GENERATED FROM PYTHON SOURCE LINES 7-29 A interesting question about :math:`CO_2` injection is how to estimate the seismic properties of the :math:`CO_2`-water mixture. This notebook shows how to perform Gassmann fluid substitution of a sandstone injected with :math:`CO_2`. We want to solve the following questions through modelling: 1. Velocity drop resulted from :math:`CO_2` displacing brine in an unconsolidated sand 2. How different would it be if it is :math:`CO_2` in gas phase compared to supercritical :math:`CO_2`. 3. How to model the impact of saturation. i.e. difference between patchy saturation or uniform saturation. The modelling process is as follows: The initial unconsolidated sand is brine saturated. The dry rock properties are modeled using Hertz-Mindlin (HM) with porosity = 0.4, coordination number = 6 at 15 MPa. The gas :math:`CO_2` is modeled at temperature = 17 degree and pressure 5 Mpa, The critical :math:`CO_2` is modeled at temperature = 60 degree and 10 Mpa. The gas saturation varies from 0 to 100%, uniform and patchy saturation are concerned. Though the above modelling is quite simplified, we can learn how to use building blocks, i.e. functions of ``rockphypy`` to solve pratical questions. .. GENERATED FROM PYTHON SOURCE LINES 31-55 .. code-block:: Python from rockphypy import utils, BW, GM, Fluid import numpy as np import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.size'] = 14 plt.rcParams['font.family'] = 'arial' plt.rcParams["figure.figsize"] = (6, 6) plt.rcParams['axes.labelpad'] = 10.0 # grain and brine para D0, K0, G0 = 2.65, 36, 42 # grain density, bulk and shear modulus Db, Kb = 1, 2.2 # brine density, bulk modulus # reservoir condition and brine salinity P_overburden = 20 # Mpa salinity = 35000/1000000 # HM phi_c = 0.4 # critical porosity Cn = 6 # coordination number .. GENERATED FROM PYTHON SOURCE LINES 56-60 - initial state: 100% water saturation at specific temperature and pressure, the reservoir stress condition is predefined with a given overburden pressure 20Mpa. - Case 1: uniform gasesous :math:`CO_2` mixed with brine. .. GENERATED FROM PYTHON SOURCE LINES 62-81 .. code-block:: Python # saturation condition brie = None temperature = 17 pore_pressure = 5 # pore pressure sigma = P_overburden-pore_pressure # effective stress # softsand model to compute the frame properties Kdry, Gdry = GM.softsand(K0, G0, phi_c, phi_c, Cn, sigma, f=0.5) # soft sand # C02 in gas condition: sw = np.linspace(0, 1, 50) # water saturation sco2 = 1-sw # gaseous co2 mixed with brine, temp=17, pore pressure = 5Mpa den1, Kf_mix_1 = BW.co2_brine(temperature, pore_pressure, salinity, sco2, brie_component=brie) vp1, vs1, rho1 = Fluid.vels(Kdry, Gdry, K0, D0, Kf_mix_1, den1, phi_c) .. GENERATED FROM PYTHON SOURCE LINES 82-84 - Case 2: uniform critical :math:`CO_2` mixed with brine. .. GENERATED FROM PYTHON SOURCE LINES 86-102 .. code-block:: Python # C02 in critical condition: the critical condition of c02 is 31.1° C, 7.4Mpa. brie = None temperature = 60 pore_pressure = 10 # pore pressure sigma = P_overburden-pore_pressure # effective stress # softsand model to compute the frame properties Kdry, Gdry = GM.softsand(K0, G0, phi_c, phi_c, Cn, sigma, f=0.5) # soft sand # C02 in critical condition: den2, Kf_mix_2 = BW.co2_brine(temperature, pore_pressure, salinity, sco2, brie_component=brie) # gas co2 mixed with brine vp2, vs2, rho2 = Fluid.vels(Kdry, Gdry, K0, D0, Kf_mix_2, den2, phi_c) .. GENERATED FROM PYTHON SOURCE LINES 103-114 .. code-block:: Python plt.figure() name = 'Uniform saturation' plt.title(name) plt.plot(sco2, vp1/1000, '-k', label='Gas CO2') plt.plot(sco2, vp2/1000, '-r', label='Critical CO2') plt.xlabel('CO2 saturation') plt.grid(ls='--') plt.ylabel('Vp (Km)') plt.legend(loc='best') .. image-sg:: /advanced_examples/images/sphx_glr_CO2_seismic_001.png :alt: Uniform saturation :srcset: /advanced_examples/images/sphx_glr_CO2_seismic_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 115-117 - Case 3: patchy saturated critical :math:`CO_2` mixed with brine. .. GENERATED FROM PYTHON SOURCE LINES 119-142 .. code-block:: Python # sphinx_gallery_thumbnail_number = 2 brie = np.arange(5, 45, 5) colors = plt.cm.rainbow(np.linspace(0, 1, len(brie))) plt.figure() name = 'Patchy saturation' plt.title(name) plt.xlabel('CO2 saturation') plt.grid(ls='--') plt.ylabel('Vp (Km)') for i, val in enumerate(brie): den, Kf_mix = BW.co2_brine(temperature, pore_pressure, salinity, sco2, brie_component=val) # gas co2 mixed with brine vp, vs, rho = Fluid.vels(Kdry, Gdry, K0, D0, Kf_mix, den, phi_c) plt.plot(sco2, vp/1000, c=colors[i], label='Brie component = {}'.format(val)) plt.legend(loc='best') .. image-sg:: /advanced_examples/images/sphx_glr_CO2_seismic_002.png :alt: Patchy saturation :srcset: /advanced_examples/images/sphx_glr_CO2_seismic_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 143-147 **Reference** - Xu, H. (2006). Calculation of CO2 acoustic properties using Batzle-Wang equations. Geophysics, 71(2), F21-F23. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.151 seconds) .. _sphx_glr_download_advanced_examples_CO2_seismic.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: CO2_seismic.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: CO2_seismic.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: CO2_seismic.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_