Simulate reservoir compaction due to pore-pressure changes by integrating the solution proposed by Sharma (1956) and Tempone et al. (2010) on the volume of rectangular cells. This strategy is similar to that proposed by Muñoz and Roehl (2017). The difference here is that we solve the volume integrals according to Nagy et al. (2000), Nagy et al. (2002) and Fukushima (2020)
-
Sharma, B. D. (1956). Stresses in an infinite slab due to a nucleus of thermoelastic strain in it. Z. Angew. Math. Mech. 36 (1/2): 75.
-
Nagy, D., Papp, G. and Benedek, J. (2000). The gravitational potential and its derivatives for the prism. Journal of Geodesy 74: 552. https://doi.org/10.1007/s001900000116
-
Nagy, D., Papp, G. and Benedek, J. (2002). Corrections to “The gravitational potential and its derivatives for the prism”. Journal of Geodesy 76: 475. https://doi.org/10.1007/s00190-002-0264-7
-
Tempone, P., Fjær, E. and Landrø, M. (2010). Improved solution of displacements due to a compacting reservoir over a rigid basement. Applied Mathematical Modelling 34: 3352. https://doi.org/10.1016/j.apm.2010.02.025
-
Muñoz, L. F. P. and Roehl, D. (2017). An analytical solution for displacements due to reservoir compaction under arbitrary pressure changes. Applied Mathematical Modelling 52: 145. https://doi.org/10.1016/j.apm.2017.06.023
-
Fukushima, T. (2020). Speed and accuracy improvements in standard algorithm for prismatic gravitational field. Geophysical Journal International 222: 1898–1908. https://doi.org/10.1093/gji/ggaa240
This paper has been submitted for publication in Brazilian Journal of Geophysics (2022) of the Brazilian Geophysical Society
We have presented alternative solutions for the displacement and stress fields outside and inside of a 3D right rectangular prism under constant pressure. These solutions are obtained by integrating the well-known nucleus-of-strain solution over the volume of the prism. They are based on the similarity between the gravitational potential yielded by a volume source under a density variation and the thermoelastic displacement potential yielded by a volume source in a half-space under a pressure variation. This similarity enables the use of closed expressions of the gravitational potential and its derivatives. We use our solution for approximating the displacement and stress fields due to a reservoir with arbitrary shape and under arbitrary pressure changes. We discretized the reservoir as a grid of 3D right rectangular prisms juxtaposed in the horizontal and vertical directions. Each prism has homogeneous pressure; however, pressure variations among different prisms are allowed. This parametrization of the reservoir yields a piecewise-constant distribution of pressure in the subsurface. We validate the resultant displacement and stress fields due to the reservoir by numerical simulations including a reservoir with arbitrary geometry and under arbitrary pressure distribution, based on a production oil field in offshore Brazil.
You can download a copy of all the files in this repository by cloning the git repository:
git clone https://github.com/pinga-lab/DisReserv.git
All source code used to generate the results and figures in the paper are in
the code
folder. The sources for the manuscript text are in manuscript
folder.
The figures shown in the paper were generated by running the source codes in the code
folder and they were saved in the Fig
folder.
See the README.md
files in each directory for a full description.
The calculations and figure generation are all run inside Jupyter notebooks. You can view a static (non-executable) version of the notebooks in the nbviewer webservice:
http://nbviewer.jupyter.org/github/pinga-lab/DisReserv
See sections below for instructions on executing the code.
You'll need a working Python 3.7.6 environment with all the standard scientific packages installed (numpy, scipy, matplotlib, etc). The easiest (and recommended) way to get this is to download and install the Anaconda Python distribution. Make sure you get the Python 3.7.6 version.
Use conda
package manager (included in Anaconda) to create a
virtual environment with
all the required packages installed.
Run the following command in this folder (where environment.yml
is located):
conda env create
To activate the conda environment, run
source activate disreserv
or, if you're on Windows,
activate disreserv
This will enable the environment for your current terminal session. After running the code, deactivate the environment with the following commands:
source deactivate
or, if you're on Windows,
deactivate
Windows users: We recommend having a bash shell and the make
installed
to run the code, produce the results and check the code. You may download the
Git for Windows and the
Software Carpentry Windows Installer.
To execute the code in the Jupyter notebooks, you must first start the notebook server by going into the repository folder and running:
jupyter notebook
Make sure you have the conda
environment enabled first.
This will start the server and open your default web browser to the Jupyter
interface. In the page, go into the code
folder and select the
notebook that you wish to view/run.
The notebook is divided into cells (some have text while other have code).
Each cell can be executed using Shift + Enter
.
Executing text cells does nothing while executing code cells runs the code
and produces it's output.
To execute the whole notebook, run all cells in order or use "Cell -> Run All"
from the menu bar.
Archived version at Zenodo
You can also find an archived version of the code at:
All source code is made available under a BSD 3-clause license. You can freely
use and modify the code, without warranty, so long as you provide attribution
to the authors. See LICENSE.md
for the full license text.
The manuscript text is not open source. The authors reserve the rights to the article content, which is currently submitted for publication in Brazilian Journal of Geophysics (2022)