0% found this document useful (0 votes)
53 views26 pages

Bao2017 Article FullyImplicitSimulationOfPolym

polymer flood simulation

Uploaded by

xin shi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views26 pages

Bao2017 Article FullyImplicitSimulationOfPolym

polymer flood simulation

Uploaded by

xin shi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

Comput Geosci (2017) 21:1219–1244

DOI 10.1007/s10596-017-9624-5

ORIGINAL PAPER

Fully implicit simulation of polymer flooding with MRST


Kai Bao1 · Knut-Andreas Lie1 · Olav Møyner1 · Ming Liu2

Received: 30 September 2016 / Accepted: 1 February 2017 / Published online: 11 March 2017
© Springer International Publishing Switzerland 2017

Abstract The present work describes a fully implicit sim- inner-Newton iteration process within the global nonlin-
ulator for polymer injection implemented in the free, open- ear iteration. The implementation is based on the automatic
source MATLAB Reservoir Simulation Toolbox (MRST). differentiation framework in MRST (MRST-AD), and an
Polymer injection is one of the widely used enhanced oil iterative linear solver with a constrained pressure residual
recovery (EOR) techniques, and complicated physical pro- (CPR) preconditioner is used to solve the resulting lin-
cess is involved, which makes accurate simulation very ear systems efficiently. We discuss certain implementation
challenging. The proposed work is intended for provid- details to show how convenient it is to use the existing
ing a powerful and flexible tool to investigate the polymer functionality in MRST to develop an accurate and efficient
injection process in realistic reservoir scenarios. Within the polymer flooding simulator for real fields. With its modular
model, the polymer component is assumed to be only trans- design, vectorized implementation, support for stratigraphic
ported in the water phase and adsorbed in the rock. The and general unstructured grids, and automatic differentia-
hydrocarbon phases are not influenced by the polymer, and tion framework, MRST is a very powerful prototyping and
they are described with the standard, three-phase, black- experimentation platform for development of new reservoir
oil equations. The effects of the polymer are simulated simulators. To verify the simulator, we first compare it with
based on the Todd–Longstaff mixing model, accounting a commercial simulator and good agreement is achieved.
for adsorption, inaccessible pore space, and permeability Then, we apply the new simulator to a few realistic reservoir
reduction effects. Shear-thinning/thickening effects based models to investigate the effect of adding polymer injection,
on shear rate are also included by the means of a separate and computational efficiency is demonstrated. Finally, we
combine existing optimization functionality in MRST with
the new polymer simulator to optimize polymer flooding for
two different reservoir models. We argue that the presented
 Kai Bao software framework can be used as an efficient prototyp-
[email protected] ing tool to evaluate new models for polymer–water flooding
Knut-Andreas Lie processes in real reservoir fields.
[email protected]
Olav Møyner Keywords MRST · Open-source implementation ·
[email protected] Polymer flooding · Black-oil · Flow diagnostics
Ming Liu
[email protected]
1 Introduction
1 Mathematics and Cybernetics, SINTEF Digital,
P.O. Box 124 Blindern, 0314 Oslo, Norway Water-based methods for enhanced oil recovery (EOR) con-
2 Statoil ASA,28th Floor, West Tower, Twin Towers, B-12, sist of adding active chemical or biological substances that
Jianwai Ave. Chaoyang District, 100022, Beijing, modify the physical properties of the fluids and/or the
People’s Republic of China porous media at the interface between oil and water [7].
1220 Comput Geosci (2017) 21:1219–1244

Polymer flooding is one of the most widely applied water- alkali–surfactant–polymer (ASP) flooding, and polymer–
based EOR techniques [23]. In polymer flooding, polymer alternating-gas (PAG) [8] processes, within which polymer
molecules of relatively large size are added to the injected plays an important role for mobility ratio control.
water to reduce its mobility and hence improve the local Herein, we will introduce a simulator framework that
displacement and the volumetric sweep efficiency of the has been developed on top of the open-source MATLAB
water flood [7, 13, 24]. The most important mechanism Reservoir Simulation Toolbox [16] as a versatile and flex-
is that the dissolved polymer molecules increase the brine ible test bench for rapid prototyping of new models of
viscosity, which increases the saturation behind the water polymer flooding. The simulator is—like most commercial
front, enables the water drive to push more oil through the simulators—based on a black-oil formulation with sim-
reservoir, and reduces its tendency of channeling through ple first-order, upstream weighting for spatial discretization
high-flow zones. The presence of polymer may also reduce and fully implicit time stepping. This offers unconditional
the permeability of the reservoir rock. Onshore, polymer stability for a wide range of physical flow regimes and reser-
flooding can be considered a mature technology, having voir heterogeneities. Moreover, combining the fully implicit
migrated from USA to China where the world’s largest formulation with automatic differentiation ensures that it is
polymer-driven oil production is found in the Daqing Oil simple to extend the basic flow models with new constitu-
field. Offshore applications are few and more challenging tive relationships, extra conservation equations, new func-
because of high-salinity formation water, well placement tional dependencies, etc. By using numerical routines and
and large well spacing, stability under injection, produced vectorization from MATLAB combined with discrete differ-
water and polymer treatment and other HSE (health, safety, ential and averaging operators from MRST, these equations
and environment) requirements, logistic difficulties, etc. can be implemented in a very compact form that is close to
In its most basic form, polymer flooding is described by a the mathematical formulation [6, 10]. Once you have imple-
flow model that consists of two or three phases and three or mented the discrete equations, the software will generate the
four fluid components. Compared with the standard black- discretizations and linearizations needed to obtain a work-
oil models, the presence of long-chain polymer molecules ing simulator that by default is designed to run on general
in the water phase introduces a series of new flow effects. unstructured grids. To test the performance of your new
Depending on the types of the polymer used, and also the simulator, you can use one of the many grid factory rou-
rock and brine properties, polymer can be adsorbed onto tines and routines for generating petrophysical data to set
the surface of the reservoir rock, and contribute to reducing up simplified and idealized test cases with a large variety
porosity and permeability. Polymer flooding is in reality a of structured and unstructured grid formats in two and three
miscible process, but is typically simulated on a field scale spatial dimensions. Alternatively, you can also use the func-
using immiscible flow models which use empirical mixture tionality for reading and parsing commercial input decks to
models to account for unresolved miscibility effects. More- set up proper validation on test cases having the complexity
over, the diluted polymer solution is in most cases pseu- encountered in the daily work of reservoir engineers.
doplastic or shear-thinning, and hence has lower viscosity Using a scripting language like MATLAB will generally
near injection wells and other high-flow zones where shear introduce a computational overhead, which can be quite sig-
rates are high. This non-Newtonian fluid rheology improves nificant for small systems. In our experience, however, the
injectivity and gradually introduces the desired mobility lack of computational efficiency is by far out-weighted by a
control in terms of a stronger displacement front, but may more efficient development process, which is largely inde-
also reduce sweep efficiency since the polymer solution will pendent on your choice of operating system. At any point,
have a higher tendency of flowing through high-permeable you can stop the execution of the simulator to inspect your
regions. Polymer solutions can also exhibit pseudodilatant data, modify their values or the data structure itself, execute
or shear-thickening behavior, which improves sweep effi- any number of statements and function calls, and go back
ciency and reduces injectivity. Understanding and being and reiterate parts of the program, possibly with modified or
able to accurately simulate the rheological behavior of the additional data. For larger systems, the majority of the com-
polymer–water mixture on a reservoir scale is therefore putational time of a well-designed simulator should be spent
important to design successful polymer injection projects. processing floating-point numbers. For this, MATLAB is
In addition to the basic effects discussed so far, the viscosity efficient and fully comparable with compiled languages.
and mobility control of a polymer flood tend to be signif- Tests on two- and three-phase models with the order of ten
icantly affected by the fluid chemistry of the injected and to hundred thousand cells show that MRST simulators based
resident water. More advanced models of polymer flood- on automatic differentiation are between two and ten times
ing therefore account for pH effects, salts, etc. Likewise, to slower than fully optimized commercial simulators.
achieve better oil recovery, polymer is often combined with In the following, we will review the basic flow equa-
other EOR processes, such as surfactant–polymer flooding, tions of polymer flooding and discuss how to formulate an
Comput Geosci (2017) 21:1219–1244 1221

