52
Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional flow and hybrid schemes for CO2 storage Olav Møyner Department of Mathematics and Cybernetics, SINTEF Digital Department of Mathematical Sciences, NTNU, Norway OPM Meeting, October 18, 2017, Bergen

Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Recent developments in the Matlab ReservoirSimulation Toolbox (MRST)

Implicit schemes for compositional flow and hybrid schemes for CO2storage

Olav Møyner

Department of Mathematics and Cybernetics, SINTEF DigitalDepartment of Mathematical Sciences, NTNU, Norway

OPM Meeting, October 18, 2017, Bergen

Page 2: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Outline

1 MRST Simulator Framework

2 Implicit schemes for compositional flow

3 Hybrid schemes for CO2 storage

1 / 31

Page 3: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

The MATLAB Reservoir Simulation Toolbox

Open-source toolbox for reservoir modelling,developed by SINTEF Digital and used in mostof our research

Wide international user base:

academic institutions, oil and servicecompanies

USA, Norway, China, Brazil, UnitedKingdom, Iran, Germany, Netherlands,France, Canada, . . .

12 000+ unique downloads since 2013http://www.sintef.no/MRST

Used in publications:

100+ master and PhD theses

140+ journal/proceedings papers by authors outside our group

2 / 31

Page 4: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Toolbox for experimental programming

Flexible simulators, easy to extend with new functionality, scaling withaccuracy requirement and computational budget

seconds minutes hours

Diagnostics/proxies

Flow diagnostics/volumetrics

Physics-based proxies

Fast optimization

Spill-point analysis

Model reduction

Grid coarsening

Flow-based upscaling

Multiscale methods

Model-reduction techniques

Vertical-equilibrium models

Full simulation

Black-oil, EOR, thermal,compositional, geomechanics

Grids and discretizations

Nonlinear/linear solvers

Rapid prototyping

Adjoint formulations and(closed-loop) optimization

3 / 31

Page 5: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Two different programming paradigms

incomp – sequential solvers for incompressible flow

Have been part of MRST since the start

Uses imperative programming: functions that operate mainly onvectors, (sparse) matrices, structures, and a few cell arrays

Explicit assembly and linearization of flow equations

AD-OO – (fully) implicit solvers for compressible flow

More recent addition to MRST

Object-oriented framework for building simulators

Assembly and linearization performed implicitly by the use ofautomatic differentiation

Both families rely on functionality from mrst-core

4 / 31

Page 6: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Advanced simulators: motivation

First fully-implicit black-oil implementation: ad-fi (2013)

very successful in terms of research output

intended for black-oil with adjoints, but was used as generalsimulator

However, ad-fi was a victim of own success:

mixing logic of Newton solver with definition of model equations

time-stepping and stabilization done per-model

lots of code duplication and impossible to maintain

5 / 31

Page 7: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Next step: object-orientation

Introduce object-orientation to separate:

physical models

discretizations and discrete operators

nonlinear solver and time-stepping

assembly and solution of the linear system

Only expose needed details and enable more reuse of functionality thathas already been developed

6 / 31

Page 8: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Next step: object-orientation

The object-oriented AD framework makes it easy to write generalsimulator classes:

standardized interfaces make Newton solver independent of thespecifics of the physical model

normalized input/output makes it easy to compare and plot results

switching linear solvers or time-stepping strategy is straightforward

(Compare ad-blackoil and blackoil-sequential)

General sensitivities/gradients through adjoints

Typical workflow: build simple prototype → migrate to class-based solver

6 / 31

Page 9: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

General setup of simulator

Data

Class

Struct

Function

Input

Contains

Input deck

Input parser

Reads complete simulation decks:grid and petrophysics, fluid and rockproperties, region information, welldefinitions, operating schedule, con-vergence control, etc

Reservoir model

Description of geology and fluid behavior aswell as discrete averaging and spatial dis-cretization operators

PetrophysicsGrid Fluids

0 0.2 0.4 0.6 0.8 10

0.2

0.4

0.6

0.8

1

State

Physical variables insidethe reservoir

p, sw, so, sg, c, rv, rs

Well state

Physical variables insidethe wellbore

qsw, qso, q

sg, q

sp, pbh

Schedule

