0% found this document useful (0 votes)
45 views27 pages

The Front Tracking Algorithm

This document describes a front-tracking method for simulating three-phase flow in porous media. The method tracks shocks and discontinuities exactly and approximates rarefaction waves as small discontinuities. It can provide very accurate resolution of discontinuities without grid dependence. The method uses efficient solutions to the three-phase Riemann problem as building blocks. Numerical examples demonstrate the method's applicability for simulating three-dimensional, heterogeneous reservoirs.

Uploaded by

Zohre Alinejad
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)
45 views27 pages

The Front Tracking Algorithm

This document describes a front-tracking method for simulating three-phase flow in porous media. The method tracks shocks and discontinuities exactly and approximates rarefaction waves as small discontinuities. It can provide very accurate resolution of discontinuities without grid dependence. The method uses efficient solutions to the three-phase Riemann problem as building blocks. Numerical examples demonstrate the method's applicability for simulating three-dimensional, heterogeneous reservoirs.

Uploaded by

Zohre Alinejad
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/ 27

A FRONT-TRACKING METHOD FOR THE SIMULATION OF

THREE-PHASE FLOW IN POROUS MEDIA

KNUT–ANDREAS LIE AND RUBEN JUANES

Abstract. Under certain physically reasonable assumptions, three-phase flow of immiscible,


incompressible fluids can be described by a 2 × 2 nongenuinely nonlinear, hyperbolic system.
We combine analytical solutions to the corresponding Riemann problem with an efficient
front-tracking method to study Cauchy and initial-boundary value problems. Unlike finite
difference methods, the front-tracking method treats all waves as discontinuities by evolving
shocks exactly and approximating rarefactions by small entropy-violating discontinuities.
This way, the method can track individual waves and give very accurate (or even exact)
resolution of discontinuities. We demonstrate the applicability of the method through several
numerical examples, including a streamline simulation of a water-alternating-gas (WAG)
injection process in a three-dimensional, heterogeneous, shallow-marine formation.

1. Introduction
It is by now well established that most oil recovery processes involve three-phase flow, that
is, the simultaneous flow of oil, water, and gas in the reservoir. Practical examples include
primary production below bubble point and with movable water, waterfloods in the presence
of free gas, gas floods, and water-alternating-gas injection processes. Models of three-phase
flow in porous media are also required to describe many problems of environmental interest,
such as contamination (and subsequent remediation) of the vadose zone by non-aqueous phase
liquids, and geological CO2 sequestration. In all these cases, reliability of numerical simulation
predictions depends critically on the ability to incorporate the heterogeneity present in the
system, which in turn leads to simulation models with a very large number of grid blocks. As
a result, there is –and there will continue to be in the foreseeable future– need for faster and
more robust numerical solution methods.
During the past decade, there has been a renewed interest in streamline-type methods be-
cause of their potential for providing fast numerical solutions [27]. The underlying idea is to
decouple the three-dimensional transport equations into a set of one-dimensional problems
along streamlines. Streamlines are computed from the solution of a properly defined pressure
equation. In this way, streamline-type methods exploit the completely different character of
the essentially elliptic pressure equation and the essentially hyperbolic system of saturation
equations. Streamline and other related methods, however, rely heavily on the efficient solu-
tion of the transport equations along one-dimensional domains. In this paper, we propose a
front tracking method for solving one-dimensional three-phase flow problems.
The term “front tracking” usually refers to a family of numerical methods that perform
some kind of tracking of shocks and other evolving discontinuities. Most front-tracking
schemes consist of a finite-difference scheme coupled with a recipe for detecting and tracking
discontinuities. Our method is different in the sense that no finite differences are involved.
Instead, the numerical solution is computed by treating all waves as discontinuities. Smooth
rarefaction waves are approximated by small discontinuities that violate the entropy condition,
1
2 K.–A. LIE AND R. JUANES

whereas shocks and other discontinuities are tracked exactly. The corresponding numerical
method comes from a mathematical algorithm [21, 6, 36] for constructing approximate and
exact solutions to (systems of) hyperbolic conservation laws of the form
(1) ut + f (u)x = 0, u(x, 0) = u0 (x).
Here u ∈ IRm for m ≥ 1, x ∈ IR and t ≥ 0. The front-tracking construction –which is
sometimes called wave front tracking or Dafermos’ method– was introduced in its current
form as an analytic tool to prove existence for scalar equations [12] and systems of equations
[36]. However, the most important application of the method came when it was used as an
essential tool in proving uniqueness for systems of conservation laws in one spatial dimension
[8, 7].
Front tracking, and other closely related constructive methods, has been used by several
researchers for numerical computations of discontinuous solutions in one space dimension,
and in several space dimensions through a fractional step procedure; see [21] for a complete
(historical) overview. The most appealing features of the method are that it is able to resolve
discontinuities exactly, has no grid dependence, and is unconditionally stable. Depending
upon the availability of a fast Riemann solver and the complexity of the wave interactions of
the problem, the method can be very efficient compared with conventional finite volume and
finite element methods. Furthermore, for scalar equations one can prove that the method has
a finite number of steps in infinite time [20]. Somewhat surprisingly, the method has not yet
become part of the standard numerical repertoire for conservation laws. The only exception
is perhaps within porous media flow, where front-tracking is a key technology in obtaining
the high numerical efficiency of the two-phase version of the streamline simulator FrontSim
[5] by Schlumberger.
The use of front tracking for the simulation of three-phase flow in porous media has been
hindered by the lack of analytical solutions of the corresponding Riemann problem –a par-
ticular case of the Cauchy problem (1) where the initial condition consists in two constant
states separated by a single discontinuity [4]. Most previous solutions to the three-phase
Riemann problem have been limited to overly simplistic relative permeability functions, in
which the relative permeability of each phase is assumed to be a function of its own phase
saturation alone [39, 35, 18, 29, 14, 13, 38, 33]. When this condition is relaxed, and the rel-
ative permeabilities are allowed to depend on all saturations, only generic guidelines for the
construction of the solution have typically been provided [16, 17]. In a recent paper [25], a
complete catalogue of solutions was identified when the relative permeability functions satisfy
certain physical conditions. Moreover, efficient algorithms for the evaluation of the solution
are given. They are based on a predictor–corrector strategy coupled with a Newton iterative
scheme, which yields quadratic convergence. Since the solution to the Cauchy problem typ-
ically requires computing a large number of Riemann problems, the availability of a general
and highly efficient Riemann solver is essential.
In summary, the key ingredients of the approach presented here are: (1) decoupling of the
three-dimensional equations into a global pressure equation, and a system of one-dimensional
saturation equations along streamlines; (2) solution of the Cauchy problem along each stream-
line by means of a front tracking algorithm; and (3) the use of an efficient three-phase Riemann
solver as a building block for the front tracking solution.
The outline of the paper is as follows. In Section 2, we outline the mathematical model.
The solution to the three-phase Riemann problem is discussed in Section 3. We describe
the wave structure that may arise, and pay particular attention to the role of detached
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 3

branches of the Hugoniot locus on the global solution structure. In Section 4 we describe
the front-tracking algorithm used to solve the Cauchy problem, with particular reference
to discretization of rarefaction waves, and data reduction. Representative one-dimensional
simulations are presented in Section 5. Examples 1–3 are Riemann problems, in which the
front tracking method is compared against the analytical solution and common finite volume
schemes. Example 4 is a more involved test problem modeling water-alternating-gas injection
in an oil and gas reservoir. In Section 6 we present a three-dimensional three-phase flow
simulation, in which the front tracking algorithm is used in combination with a streamline
method. These numerical simulations illustrate the potential of this approach for fast and
accurate quantitative predictions in real three-dimensional, heterogeneous reservoirs. Finally,
in Section 7, we gather the main conclusions and anticipate future work.