efficient strategy that uses a separate inner-Newton itera- gas-oil ratio rs and oil-gas ratio rv , which measure the vol-
tion process within the global nonlinear solution process. umes of gas dissolved in the oleic phase and oil vaporized in
We then introduce key elements of the MRST software in the gaseous phase, respectively, are all user-specified func-
some more detail and outline how we have applied the flex- tions of phase pressures. The phase fluxes vα are given from
ible grid structure, discrete differential operators, automatic Darcy’s law:
differentiation, and object-oriented framework, to develop a
new and efficient polymer simulator that is readily applica-
vα = −λα K(∇pα − ρα g∇z), α = o, w, g. (2)
ble to simple conceptual models as well as models having
the full complexity of real assets. We end the paper by pre-
senting a series of numerical test cases for verifying and Here, K is the absolute permeability of the reservoir rock,
validating the simulator. To make new simulator prototypes while λα = krα /μα is the mobility of phase α, where krα
capable of handling realistic flow models on large models, is the relative permeability and μα is the phase viscosity.
the underlying framework offers CPR-type precondition- The model is closed by assuming that the fluids fill the
ers in combination with multigrid linear solvers, automated pore space completely, so + sw + sg = 1, and by supply-
time-step selection, etc. In a recent paper, we also discussed ing saturation-dependent capillary functions that relate the
how to formulate sequential solution strategies and use these phase pressures. Altogether, the equation system will have
to introduce a highly efficient multiscale pressure solver for three primary unknowns. Since we are going to study water-
polymer flooding [3]. based EOR, we choose the first two to be water pressure
pw and water saturation sw . The third unknown will depend
on the phases present locally in each cell: if only the aque-
2 Model equations ous and liquid phases are present, we choose rs , whereas
rv is chosen when only the aqueous phase is present. If all
In this section, we will state our physical assumptions and phases are present, rs and rv depend on pressure and we
outline the flow equations for polymer flooding, which are hence choose sg as the last unknown.
built as an extension of a general black-oil model. To get a complete model, we also need to support ini-
tial and boundary conditions. Herein, we will only consider
2.1 The black-oil model problems with no-flow conditions on the outer boundaries
and assume that the initial condition is supplied entirely by
The black-oil model is a special multicomponent, multi- the user, e.g., as a hydrostatic pressure and fluid distribu-
phase flow model with no diffusion among the fluid com- tion. In addition, we need extra well equations to compute
ponents. The name ”black-oil” refers to the assumption that the volumetric source terms qα . To this end, we use a
various hydrocarbon species can be lumped together to form semi-analytical model [21]:
two components at surface conditions—a heavy hydrocar-
bon component called ”oil” and a light component called
qα = λα WI (pw − p), (3)
”gas.” At reservoir conditions, the two components can be
partially or completely dissolved in each other, depending
on the pressure, forming a liquid oleic phase and a gaseous where p is the reservoir pressure (inside a grid cell) and
phase. In addition, there is an aqueous phase, which herein pw is the pressure inside the wellbore. The well index WI
is assumed to consist of only water. The corresponding accounts for rock properties and geometric factors affect-
continuity equations read as follows: ing the flow. The flow inside the wellbore is assumed to
be instantaneous, so that fluids injected at the surface will
∂t (φbw sw ) + ∇ · (bw vw ) − bw qw = 0, (1a) enter the reservoir immediately. Likewise, the wellbore is
∂t [φ(bo so + bg rv sg )] + ∇ · (bo vo + bg rv vg ) assumed to be in hydrostatic equilibrium, so that the pres-
sure at any point can be computed as a hydrostatic pressure
−(bo qo + bg rv qg ) = 0, (1b)
drop from a datum point called the bottom hole, i.e., pw =
∂t [φ(bg sg + bo rs so )] + ∇ · (bg vg + bo rs vo ) pbh + ph (z). Wells are typically controlled by surface rate
−(bg qg + bo rs qo ) = 0. (1c) or the bottom-hole pressure. These controls are given as a
set of extra equations that impose target values for fluid
Here, φ is the porosity of the rock while sα denotes sat- rates and bottom-hole pressures. And also, a certain logic
uration, pα phase pressure, and qα the volumetric source of that determines what happens if the computed rates or pres-
phase α. The inverse formation-volume factors bα , which sures violate operational constraints, in which case a well
measure the ratio between the bulk volumes of a fluid com- may switch from rate control to pressure control, shut in
ponent occupied at surface and reservoir conditions, and the hydrocarbon rates become too low, etc.
1222 Comput Geosci (2017) 21:1219–1244

2.2 The polymer model lodged in narrow pore throats. The permeability reduction
Rk representing this effect is given as follows:
In the present model, we assume that polymer is trans- ca (c, cmax )
ported in the aqueous phase and that polymer changes the Rk (c, cmax ) = 1 + (RRF − 1) a
,
cmax
viscosity of this phase, but does not affect the liquid oleic
cmax (x, t) = max c(x, s), (7)
and gaseous phases. The corresponding continuity equation s≤t
reads as follows: a
where cmax is the maximum adsorbed concentration and the
   
∂t φ(1 − sipv )bw sw c + ∂t ρr ca (1 − φ) hysteretic residual resistance factor RRF ≥ 1 is defined as
the ratio between water permeability measured before and
+∇ · (bw vp c) − bw qw c = 0. (4)
after polymer flooding. Both these quantities depend on the
Here, c ∈ [0, c∗ ] is the polymer concentration given in units rock type.
of mass per volume of water and c∗ is the maximum pos-
sible concentration, ca = ca (c) is the polymer adsorption Effective viscosities To compute the effective viscosities of
concentration, ρr is the density of the reservoir rock, and the water–polymer mixture, we will use the Todd–Longstaff
sipv is the inaccessible (or dead) pore volume. The reduced mixing model [25]. In this model, the degree of mixing of
mobility of the mixture of pure water and diluted polymer is polymer into water is represented by a mixing parameter
modeled by introducing effective mixture viscosities μw,eff ω ∈ [0, 1], which generally depends on the displacement
and μp,eff that depend upon the polymer concentration. This scenario, the geological heterogeneity, etc. If ω = 1, water
gives modified Darcy equations of the form: and polymer are fully mixed, whereas the polymer solution
krw (sw ) is completely segregated from pure water if ω = 0. Let
vw = − K (∇pw − ρw g∇z) , (5)
μw,eff (c)Rk (c) μfm = μfm (c) denote the viscosity of a fully mixed polymer
krw (sw ) solution, then the effective polymer viscosity is calculated
vp = − K (∇pw − ρw g∇z) . (6) as follows:
μp,eff (c)Rk (c)
Here, the non-decreasing function Rk (c) models the reduced μp,eff = μfm (c)ω · μ1−ω
p , (8)
permeability experienced by the water–polymer mixture as where μp = μfm (c∗ ). The standard way of defining μfm
a result of adsorption of polymer onto the rock’s surface. is to write μfm = mμ (c)μw , where the viscosity multiplier
mμ is a user-prescribed function. The partially mixed water
Inaccessible pore space Many polymer flooding experi- viscosity is calculated in a similar way as follows:
ments show that polymer propagates faster through a porous
μpm = μfm (c)ω · μ1−ω
w . (9)
medium than an inert chemical tracer dissolved in the poly-
mer solution [13]. There are two reasons for this: first of The effective water viscosity is then calculated by summing
all, large-sized polymer molecules cannot enter narrow pore the contributions from the polymer solution and the pure
throats and dead-end pore channels. And secondly, the free water. Setting c̄ = c/c∗ results in the following alternative
tumbling of polymer molecules is only possible at the cen- expression:
ter of the pore channels, away from the surface of the pore 1 1 − c̄ c̄
walls. Hence, the polymer solution can only flow through = + ,
μw,eff μpm μp,eff
a fraction of the pore space. In Eq. 4, this effect is mod-
mμ (c)ω μw
eled by the scalar rock parameter sipv , which is defined as μw,eff = (c∗ )1−ω . (10)
the amount of the pore volume inaccessible to the polymer 1 − c̄ + c̄/mμ
solution for each specific rock type [22].
2.3 Rheology of the polymer solution

Adsorption Polymer may attach to the rock surface The viscosity (or thickness) of a fluid is defined as the
through physical adsorption, which will reduce the polymer ratio between the shear stress and the shear rate and mea-
concentration and introduce a resistance to flow that reduces sures the resistance of a fluid mass to change its form. The
the effective permeability of water. This process is assumed aqueous, oleic, and gaseous phase in the black-oil model
to be instantaneous and reversible and is modeled through all have Newtonian viscosity, which means that the vis-
the accumulation term ρr ca (1 − φ) in Eq. 4. cosity is independent of the experienced shear rate and
can be modeled as a constant or as a pressure- and/or
Permeability reduction The rock’s effective permeability temperature-dependent quantity. Polymer solutions, on the
to water can be reduced, primarily by polymer adsorp- other hand, generally have shear-thinning viscosities. As
tion but also as a result of polymer molecules that become shear rates increase, polymer molecules are elongated and
Comput Geosci (2017) 21:1219–1244 1223

aligned with the flow direction. Once this shear effect the discretizations and solvers, we give a brief introduction
becomes sufficiently strong, the molecules will uncoil and to [16]; more details can be found in [6, 11], and [10].
untangle, causing a decrease in the effective viscosity of The essence of MRST is a relatively slim core mod-
the water–polymer mixture. (Polymer solutions may also be ule mrst-core that contains a flexible grid structure and
shear-thickening, but this is less common). a number of grid factory routines; routines for visualiz-
Herein, we will represent shear effects using the same ing grids and data represented on cells and cell faces;
model as in a commercial simulator [22]. This model basic functionality for representing petrophysical proper-
assumes that shear rate of water is proportional to the water ties, boundary conditions, source terms, and wells; compu-
velocity; as a result, the calculation of shear effect with this tation of transmissibilities and data structures holding the
model is based on water velocity uw . This assumption is not primary unknowns; basic functionality for automatic dif-
valid in general, but is reasonable when applied to a single ferentiation (AD); and various low-level utility routines.
rock type within reservoirs. A shear factor Z is introduced The second, and by far the largest part of the software,
to describe the shear effect, which is calculated as follows: is a set of add-on modules that implement discretizations
μw,sh (uw,sh ) 1 + (mμ (c) − 1)msh (uw,sh ) and solvers; more complex data structures, extended grid
Z= = , (11) formats, and visualization routines; more advanced AD
μw,eff mμ (c)
functionality for building simulators; reading and process-
where the multiplier msh ∈ [0, 1] is a user-prescribed func- ing of industry-standard input decks; and a wide variety of
tion of the unknown shear-modified water velocity uw,sh , simulators, graphical user interfaces, and workflow tools.
μw,eff is the effective water viscosity (10) without consid- Many of these modules offer standalone functionality built
ering the shear effect. With no shear effect (msh = 1), on top of mrst-core and standard MATLAB routines.
we recover the effective water viscosity, whereas the shear More advanced simulators and workflow tools, on the other
viscosity equals μw,eff /mμ (c) in the case of maximum hand, typically rely on functionality from many of the other
shear-thinning (msh = 0). To calculate the unknown veloc- MRST modules. The majority of the software that is pub-
ity uw,sh , we first introduce the effective water velocity uw,0 licly available is quite mature and well documented in a
computed from Eq. 6 with no shear effect, and then use the format similar to that used in standard MATLAB functions.
relation as follows: Most modules also offer examples and tutorials written in a
μw,eff
uw,sh = uw,0 workbook format using cell-mode scripts. Herein, we focus
μw,sh (uw,sh ) on the AD-OO family of modules rapid prototyping of fully
combined with Eq. 11 to derive the following implicit implicit simulators (see Fig. 1).
equation for uw,sh :
  3.1 Grids and discrete differentiation operators