Time steps and controls andsettings for wells and boundaryconditions

Wells

7 / 31

Page 10: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

The layout of the AD solvers

Primary vars

[Res, Jac], info

Assemble: Ax = b

δx

Update variables:p← p + δp, s← s + δs, ...

Initial ministep:∆t

Adjusted:∆t

Write to storage

3D visualization

Well curves

State(Ti), ∆Ti, Controls(Ci)

State(Ti + ∆Ti)

Type color legend

Class

Struct

Function(s)

Input

Contains object

Optional output

Initial state Physical modelSchedule

Steps

Time step and control numbers{(∆T1, C1), ..., (∆Tn, Cn)},

Controls

Different wells and bc{(W1, BC1), ..., (Wm, BCm)}

Simulator

Solves simulation schedule comprisedof time steps and drive mechanisms(wells/bc)

simulateScheduleAD

Nonlinear solver

Solves nonlinear problems sub-dividedinto one or more mini steps usingNewton’s method

Time step selector

Determines optimal time steps

SimpleTimeStepSelector,

IterationCountSelector,

StateChangeTimeStepSelector, ...

Result handler

Stores and retrieves simulation datafrom memory/disk in a transparentand efficient manner.

Visualization

Visualize well curves, reservoir proper-ties, etc

plotCellData, plotToolbar,

plotWellSols, ...

State

Primary variables: p, sw, sg, Rs, Rv...

Well solutions

Well data: qW, qO, qG, bhp, ...

Physical model

Defines mathematical model: Resid-ual equations, Jacobians, limits onupdates, convergence definition...

TwoPhaseOilWaterModel,

ThreePhaseBlackOilModel

Well model

Well equations, control switch, well-bore pressure drop, ...

Linearized problem

Jacobians, residual equations andmeta-information about their types

Linear solver

Solves linearized problem and returnsincrements

BackslashSolverAD, AGMGSolverAD,

CPRSolverAD, MultiscaleSolverAD, ...

The framework is designed so that you can only work on the components youare interested in: If you want to write a flow solver, you do not need to debug aNewton solver.

8 / 31

Page 11: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

9 / 31

Page 12: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Properties:

operators, GnonlinearTolerance, stepFunctionIsLinearverbose

9 / 31

Page 13: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Properties:

operators, GnonlinearTolerance, stepFunctionIsLinearverbose

Quality assurance:

state = model.validateState(state)model = model.validateModel(...)

9 / 31

Page 14: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Properties:

operators, GnonlinearTolerance, stepFunctionIsLinearverbose

Quality assurance:

state = model.validateState(state)model = model.validateModel(...)

Querying / setting model properties:

p = model.getProp(state, 'pressure')[p,s] = model.getProps(state, 'pressure', ' s ')[f,i] = model.getVariableField(name)state = model.setProp(model, state, 'pressure', 5)state = model.incrementProp(state, 'pressure', 1)state = model.capProperty(state,'saturation', 0, 1)

These are examples of syntax for derived classes andwill not work on a PhysicalModel, which has noassociated variables

9 / 31

Page 15: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Get drive mechanisms:

[..,ctrl] = model.getDrivingForces(model, ctrl)

9 / 31

Page 16: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Get drive mechanisms:

[..,ctrl] = model.getDrivingForces(model, ctrl)

Linearize and assemble discrete problem:

[problem, state] = ...model.getEquations(state0, state, ...

dt, drivingForces, varargin)

9 / 31

Page 17: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Get drive mechanisms:

[..,ctrl] = model.getDrivingForces(model, ctrl)

Linearize and assemble discrete problem:

[problem, state] = ...model.getEquations(state0, state, ...

dt, drivingForces, varargin)

Compute a linearized time step:

[state, report] = ...model.stepFunction(model, state, state0, ..

dt, drivingForces, linsolve, ...nonlinsolve, iteration, varargin)

9 / 31

Page 18: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

PhysicalModel

Update state from Newton increment:

[state, report] = model.updateState(state, ...problem, dx, drivingForces)

and other utility functions:

[conv, ..] = model.checkConvergence(problem, n)

[state,rep] = model.updateAferConvergence(...state0, state, dt, drivingForces)

::

9 / 31

Page 19: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

ReservoirModel