2. Mathematical Model of Three-Phase Flow


Under certain assumptions (see, e.g. [10]) the mathematical model describing three-phase
flow in porous media may be expressed in terms of a pressure equation, and a system of
saturation equations. For one-dimensional flow, the system of saturation equations takes the
form (after re-scaling of the space variable):

(2) ut + f (u)x = 0,

where u = (Sw , Sg ) is the vector of water and gas saturations, and f = (fw , fg ) is the
vector of fractional flow functions. The oil saturation is determined by the algebraic relation
So = 1 − Sw − Sg , which dictates that the fluids fill up the entire pore space. If the effects of
miscibility, compressibility, capillarity and gravity are neglected, the fractional flow of phase i
is simply:

λi
(3) fi = ,
λT

where λi is the relative mobility of phase i, and λT = λw + λg + λo is the total mobility. The
relative mobility is defined as:

kri
(4) λi = ,
µi

where kri and µi are the relative permeability and the dynamic viscosity of phase i, respec-
tively.
The relative permeabilities are normally understood as functions of the fluid saturations
alone. It is well known that most relative permeability models used today give rise to elliptic
regions, that is, open sets in the saturation space where the system (2) is locally elliptic rather
than hyperbolic [9, 10, 3, 15, 41, 42, 22, 19, 26]. There is an ongoing debate on whether elliptic
regions are physical, or simply an unintended consequence of the severe modeling assumptions
made in development of three-phase flow models (see, e.g., [42, 23, 2, 26]). In this paper, we
adopt the view that elliptic regions are the result of an incomplete model, and we use relative
permeability functions which render the system hyperbolic [26].
4 K.–A. LIE AND R. JUANES

3. Solution to the Riemann Problem