uw,sh 1 + (mμ (c) − 1)msh (uw,sh ) − mμ (c)uw,0 = 0. (12)
Here, uw,0 is the un-sheared water velocity. When working with grids that are more complex than sim-
Once Eq. 12 is solved for uw,sh , we can calculate shear ple rectilinear boxes, one needs to introduce some kind of
factor Z from Eq. 11 and calculate the shear-modified data structure to represent the geometry and topology of the
viscosity μw,sh and μp,sh as follows: grid. In MRST, we have chosen to use a quite rich format for
unstructured grids, in which general geometric and topolog-
μw,sh = μw,eff Z μp,sh = μp,eff Z.
ical information is always present and represented explicitly
In practice, we compute the modified phase fluxes directly regardless of whether a specific grid allows for simplifica-
as follows: tions. The reason for this is that we want to ensure inter-
vw vp operability among different grid types and computational
vw,sh = vp,sh =
Z Z tools, and ensure maximal flexibility when developing new
to avoid repeated computation. methods. As a result, grid and petrophysical properties are
passed as input to almost all simulation and workflow tools
in MRST. For standard low-order, finite-volume discretiza-
3 The three-phase black-oil simulator in MRST tions, one does not need all this information, and in many
simulators, grid and petrophysical parameters are only seen
In this section, we will discuss how to discretize and solve explicitly by the preprocessor, which constructs a connec-
the basic black-oil equations and how to implement these tion graph with cell properties and pore volumes associ-
discretizations and solvers using functionality for rapid pro- ated with vertices and inter-cell transmissibilities associated
totyping from the open-source MRST software to obtain a with edges. To simplify the presentation, we will herein
simulator framework that is efficient and simple to extend only discuss this information and show how it can be
with new functionality. However, before we start discussing used to build abstract operators implementing powerful
1224 Comput Geosci (2017) 21:1219–1244

Fig. 1 Modules from MRST used to implement a fully implicit polymer simulator

averaging and discrete differential operators that later will We can now define discrete counterparts of the continu-
enable us to write the discrete flow equations in a very ous divergence and gradient operators. The div operator is
compact form. a linear mapping from faces to cells. If v[f ] denotes a dis-
Figure 2 illustrates parts of the unstructured grid format, crete flux over face f with orientation from cell C1 (f ) to
in which grids are assumed to consist of a set of match- cell C2 (f ), then the divergence of this flux restricted to cell
ing polygonal (2D) or polyhedral (3D) cells with matching c is given as follows:
faces. These grids are represented using three data objects— 
cells, faces, and nodes—which contain the geometry and div(v)[c] = sgn(f )v[f ],
topology of the grid. To form our discrete differential oper- f ∈F (c)

ators, we basically need two mappings. The first is the map 1, if c = C1 (f ),
sgn(f ) = (13)
F (c), which for each cell gives the faces that bound the −1, if c = C2 (f ).
cell. The second is a mapping that brings you from a given
cell face f to the two cells C1 (f ) and C2 (f ) that lie on The grad operator maps from cell pairs to faces. If, for
opposite sides of the face. In the following, we will use instance, p denotes the array of discrete cell pressures, the
boldfaced letters to represent arrays of discrete quantities gradient of this cell pressure restricted to face f is defined
and use the notation q[c] and q[f ] to denote the element as follows:
of an array q corresponding to grid cell c and cell face f ,
respectively. grad(p)[f ] = p[C2 (f )] − p[C1 (f )]. (14)

Fig. 2 Illustration of grids in MRST. The upper plot shows the relation between cells and faces which can be used to define discrete differentiation
operators. The lower plots show various grids of increasing complexity, from a simple rectilinear grid to a model of the Gullfaks field from the
Norwegian North Sea
Comput Geosci (2017) 21:1219–1244 1225

If we assume no-flow conditions on the outer faces, the and the phase flux at the cell interfaces, we introduce the
discrete gradient operator is the adjoint of the divergence operator for extracting the upstream value as follows:
operator as in the continuous case, i.e., 
h[C1 (f )], if grad(p)[f ] − g avga (ρ)[f ]grad(z)[f ] > 0,
  upw(h)[f ] =
h[C2 (f )], otherwise.
div(v)[c] p[c] + grad(p)[f ] v[f ] = 0. (17)
c f
Then, the discrete version of Darcy’s law multiplied by bw
Since div and grad are linear operators, they can be rep-
reads as follows:
resented by a sparse matrix D so that grad(x) = Dx and
div(x) = −DT x. Figure 3 shows the sparsity structure of (bv)[f ] = −upw(bλ)[f ] T[f ] (grad(p)[f ]
D for three different 2D grids. − g avga (ρ)[f ] grad(z)[f ]) . (18)
In addition, we need to define the transmissibilities that
describe the flow across a cell face f given a unit pressure If we now collect the discrete conservation equations for
drop between the two neighboring cells i = C1 (f ) and k = the aqueous, oleic, and gaseous phases along with the well
C2 (f ). To this end, let Ai,k denote the area of the face, ni,k equations—all written on residual form—we can write the
the normal to this face, and ci,k the vector from the centroid resulting system of nonlinear equation as follows:
of cell i to the centroid of the face. Then, the transmissibility
R(x) = 0, (19)
is defined as follows:
 −1 ci,k · ni,k
where x is the vector of unknown state variables at the
−1 −1
T[f ] = Ti,k + Tk,i , Ti,k = Ai,k Ki , next time step. The standard way to solve such a nonlin-
|ci,k |2
ear system is to use Newton’s method. That is, we write
(15) x = x0 + x, and use a standard multidimensional Taylor
where Ki is the permeability tensor in cell i with primal expansion to derive the iterative scheme as follows:
axes aligned with the grid axes. To provide a complete dis-

J(xi ) xi+1 − xi = −R(xi ), (20)
cretization, we also need to supply averaging operators that
can map rock and fluid properties from cells to faces. For where J = dR/dx is the Jacobian matrix of the residual
this, we will mainly use arithmetic averaging, which in its equations.
simplest form can be written as follows:
avga (q)[f ] = 1
(q[C1 (f )] + q[C2 (f )]) . 3.3 Automatic differentiation in MRST
2

3.2 Discrete flow equations for black-oil Before continuing to describe our implementation of
the black-oil simulator, we give a quick introduction to
The discrete operators defined above can be used to dis- automatic differentiation (AD) for the benefit of read-
cretize the flow equations in a very compact form. If we use ers not familiar with this powerful technique. Automatic
a first-order, implicit temporal discretization and a standard differentiation—also known as algorithmic or computa-
two-point spatial discretization with upstream weighting, tional differentiation—is a set of techniques for simultane-
the discrete conservation for the aqueous phase can be ous numerical evaluation of a function and its derivatives
written as follows: with respect to a set of predefined primary variables. The
key idea of AD is that every function evaluation will execute
1
t(φ[c] b[c] s[c])n+1 − t
1
(φ[c] b[c] s[c])n a sequence of elementary arithmetic operations and func-
(16)
+div(bv)[c] n+1 − (b[c]q[c])n+1 = 0, tions, for which analytical derivatives are known. To exem-
where we have omitted the subscript ”w” for brevity. To plify, let x be a scalar variable and f = f (x) an elementary
evaluate the product of the inverse formation-volume factor function. The AD representations are x, 1 and f, fx ,

Fig. 3 The sparsity structure of the matrix D used to define discrete differential operators for three different 2D grids. The two Cartesian grids
consist of two blocks that each have a clear banded structure
1226 Comput Geosci (2017) 21:1219–1244

