- Introduction
- Wellbore Pressure Response Generator
- Autoencoder Neural Network
- Wellbore Pressure Response Dataset
This is Petrobras' second repository on GitHub. It contains the Reservoir Autoencoders codebase which is part of the CÉOS Strategic Reservoir program.
Well testing strategies are based on measuring pressure variation on reservoirs after production or injection. Based on these values and their derivatives, important information can be gathered about the formation such as the transmissibility, formation damage (skin), reservoir geometry, etc.
The Reservoir Autoencoders repository contains the wellbore pressure response generator, an autoencoder neural network and a wellbore pressure response dataset.
This solution has two practical day-to-day applications on reservoir evaluation:
- Building a well test interpretation assistant capable of suggesting transmissibility and reservoir geometry automatically based on the raw pressure data;
- Enabling the use of pressure dynamic data asd inputs for analogous reservoir queries.
The Reservoir Autoencoders is the second entry the Petrobras' program called Conexões para Inovação - Módulo Open Lab. This is an open project with three different parts:
- A Wellbore Pressure Response Generator capable of building pressure responses for 7 different well/reservoir configurations;
- An Autoencoder Neural Network trained on a dataset of 20.000 synthetic wellbore pressure responses capable of clustering the data based on transmissibility and reservoir geometries;
- A Wellbore Pressure Response Dataset with 20.000 synthetic wellbore pressure responses based on 20.000 different combinations of reservoir properties such as permeability, heught, storage, skin factor, etc.
With this project, Petrobras intends to develop (fix, improve, supplement, etc.) and/or foment:
- The wellbore pressure response generator itself;
- The autoencoder network itself;
- New algorithms using the wellbore pressure response dataset.
We expect to receive various types of contributions from individuals, research institutions, startups, companies and partner oil operators.
Before you can contribute to this project, you need to read and agree to the following documents:
It is also very important to know, participate and follow the discussions. See the discussions section.
All the code of this project is licensed under the Apache 2.0 License and all dataset data files (CSV files in the subdirectories of the dataset directory) are licensed under the Creative Commons Attribution 4.0 International License.
The WPRGenerator class synthesizes wellbore pressure response based on 13 parameters:
- Permeability
- Porosity
- Reservoir height
- Total compressibility
- Volume formation factor
- Viscosity
- Flow rate
- Skin factor
- Barriers distances (L1, L2, L3, L4)
- Well radius
The image method is then used to compute the wellbore pressure response for each time stamp.
Based on different configurations of the barrier distances parameters, the WPRGenerator class can synthesize responses for any of 6 six common configurations: infinite reservoir, one barrier, two orthogonal barriers, two parallel barriers, three orthogonal barriers and four orthogonal barriers.
In order to compute wellbore storage, the RadialStorage.py helper file is needed. This strategy was implemented to separate wellbore responses created using the Laplace transform and subsequent Stefehst inversion.
Autoencoders are deep learning algorithms for compression and decompression of data.
Network training is based on using the same datasets as inputs and outputs, effectively training the network to reproduce the data. The caveat here is based on the network architecture, that has an encoding and a decoding halves.
In the first block, the number of neuros on each layers decreases progressively, reaching a minimum in the so called latent layer. From this layer on, starts the decoding block, with an increasing number of neurons on each layer, until the same input dimmensionality is reached in the last layer.
These networks' capacity to reduce data dimmensionality until the latent layer and then rebuild it with minimum data loss leads to the conclusion that the information outputted by the latent layer contains is a "minimal representation" of the input data. Therefore, this network becomes an interesting alternative to reduce dimmensionality of complex datasets.
This is the dataset that was used to train the Autoencoder Neural Network. Each row represents a different wellbore pressure response, ate its columns are described below.
Columns | Description |
---|---|
1 through 15 | Contains the input data used to generate the current response |
16 through 35 | Timestamps used to calculate pressure variation and its derivative |
36 through 55 | Pressure variation values |
56 through 75 | Pressure variation derivative values |
Parameter | Minimum | Maximum |
---|---|---|
Permeability — k (md) | 50 | 1000 |
Reservoir height — h (m) | 10 | 300 |
Volume formation factor — B (m3/m3) | 1 | 2 |
Wellbore storage | 0.01 | 5 |
Skin | -2 | 5 |
Flow rate - m3/d | 100 | 1000 |
Porosity* | 20% | 20% |
Total compressibility (cm2/kgf)* | 1e-5 | 1e-5 |
Viscosity — $\mu (cp)$* | 1 | 1 |
Well radius - m | 0.108 | 0.108 |