- •Basics of Reservoir Simulation
- •with the
- •Eclipse Reservoir Simulator
- •Lecture Notes
- •Øystein Pettersen
- •Introduction
- •Prerequisites
- •1. Overview – minimum required data input
- •1.1 The grid
- •1.2 Petrophysics
- •1.3 Fluid properties
- •1.4 Soil properties
- •1.5 Equilibration
- •1.6 Well specification
- •1.7 Dynamics
- •1.8 Output
- •1.9 Simple Eclipse data file contents
- •A. Syntax
- •B. Data file (“BASIC data input example”)
- •A note on units
- •2. The RUNSPEC section
- •Grid dimension – keyword DIMENS
- •Phases
- •Unit system
- •Start date
- •Unified / Non-unified files (chapter 11)
- •Data checking only
- •Table dimensions
- •EQLDIMS
- •NSTACK (chapters 17-18)
- •Aquifer specifications – AQUDIMS (chapter 14)
- •Grid options (chapter 13)
- •Rock compressibility options (chapter 6)
- •Local Grid Refinement (chapter 15)
- •3. Structured grids (Corner point grids) (GRID section)
- •The Corner Point Grid
- •Defining a corner point grid in Eclipse
- •Moderately complex grids – FILL
- •4. Petrophysics (GRID section)
- •Average permeability
- •Transmissibility
- •Inactive cells
- •5. Fluid properties (PROPS section)
- •Tables in Eclipse
- •Relative permeability and Capillary Pressure
- •Two-phase curves (water – oil)
- •Three-phase relative permeabilities
- •PVT data
- •Water
- •Dead Oil
- •Live Oil
- •6. Soil compressibility (PROPS section)
- •7. Initialisation (SOLUTION section)
- •Datum depth
- •Contacts
- •Equilibrium – discussion – advanced issues
- •8. Time dependent input data (SCHEDULE section)
- •8.1 Well definitions and control
- •Well Specification (WELSPECS keyword)
- •Well Completions (COMPDAT keyword)
- •Production / Injection data (Keywords WCONPROD / WCONINJE)
- •Economic well constraints (keywords WECON, WECONINJ)
- •Other often used Well control keywords
- •8.2 Time stepping
- •Order of actions
- •8.3 Convergence Control I (keyword TUNING)
- •9. Regions
- •10. Simplified input and modification of Eclipse arrays
- •EQUALS
- •ADD, MULTIPLY
- •COPY
- •COPYBOX
- •11. Eclipse output, formats and files
- •File names
- •Textual output
- •The RPTXXX keywords
- •Time dependent vectors – SUMMARY data
- •Restart data and restart files
- •12. Restarting a simulation
- •The SKIPREST keyword
- •13. Fault modelling – Non-neighbour connections
- •The 7-point stencil
- •The fault layout – non-neighbour connections
- •Fault transmissibility multipliers
- •Defining a fault manually – the ADDZCORN keyword
- •14. Aquifer Modelling (GRID section)
- •Aquifer definition
- •Aquifer connection to reservoir
- •15. Local Grid Refinement
- •15.2 LGR on an irregular volume – Amalgamation
- •15.3 Wells on local grids – Horizontal wells
- •15.4 Horizontal wells and friction
- •16. Numerical Solution of the Flow Equations
- •The IMPES method
- •Solution of Non-linear Equations – the Newton-Raphson method
- •17. Iteration methods for linear systems
- •Direct, simple approach
- •The Gauss-Seidel method
- •Accelerators – the point SOR method
- •Conjugate Gradients – ORTHOMIN
- •Preconditioning
- •Preconditioning and Orthomin
- •Determining a preconditioner – Nested Factorisation
- •18. Convergence Control II – TUNING parameters
- •TUNING keyword summarized
- •19. Non-neighbour Connections and System Structure
- •A. GRF files in GRAF
- •A simple straightforward GRF file
- •Advanced GRF file
- •B. Some Considerations Regarding Grid Consistency
- •Grids planned for use in rock mechanics simulations
- •Embedding
- •Non-vertical coordinate lines
- •Honouring material properties of non-reservoir rock.
Aquifer connection to reservoir
Each aquifer connects to the reservoir in one aquifer cell only. This cell will, however typically connect to a large number of grid cells in the reservoir. To mimic the aquifer to reservoir flux, also the side of the reservoir grid blocks which the influx is coming, is specified.
The AQUCON keyword is used to specify which cells (in the reservoir) a given aquifer (defined by the aquifer id) connects to. The data is comprised of arbitrary many lines (building up the entire definition of all connections), each line with syntax,
AQ-id ix1 ix2 jy1 jy2 kz1 kz2 Face TranMult (4*)
AQ-id refers to the id used in AQUNUM
ix1 ix2 jy1 jy2 kz1 kz2 defines the grid box which the aquifer connects to. Normally two of the bounds are equal, so that the box is not a volume, but corresponds to a surface.
Face is the reservoir grid block face to which the aquifer is connected. The choices are, I– Left hand face of cell (face in negative I-direction)
I+ Right hand face (positive I-direction) J– Back face (negative J-direction)
J+ Front face (positive J-direction) K– Top face (negative K-direction) K+ Bottom face (positive K-direction)
TranMult is used to define a transmissibility multiplier between the aquifer cell and reservoir. The relevant transmissibility will be computed from the aquifer cell permeability and the receiving grid cell permeability, and can be modified by setting TranMult different from 1.0 (the default value).
Example
Aquifer 1 (cell A in Figure 20) shall be connected to the northern edge of the reservoir grid. The relevant cells are the row J = 1, I = 7-12, and assuming the grid is comprised of six layers which all connect to the aquifer, K = 1-6. Since the aquifer connects to the northern face of the cells, the appropriate face is ‘J–‘. We set the transmissibility multiplier to 0.75. The syntax for this connection would be,
AQUCON |
ix1 ix2 |
jy1 jy2 |
kz1 kz2 |
Face |
TranMult |
-- AQ-ID |
|||||
1 |
7 12 |
1 1 |
1 6 |
‘J-‘ |
0.75 / |
/ |
|
|
|
|
|
By normal use, the reservoir grid surface defined by the index box and ‘face’ is a reservoir edge, or connects to inactive blocks only. This condition should always be satisfied (although a flag exist to relax the condition (not recommended!), see Eclipse documentation).
The keyword AQUDIMS must be set in the RUNSPEC section.
15. Local Grid Refinement
In many problems we need a higher resolution (finer grid) than our grid permits. An example is where we model gas coning near a horizontal well. With a high resolution description as in Figure 21, we can track the gas front accurately, and give a good estimate for time and position of the gas breakthrough in the well. Also, the cells are sufficiently small that they can be classified as either gas filled or oil filled.
Figure 21. Gas cone near a horizontal well, fine grid, vertical cross section.
77
When the same problem is modelled on a coarser grid, we see that the shape of the cone is completely lost, and the front is no longer clearly defined, as all the relevant cells have an intermediate gas saturation (saturation larger in darker cells). Also neither the time of the breakthrough nor the exact place where it happens can be deducted from the simulation.
Figure 22. As figure 21, but on a coarse grid.
Using the resolution of Figure 21 on the entire grid is typically not possible due to memory limitations and computing time. One possibility is to extend the fine grid in all directions with coarser cells, as in Figure 23. This is, however, not a recommended solution, since the resulting long and narrow cells are sources of computational errors, especially when the size difference between large and small cells in the grid becomes to large.
In such situations it is much better to use local grid refinement (LGR). As the name implies, this means that part of the existing grid is replaced by a finer one, and that the replacement is done locally. An example of how this looks can be seen in Figure 24.
Figure 23. Extending resolution of fine cells non-uniformly, XY-view
78
Figure 24. Example where one cell in original grid has been replaced with an LGR
The LGRs which will be discussed in this context are regular cartesian. The appropriate keyword is then CARFIN (Cartesian refinement). Basically a box in the grid is replaced by another box with more cells, but there are some constraints (see nx ny nz below). The keyword is followed by one line of data, terminated by a slash. Note that only one LGR can be defined in one CARFIN keyword. The keyword must be repeated for each new LGR. Keyword ENDFIN terminates current CARFIN.
The syntax is then,
CARFIN |
-- Box to refine -- |
Cells in LGR |
-- |
||
-- LGR-name |
I1 I2 J1 J2 K1 K2 |
nx ny nz MaxWells |
LGR-name
Each local grid must have a unique name. All later references to the LGR is by its name
The “Box to refine” is a standard grid box which we have encountered many times now.
nx ny nz
These numbers define the total number of cells in each direction in the LGR. The numbers can however not be chosen entirely freely. Basically, the constraint is that the cell edges in the old (coarse) grid must coincide with edges in the refined grid. Or, the number of refined cells in each of the old cells must be an integer. So e.g. two coarse cells cannot be divided into five fine cells, as that would give 2.5 fine cells in each coarse block.
MaxWells
As we shall see eventually, most well keywords must be redefined when wells are defined on a local grid. Therefore, the maximum number of wells permitted on the LGR must be given already when the local grid is defined.
Example
The box I = 13-15, J = 4-5, K = 3 shall be refined. On the coarse grid, the dimensions of the box are, NCI = 3, NCJ = 2, NCK = 1. Therefore nx must be divisible by three, and ny must be divisible by two. It’s often easier to think in terms of how many fine cells go into each coarse cell. In this case, we divide each coarse cell into three cells in the x-direction, 5 cells in the y-direction, and 4 cells in the z- direction. That way, nx = 9 (three coarse cells, three fine in each), ny=10 (two coarse cells, five in each), and nz=4. So the CARFIN keyword becomes,
CARFIN
---- Box to refine -- Cells in LGR
-- LGR-name |
I1 |
I2 |
J1 |
J2 |
K1 |
K2 |
nx |
ny |
nz |
MaxWells |
/ |
‘ExLGR1’ |
13 |
15 |
4 |
5 |
3 |
3 |
9 |
10 |
4 |
1 |
79