where 1 is the derivative dx/dx and fx is the numerical – a grid structure G, which in particular implements the
value of the derivative f (x). By applying the chain rule in mappings F , C1 , and C2 introduced in Section 3.1;
combination with standard rules for addition, subtraction, – a structure rock representing the petrophysical data,
multiplication, division, and so on, we can now automat- primarily porosity and permeabiliy, but also net-to-
ically compute derivatives to within machine precision, gross, multipliers that limit (or increase) the flow
e.g., addition: f, fx  + g, gx  = f + g, fx + gx and between neighoring cells, etc;
cosine: cos(f, f x) = cos(f ), − sin(f )fx . The same – a structure fluid representing the fluid model, which
principle can easily be extended to higher-order deriva- is implemented as a collection of function handles that
tives and partial derivatives of functions of multiple can be queried to give fluid densities and viscosities,
variables. that evaluates relative permeabilities, formation volume
In MATLAB, this functionality can be elegantly imple- factors, etc;
mented using classes and operator overloading. When – additional structures that contain the global drive mech-
MATLAB encounters an expression a+b, the software anisms, including wells and boundary conditions.
will choose one out of several different addition func- By convention, we collect G, rock, and fluid in an add-
tions depending on the data types of a and b. All we itional data structure called model, which also implements
now have to do is introduce new addition functions for utility functions to access model behavior. Given a state obj-
the various classes of data types that a and b may belong ect, we can for instance query values for physical variables:
to. You can read more about how this is done in [17].
MRST implements automatic differentiation as part of
mrst-core. A new AD variable is instantiated by the call
x=initVariablesAD(x0), where x0 is a scalar or an
array containing values to be used for subsequent function
evaluations. Any new variable f computed based on x will
Here, the array pO holds one oil pressure value per cell,
now automatically become an AD variable, whose value
and sW holds one water saturation value. The last output,
and derivatives are accessed as f.val and f.jac, respec-
wellSol, contains a list of data structures, one for each
tively. The AD class in mrst-core differs from most other
well, that contain the unknowns associated with the perfo-
libraries in the sense that instead of representing the Jaco-
rations of each well. The call to vertcat collects these
bian with respect to multiple variables as a single matrix,
quantities into standard arrays. Which among sg , rs , and
we have chosen to let jac be a list of sparse matrices
rv one should choose as primary reservoir variable will
that each represents the derivatives with respect to a sin-
vary from one cell to the other depending the fluid phases
gle primary variable. In solution algorithms, one may want
present. For brevity, we assume that all the three phases are
to separate pressure, compositions, and variables associated
always present, so that rs and rv are functions of pressure.
to wells, and by keeping the sub-Jacobians separate and
Thus, we henceforth use sG as our third unknown. Having
not assembling directly into one large sparse matrix, we
extracted all the primary variables needed, we set them to
avoid manipulating subsets of large sparse matrices, which
be AD objects:
has low performance in MATLAB. Moreover, this approach
makes it simpler for users who wish to manipulate matrix
blocks that represent specific sub-equations in the Jacobian
of a full equation system. When these AD objects are used to evaluate fluid and
rock-fluid properties in the cells, we will also get derivatives
3.4 Making a black-oil simulator: procedural approach with respect to the primary variables evaluated at their
current value:
Having introduced you to automatic differentiation, we will
now show how this idea can be used to implement a fully
implicit solver for the discrete black-oil equations on resid-
ual form Eq. 16. To keep track of all the different entities
that are part of the simulation model, MRST introduces a
number of data objects: To evaluate Darcy’s law across each face, we need to
– a state object, which basically is a MATLAB structure use the averaging operator, the gradient, and the trans-
holding arrays with the unknown pressures, satura- missibility introduced in Section 3.1. In MRST, the cor-
tions, concentrations, and inter-cell fluxes, as well as responding mappings are computed during the preprocess-
unknowns associated with the wells; ing phase based on G and rock and stored in terms
Comput Geosci (2017) 21:1219–1244 1227

of function handles in structure operators inside the and differential operators derived from a general unstruc-
model objects. For brevity, we henceforth refer to this tured grid format means that the discrete equations can
as ops. We first use the averaging operator and the gra- be implemented once and for all without knowing the
dient operator to pick the upstream directions for each specifics of the grid or the petrophysical parameters. This is
interface: a major advantage that will greatly simplify the process of
moving from simple Cartesian cases to realistic geological
models.
With the code above, we have collected the whole model
into a cell array that contains seven different residual equa-
Then, we use the upstream operator (17), which is also tions (three continuity equations, three equations for well
contained in ops, to compute the correct water fluxes for rates, and one equation providing well control) as well as
all interior interfaces: their Jacobian matrices with respect to the primary vari-
ables (po , sw , sg , pbh , and qαs ). The last thing we need to do
to compute one Newton iteration is to assemble the global
Jacobian matrix and compute the Newton update Eq. 20.
The last thing we need to do is to handle the pressure
dependence of the accumulation term. In MRST, this is
represented as a static pore volume, evaluated at a reference
pressure, and a pressure-dependent multiplier function: This shows the strength of using automatic differentia-
tion. There is no need to compute linearizations explicitly;
these are computed implicitly by operator overloading when
we evaluate each residual equation. Likewise, we do not
Having computed all the necessary values in cells and on need to explicitly assemble the overall Jacobian matrix;
faces, we can evaluate the residual from the homogeneous this is done by MATLAB and MRST when we concate-
part of the aqueous conservation equation over a time step nate the cell array of AD variables. All that remains to get
dt: a first prototype solver is to specify two loops, an outer
loop that advances the time steps, and an inner loop that
keeps computing Newton updates until the residual is suf-
ficiently small, as shown to the left in Fig. 4. The result is
The homogeneous residual equations for the oleic and a framework that is very simple to extend with new func-
gaseous phases are computed in the same way, and then we tionality [6, 10]: you can implement new fluid behavior
collect the three phase equations in a cell array holding all or add extra conservation equations, and the AD func-
reservoir equations: tionality will automatically generate the correct linearized
equations. However, to get a simulator capable of running
industry-grade simulations, we will need to introduce more
sophisticated numerical methods.
To form a complete model, we also need to add residual
equations for wells and incorporate the effects of driv- 3.5 Object-oriented implementation in MRST
ing forces into the continuity equations. Computing the
contributions from wells, volumetric source terms, and The actual code lines presented above are excerpts
boundary conditions is a bit more involved and skipped of equationsBlackOil from the ad-blackoil
for brevity. However, once the resulting fluxes or source module, and have been slightly modified for pedagogical
terms have been computed, all we need to do is sub- purposes. Industry-standard reservoir models contain many
tract them from the continuity equations in the affected details that are seldom discussed in scientific papers. For
cells. Looking at the overall implementation, it is clear brevity, we skipped a lot of details like conversions and con-
that there is an almost one-to-one correspondence between sistency checks, and did not include various multipliers used
continuous and discrete variables. In particular, the code to manipulate the flow between neighboring cells. Likewise,
implementing the conservation equations is almost on the we did not discuss construction of reverse flow equations
same form as Eq. 16, except that compressibility has been that can be used to compute adjoints [4]. However, since
included through a pressure-dependent multiplier instead MRST is open-source, the interested reader can consult the
of evaluating a function φ(p) directly. Likewise, you may code for full details.
notice the absence of indices and that there are no loops In all their generality, black-oil models can be very com-
running over cells and faces. Using discrete averaging putationally challenging for a number of reasons: the flow
1228 Comput Geosci (2017) 21:1219–1244

Fig. 4 Comparison of a simple time loop with a standard Newton discrete equations and linearizations, nonlinear solvers and time-step
solver and the more sophisticated approach used in the ad-core control, and linear solvers. Here, solveMinistep subdivides well
framework, in which the time loop has been organized into specific control intervals into smaller time steps, specified by user or error
numerical contexts to separate the implementation of physical models, control

equations have a mixed elliptic-hyperbolic character; there Introducing all this functionality in a procedural code is
are order-of-magnitude variations in parameters and spatial possible, but can easily give unwieldy code. A lot of this
and temporal constants; primary variables can be strongly functionality is also to a large degree generic and can be
coupled through various (delicate) force balances that shift reused from one model/simulator to another. One way to
throughout the simulation; fluid properties can have discon- design a transparent and well-organized code is to divide
tinuous derivatives and discontinuous spatial dependence; the simulation loop into different numerical contexts, e.g.,
and grids representing real geology will have cells with as outlined in Fig. 4, and only expose the details that are
rough geometries, large aspect ratios, unstructured connec- needed within each of these contexts. This motivated us
tions through small face areas, etc. As a result, the simple to develop the ad-core module (see [6]), which offers
Newton strategy discussed above will unfortunately not an object-oriented AD framework that enables the user to
work very well in practice. Linearized flow problems typ- separate physical models and reservoir states, nonlinear
ically have very large condition numbers, and while we solvers and time loops, discrete flow equations and lin-
can rely on the direct solvers in MATLAB being effi- earizations, and linear solvers. The framework has been
cient for small systems, iterative solvers are needed for tailor-made to support rapid prototyping of new reservoir
larger systems. These will not converge efficiently unless simulators based on fully implicit or sequentially implicit
we also use efficient preconditioners that account for strong formulations and contains a lot of functionality that is
media contrasts and the mixed elliptic-hyperbolic charac- specific for reservoir simulators. Figure 5 outlines how var-
ter of the flow equations. To ensure that saturations stay ious classes, structures, and functions can be organized
within their physical bounds, each Newton update needs to formulate an efficient black-oil simulator. In particular,
to be accompanied by a stabilization method that either the time-step selectors implement simple heuristic algo-
crops, dampens, or performs a line search along the update rithms like the Appleyard and modified Appleyard chop
directions. Likewise, additional logic is needed to map the as used in commercial simulators. There are linear solver
updated primary variables back to a consistent reservoir classes that implement a state-of-the-art, constrained pres-
state, switch primary variables as phases appear or disap- sure residual (CPR) preconditioner [2], which can be com-
pear, trace changes in fluid components to model hysteretic bined with efficient algebraic multigrid solvers like the
behavior, etc. To get a robust simulator, we also need to aggregation-based method of [19]. Notice also that assem-
introduce sophisticated time-step control that monitors the bly of the linearized system is relegated to a special class
iteration and cuts the time step if this is deemed necessary that stores meta-information about the residual equations
to improve convergence. And finally, we need procedures (i.e., whether they are reservoir, well, or control equation)
for updating the well controls in response to changes in and the primary variables. This information is useful when
the reservoir state and the injection and production of setting up preconditioning strategies that utilize structures in
fluids. the problem.
Comput Geosci (2017) 21:1219–1244 1229