Properties:

% Submodelsfluid, rock, gravity

FacilityModel

% Physical propertieswater, gas, oil

saturationVarNames, componentVarNames

% Iterations parametersdpMaxRel, dpMaxAbs, dsMaxRel, dsMaxAbsmaximumPressure, minimumPressureuseCNVConvergence, toleranceCNVtoleranceMB

% Miscellaneous:

9 / 31

Page 20: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

ReservoirModel

Declaration of physical variables:

function [fn,ix] = getVariableField(model, name)switch(lower(name))

case {' pressure ' , 'p'}ix = 1;fn = 'pressure ' ;

case {'s ' , ' sat ' , ' saturation '}ix = ': ' ;fn = 's ' ;

case {'sw' , 'water'}ix = model.satVarIndex('sw');fn = 's ' ;

:end

Plus a large number of utility functions to extract,update, and store these physical variables

9 / 31

Page 21: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

ReservoirModel

The class declares known drive mechanisms:

function forces = getValidDrivingForces(model)forces = getValidDrivingForces

@PhysicalModel(model);forces.W = [];forces.bc = [];forces.src = [];

end

and define how to evaluate relative permeability,get surface densities, etc.

The class also specifies how to add well equations,source terms, and boundary conditions to theequation system, but does not implement specificflow equations.

9 / 31

Page 22: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

ReservoirModel

Default discretization is a two-point method:

function model = ...setupOperators(model,G, rock, varargin)

model.operators = ...setupOperatorsTPFA(G, rock, varargin{:});

end

9 / 31

Page 23: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Functionality through inheritance

PhysicalModel

Abstract base class for all MRST models.Contains logic related to linearization andupdates.

Primary variables: None

ReservoirModel

Extends PhysicalModel with rock, fluid,saturations, pressures, and temperature.Base class for all reservoir models.

Added primary variables: sα, p, T, qα, pbh

ThreePhaseBlackOilModel

Extends ReservoirModel with optional so-lution gas and vaporized oil. Base class fortwo- and single-phase versions.

Added primary variables: rs, rv

ThreePhaseBlackOilModel

Implementes specific equations, which in this caseis a general black-oil model with dissolved gas andvaporized oil.

Evaluation of residual equations:

[problem, state] = ...equationsBlackOil(state0, state,...

model, dt, drivingForces, varargin)

Details of this function is as given for two-phasecase above, but with more features and logic thatswitches unknowns depending on phases present

9 / 31

Page 24: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Outline

1 MRST Simulator Framework

2 Implicit schemes for compositional flow

3 Hybrid schemes for CO2 storage

10 / 31

Page 25: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Motivation: Sequential implicit schemes

Separate elliptic/parabolic pressure from hyperbolic transport

Specialized nonlinear solvers: Multiscale methods for pressure, higher-ordertransport, reordering methods, trust region solvers, ...

Efficient: Smaller linearized systems with reduced coupling

Consensus on scheme for immiscible, weakly compressible

How to treat compositional models in a sequential framework?

11 / 31

Page 26: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Motivation: Sequential implicit schemes

How to treat compositional models? What do we want?

No time-step restrictions in transport due to e.g. small cells

Robustness for different flow regimes – avoid oscillations, unphysical values

Exact mass conservation without outer loop

Agreement with fully-implicit discretization

Symmetric: No preferential treatment for specific components!

This work: Fixed-volume formulation. Joint work with Hamdi TchelepiPrevious works: Acs et al (1985), Watts (1986), Trangenstein & Bell (1989), Coats (1995), Haukas et al (2006), Hajibeygi & Tchelepi

(2014), Møyner & Tchelepi(2017), Moncorge et al (2017)

12 / 31

Page 27: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Governing equations for isothermal flow

Conservation of each component i ∈ {1, ..., N},

∂t(φ [ρLSLXi + ρV SV Yi]) +∇ · (ρLXi~vL + ρV Yi~vV ) = qi,

with natural variables: p, SL, SV , x1, ..., xN , y1, , ..., yN .

Fugacity balance for cells with both liquid and vapor

fLi (p, T, x1, ..., xN ) = fVi (p, T, y1, ..., yN ).

Sum of fractions close the system,

N∑i=1

xi = 1,