The Riemann problem is a particular case of the Cauchy problem (1) in which the initial
condition is given by piecewise constant data, separated by a single discontinuity:
(
uL if x < 0,
(5) u0 (x) =
uR if x ≥ 0.

The state uL is the ‘left’ or ‘injected’ state, and uR is the ‘right’ or ‘initial’ state. Solutions
to the Riemann problem (especially analytical solutions) are extremely valuable: they offer
insight into the behavior of the system, and they can be used as a building block to obtain
solutions for problems with more complex initial conditions.

3.1. Wave Structure. Analytical solutions to the Riemann problem of three-phase flow
have been studied extensively [43, 39, 35, 18, 14, 13, 16, 17, 33]. In a recent paper [25], a
complete catalogue of solutions was identified, and efficient algorithms for the computation
of the solution were given. The main assumptions used to limit the admissible wave structure
are: (1) the system is strictly hyperbolic; and (2) both characteristic fields are nongenuinely
nonlinear, and the inflection locus of each field is assumed to be a single curve which corre-
sponds to maxima of the eigenvalues. The inflection locus of the i-family is the set of states
at which the i-characteristic velocity attains a maximum or a minimum value when moving
along integral curves of the i-family. We define, for any saturation state u, the quantity
(6) Vi (u) := ∇νi (u) · ri (u),
where νi is the i-eigenvalue and ri is the i-eigenvector of the Jacobian matrix f 0 (u). With this
definition, the i-inflection locus is nothing but the contour Vi = 0, which separates convexity
regions.
Both conditions mentioned above are natural extensions of the corresponding conditions
in the two-phase flow case. Under those assumptions, the solution to the Riemann problem
comprises two separated waves, W1 (slow wave) and W2 (fast wave), connecting three constant
states, uL (left), uM (middle) and uR (right):
W
1 2 W
(7) uL −→ uM −→ uR .
In general, when the characteristic fields are neither genuinely nonlinear nor linearly degen-
erate in the sense of Lax [31], each wave may be a composite wave of rarefactions and shocks
[32]. However, when the inflection loci are connected manifolds of dimension n−1 (n being the
size of the system of equations) where the eigenvalues attain maximum values, each composite
wave may only involve a rarefaction followed by a left discontinuity [1]. This important result
limits the wave structure of three-phase flow models to only nine admissible combinations of
waves, because each of the two waves can only be a single rarefaction R, a single shock S, or
a composite rarefaction–shock RS.
Rarefaction curves are described in terms of ordinary differential equations, whereas shock
curves are defined by algebraic equations (the Rankine–Hugoniot condition). Efficient algo-
rithms for the computation of individual waves can be obtained based on a Newton iterative
scheme in combination with an efficient ODE solver for the rarefaction curves. We use the
Runge–Kutta (4,5) pair of Dormand and Prince, see [40]. Algorithms for all solution types can
then be devised by piecing together the individual waves using a predictor–corrector strategy,
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 5

0
1

0.2
H1 0.8

0.4
H2 0.6

0.6
Hd 0.4
0.8

0.2
1

0
O W
0.2

0.4

0.6

0.8
0

1
Figure 1. Local and detached branches of the Hugoniot loci for a reference state
near the vertex of 100% gas saturation.

which achieves quadratic convergence in all cases [25]. Such optimal methods for the evalua-
tion of the analytical solution are necessary because typical applications of the front-tracking
method require millions of calls to the Riemann solver.

3.2. Detached Branches of Shock Curves. The usual construction of the Riemann solu-
tion [25] assumes that the wave curves are local, that is, that they are continuous curves, which
emanate from the left and right states. The intermediate constant state is therefore deter-
mined as the intersection of a local 1-wave emanating from uL , and a local 2-wave emanating
from uR . It turns out, however, that this construction may lead to globally inadmissible Rie-
mann solutions because the wave speeds are not necessarily monotonically increasing (even if
both waves are admissible individually). The reason is that the Hugoniot locus, that is, the set
of saturation states which satisfy the Rankine–Hugoniot condition for a given reference state,
may present detached branches. An example of such behavior is shown in Figure 1, where H1
and H2 correspond to the slow and fast local branches of the Hugoniot locus, respectively,
and Hd is the detached branch.
Detached branches of the Hugoniot locus are typically present for reference saturation
states near the vertex of 100% gas saturation. The presence of detached branches in the
saturation space is an indication that the solution may not be constructed in the usual way,
by connecting local wave curves emanating from the left and right states. To illustrate the
role of detached branches in the construction of admissible solutions, we present the three
possible solutions of the Riemann problem with initial state uR = (0.05, 0.80), and injected
state uL = (0.8, 0.2).
The first tentative solution (Figure 2) is obtained by connecting the local 1-wave from uL
with the local 2-wave from uR . The solution is in this case of type R1 S1 S2 ; that is, the slow
wave is a rarefaction–shock, and the fast wave is a single shock. The computed shock speeds
are such that σ1 > σ2 and, therefore, the solution is globally inadmissible. On the right
plot of Figure 2, we show the saturation profiles of water, oil, and gas against the similarity
variable x/t. The two solid curves correspond to the values of Sw and 1 − Sg . This is a
6 K.–A. LIE AND R. JUANES

G
1

0
1

0.2
0.8
uR
0.4

0.6

S2
0.6

0.4

uL
0.8

0.2
R1
S1
uM
0
1

0 0 σ σ
2 1
O W x/t
0.2

0.4

0.6

0.8
0

1
Figure 2. Inadmissible Riemann solution using the local branch of the Hugoniot lo-
cus. Left: Saturation path on the ternary diagram; Right: Saturation profiles showing
a nonincreasing sequence of wave speeds (σ1 > σ2 ).

G
1
0

1
0.2

0.8
uR
0.4

0.6
0.6

S2 0.4

uL
0.8

0.2
R1
S1
uM
0
1

0 0 σ σ
2 1
O W x/t
0.2

0.4

0.6

0.8
0

Figure 3. Inadmissible Riemann solution with an intermediate state at the de-


tached branch of the Hugoniot locus. Left: Saturation path on the ternary diagram;
Right: Saturation profiles showing a nonincreasing sequence of wave speeds (σ1 > σ2 ).

convenient representation, because it allows to display all three saturations on the same plot:
water at the bottom—cyan; gas at the top—in white; and oil in between—in dark gray. The
saturation profiles clearly show that the solution is unphysical.
The second tentative solution (Figure 3) involves a local 1-wave emanating from uL , and an
intermediate saturation state uM on the left side of the detached branch. The solution is of
type R1 S1 S2 but it is inadmissible because, as before, the wave speeds form a nonincreasing
sequence.
The third tentative solution (Figure 4) connects uL with the intermediate state uM on the
right side of the detached branch, which is then connected to uR by a single shock. This is the
physically admissible solution because both waves satisfy the e-Lax entropy condition and the
wave speeds are monotonically increasing. Indeed, the saturation profiles are uniquely-valued.
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 7

G
1

0
1

0.2
uR 0.8

0.4

0.6

S2
0.6

0.4

uL
0.8

R1
0.2
uM
0
1

0 0 σ
2
O W x/t
0.2

0.4

0.6

0.8
0

1
Figure 4. Physically correct Riemann solution, where the right state is reached from
an intermediate state at the detached branch of the Hugoniot locus. Left: Saturation
path on the ternary diagram; Right: Saturation profiles showing a sequence of waves
which satisfy the entropy criterion and have increasing speeds.

The example presented here is representative of the typical behavior of three-phase flow
models. Whenever the construction involving local wave curves does not lead to a globally
admissible solution, the solution must involve a detached branch. In general, two solutions
are then possible, one of which does not satisfy the e-Lax entropy criterion, and the other
yields the physically correct Riemann solution. It is important to note that the catalogue of
solutions presented in [25] does not change, and that the number of admissible solution types
is still nine. Moreover, the predictor–corrector algorithms are also valid and yield quadratic
convergence even if the solution involves detached branches. Only the initial guess needs to be
judiciously chosen to guarantee that the iterative method converge to the physically correct
solution. A more complete study of the role of detached branches on the Riemann solution
of three-phase flow models is presented in a separate publication.

3.3. Riemann Solver Algorithm. The complete algorithm for the determination of the
solution to the Riemann problem is presented in Algorithm 3.1.

Algorithm 3.1 The Riemann solver algorithm


1. Given left and right states: uL , uR
2. Set initial guess and trial solution: utr tr tr
M , W1 = R1 , W2 = R2
3. Solve the W1tr W2tr configuration, and update the wave structure:
[uM ,W1 ,W2 ] = WaveStruct(uL ,uR ,utr tr tr
M ,W1 ,W2 )
4. Check admissibility (increasing wave speeds):
If (σ1 > σ2 ) {
Set new initial guess: uM
Declare solution invalid: W1tr = W2tr = 0 }
5. Check convergence of the algorithm:
If W1 W2 = W1tr W2tr Stop
Else Set W1tr W2tr ← W1 W2 , utrM ← uM , Goto 3.
8 K.–A. LIE AND R. JUANES

first interaction second interaction

Figure 5. Construction of a global solution by connecting local Riemann fans de-


picted in the (x, t)-plane.

Given the left and right states uL and uR , respectively, the algorithm solves the Riemann
problem by determining the intermediate state uM and the wave types W1 and W2 joining the
three constant states. The algorithm starts by setting an initial guess utr
M of the intermediate
state, and by assuming a trial solution of type R1 R2 , that is, a solution consisting in two
rarefaction waves. The reason for this choice is that it guarantees that the predicted interme-
diate saturation state uM will be inside the saturation triangle. The heart of the algorithm
is Step 3, which involves two actions:
(1) Compute the intermediate state, given a trial wave structure W1tr W2tr and an initial
guess utr
M . This step is performed following the algorithms given in [25].
(2) Ascertain what the wave structure of the solution would be if the intermediate state
were the one just computed. The wave type is inferred separately for each individual
wave (i = 1, 2). Although this step must be designed carefully to obtain a robust
implementation, the concept is quite simple: a valid i-shock must satisfy the Lax
entropy criterion; if the shock is not admissible, and the constant states joined by the
i-wave are on the same convexity region, the i-wave is a rarefaction; otherwise it is a
rarefaction–shock.
Due to the potential presence of detached branches for some saturation states, it is not
sufficient to check the admissibility of individual waves. If the solution involves shocks, one
must also check that they form an increasing sequence of wave speeds, that is, σ1 < σ2 . The
algorithm terminates if the trial wave structure W1tr W2tr is admissible. Otherwise, both the
intermediate state and the wave structure are updated from the computed values. Because
rarefaction curves and shock curves typically have similar paths on the saturation space, the
intermediate state is usually not very sensitive to the solution type, and the procedure often
converges after one iteration.

4. The Front-Tracking Algorithm


Front tracking is an algorithm for constructing exact or approximate solutions to hyperbolic
conservation laws of the form

ut + f (u)x = 0, u(x, 0) = u0 (x).


A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 9

Assume that the initial function u0 (x) is a piecewise constant function so that the Cauchy
problem consists of a series of local Riemann problems (5). Each Riemann problem is con-
nected to its nearest neighbors through common constant states. In the previous section
we saw how to solve the Riemann problem exactly to produce a similarity solution, which
is commonly referred to as the Riemann fan. Each Riemann fan is local in time and space
and consists of a set of constant states separated by simple waves. By connecting the local
Riemann fans, one obtains a solution that is global in space. Since each simple wave has a
finite speed of propagation, the global solution is well-defined up to the time when the first
waves from two neighboring Riemann fans interact. If the two interacting waves are discon-
tinuities, the interaction defines a new local Riemann problem and the new global solution
can be constructed by inserting the corresponding local Riemann fan, see Figure 5. Assume
now that all simple waves admitted by the system are discontinuities. This means that all
local Riemann problems will produce constant states separated by discontinuities. Then our
construction can be repeated to compute the exact solution of the Cauchy problem up to an
arbitrary desired time level.
If the system admits rarefactions, as is the case for the three-phase model, the above
construction cannot be used directly to construct an exact solution. However, an approximate
solution can be constructed if we approximate each Riemann fan by a step function so that
the approximate Riemann fan consists of constant states separated by space–time rays of
discontinuities, see Figure 6. To this end, we discretize the smooth rarefaction waves by a
series of (small) jump discontinuities and keep the shocks (and the linear discontinuities).
We are now in a position to use the algorithm outlined above to construct a global ap-
proximate solution (in space and time) in the same way as one builds a scaffolding. Start
by resolving Riemann the initial problems and connect the local approximate Riemann fans.
The result is a set of constant states separated by space–time rays of discontinuity, hence-
forth referred to as fronts. Then, track all fronts until the first two fronts collide, resolve
the corresponding Riemann problem, insert the approximate Riemann fan, and so on. This
is the front-tracking algorithm, which is outlined in more detail in Algorithm 4.1. In the
algorithm, the basic data objects are the propagating fronts. Each front object f has an as-
sociated left and right state, a point of origin, a propagation speed, and a termination point.
To track the fronts, we use two lists, a spatial list F where the fronts are sorted from left to
right and a collision list C where front collisions are sorted with respect to collision time in
ascending order.

4.1. Approximation of Rarefaction Waves. We have so far not discussed how to approx-
imate rarefaction waves. There are several ways to do this. One possibility is to discretize
each rarefaction wave uniformly in wave speed. Assume that the integral curve connecting
two constant states uL and uR is given by R(ξ) for ξL ≤ ξ ≤ ξR . Then the constant states ap-
proximating the rarefaction are given by ui = R(ξL + iδξ ), where the magnitude of δξ is given
by some prescribed parameter and n · δξ = ξR − ξL . In our implementation of the Riemann
solver for the three-phase problem, the integral curves are given as either Sw = R(Sg ) or
Sg = R(Sw ). We have therefore chosen a simpler approach, and discretize the rarefactions by
sampling uniformly along the integral curves in state space; that is, discretize each rarefaction
wave by a set of constant states {ui } such that |ui − ui−1 | ≈ δu , for some prescribed δu .
Since the rarefaction waves are discretized in state space, the wave velocities for each
discontinuity must be determined. There are several natural candidates like the characteristic
speed of the left or the right state, or the average of the characteristic speeds, see e.g., [21].
10 K.–A. LIE AND R. JUANES

0
1

0.2
0.8

0.4
0.6

u
0.6

0.4
0.8

0.2
1

0
0
0.2

0.4

0.6

0.8
0

1
O W 0 x 1

0.5

S1
S2
R1
0
x 1

Figure 6. Construction of an approximate Riemann fan: approximation in state


space, approximate solution in (x, u)-plane, and fronts in (x, t)-plane.

Algorithm 4.1 The front-tracking algorithm


Construct a piecewise constant initial function u0 (x) = ui
Set F = {∅}, C = {∅}, and t = 0
For i = 0 : n
{fL , . . . , fR } = RiemannSolver(ui , ui+1 , xi+1/2 , t)
c = ComputCollision(F, fL )
C = Sort({C, c})
F = InsertFronts({F, {fL , . . . , fR })
While (t ≤ T ) and C 6= {∅} do
(c, xc , tc ) = ExtractNextCollision(C)
{fL , . . . , fR } = ExtractCollidingFronts(F,c)
{fL , . . . , fR } = RiemannSolver(fL → uL , fR → uR , xc , tc )
{cL , cR } = ComputCollision(F, {fL , . . . , fR })
C = Sort({C, cL , cR })
F = InsertFronts(F, {fL , . . . , fR })
endwhile
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 11

In our implementation we use the Rankine–Hugoniot wave speed given by the left and right
state of each discontinuity, ensuring that each discontinuity in the approximate Riemann fan
satisfies the equation in the weak sense, regardless of whether it is admissible or not.

4.2. Data Reduction. A potential pitfall of the front-tracking algorithm is that the num-
ber of discontinuities in the solution may blow up in finite time for general systems. To
prevent this, one must generally use Glimm-type interaction estimates to do some kind of
data reduction of weak waves that arise as a result of wave interactions in other families, see
[21]. Since the conservation law is continuous in L1 with respect to its initial data u0 (x),
the approximation obtained by replacing u0 by a piecewise constant function v(x) can be
made arbitrarily good by choosing v(x) appropriately. Similarly, the approximation of the
continuous rarefaction waves can be made arbitrarily good by increasing the number of sam-
pling points along the rarefaction waves. If we also design the data reduction carefully, the
front-tracking construction will converge to the correct weak solution of (1) in the limit, see
[21].
For numerical computations, however, we are only interested in solutions with finite accu-
racy and not their limit. We can therefore ensure that the front-tracking algorithm terminates
in a finite number of steps by removing weak waves (or Riemann problems) below some pre-
scribed tolerance. Moreover, the tracking algorithm can be made more efficient by using an
approximate Riemann solver to calculate the interaction of weak waves. Inspired by [30],
we propose a general four point strategy for solving the Riemann problem (uL , uR ) approxi-
mately:

(1) If |uL − uR | ≤ δ1 , ignore the Riemann problem.


(2) If δ1 < |uL − uR | ≤ δ2 , approximate the Riemann problem by a single discontinuity
with shock speed equal the average of the two eigenvalues of the left state.
(3) If δ2 < |uL − uR | ≤ δ3 , approximate the Riemann problem by a two-shock solution
S1 S2 . If σ1 6≤ σ2 , solve the full Riemann problem.
(4) Otherwise solve the full Riemann problem.

The resulting solutions will not be strictly conservative, but the error can be controlled by the
parameters δu and (δ1 , δ2 , δ3 ). Similar data-reductions have been proposed previously [37, 30]
for other systems of hyperbolic equations.
Let us now look at the motivation for this data reduction. In the second point, we simply
ignore the inner structure of the Riemann fan and let the perturbation be passively advected.
To determine the wave-speed of the discontinuity one could compute the least squares solution
of the associated Rankine–Hugoniot equation. However, this does not ensure a positive wave-
speed, and we have therefore chosen to use the average of the eigenvalues. The third point
is motivated by the fact that computing rarefaction curves by solving ordinary differential
equations is much more expensive than determining the intersection of two Hugoniot loci by
solving a nonlinear algebraic equation. If the left and right states are close, the corresponding
error will not be large since rarefaction curves and (local) Hugoniot loci coincide at each
constant state and deviate only slightly in a small neighborhood. However, the two-shock
approximation cannot be used if it does not produce increasing wave-speeds, in which case
we go back and solve the Riemann problem exactly.
12 K.–A. LIE AND R. JUANES

5. One-Dimensional Simulations
In the following we will present several simple examples to demonstrate the behavior of
the front-tracking algorithm. To this end, we have chosen a simple three-phase model given
by the relative mobility functions
λw (Sw ) = aw Sw + (1 − aw )Sw2 /µw ,


λg (Sg ) = ag Sg + (1 − ag )Sg2 /µg ,



(8)
λo (Sw , Sg ) = (1 − Sw − Sg )(1 − Sw )(1 − Sg )/µo ,
where aw = 0, ag = 0.1, µw = 0.35, µg = 0.012, and µo = 0.8. With this choice, the system
is strictly hyperbolic in the entire saturation triangle, except at the vertex of 100% gas
saturation, where the eigenvalues are equal [25].

Two Finite-Volume Schemes. A common way of solving hyperbolic conservation laws


like (2) is to use a finite-volume scheme. We will therefore introduce two such schemes that
will be used in the next section: the standard first-order upwind scheme and a semi-discrete,
second-order, central-upwind scheme [28]. In the following we assume that uni denotes the
cell-average function (taken in the componentwise sense)
1
Z xi + 2 ∆xi
1
uni = u(x, tn ) dx.
∆xi 1
xi − 2 ∆xi

The upwind scheme has a very simple structure (here ri = ∆t/∆xi )


un+1 = uni − ri f (um m

i i ) − f (ui−1 ) .

Among all conservative first-order, three-point schemes, the upwind scheme is the one with
the lowest numerical dissipation and can be used componentwise for the three-phase flow
equations, since all eigenvalues of this system are positive. Choosing m = n we obtain an
explicit scheme, for which we have the stability requires that maxi ν2 (ui )ri ≤ 1. A fully
implicit scheme is obtained for m = n + 1.
The central-upwind scheme is a so-called high-resolution scheme. It generally has five points
in the stencil and uses a nonlinear reconstruction to guarantee both second-order accuracy
and nonoscillatory behavior. In semi-discrete form, the scheme reads
d 1  
ui (t) = H(ui , t) = − Fi+1/2 (t) − Fi−1/2 (t) .
dt ∆x
Since all eigenvalues are positive, the numerical flux-functions Fi±1/2 (t) take a particularly
simple form
Fi+1/2 (t) = f ui (t) + 12 u0i (t) ,


where u0i (t) is the reconstructed discrete slope


u0i (t) = L ui (t) − ui−1 (t), ui+1 (t) − ui (t) .


For the nonlinear limiter function L we will use the minmod function with θ = 1.3,

min(a, b, c),
 a, b, c > 0,
1
L(a, b) = minmod θa, 2 (a + b), θb), minmod(a, b, c) = max(a, b, c), a, b, c < 0,

0, otherwise.

A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 13

0
1

0.2
0.8

0.4
0.6

uR

0.6
0.4

0.8
S2
0.2

uM S1 R1 uL
1

0
O W
0.2

0.4

0.6

0.8
0

1
Figure 7. (Example 1) Saturation path of the exact solution and the approximate
front-tracking solution with δu = 0.05.

To integrate the semi-discrete equation we employ a second-order Runge–Kutta scheme


based upon combinations of forward-Euler steps
u(1) = un + ∆tn H(un , tn )
un+1 = 21 un + 1
u(1) + ∆tn H(u(1) , tn )

2
The stability condition for the central-upwind scheme is maxi ν2 (ui )ri ≤ 1/2.
Example 1. The first example is a simple Riemann problem at x = 0.1 with left state
uL = (1, 0) and right state uR = (0, 0.5). The example is motivated by water injection in an
oil-gas reservoir. The solution is of type R1 S1 S2 , as shown in Figure 7. Figure 8 shows three
approximate solutions obtained with three different choices for the parameter δu determining
the approximation of rarefaction waves. The S1 and S2 shocks are resolved exactly in all
three computations and the solution is approximate only along the rarefaction wave. Since
rarefactions are approximated in state space and not in wave speed, the step function is
uniformly decreasing in Sw and nonuniformly increasing in x/t. We observe that the solution
converges nicely to the analytical solution as δu is decreased.
Figure 8 also shows the cumulative production at the right boundary up to time t = 1.0.
Initially, the reservoir produces almost only gas. The oil production increases dramatically
when the gas has been expelled and decreases again when the water front breaks through.
Example 2. The second example is also a Riemann problem at x = 0.1, but now with right
state uR = (0, 0.75). The solution is of type R1 S2 , where the S2 wave is on the detached
branch of the Hugoniot locus, see Figure 9. Figure 10 shows three approximate solutions
obtained with three different choices for the parameter δu determining the approximation of
rarefaction waves.
Given the complexity of the Riemann solver and the front-tracking algorithm, an obvious
question to ask is what is gained compared with a finite-volume method. Figure 11 shows a
comparison of the front-tracking solution, the upwind scheme, and the central-upwind scheme.
The grid size was chosen so that the runtime of the front-tracker and the upwind scheme were
14 K.–A. LIE AND R. JUANES

1 1

u u

0 0
0 x 1 0 x 1
1 0.45
oil
water
0.4 gas

0.35

0.3

0.25
u
0.2

0.15

0.1

0.05

0 0
0 x 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figure 8. (Example 1) Approximate solutions at time t = 0.4 for a water injection


in an oil-gas reservoir with δu = 0.05, 0.01, and 0.002. The bottom-right plot shows
cumulative measured production up to time t = 1.0.

G
0

1
0.2

0.8
uR
0.4

0.6
0.6

0.4
0.8

0.2

uM R1 uL
1

0
O W
0.2

0.4

0.6

0.8
0

Figure 9. (Example 2) Saturation path of the exact solution and the approximate
front-tracking solution with δu = 0.05. The S2 shock involves the detached branch of
the Hugoniot locus.
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 15

1 1

u u

0 0
0 x 1 0 x 1
0.7
1 oil
water
gas
0.6

0.5

0.4

u
0.3

0.2

0.1

0 0
0 x 1 0 0.2 0.4 0.6 0.8 1 1.2

Figure 10. (Example 2) Approximate solutions at time t = 0.6 for a solution


involving the detached branch of the Hugoniot locus, computed using δu = 0.05, 0.01,
and 0.002, respectively.

Sw

1.order upwind
2.order central−upwind
front tracking
0
0 x 1

Figure 11. (Example 2) Comparison of the front-tracking solution with δu = 0.01


and two finite-volume methods on a grid with ∆x = 1/50.

comparable. The runtime of the central-upwind scheme was a factor 5-6 larger. Whereas
the two finite-volume schemes have comparable numerical dissipation at the water front, the
smooth rarefaction is resolved better by the second-order scheme. The front-tracking scheme
16 K.–A. LIE AND R. JUANES

0
1 1

0.9

0.2
0.8 0.8

0.7

0.4
0.6
0.6

0.5

0.6
0.4
0.4

0.3

0.8
0.2
0.2

0.1 1.order upwind


2.order central−upwind

1
front tracking 0
0

0.2

0.4

0.6

0.8
0

1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 O W

Figure 12. (Example 3) Comparison of the front-tracking solution with δu = 0.001


and two finite-volume methods on a grid with ∆x = 1/50; the left plot shows solutions
in the (x, u)-plane and the right plot shows solutions in the ternary diagram.

gives exact resolution of the shock and slightly better resolution of the rarefaction wave, but
altogether the performance of the three schemes is similar.
Example 3. The third example is also a Riemann problem with uL = (0, 0.6) and uR =
(0.4, 0.05). The wave structure is R1 S1 R2 , where the S1 wave is very weak with |ul − ur | =
0.0039. Figure 12 compares approximate solutions at t = 0.1 obtained by the two finite-
difference schemes on a grid with 50 cells with the exact solution. As expected, the ternary
diagram shows that the two finite-volume schemes do not resolve the structure of the W1
wave on this coarse grid. To resolve the structure, one must in fact increase the number of
grid points by at least two orders of magnitude, as can be seen in Figure 13, where we have
zoomed in on the solution around the W1 wave. Front-tracking, on the other hand, gives a
fair approximation to the W1 wave even with δu = 0.05.
Example 4. As a fourth example, we model a simplified water-alternating-gas (WAG) pro-
cess, in which the injected conditions vary in time. We consider a linear reservoir with initial
saturations of 20% gas and 80% oil, so that uR = (0, 0.2). The process starts by injecting
pure water, which defines a Riemann problem with uL = (1, 0). At time t = 0.1, the injected
state is changed to uL = (0.01, 0.99), corresponding to almost 100% gas injection. Subsequent
cycles of water and gas injection are established, with each injection phase lasting for a period
∆t = 0.1.
Because of the stepwise change in the left boundary condition, the solution is no longer a
single Riemann fan. Figure 14 shows the fronts in the (x, t)-plane for a very coarse approx-
imation δu = 0.05. The total number of Riemann problems solved for this simulation was
approximately 26 000. The initial wave structure consists of a fast 2-shock that displaces the
initial oil–gas mixture by pure oil, followed by a rarefaction–shock in the first family displac-
ing oil by water (as in the classical two-phase Buckley–Leverett displacement). When gas is
injected at time t = 0.1, the injected gas gives a fast rarefaction–shock in the second family
that travels unperturbed through the injected water. As the gas front passes, the injected
water slows down, as can be seen from the kink in the waves of the first family. The injected
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 17

0.52 0.49
n= 1.250 n= 1.250
n= 5.000 n= 5.000
n=20.000 0.48 n=20.000

0.5
0.47

0.48 0.46

0.45
0.46
0.44

0.44 0.43

0.42
0.42
0.41

0.4 0.4
0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106
0.49
δ =0.05
u
δ =0.01
u
0.48 δ =0.002
u

0.47

0.46

0.45

0.44

0.43

0.42

0.41

0.4
0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106

Figure 13. (Example 3) Plot of 1−Sg zoomed in around the W1 wave. Approximate
solutions computed by first-order upwind (top-left) and second-order central-upwind
(top-right) on a grid with n cells, compared with front-tracking (bottom).

gas front overtakes the gas front induced by the first water injection cycle and the oil bank
reaches the production well at t ≈ 0.564.
In Figure 15 we plot the saturation profiles at times t = 0.1, 0.2, 0.5, 1.5 and t = 2,
calculated with the front-tracking method and the standard first-order upwind method. In
the front-tracking solution, we used δu = 0.005 for an accurate sampling of the rarefaction
waves. The front-tracking method requires in this case the solution of about 1.5 million
Riemann problems. The finite difference solution was computed with 100 grid cells, and
a fully implicit time stepping procedure. We employed a constant time step ∆t = 0.005,
which corresponds to a Courant number Co = σ2 ∆t/∆x ≈ 1. With this discretization, the
computational effort of both methods is comparable. It is apparent that the front-tracking
method gives a very accurate resolution of moving fronts, while the solution obtained with
the finite difference upwind method is greatly affected by numerical diffusion.
Additional insight into the behavior of the solution can be gained by plotting the solution
as a saturation path on the ternary diagram. Figure 16 shows the solution at times t = 1.5
(end of a water injection cycle) and t = 2 (end of a gas injection cycle). Each path must
necessarily start at the saturation state of the injected conditions. Sharp changes in the
18 K.–A. LIE AND R. JUANES

2
S1

1.8 R1
S2
1.6 R2

1.4

1.2

0.8

0.6

0.4

0.2

0 x−axis
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figure 14. (Example 4) Fronts in the (x, t)-plane for the simplified WAG process,
using δu = 0.05.

saturation path indicate strong shocks, which move across the domain by the action of the
injected fluids.
The cumulative production curves are shown in Figure 17 up to time t = 4. Until t ≈
0.564, the reservoir produces mostly gas. At that time, the leading oil bank reaches the
right boundary, and the oil production increases significantly. The oil production rate drops
dramatically after t ≈ 2.5, which is when the injected water breaks through.
Example 5. In the fifth example we look at the effects of using the data reduction introduced
in Section 4.2. To this end, we simplify the WAG injection discussed above by increasing
the injection phases to a period ∆t = 0.5. We start by comparing two simulations using
δu = 0.05; a simulation without data reduction and a simulation where all Riemann problems
with strength below δ3 = 0.2 are treated as S1 S2 waves. Whereas the full simulation required
787 Riemann solves, the second simulation required only 369 Riemann solves, out of which
325 were shock-shock approximations.
Figure 18 shows a fronts in the (x, t)-plane for the two simulations. The first Riemann
problem at (0, 0) gives a R1 S1 S2 solution. When the injection is changed at t = 0.5, this
gives a Riemann problem at (0, 0.5) with a R2 S2 solution. Almost immediately afterwards,
the fronts in the R1 -wave emanating from (0, 0) will start interacting with the fronts in the
R2 -wave emanating from (0, 0.5). Since we use a rather large threshold value δ3 = 0.2, each
of these waves are approximated by a S1 S2 solution. Later on, these S2 -fronts interact with
the S1 -front emanating from (0, 0). Since the strength of these interactions are not below the
threshold, the corresponding Riemann problems will be solved exactly and correctly produce
a S1 R2 pair of fronts, as for the case without data reduction. The left column of Figure 19
compares the saturation profiles at t = 2.0 for the two approximate solutions. Although the
approximations in (x, t)-space are quite different in terms of the waves used, the saturation
profiles almost coincide.
The right column of Figure 19 shows a comparison of a full simulation for δu = 0.005
and a simulation with data reduction given by δ3 = 0.2 and δ2 = 0.01. The full simulation
required 73 360 Riemann solves, whereas the data-reduced simulation required only 7 475
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 19

1 1

0 0
1 1

0 0
1 1

0 0
1 1

0 0
1 1

0 0
0 x 2 0 x 2

Figure 15. (Example 4) Saturation profiles for the one-dimensional WAG process
at t = 0.1 (top), 0.2, 0.5, 1.5 and t = 2 (bottom), calculated by: the front-tracking
using δu = 0.005 (left), and the first-order upwind method with 100 grid cells (right).

Riemann solves, out of which 212 were full solves, 6 991 were S1 S2 approximations, and 272
were approximation by a single wave. Whereas the number of Riemann solves were reduced
by a factor 10, the runtime was reduced by a factor 40, owing to the faster computation of
Hugoniot loci compared with rarefaction curves.

Computational Efficiency. One important question that remains to be discussed is how the
computational efficiency of the front-tracking method compares with that of standard finite-
difference schemes like the first-order upwind scheme. Two simple comparisons were given in
Examples 2 and 4 and indicated that the front-tracking method (even without data reduction)
delivers superior accuracy compared with finite-difference methods for a given computational
cost. However, making a general comparison is more difficult, since the factors determining
the runtime are not the same for finite-difference schemes and the front-tracking method. The
runtime of a finite-difference scheme is basically determined by the number of grid-cells and
the number of time-steps. The runtime of the front-tracking method is determined by the
complexity of the wave interactions in the problem and the number of discontinuities used
to approximate the rarefactions. The method will therefore be most efficient for problems
20 K.–A. LIE AND R. JUANES

0
1
uG

0.2
0.8

0.4
0.6

0.6
0.4
t=1.5
t=2
0.8

uR 0.2

uw
1

0
O W
0.2

0.4

0.6

0.8
0

1
Figure 16. (Example 4) Saturation path at two different times.

1.4
gas

1.2 oil
water

1
cumulative recovery (PV)

0.8

0.6

0.4

0.2

0
0 1 2 3 4
t

Figure 17. (Example 4) Production curves.

involving few wave interactions or cases that would require highly irregular grids in a finite
difference methods (as discussed, for instance, in the next section).

6. Three-Phase Streamline Simulation


An interesting application of the front-tracking method for three-phase flow is in combina-
tion with streamlines to simulate multidimensional displacement scenarios. In a streamline
simulation, the pressure and the transport equations are decoupled and solved sequentially.
A streamline is defined as the flow path traced out by a neutral particle being passively ad-
vected by a flow field so that the velocity field v is tangential to the streamline at every point.
The streamlines are parametrized by the so-called time-of-flight τ = τ (x) that measures the
time it takes for a passive particle released at the boundary (i.e., an injector) at time zero to
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 21

2 2
S1 S1
R1 R1
1.8 S2 1.8 S2
R2 R2
1.6 1.6

1.4 1.4

1.2 1.2

1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 x−axis 0 x−axis
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figure 18. (Example 5) Fronts in the (x, t)-plane for a WAG process computed
with δu = 0.05 and no data reduction (left) and with data reduction given by δ3 = 0.2
(right).

No data reduction: δ1=δ2=δ3=10−12 No data reduction: δ1=δ2=δ3=10−12

Data reduction: δ1=δ2=10−12, δ3=0.2 Data reduction: δ1=10−12, δ2=0.01, δ3=0.2

Figure 19. (Example 5) Saturation profiles at t = 2.0 computed with δu = 0.05


(left) and δu = 0.005 (right).

reach a point x in physical space. The time-of-flight can be computed by integrating along
individual streamlines Ψ Z s
(φ ◦ Ψ)(ξ)
τ (s) = dξ,
0 |(v ◦ Ψ)(ξ)|
where v is the total Darcy velocity and φ is the porosity. In the simulator, the streamlines are
traced from cell to cell using an analytic method due to Pollock [34]. For incompressible flow,
all streamlines will start in an injector and end in a producer. In the fluid transport, each
streamline is treated as an isolated flow system described by the one-dimensional hyperbolic
system (in the case of no gravity)
(9) ut + f (u)τ = 0, u(τ, 0) = u0 (τ ).
In a streamline method, the saturations are advanced forward in time by solving (9), here
by using the front-tracking method. At the end of the transport step, the saturations are
22 K.–A. LIE AND R. JUANES

projected back onto the background grid, the fluid mobilities are updated, and the pressure
recomputed.
The initial data u0 (τ ) are obtained by mapping saturations from a grid in physical space
to a time-of-flight grid along each streamline, where the size of the grid-cells in τ is given by
the traversal times of the grid-cells in physical space. The resulting grids are highly irregular,
with small grid-cells close to injectors and producers and large cells in the middle of the
reservoir. For streamline simulators using finite-differences to solve (9), one therefore has to
use an adaptive formulation and/or resample the initial data on a more regular grid. The
front-tracking method, on the other hand, has no difficulty coping with highly-irregular grids,
since these are only used to set up the initial Riemann problems. This is one of the definite
advantages of the front-tracking method.
For a full three-dimensional simulation, the saturation step typically involves several thou-
sand streamlines, resulting in a very large number of calls to the Riemann solver. The
Riemann solver must therefore be highly efficient. In the current three-phase solver, the most
expensive part is the calculation of rarefactions and rarefaction–shocks, because they involve
constrained integration of ordinary differential equations. To increase the speed significantly,
we will therefore use the simple adaptive Riemann solver introduced in Section 4.2, for which
the wave structure of strong Riemann problems is resolved exactly, whereas weak Riemann
problems are ignored or approximated by a (possibly inadmissible) two-shock solution.
We consider a synthetic, full three-dimensional reservoir model consisting of a five spot
well configuration (one injection well at the center and four production wells at the corners)
in a highly heterogeneous, shallow-marine Tarbert formation. The heterogeneity model is
a subsample of the recent 10th SPE comparative solution project [11] on a 30 × 110 × 15
grid. The field has large (but smooth) permeability variations: 6 orders of magnitude in the
horizontal direction and 10 orders in the vertical direction, see Figure 20. The porosity is
strongly correlated to the permeability.

1e−02 1e−01 1e+00 1e+01 1e+02 1e+03 1e+04

Figure 20. Logarithm of horizontal permeability and well configuration for the
Tarbert formation.
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 23

For simplicity, we neglect gravity and assume incompressible flow. The three-phase model
is as given in the previous section. The initial saturation is (Sw , Sg ) = (0.0, 0.2). We consider
2 000 days of production by two different scenarios: (i) injection of pure water, i.e., (Sw , Sg ) =
(1.0, 0.0); and (ii) a WAG cycle where the injected fluid composition is changed between pure
water and (Sw , Sg ) = (0.05, 0.95) every 200th day, starting at day 400.
Figure 21 shows the water saturation after 2 000 days of production for the two scenarios,
computed using 10 000 streamlines and δu = 0.025 in the approximation of rarefaction waves.
The WAG simulation involved 632 million calls to the Riemann solver, out of which 617
million satisfied |uL − uR | ≤ 0.2 and were approximated by a two-shock solution.
Figure 22 shows a comparison of the production rates for oil, gas and water obtained by
our streamline solver and Eclipse, which is a industry-standard finite-difference simulator.
Whereas Eclipse uses an implicit formulation with adaptive stepsize control, our solver uses
a fractional step formulation with no stepsize control. To assess the error in the operator
splitting, we present results obtained with different step sized between days 400 and 2 000.
Given the fundamentally different nature of the Eclipse and the streamline method, the
production curves are in remarkable agreement.
Worth noting also is that the streamline simulations are significantly faster. On a dual 2.0
MHz Pentium PC, the Eclipse simulations took 1hr 22min for the water injection, and 8 hr
20min for the WAG cycle. The timings for the streamline simulator were 50 minutes for the
water injection with stepsize 200 days, and 2hr 13min for the WAG cycle using stepsize 25
days.

7. Conclusions
In this paper we have presented a front-tracking method for the numerical solution of three-
phase porous media flow. The method is developed for constructing very accurate (even exact)
solutions to one-dimensional problems with general initial and boundary data. The solution is
approximated by a piecewise constant function, and the evolution of discontinuities is resolved
by using the analytical solution to the Riemann problem. It is the use of the exact analytical
solution, together with an appropriate algorithm to simplify the wave structure for Riemann
problems of small amplitude, what makes the front-tracking technique very attractive as a
computational method. We have illustrated the performance of the method with several one-
dimensional simulations, and compared the results with two finite volume schemes. The main
advantage of the front-tracking method is that strong shocks are resolved exactly (both in
amplitude and speed).
An important practical application of the front-tracking algorithm arises in the context of
streamline simulation. Streamline methods decouple the three-dimensional problem into a
set of one-dimensional problems along streamlines, which can then be solved by means of the
front-tracking method. In this paper, we have shown the efficacy of the proposed approach for
the simulation of a complex, highly heterogeneous, three-dimensional reservoir model adapted
from the 10th SPE comparison solution project.
The integration of analytical Riemann solvers, the front-tracking method, and stream-
line tracing, offers the potential for fast and accurate prediction of three-phase flows in real
reservoirs. This technology becomes particularly relevant for screening purposes and for risk
assessment, which require the simulation of a large number of scenarios.
The formalism presented here may be extended in several ways. The Riemann solver was
limited to three-phase immiscible, incompressible flow, and we are currently working on its
24 K.–A. LIE AND R. JUANES

Figure 21. Water saturation after 2 000 days of production with constant water
injection (top) and a WAG cycle (bottom).

extension to account for miscibility effects [24]. Other physical processes, such as gravity,
capillarity, and compressibility, may also be incorporated into the streamline simulator.

Acknowledgements
R.J. gratefully acknowledges financial support from the industrial affiliates of the Stan-
ford University Petroleum Research Institute for Numerical Simulation (SUPRI-B) and Gas
Injection (SUPRI-C). K.-A.L. gratefully acknowledges financial support from the Research
Council of Norway under grant number 158908/I30.

References
[1] F. Ancona and A. Marson. A note on the Riemann problem for general n × n conservation laws. J. Math.
Anal. Appl., 260:279–293, 2001.
[2] A. V. Azevedo, D. Marchesin, B. Plohr, and K. Zumbrun. Capillary instability in models for three-phase
flow. Z. angew. Math. Phys., 53:713–746, 2002.
[3] J. B. Bell, J. A. Trangenstein, and G. R. Shubin. Conservation laws of mixed type describing three-phase
flow in porous media. SIAM J. Appl. Math., 46(6):1000–1017, 1986.
[4] I. Berre, H. K. Dahle, K. H. Karlsen, and H. F. Nordhaug. A streamline front tracking method for
two- and three-phase flow including capillary forces. In Z. Chen and R. E. Ewing, editors, Fluid Flow
and Transport in Porous Media: Mathematical and Numerical Treatment, volume 295 of Contemporary
Mathematics, pages 49–61. American Mathematical Society, Providence, RI, 2002.
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 25

Oil production rate Oil production rate


50 50
Eclipse Eclipse
SL: 200 days SL: 50 days
45 SL: 50 days 45 SL: 25 days
SL: 12.5 days

40 40

35 35

30 30
m3/days

m3/days
25 25

20 20

15 15

10 10

5 5

0 0
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 600 800 1000 1200 1400 1600 1800 2000
days days

Gas production rate Gas production rate


80
Eclipse Eclipse
SL: 200 days 80 SL: 50 days
SL: 50 days SL: 25 days
70 SL: 12.5 days
70

60

60

50

50
m3/days

m3/days

40

40

30

30

20

20

10

10

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 600 800 1000 1200 1400 1600 1800 2000
days days

Water production rate Water production rate


80 70
Eclipse Eclipse
SL: 200 days SL: 50 days
SL: 50 days SL: 25 days
70 SL: 12.5 days
60

60
50

50
40
m3/days

m3/days

40

30
30

20
20

10
10

0 0

0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 600 800 1000 1200 1400 1600 1800 2000
days days

Figure 22. Oil, gas, and water rates for water injection (left) and the WAG cycle (right).

[5] F. Bratvedt, K. Bratvedt, C. F. Buchholz, T. Gimse, H. Holden, L. Holden, and N. H. Risebro. Frontline
and Frontsim, two full scale, two-phase, black oil reservoir simulators based on front tracking. Surv. Math.
Ind., 3:185–215, 1993.
26 K.–A. LIE AND R. JUANES

[6] A. Bressan. Global solutions of systems of conservation laws by wave-front tracking. J. Math. Anal. Appl.,
170:414–432, 1992.
[7] A. Bressan, G. Crasta, and B. Piccoli. Well-posedness of the Cauchy problem for n × n systems of
conservation laws. Mem. Amer. Math. Soc., 694:1–134, 2000.
[8] A. Bressan and P. LeFloch. Uniqueness of weak solutions to systems of conservation laws. Arch. Rational
Mech. Anal., 140(4):301–317, 1997.
[9] I. A. Charny. Subterranean Hydro-Gas Dynamics. Gostoptekhizdat, Moscow, 1963. (In Russian).
[10] G. Chavent and J. Jaffré. Mathematical Models and Finite Elements for Reservoir Simulation. Elsevier,
North-Holland, 1986.
[11] M. A. Christie and M. J. Blunt. Tenth SPE comparative solution project: A comparison of upscaling
techniques. SPE Reserv. Eval. Eng., 4(4):308–317, 2001. url: www.spe.org/csp.
[12] C. Dafermos. Polygonal approximations of solutions of the initial value problem for a conservation law.
J. Math. Anal. Appl., 38:33–41, 1972.
[13] A. H. Falls and W. M. Schulte. Features of three component, three phase displacement in porous media.
SPE Reserv. Eng., 7(4):426–432, November 1992.
[14] A. H. Falls and W. M. Schulte. Theory of three component, three phase displacement in porous media.
SPE Reserv. Eng., 7(3):377–384, August 1992.
[15] F. J. Fayers. Extension of Stone’s method I and conditions for real characteristics in three-phase flow. In
SPE Annual Technical Conference and Exhibition, Dallas, TX, September 27–30, 1987. (SPE 16965).
[16] R. E. Guzmán and F. J. Fayers. Mathematical properties of three-phase flow equations. Soc. Pet. Eng.
J., 2(3):291–300, September 1997.
[17] R. E. Guzmán and F. J. Fayers. Solution to the three-phase Buckley-Leverett problem. Soc. Pet. Eng. J.,
2(3):301–311, September 1997.
[18] F. G. Helfferich. Theory of multicomponent, multiphase displacement in porous media. Soc. Pet. Eng. J.,
21(1):51–62, February 1981.
[19] P. J. Hicks Jr. and A. S. Grader. Simulation of three-phase displacement experiments. Transp. Porous
Media, 24:221–245, 1996.
[20] H. Holden, L. Holden, and R. Høegh-Krohn. A numerical method for first order nonlinear scalar conser-
vation laws in one-dimension. Comput. Math. Applic., 15(6–8):595–602, 1988.
[21] H. Holden and N. H. Risebro. Front Tracking for Hyperbolic Conservation Laws. Springer, New York,
2002.
[22] L. Holden. On the strict hyperbolicity of the Buckley-Leverett equations for three-phase flow in a porous
medium. SIAM J. Appl. Math., 50(3):667–682, 1990.
[23] M. D. Jackson and M. J. Blunt. Elliptic regions and stable solutions for three-phase flow in porous media.
Transp. Porous Media, 48:249–269, 2002.
[24] R. Juanes and K.-A. Lie. A front-tracking method for efficient simulation of miscible gas injection pro-
cesses. In SPE Reservoir Simulation Symposium, Houston, TX, January 31–February 2 2005. (SPE 93298).
[25] R. Juanes and T. W. Patzek. Analytical solution to the Riemann problem of three-phase flow in porous
media. Transp. Porous Media, 55(1):47–70, 2004.
[26] R. Juanes and T. W. Patzek. Relative permeabilities for strictly hyperbolic models of three-phase flow in
porous media. Transp. Porous Media, 57(2):125–152, 2004.
[27] M. J. King and A. Datta-Gupta. Streamline simulation: A current perspective. In Situ, 22(1):91–140,
1998.
[28] A. Kurganov, S. Noelle, and G. Petrova. Semi-discrete central-upwind schemes for hyperbolic conservation
laws and Hamilton–Jacobi equations. SIAM J. Sci. Comp., 23:707–740, 2001.
[29] L. W. Lake. Enhanced Oil Recovery. Prentice-Hall, Englewood Cliffs, NJ, 1989.
[30] J. O. Langseth, N. H. Risebro, and A. Tveito. A conservative front tracking scheme for 1D hyperbolic
conservation laws. In A. Donato and F. Oliveri, editors, Nonlinear Hyperbolic Problems: Theoretical,
Applied, and Computational Aspects (Taormina, 1992), volume 43 of Notes Numer. Fluid Mech., pages
385–392. Vieweg, Braunschweig, 1993.
[31] P. D. Lax. Hyperbolic systems of conservation laws, II. Comm. Pure Appl. Math., 10:537–566, 1957.
[32] T.-P. Liu. The Riemann problem for general 2×2 conservation laws. Trans. Amer. Math. Soc., 199:89–112,
1974.
[33] D. Marchesin and B. J. Plohr. Wave structure in WAG recovery. Soc. Pet. Eng. J., 6(2):209–219, June
2001.
A FRONT-TRACKING METHOD FOR THREE-PHASE FLOW 27

[34] D.W. Pollock. Semianalytical computation of path lines for finite difference models. Ground Water, 26:743–
750, 1988.
[35] G. A. Pope. The application of fractional flow theory to enhanced oil recovery. Soc. Pet. Eng. J., 20(3):191–
205, June 1980.
[36] N. H. Risebro. A front-tracking alternative to the random choice method. Proc. Amer. Math. Soc,
117(4):1125–1129, 1993.
[37] N. H. Risebro and A. Tveito. Front tracking applied to a nonstrictly hyperbolic system of conservation
laws. SIAM J. Sci. Stat. Comput., 12(6):1401–1419, 1991.
[38] A. Sahni, R. Guzmán, and M. Blunt. Theoretical analysis of three phase flow experiments in porous media.
In SPE Annual Technical Conference and Exhibition, Denver, CO, October 6–9, 1996. (SPE 36664).
[39] B. V. Shalimov. Filtration of a three-phase liquid (Buckley-Leverett model) (in Russian). Izv. Akad. Nauk
SSSR, Mekhan. Zhidk. i Gaza, 7(1):39–44, January-February 1972. English translation in Fluid Dyn., 7:
36–40, 1972.
[40] L. F. Shampine and M. W. Reichelt. The MATLAB ODE suite. SIAM J. Sci. Comp, 18(1):1–22, 1997.
[41] M. Shearer. Loss of strict hyperbolicity of the Buckley-Leverett equations for three phase flow in a porous
medium. In M. F. Wheeler, editor, Numerical Simulation in Oil Recovery, pages 263–283. Springer-Verlag,
New York, 1988.
[42] M. Shearer and J. A. Trangenstein. Loss of real characteristics for models of three-phase flow in a porous
medium. Transp. Porous Media, 4:499–525, 1989.
[43] Y. I. Stklyanin. The motion of a mixture of three liquids in a porous medium (in Russian). Izv. Akad.
Nauk SSSR, Otd. Tekh. Nauk, Mekhanika i Mashinostroenie, 2(5), 1960.

SINTEF ICT, Dept. of Applied Mathematics, P.O. Box 124 Blindern, NO-0314 Oslo, Norway
E-mail address: [email protected]

Stanford University, Dept. of Petroleum Engineering, 65 Green Earth Sciences Bldg., Stan-
ford, CA 94305, USA
E-mail address: [email protected]

You might also like