Fig. 5 Overview of how components in the object-oriented AD frame- (class, struct, or function). Notice, in particular, how the nonlinear
work are organized to implement a black-oil simulator. The different solver utilizes multiple components to solve each ministep on behalf
components are colorized by the type of the corresponding construct of the simulator function

4 The polymer flooding simulator features seen in reservoir models, and the skeleton model
is in turn a special case of a generic physical model (see
In this section, we will discuss how we can utilize the Fig. 6). We use inheritance to leverage all this existing
general framework presented above to implement a new functionality:
polymer simulator capable of simulating real EOR scenar-
ios. As in the previous section, we will focus on the main
steps in the implementation and leave out a number of
details that can easily be found by consulting the corre-
sponding code from the ad-eor module (first released in
MRST 2016a).

4.1 Defining the polymer model object


The properties polymer and usingShear are boolean
The first thing we need to do is to set up a physical model. variables that tell whether polymer and shear effects are
Obviously, the black-oil model already has most of the fea- present or not. (For the moment, the first will be true and
tures we need for our polymer simulator. To avoid duplicat- the second false). The next thing we need to do is to add
ing code, this model has been implemented as the extension two new variables: the concentration c, which will be a pri-
of a general model skeleton that specifies typical entities and mary variable, and the secondary variable cmax holding the

Fig. 6 The class hierarchy used


to define the three-phase,
black-oil, polymer model
1230 Comput Geosci (2017) 21:1219–1244

maximum observed polymer concentration, which will be the property is appended, data values, and a structure con-
needed to model the hysteretic behavior of the permeability taining region identifiers, which could possibly be used to
reduction factor (7). incorporate spatial dependence in the parameters. For the six
keywords describing our polymer model [22], implementing
these functions amounted to approximately forty extra lines
of code to interpret each keyword and setup functions that
either extract constants or interpolate the tabulated data in
the input deck correctly.

4.2 Discretized equations without shear effects

The last thing we have to do is to implement the discretized


Here, index tells the size of the variables in each cell, flow equations. That is, we need to implement the member
and the second last line provides access to all variables function getEquations which the AD-OO framework
defined in the black-oil model. We also need to add one will call whenever it needs to evaluate the residual of the
extra variable giving the surface rate of polymer in and out flow equations.
of wells. This is done in the constructor of the polymer
object. The general framework also offers two additional
member functions that provide useful hooks into the general
simulation loop. The first function is run after every itera-
tion update to enable us to check if the computed states are
consistent with the underlying physics. We set this function
To this end, we start by copying and renaming the func-
to inherit all consistency checks from the black-oil model
tion equationsBlackOil, which was discussed above and
and additionally enforce that c ∈ [0, c∗ ].
implements the discretized equations for the three-phase
black-oil model. The first change we need to introduce in
the copied function is in the extraction of physical variables.

Similar changes are also made when choosing and instan-


The second function is run after the nonlinear equation tiating the primary variables as AD objects. In the computa-
has converged and can be used, e.g., to model hysteretic tion of fluid properties, we start with the polymer properties
behavior as in our Rk function. since they will also affect the mobility of water.

To form a complete model, we also need to incorpo- The computation of the water properties is almost as
rate functions and parameters describing the adsorption, before, except for a minor change marked in red:
the Todd–Longstaff mixing, inaccessible pore space, etc.
Instead of implementing analytical formula (or hard-coded
tables), we have chosen to get all necessary data by parsing Apart from this, the computation of the aqueous, oleic,
industry-standard input decks. This parsing is automated in and gaseous residual remains unchanged. The residual equa-
MRST in the sense that if you want a keyword KWD to tion for polymer is implemented as follows:
be interpreted, you will have to implement a new function
called assignKWD in the ad-props module. This func-
tion should take three parameters: the fluid object to which
Comput Geosci (2017) 21:1219–1244 1231

which again is almost the same as the corresponding expres- where A[f ] is the face area. The product φA is then the
sion for the continuous equations. Unfortunately, using this available area for the fluids to flow through each partic-
residual equation without modifications may incur numeri- ular face. In addition, we need to evaluate the viscosity
cal unstabilities in the case when water is almost nonexis- multiplier mμ (c) at each face. This is done by picking the
tent. To prevent this, we detect all cells in which the diagonal upstream value. Then, we can instantiate uw,sh as an AD
element of the Jacobian falls below a certain lower toler- variable, initialized by uw,0 , and use a standard Newton iter-
ance and replace the residual in these cells by the polymer ation to solve (12). This inner iteration is invoked every time
concentration, i.e., if bad is a logical array indexing these we need to evaluate the water or polymer residual.
cells, we set polymer(bad)=c(bad). Assuming that The solution process for the shear factor calculation is
we make the necessary modifications to the well models, presented in Fig. 7. There are basically three parts involved.
we now have four continuity equations, four well equations, At the beginning, we initialize the AD variable Vsh based
and a control equation that can be linearized and assembled on the un-sheared velocity Vw, and set up the residual equa-
as before by first building a cell array of residual equations, tion we are solving with function shFunc, which can be
which we then use to construct a LinearizedProblem easily related to Eq. 12. Then, a standard Newton iteration
object. process is used to solve the residual equation. Finally, we
calculate and return the shear factor z based on the cal-
4.3 Including shear effects culated sheared water velocity Vsh following Eq. 11. The
function solve for the shear factors of all the faces at the
The simulator, as described above, computes fluxes across same time for better efficiency.
cell faces and fluxes in and out of wells. However, to Shear effects are most important near the wellbore, and
compute shear effects, we need the un-sheared water veloc- will to a large extent determine the injectivity of a poly-
ities, which can be defined on each face f of the discrete mer solution. Unfortunately, it is challenging to compute a
grid as follows: representative shear rate. Grid cells are typically large com-
vw [f ] pared with the length scale of the near-well flow, and using
uw,0 [f ] = , a simple average over the grid cell will tend to smear flow
avga (φ)[f ] A[f ]

Fig. 7 Shear factor calculation


with MRST
1232 Comput Geosci (2017) 21:1219–1244

rates and hence underestimate the non-Newtonian effects. can be used as a starting point to write simulators that
One obvious remedy is to use local grid refinement (LGR) are fit for purpose. For completeness, we will here go
around the wells (see [14]). Another alternative is to use through one example of such a script. To set up a simu-
an analytical injectivity model in which the water veloc- lation, we need to construct three different data objects as
ity is computed at a representative radius from each well illustrated in Fig. 8: a class object describing the physi-
perforation [9, 22]. The representative radius is defined as cal model, a structure containing variables describing the

rr = rw ra , where rw is the wellbore radius and ra is the reservoir state, and a structure containing the schedule that
areal equivalent radius of the grid cell in which the well specifies controls and settings on wells and boundary con-
is completed. The water velocity can then be computed as ditions and how these vary with time. Here, we assume
follows: that we have a reservoir model described in terms of an
industry-standard input file [22]. We can then use function-
qws ality from the deckformat module, to read, interpret, and
uw,0 = ,
2π rr hwc φ bw construct the necessary data objects from this input data
file. We start by reading all keywords and data from the
where qws is the surface water rate and hwc is the height file.
(or length) of the perforation inside the completed grid cell.
Notice, however, that this model has only been derived
assuming Cartesian cell geometries.
The data can be given in various types of units, which need
4.4 Running the simulator from an input deck to be converted to the standard SI units used by MRST. We
then construct the three data structures that make up the
MRST is primarily a tool for prototyping new computa- physical model:
tional methods and simulator tools. As such, the software
does not offer any simulator that can be called directly
from the command line in MATLAB. Instead, the idea is
that users should write the simulator scripts themselves,
using functionality from the toolbox. The tutorials and By convention, all grid constructors in MRST only out-
module examples contain many such simulator scripts that put the information necessary to represent an unstructured

Fig. 8 By using the input parser that comes with the AD-OO (object-oriented) framework, one can instantiate the data structures necessary to run
a simulation from an industry-standard input deck
Comput Geosci (2017) 21:1219–1244 1233

grid and do not process this information to compute geo- we turn on dynamic time stepping, the simulator will try to
metric information such as cell volumes, face areas, and dynamically adjust the time steps to stay close to a targeted
face normals. However, as we have seen above, we need this number of nonlinear iterations per time step.
information to compute transmissibilities and pore volumes, We now have all that is necessary to run a simulation and
and hence, we also call a routine that computes this infor- can do this by calling the following script:
mation. Similarly, the input parser for petrophysical data
outputs values for all cells in the model and hence needs to
be passed on to a routine that eliminates data in cells set to
be inactive. Having obtained all the necessary data, we can To visualize the output of the simulation, we invoke two
then call the constructor of the appropriate model object: graphical user interfaces from the mrst-gui module that
let us view the reservoir variables and the well responses at
all instances in time specified in the schedule.

Next, we instantiate the state object and set the initial


conditions inside the reservoir. Here, we assume that the
reservoir is initially in hydrostatic equilibrium, so that sat-
urations/masses are defined to balance capillary pressure
forces. This is a standard black-oil routine that works with As an alternative to using these two GUIs, well curves
three or fewer phases and is not aware of extra fluid compo- can be extracted to standard MATLAB arrays using either
nents. The initial polymer concentration therefore needs to getWellOutput or wellSolToVector.
be specified manually.