N∑i=1

yi = 1, SV + SL = 1.

Fluxes are given by multiphase Darcy’s law:

~vα = −Kλα(∇pα − ραg∆z)

13 / 31

Page 28: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Governing equations for isothermal flow

Conservation of each component i ∈ {1, ..., N},

∂t(φ [ρLSLXi + ρV SV Yi]) +∇ · (ρLXi~vL + ρV Yi~vV ) = qi,

with natural variables: p, SL, SV , x1, ..., xN , y1, , ..., yN .

Fugacity balance for cells with both liquid and vapor

fLi (p, T, x1, ..., xN ) = fVi (p, T, y1, ..., yN ).

Sum of fractions close the system,

N∑i=1

xi = 1,

N∑i=1

yi = 1, SV + SL = 1.

Fluxes are given by multiphase Darcy’s law:

~vα = −Kλα(∇pα − ραg∆z)

Note: ρα, Sα, Xi, Yi, λα, ... depend strongly on bothhyperbolic overall mole fractions zi and parabolic

pressure p, regardless of choice of primary variables.

13 / 31

Page 29: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Governing equations for isothermal flow

Compositional model in the Matlab Reservoir Simulation Toolbox(MRST) has typical choices for compositional simulation of hydrocarbons,

Densities and phase behavior predicted by equation-of-state

Generalized cubic equation-of-state: Martin’s equation

Lohrenz-Bray-Clark viscosity correlations

Schur-complement used to obtain N by N system for variable set α,

−J∆x =

[B CD E

] [αβ

]=

[fh

]→ Aα = (B−CE−1D)α = f−CE−1h = b.

Remark: E is easily invertible, as fugacity is local to each cell

Support for both natural-variables and overall composition

14 / 31

Page 30: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example 3: Multiscale SPE10

Permeability [mD] Pressure [bar]

Inject approximately 1 pore-volume CO2 over 2000 days

Layer taken from Tarbert formation, SPE 10, model 2

Multiscale solver with MsRSB basis functions and 10−3 tolerance

6 pseudocomponent fluid from Mallison et al

15 / 31

Page 31: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example 3: Multiscale SPE10

CO2 mole fraction Gas saturation

Inject approximately 1 pore-volume CO2 over 2000 days

Layer taken from Tarbert formation, SPE 10, model 2

Multiscale solver with MsRSB basis functions and 10−3 tolerance

6 pseudocomponent fluid from Mallison et al

15 / 31

Page 32: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale SPE10

200 400 600 800 1000 1200 1400 1600 1800 2000

Time [days]

0

50

100

150

200

250

300B

HP

[B

ar]

16 / 31

Page 33: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale SPE10

200 400 600 800 1000 1200 1400 1600 1800 2000

Time [days]

0

1000

2000

3000

4000

5000

6000

7000

8000C

om

ponent pro

duction [kg/d

ay]

N2/CH4

CO2

C2-5

C6-13

C14-24

C25-80

17 / 31

Page 34: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale SPE10

200 400 600 800 1000 1200 1400 1600 1800 2000

Time [days]

0

1000

2000

3000

4000

5000

6000

7000

8000C

om

ponent pro

duction [kg/d

ay]

N2/CH4

CO2

C2-5

C6-13

C14-24

C25-80

300 400 500 600 700 800 900

Time [days]

800

1000

1200

1400

1600

1800

2000

2200

2400

2600

Co

mp

on

en

t p

rod

uctio

n [

kg

/da

y]

N2/CH4

CO2

C2-5

C6-13

C14-24

C25-80

17 / 31

Page 35: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

Vertical permeability [mD] Pressure [bar]

Nitrogen injection over 2500 days, 4 components

Faulted, anisotropic model

Significant gravity effect with wells perforated in five layers

Multiscale solver with MsRSB basis functions and 10−3 tolerance

Maximum CFL: 160

18 / 31

Page 36: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

N2 mole fraction Gas saturation

Nitrogen injection over 2500 days, 4 components

Faulted, anisotropic model

Significant gravity effect with wells perforated in five layers

Multiscale solver with MsRSB basis functions and 10−3 tolerance

Maximum CFL: 160

18 / 31

Page 37: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

50

100

150

200

250

300

350

400