5 Numerical examples

In this section, several examples are presented to demon-


To set up the schedule, we need to know informa- strate the validity and performance of the developed model.
tion about reservoir model, and hence, this data object is The first two examples verify the model and implemen-
constructed last. tation against a leading commercial simulator [22]. Also,
the effects of polymer injection and the impact of non-
Newtonian fluid rheology on the water flooding process are
Having established the necessary input data, we select the investigated. In the third example, we illustrate how the
linear and nonlinear solvers. simulator is readily applicable to fully unstructured grids,
whereas the fourth example uses the geological model of a
real field to set up a test case with a high degree of realism.
In the last example, we combine the existing optimization
functionality in MRST and the presented polymer simu-
Here, we have set the simulator to use a simple relaxation lator to optimize the polymer flooding procedure for two
procedure to stabilize the Newton iterations and MATLAB’s different reservoir models.
standard mldivide as linear solver. By setting useCPR For simplicity, we use the same basic fluid model for the
to be true, function getNonLinearSolver will set up Examples 1, 2, and 4, as summarized in Fig. 9. For polymer,
a CPR preconditioner with either BackslashSolverAD the dead pore space is set to 0.05, the residual reduction fac-
based on mldivide or AGMGSolverAD with the AGMG tor is 1.3, and the polymer is fully mixed into the aqueous
multigrid solver [19]. (The main advantage of AGMG com- phase (i.e., ω = 1). For Example 3, we use a slightly dif-
pared with other multigrid solvers is that it has a simple ferent fluid model but the same polymer parameters. Link
MATLAB interface and can be used directly as a drop-in to complete codes for these examples can be found in http://
replacement for mldivide without any data conversion www.sintef.no/mrst/ad-eor/.
or parameter tuning.) For small cases, mldivide can be
efficient enough or even faster, while CPR preconditioned 5.1 Example 1: verification against commercial
linear solver is typically more efficient or required for big- simulator
ger cases. The option DynamicTimesteps being false
says that we do not make any attempt at optimizing the A 2D example with heterogeneous porosity and permeabil-
time steps and only perform a standard Appleyard chop to ity (Fig. 10) is designed for the development and verification
cut time steps if the nonlinear solver fails to converge. If of the present model. In this example, the dimensions
1234 Comput Geosci (2017) 21:1219–1244

Fig. 9 Properties and functions entering the fluid models

of the grid is 20 × 1 × 5. The size of the domain is drastically when the polymer injection starts. When the
4000 × 200 × 125 m. One injection well is located in bottom-hole pressure reaches the upper limit, the injection
the bottom two layers, and one production well is located well switches to bottom-hole pressure control and the water
in the top two layers. Hydrostatic equilibration is used for injection rate drops rapidly. This can be explained in a natu-
initialization. ral way with the employed well model (3). The dissolution
The polymer injection schedule follows a typical poly- of the polymer increases the viscosity of the injecting water,
mer water flooding strategy. As shown in Fig. 10, the and as a result, the mobility of the water phase is decreased.
flooding process begins with the primary water flooding According to Eq. 3, higher bottom-hole pressure is required
(1260 days). Then, a 1700-day polymer injection process to maintain the target injection rate. When the bottom-hole
with concentration 1 kg/m3 is performed. Water injection is pressure reaches the limit, the water injection rate will drop
continued after the polymer injection. The injection well is rapidly as a result of the decreased mobility.
under rate control with target rate 1000 m3 /day and upper As shown in Fig. 10, the results from MRST and the
limit of 450 bar on the bottom-hole pressure (bhp), whereas commercial simulator agree well. Abrupt changes when the
the production well is under pressure control with target polymer injection begins and ends are captured accurately.
bottom-home pressure 260 bar. Both simulators predict the same shear-thinning behavior,
For comparison, two groups of simulations are performed which significantly improves injectivity and results in a
with MRST and the commercial simulator. The first does much higher water rate during polymer injection.
not include shear effects (brown lines in Fig. 10), and in
the other one, shear effect is taken into consideration (blue 5.2 Example 2: sector model
lines in Fig. 10). The results from MRST are indicated with
solid lines and the results from the commercial simulator In this example, we consider 3D synthetic sector model
with dashed lines. From the results, it can be observed that generated with MRST. The model has a physical extent of
the bottom-hole pressure for the injection well increases 1000 × 675 × 212 m, contains four vertical faults that
Comput Geosci (2017) 21:1219–1244 1235

Fig. 10 Verification of the MRST solver against a commercial simulator for a 2D Cartesian example. Here, water is colored blue, oil is red, and
gas is green

intersect in the middle of the domain, and is represented on To investigate the effects of the polymer injection and dif-
a 30 × 20 × 6 corner-point grid, in which 2778 cells are ferent types of fluid rheology on the water flooding process,
active. There is one injection well located in the center of the four different simulations are performed with both MRST
sector and is perforated in the bottom three layers, and two and the commercial simulator. The first simulations describe
production wells located to the east and west and perforated pure water flooding. The second simulations describe poly-
in the top layers (see Fig. 11). The injector is under rate con- mer injection, but do not account for non-Newtonian fluid
trol with target rate 2500 m3 /day and bottom-hole pressure rheology during the injection process. The third and the
limit 290 bar, whereas the producers are under bottom-hole fourth simulation setups assume that the polymer exhibits
pressure control with target pressure 230 bar. shear-thinning and shear-thickening behaviors, respectively.

Fig. 11 Verification of the MRST polymer simulator against a commercial simulator with a 3D synthetic example with different types of polymer
injected
1236 Comput Geosci (2017) 21:1219–1244

Table 1 Fluid densities and viscosities used in Example 3 limit, which means that the targeted injection rate can be
maintained. As a result, we maintain the initial oil pro-
Water Oil Gas
duction and achieve a better tail production as a result of
Compressibility — 10−4 /bar 10−3 /bar improved displacement efficiency and volumetric sweep.
Viscosity 1 cP 5 cP 0.2 cP When polymer with shear-thickening rheology is injected,
Density (at 250 bar) 1033 kg/m3 860 kg/m3 400 kg/m3 the injectivity is drastically reduced, and in this case, the
commercial simulator was not able to finish the simulation.
Figure 11 reports water rate and bottom-hole pressure in the A few report steps after the polymer injection starts, the
injector and water cut in the two producers. simulator computes bottom-hole pressure values that are not
For pure water flooding, the bottom-hole pressure decays well behaved, which causes it to stop. MRST, on the other
fast to a level below 250 bar during the first 150 days hand, manages to finish the simulation despite the somewhat
and then starts to gradually increase after approximately unphysical setup.
400 days to maintain the specified injection rate until the end
of simulation. In the polymer flooding scenarios, the injec- 5.3 Example 3: unstructured grids
tivity decreases dramatically once the polymer injection
begins because of the increased viscosity of the polymer– The main purpose of the third example is to demonstrate that
water mixture. If the diluted polymer behaves like a Newto- the polymer simulator is capable of simulating grids with
nian fluid, the bottom-hole pressure will quickly reach the general polyhedral geometries. To this end, we consider
upper limit and force the injector to switch from rate to pres- a vertical cross-section of a reservoir with dimensions of
sure control, which in turn causes an immediate drop in the 1000 × 100 m. There is an injector-producer pair included,
injection rate. As a result, the oil production declines during where the producer has a curved well trajectory spanning a
the injection of the polymer slug, but increases significantly relatively large region of the reservoir. We consider a sce-
during the tail production in both producers. Likewise, we nario in which one pore volume of water is injected over
see delayed water production in both producers. In the case 5 years, a polymer slug added to the initial 7.5 months,
of shear-thinning fluid rheology, the bottom-hole pressure and fluids are produced at a fixed bottom hole pressure of
also increases rapidly, but manages to stay below the bhp 250 bar. Table 1 lists fluid densities and viscosities.

Fig. 12 The four grids


considered in Example 3, along
with the phase saturations
computed after the injection of
0.60 PVI
Comput Geosci (2017) 21:1219–1244 1237

To represent the reservoir, we consider four different conforming to geological structures like well paths, faults,
grids: a fine Cartesian grid with 20,000 cells, a coarse fractures, etc. The grid factory routines handle intersec-
Cartesian grid with 231 cells, an unstructured perpendicu- tion of multiple faults, intersections of wells and faults, and
lar bisector (PEBI) grid with 1966 cells refined around the faults intersecting at sharp angles (see [1, 5]). Figure 12
wells, and a composite grid in which the coarse Cartesian shows the four grids, along with snapshots of the phase
grid is refined locally around the wells by adding Voronoi saturations partway into the simulation. (In our color con-
cells, giving in total 921 cells. The two latter grids were vention, water is blue, oil is red, and gas is green. The
constructed using a new module in MRST for generating convention also applies to other examples in the paper.) Well
2D and 3D Voronoi grids with cell centers and/or cell faces responses are plotted in Fig. 13.

Fig. 13 Well curves for the


structured and unstructured
grids of Example 3
1238 Comput Geosci (2017) 21:1219–1244

Comparing the results from all four grids, we see that multipliers, equilibration regions, and so on. Furthermore,
there are significant differences in the predicted injector we replace the fairly complicated well-control schedule
bottom-hole pressures. The injector is best approximated by representing the real field history with six wells operating
the PEBI grid, which uses 88 cells that align locally with the under simpler control schedules. To run this example, the
curved well path. The fine Cartesian grid approximates the AGMG multigrid solver [19] is required.
well path in a stair-stepped manner using 74 cells, which on The simulation model consists of 44,915 active cells and
average are twice as large as the perforated PEBI cells. The has a total pore volume of 8.16 · 108 m3 . The two injec-
composite grid also adapts to the well path, but here the 30 tion wells (shown with red color in Fig. 14) are under rate
well cells are less regular and on average nine times larger control with target rate 30,000 m3 /day and a bottom-hole
than in the PEBI grid. Interestingly, the resulting bottom- pressure limit of 600 bar. Four production wells (shown with
hole curve is not significantly different from the coarse blue color in Fig. 14) are under bottom-hole pressure control
Cartesian grid, which only has 8 perforated cells. One pos- with target pressure 200, 200, 190, and 180 bar, respec-
sible explanation is that the default well indices computed tively. The injection begins with primary water flooding
by Peacemann’s formula are only strictly correct for hexa- for 360 days. Then, polymer with concentration 1 kg/m3 is
hedral cells. Likewise, since the initial fluid distribution is injected for 340 days. Water flooding continues for another
computed by sampling at the cell centroids, the oil–water 1460 days after the polymer injection stops. The total sim-
contact is sharply resolved only on the fine Cartesian grid ulation time covers a period of 2260 days. Non-Newtonian
and is non-flat on the two unstructured grids. fluid rheology is not considered in this example.
Looking at the oil production, we see that all three coarse The initial saturation is initialized with hydrostatic equi-
grids predict a too rapid initial decay and smooth the subse- libration (Fig. 15a). The saturation distribution and polymer
quent buildup and decay compared with the fine Cartesian concentration at different times are shown in Figs. 15
grid. The result is that all the three coarse grids slightly over- and 16, respectively. The evolution of water injection rate,
predict the cumulative oil production. The coarse Cartesian bottom-hole pressure in injection wells, oil production rate,
grid gives the largest deviations in gas production, whereas and water cut are reported in Fig. 17. For comparison, the
the unstructured PEBI grid has the largest deviation in water resulting well curves for a pure water flooding scenario are
rate. Altogether, it seems like the composite grid gives the plotted as dashed lines. The impact of polymer injection
closest match with the fine Cartesian grid. on the injection process, like injectivity, injection rate, and
water cut, is clearly shown through the resulting well curves.
5.4 Example 4: Norne The main effect of polymer is that the reduced injectivity
leads to a shift in the oil rate, which diminishes the over-
Norne is an oil field located in the Norwegian Sea. The all oil production. With a short time horizon of 2260 days,
simulation model of this field has recently been made pub- the suggested polymer injection is not a good engineer-
licly available as an open data set [20]. Here, we will ing solution. We emphasize that polymer injection is not
use a slightly simplified version of this simulation model, performed in reality on Norne, and the polymer scenario
in which we have removed one tiny disconnected region studied herein is invented by the authors for illustration
and disabled some features related to flux regions, fault purposes.

Fig. 14 Geological model and well setup for the Norne example. Colors show the horizontal permeability. To better distinguish zones of high
and low permeability, the color axis is set to be between 0 and 1000 md; the actual permeability values extend to 3500 md
Comput Geosci (2017) 21:1219–1244 1239

Fig. 15 Saturation distribution


at different times for the Norne
simulation

Overall, our artificial polymer flooding scenario rep- the time step that will ensure that the iteration target is met.
resents a computationally challenging problem, and not If desired, all parameters controlling these strategies can be
surprisingly, the implicit solver struggles to converge for prescribed by the user. In addition, one can gradually ramp
some of the time steps. However, use of adaptive chopping up the initial time step so that it increases geometrically
of time steps makes the simulator more robust and enables towards a given target. Without these capabilities, manual
it to run through the specified simulation schedule. MRST modifications of the time steps and multiple reruns would
offers both reactive and predictive time-step control, similar likely have been necessary to get a simulation through. In
to those seen in many commercial simulators. The reactive this particular simulation, we used an initial ramp up speci-
part uses upper bounds on the number of iterations allowed. fied in the schedule combined with the reactive strategy with
If any of these bounds are exceeded, the simulator will halve an upper iteration bound of 15.
the time step and continue to do so until the iteration bounds
are not exceeded. If the time step is reduced below a given 5.5 Example 5: polymer flooding optimization
minimum, the simulator will stop and report convergence with adjoint method
failure. Likewise, if the current step size has been success-
fully used a given number of times, the simulator will try The main purpose of polymer injection is to increase the
to increase it by a given factor, and this is repeated until economics of the recovery process. To measure this, we
one reaches a given maximum time step. MRST can also consider the net present value, which accounts for the pro-
set upper bounds on the absolute or relative changes; one duction revenue of oil and gas, the cost related to the
or more of the physical variables (typically saturation) are injection and production process, and the discount of value
allowed to change during one iteration and use this to pre- with time:
dict the time-step size. Another alternative is to set a target T
for the number of nonlinear iterations and let the simula- NPV(T ) = (ro qo +rg qg −(riw qiw +rw qw +rip qip ))(1+d)−t dt.
t=0
tor use the previous convergence history to guess the size of
(21)

Fig. 16 Polymer concentration


at different times for the Norne
simulation
1240 Comput Geosci (2017) 21:1219–1244

Table 2 Prices used in the calculation of NPV (21) gradients of the NPV with respect to the current controls
are computed using an adjoint formulation. Adjoint formu-
Prices (in US dollars)
lations is part of the AD-OO framework, and has previously
Oil revenue 60 USD/stb been discussed, e.g., in [12, 15]. Specifically, we will use
Gas revenue 2.8 USD/mmbtu the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm
Polymer cost 5 USD/kg [18], which is a quasi-Newton method, in combination with
Water injection cost 5 USD/stb a line-search algorithm with termination criteria based on
Water production processing cost 5 USD/stb the Wolfe conditions [26].
Yearly discount factor 0.05 We investigate the optimization of two water flooding
cases. For both cases, we increase the oil viscosity to be
between 10 and 20 cp, while water viscosity remains
Here, ro and rg are the oil and gas revenue prices and 0.318 cp. No shear effect is considered during the simulation.
qo and qg are the oil and gas production rates, respectively.
As a result, ro qo + rg qg represents the revenue due to pro- Case 1: We consider a synthetic 1200 × 1000 × 150 m
duction of oil and gas. Moreover, riw , rw , and rip represent sector model with four vertical faults intersecting in the mid-
water injection cost, water production processing cost, and dle of the domain similar as in Section 5.2 (see Fig. 18). The
polymer cost, respectively, whereas d is the discount rate formation is represented on a 30 × 25 × 6 corner-point
and qiw , qw , and qip are water injection rate, water produc- grid with 3528 active cells. The injector is under rate control
tion rate, and polymer injection rate, respectively. Hence, with target rate 2500 m3 /day and bottom-hole pressure limit
riw qiw + rw qw + rip qip represents related costs during the 600 bar, whereas the producers are under bottom-hole pres-
polymer water flooding and production process. The val- sure control with target pressure 230 bar. The total flooding
ues employed in this section are listed in Table 2 and are process is 5000 days. To optimize, we split the schedule to
invented by the authors for illustration purpose. ten periods of 500 days and try to find the polymer injec-
To maximize NPV, we will optimize polymer injec- tion concentration for each period that maximizes overall
tion concentration. To this end, we will use a rigorous NPV (21). The maximum available polymer concentration
gradient-based mathematical optimization method, in which is 2.5 kg/m3 .
Fig. 17 Well curves for the
Norne case. Dashed lines
represent a pure water flooding
scenario and solid lines a
polymer injection scenario
Comput Geosci (2017) 21:1219–1244 1241

its peak net-present value after approximately 3600 days


(see Fig. 19b). After this time, the economic value decays,
mostly due to the high water cut (Fig. 19e) and low oil pro-
duction rate (Fig. 19d). The blue lines represent a straight-
forward polymer injection strategy, in which 1 kg/m3 poly-
mer is injected for the first half of the total flooding
procedure and pure water flooding for the second half flood-
ing process. This improves the NPV of the whole flooding
operation (Fig. 19b). From Fig. 19d, f, we see that polymer
not only improves the oil production rate but also reduces
Fig. 18 Initial saturations of for the polymer optimization example water production. The flooding procedure will be the start-
Case 1 ing point of the optimization process, and is referred to as
the base case.
Results from three different flooding processes are shown Red lines in Fig. 19 represent the optimized flooding pro-
in Fig. 19. Green lines represent pure water flooding, whose cess. Compared with the base case, more oil is produced,
NPV curve starts to flatten around 3000 days and reaches and the water production rate is decreased further, which

Fig. 19 The polymer injection


schedule, NPV curves, and well
curves for Case 1
1242 Comput Geosci (2017) 21:1219–1244

Fig. 20 Breakdown of NPV for the three different flooding processes, and changes in revenues and costs from base case to optimized flooding
for Case 1

means less cost related to water production. From Fig. 19a, injection concentration later, and no polymer injection for
we see that the optimization program suggests a relatively the last period. When flooding with higher polymer con-
high polymer concentration at the beginning, lower polymer centration, it is not suggested to use the highest possible

Fig. 21 The polymer injection


schedule, NPV curves, and well
curves for for Case 2
Comput Geosci (2017) 21:1219–1244 1243

Fig. 22 Breakdown of NPV for the three different flooding processes, and changes in revenues and costs from base case to optimized flooding
for Case 2