450

500B

HP

[B

ar]

19 / 31

Page 38: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

50

100

150

200

250

300

350

400

450

500B

HP

[B

ar]

50 100 150 200 250 300 350

Time [days]

150

200

250

300

350

400

450

BH

P [B

ar]

19 / 31

Page 39: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

1

2

3

4

5

6

7

8G

as p

rod

uctio

n [

m3/d

ay]

10 4

20 / 31

Page 40: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

1

2

3

4

5

6

7

8G

as p

rod

uctio

n [

m3/d

ay]

10 4

100 200 300 400 500 600

Time [days]

0

0.5

1

1.5

2

2.5

Gas p

roduction [m

3/d

ay]

10 4

20 / 31

Page 41: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

5

10

15

Oil

pro

duction [m

3/d

ay]

10 4

21 / 31

Page 42: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Multiscale Norne

500 1000 1500 2000 2500

Time [days]

0

5

10

15

Oil

pro

duction [m

3/d

ay]

10 4

50 100 150 200 250 300 350

Time [days]

2

4

6

8

10

12

14

Oil

pro

duction [m

3/d

ay]

10 4

21 / 31

Page 43: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Outline

1 MRST Simulator Framework

2 Implicit schemes for compositional flow

3 Hybrid schemes for CO2 storage

22 / 31

Page 44: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Introduction

Simulation of CO2 storage requires vast temporal and spatial scales

Vertical-equilibrium (VE) models: Accurate and efficient in this regime

Assumption of vertical segregation is not always valid

Near-well regions, layered flow compartments, coupling to facilities, ...

Idea: Combine multiple discretization regions in a robust, unified modelJoint work with Halvor Møll Nilsen

23 / 31

Page 45: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Introduction

Fully-implicit, finite-volume discretization

Fully automated coarsening for e.g. corner-point grids

Regions are automatically detected and discretized

Challenge: Consistent coupling between different regions

Transition between VE-zones, diffuse leakage, fine-scale are all included

VE to VE Fine-scale to VE

24 / 31

Page 46: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Sleipner (injection)

Fine-scale (40,460 cells)

VE (700 cells)

Hybrid (2700 cells)25 / 31

Page 47: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Sleipner (migration)

Fine-scale (40,460 cells)

VE (700 cells)

Hybrid (2700 cells)26 / 31

Page 48: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Full Utsira model

10 -2 10 0 10 2

Time [year]

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Fra

ction o

f to

tal C

O2

Layers 1 to 3

10 -2 10 0 10 2

Time [year]

0

0.05

0.1

0.15

0.2

Fra

ction o

f to

tal C

O2

Layers 4 to 5

10 -2 10 0 10 2

Time [year]

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Fra

ction o

f to

tal C

O2

Layers 6 to 7

10 -2 10 0 10 2

Time [year]

0

0.1

0.2

0.3

0.4

0.5

0.6

Fra

ction o

f to

tal C

O2

Layers 8 to Inf

Utsira model provided by the Norwegian Petroleum Directorate

27 / 31

Page 49: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Utsira, (migration)

Fine-scale (111,162 cells)

Hybrid (44,215 cells)

28 / 31

Page 50: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Example: Utsira (migration)

Fine-scale (111,162 cells)

Hybrid (44,215 cells)

29 / 31

Page 51: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Combining models

Compositional VE-hybrid model in five lines of code!

30 / 31

Page 52: Recent developments in the Matlab Reservoir …...Recent developments in the Matlab Reservoir Simulation Toolbox (MRST) Implicit schemes for compositional ow and hybrid schemes for

Overview: core and add-on modulesMRST core upr coarsegrid agglom libgeometry opm gridprocessing

Grid generationand coarsening

incomp mimetic mpfa ntpfa vem adjoint

Discretizationand solvers for

incompressible flow

ad-core ad-blackoil ad-eor blackoil-sequential deckreader ad-props

Discretizationand solvers for

compressible flow

msrsb msmfem msfvm hfm upscaling steady-state

Upscaling andmultiscale methods

dfm hfm dual-porosity ad-mechanics vemmech fvbiot

Fractured mediaand geomechanics

co2lab diagnostics mrst-gui enkf optimization remso

Workflow tools

31 / 31