polymer concentration (2.5 kg/m3 ). Instead, it is suggested of the NPV increase can be attributed to a decrease in water
to use the highest possible concentration that maintains the injection.
water injection rate around the target rate (2500 m3 /day),
which implies that maintaining the water injection rate in
this scenario is important for achieving optimal NPV from 6 Concluding remarks
polymer flooding operation. Notice also that the bottom-
hole pressure is kept around its upper limit when injecting In an earlier paper [11], we presented the free, open-source
with higher polymer concentration. MRST software, which has later become a community code
Figure 20a shows a breakdown of NPV into the five and is used by many researchers within the computational
terms from Eq. 21, i.e., revenue from oil and gas production geosciences.
and cost from water injection, water production, and use of Recently, the software has been modernized with sev-
polymer. Likewise, Fig. 20b shows the breakdown of the rel- eral new features such as discrete differential operators,
ative increase in NPV and polymer cost from the base case automatic differentiation, and an object-oriented program-
to the optimized case, and how this is balanced by increased ming framework, which contribute to make MRST a perfect
revenue from oil production and decreased costs for water platform for fast development and prototyping simulators
injection and production (difference in revenue from gas capable of running industry-grade simulations. Herein, we
production was negligible). From the breakdown, we can have discussed in detail how this framework can be uti-
see that the increase in oil production and reduction in lized to develop a flexible simulator for polymer flooding,
water production play the major role in achieving higher whose main intent is to serve as a research tool for develop-
NPV. ing new models and computational methods for simulating
Case 2: We use the same grid as in Section 5.2 (Fig. 11) water-based EOR processes. To enable other researchers to
with the same well controls as in Case 1. Due to smaller benefit from our work, we have described key components
size of the formation and less oil in place, we change the of MRST in some detail and discussed the key steps nec-
flooding period to be 3000 days, which is split into ten essary to extend an existing black-oil simulator to polymer
even periods. The results without polymer injection, the flooding, including effects such as viscosity enhancement,
base polymer injection procedure, and the optimized one are adsorption, inaccessible pore space, permeability reduction,
shown in Fig. 21. The optimized polymer injection gives and non-Newtonian fluid rheology. The resulting simula-
higher NPV than the base case, which in turn is better tor is released as part of a new EOR module in MRST
than pure water flooding. Optimization also suggests higher (ad-eor), which also includes a few surfactant models.
polymer injection concentration in the beginning and lower Using the flexible platform design of MRST, we believe
polymer injection concentration for later. However, different that it is not very difficult to extend the capabilities of
from Case 1, maximum polymer concentration is used ini- the ad-eor module to models with similar flow physics,
tially (Fig. 21a), which reduces both the water injection rate including surfactant-polymer and alkali-surfactant-polymer.
(Fig. 21c) and NPV (Fig. 21b) during the first three periods To prove the validity of the polymer simulator, we
(900 days). Breakdown in the increase of NPV and poly- have benchmarked it against a leading commercial simu-
mer costs from the base case to the optimized one is shown lator and shown that it produces virtually identical results
in Fig. 22b. Compared with Case 1 (Fig. 20b), the relative for two test cases in 2D and 3D, including three fluid
increase in oil production is smaller, while a larger fraction phases, water flooding or polymer flooding, with and
1244 Comput Geosci (2017) 21:1219–1244

without shear effects. Flexibility with respect to different In: SPE reservoir simulation symposium. Society of Petroleum
grids was demonstrated in a test case involving unstructured Engineers (2015). doi:10.2118/173317-MS
7. Lake, L.W.: Enhanced Oil Recovery. Prentice-Hall (1989)
grids with polyhedral cell geometries. We also showed that
8. Li, W., Dong, Z., Sun, J., Schechter, D.S.: Polymer-alternating-
the simulator is capable of handling industry-relevant sim- gas simulation: a case study. In: SPE EOR Conference at Oil
ulations by posing a polymer flooding scenario on a model and Gas West Asia. Society of Petroleum Engineers (2014).
with reservoir geometry and petrophysics of a real oil and doi:10.2118/169734-MS
9. Li, Z., Delshad, M.: Development of an analytical injectivity
gas field. Finally, we utilized the optimization module from model for non-Newtonian polymer solutions. In: SPE Reservoir
MRST to optimize the polymer flooding process for two Simulation Symposium, 18-20 February, The Woodlands, Texas,
synthetic sector models, and discussed and analyzed dif- USA (2013). doi:10.2118/163672-MS. SPE-163672-MS
ferences in the resulting injection strategies. Evidence that 10. Lie, K.A.: An introduction to reservoir simulation using MAT-
LAB: user guide for the Matlab Reservoir Simulation Toolbox
the simulator framework is a good platform for testing new (MRST). SINTEF ICT. http://www.sintef.no/Projectweb/MRST/
computational methods can also be found in [3]. Here, the publications (2016)
framework is used to develop a new and efficient multi- 11. Lie, K.A., Krogstad, S., Ligaarden, I.S., Natvig, J.R., Nilsen,
scale method for polymer flooding relying on a sequentially H.M., Skaflestad, B.: Open-source MATLAB implementation
of consistent discretisations on complex grids. Comput. Geosci.
implicit formulation instead of the fully implicit formulation 16(2), 297–322 (2012). doi:10.1007/s10596-011-9244-4
described herein. 12. Lie, K.A., Møyner, O., Krogstad, S.: Application of flow diag-
nostics and multiscale methods for reservoir management. In:
Acknowledgments The work has been funded in part by the SPE Reservoir Simulation Symposium. Society of Petroleum
Research Council of Norway under grant no. 244361. The authors Engineers (2015). doi:10.2118/173306-MS
want to thank Statoil (operator of the Norne field) and its license part- 13. Littmann, W.: Polymer flooding. Elsevier (1988)
ners ENI and Petoro for the release of the Norne data. Further, the 14. Luo, H.S., Delshad, M., Li, Z.T., Shahmoradi, A.: Numerical sim-
authors acknowledge the IO Center at NTNU for coordination of the ulation of the impact of polymer rheology on polymer injectivity
Norne cases and Statoil for releasing the simulation model under an using a multilevel local grid refinement method. Petrol. Sci. pp.
open data license as part of the Open Porous Media (OPM) initia- 1–16. doi:10.1007/s12182-015-0066-1 (2015)
tive. We also appreciate helpful discussions and suggestions from Stein 15. Møyner, O., Krogstad, S., Lie, K.A.: The application of flow diag-
Krogstad (SINTEF) regarding the polymer optimization examples. nostics for reservoir management. SPE J. 20(02), 306–323 (2015).
doi:10.2118/171557-PA
16. MRST: The MATLAB Reservoir Simulation Toolbox.
www.sintef.no/MRST (2016b)
17. Neidinger, R.D.: Introduction to automatic differentiation and
MATLAB object-oriented programming. SIAM Rev. 52(3), 545–
References 563 (2010). doi:10.1137/080743627
18. Nocedal, J., Wright, S.: Numerical optimization. Springer Science
1. Berge, R.L.: Unstructured PEBI grids adapting to geological & Business Media (2006)
features in subsurface reservoirs. Master’s thesis, Norwegian Uni- 19. Notay, Y.: An aggregation-based algebraic multigrid method.
versity of Science and Technology (2016) Electron. Trans. Numer. Anal. 37, 123–140 (2010)
2. Gries, S., Stüben, K., Brown, G.L., Chen, D., Collins, D.A.: Pre- 20. Open Porous Media initiative: Open datasets (2015). www.
conditioning for efficiently applying algebraic multigrid in fully opm-project.org
implicit reservoir simulations. SPE J. 19(04), 726–736 (2014). 21. Peaceman, D.W.: Interpretation of well-block pressures in numer-
doi:10.2118/163608-PA ical reservoir simulation. Soc. Petrol. Eng. J. 18(3), 183—194
3. Hilden, S.T., Møyner, O., Lie, K.A., Bao, K.: Multiscale simula- (1978). doi:10.2118/6893-PA
tion of polymer flooding with shear effects. Transp. Porous Media 22. Schlumberger: Eclipse technical description. Version 2013, 2
113(1), 111–135 (2016). doi:10.1007/s11242-016-0682-2 (2013)
4. Jansen, J.D.: Adjoint-based optimization of multi-phase flow 23. Sheng, J.J., Leonhardt, B., Azri, N.: Status of polymer-flooding
through porous media—a review. Comput. Fluids 46(1, SI), 40–51 technology. J. Canadian Petrol. Tech. 54(02), 116–126 (2015).
(2011). doi:10.1016/j.compfluid.2010.09.039 doi:10.2118/174541-PA
5. Klemetsdal, Ø.S., Berge, R.L., Lie, K.A., Nilsen, H.M., Møyner, 24. Sorbie, K.S.: Polymer-improved oil recovery. Springer Science &
O.: Unstructured gridding and consistent discretizations for reser- Business Media (1991)
voirs with faults and complex wells. In: SPE Reservoir Simulation 25. Todd, M.R., Longstaff, W.J.: The development, testing, and
Conference, Montgomery, Texas, USA, 20-22 February 2017 application of a numerical simulator for predicting miscible
(2017). doi:10.2118/182679-MS flood performance. J. Petrol. Tech. 24(07), 874–882 (1972).
6. Krogstad, S., Lie, K.A., Møyner, O., Nilsen, H.M., Raynaud, doi:10.2118/3484-PA
X., Skaflestad, B.: MRST-AD—an open-source framework for 26. Wolfe, P.: Convergence conditions for ascent methods. SIAM Rev.
rapid prototyping and evaluation of reservoir simulation problems. 11(2), 226–235 (1969). doi:10.1137/1011036

You might also like