#include <TransportSolverTwophasePolymer.hpp>
|
| TransportSolverTwophasePolymer (const UnstructuredGrid &grid, const IncompPropertiesInterface &props, const PolymerProperties &polyprops, const SingleCellMethod method, const double tol, const int maxit) |
|
void | setPreferredMethod (SingleCellMethod method) |
| Set the preferred method, Bracketing or Newton. More...
|
|
void | solve (const double *darcyflux, const double *porevolume, const double *source, const double *polymer_inflow_c, const double dt, std::vector< double > &saturation, std::vector< double > &concentration, std::vector< double > &cmax) |
|
void | solveGravity (const std::vector< std::vector< int > > &columns, const double *porevolume, const double dt, std::vector< double > &saturation, std::vector< double > &concentration, std::vector< double > &cmax) |
|
virtual void | solveSingleCell (const int cell) |
|
virtual void | solveMultiCell (const int num_cells, const int *cells) |
|
void | solveSingleCellBracketing (int cell) |
|
void | solveSingleCellNewton (int cell) |
|
void | solveSingleCellGradient (int cell) |
|
void | solveSingleCellNewtonSimple (int cell, bool use_sc) |
|
void | initGravity (const double *grav) |
|
void | solveSingleCellGravity (const std::vector< int > &cells, const int pos, const double *gravflux) |
|
int | solveGravityColumn (const std::vector< int > &cells) |
|
void | scToc (const double *x, double *x_c) const |
|
Implements a reordering transport solver for incompressible two-phase flow with polymer in the water phase. \TODO Include permeability reduction effect.
◆ GradientMethod
Enumerator |
---|
Analytic | |
FinDif | |
◆ SingleCellMethod
Enumerator |
---|
Bracketing | |
Newton | |
Gradient | |
NewtonSimpleSC | |
NewtonSimpleC | |
◆ TransportSolverTwophasePolymer()
Opm::TransportSolverTwophasePolymer::TransportSolverTwophasePolymer |
( |
const UnstructuredGrid & |
grid, |
|
|
const IncompPropertiesInterface & |
props, |
|
|
const PolymerProperties & |
polyprops, |
|
|
const SingleCellMethod |
method, |
|
|
const double |
tol, |
|
|
const int |
maxit |
|
) |
| |
Construct solver. - Parameters
-
[in] | grid | A 2d or 3d grid. |
[in] | props | Rock and fluid properties. |
[in] | polyprops | Polymer properties. |
[in] | method | Bracketing: solve for c in outer loop, s in inner loop, each solve being bracketed for robustness. Newton: solve simultaneously for c and s with Newton's method. (using gradient variant and bracketing as fallbacks). |
[in] | tol | Tolerance used in the solver. |
[in] | maxit | Maximum number of non-linear iterations used. |
◆ initGravity()
void Opm::TransportSolverTwophasePolymer::initGravity |
( |
const double * |
grav | ) |
|
◆ scToc()
void Opm::TransportSolverTwophasePolymer::scToc |
( |
const double * |
x, |
|
|
double * |
x_c |
|
) |
| const |
◆ setPreferredMethod()
void Opm::TransportSolverTwophasePolymer::setPreferredMethod |
( |
SingleCellMethod |
method | ) |
|
Set the preferred method, Bracketing or Newton.
◆ solve()
void Opm::TransportSolverTwophasePolymer::solve |
( |
const double * |
darcyflux, |
|
|
const double * |
porevolume, |
|
|
const double * |
source, |
|
|
const double * |
polymer_inflow_c, |
|
|
const double |
dt, |
|
|
std::vector< double > & |
saturation, |
|
|
std::vector< double > & |
concentration, |
|
|
std::vector< double > & |
cmax |
|
) |
| |
Solve for saturation, concentration and cmax at next timestep. Using implicit Euler scheme, reordered. - Parameters
-
[in] | darcyflux | Array of signed face fluxes. |
[in] | porevolume | Array of pore volumes. |
[in] | source | Transport source term, to be interpreted by sign: (+) Inflow, value is first phase flow (water) per second, in reservoir volumes. (-) Outflow, value is total flow of all phases per second, in reservoir volumes. |
[in] | polymer_inflow_c | Array of inflow polymer concentrations per cell. |
[in] | dt | Time step. |
[in,out] | saturation | Phase saturations. |
[in,out] | concentration | Polymer concentration. |
[in,out] | cmax | Highest concentration that has occured in a given cell. |
◆ solveGravity()
void Opm::TransportSolverTwophasePolymer::solveGravity |
( |
const std::vector< std::vector< int > > & |
columns, |
|
|
const double * |
porevolume, |
|
|
const double |
dt, |
|
|
std::vector< double > & |
saturation, |
|
|
std::vector< double > & |
concentration, |
|
|
std::vector< double > & |
cmax |
|
) |
| |
Solve for gravity segregation. This uses a column-wise nonlinear Gauss-Seidel approach. It assumes that the input columns contain cells in a single vertical stack, that do not interact with other columns (for gravity segregation. - Parameters
-
[in] | columns | Vector of cell-columns. |
[in] | porevolume | Array of pore volumes. |
[in] | dt | Time step. |
[in,out] | saturation | Phase saturations. |
[in,out] | concentration | Polymer concentration. |
[in,out] | cmax | Highest concentration that has occured in a given cell. |
◆ solveGravityColumn()
int Opm::TransportSolverTwophasePolymer::solveGravityColumn |
( |
const std::vector< int > & |
cells | ) |
|
◆ solveMultiCell()
virtual void Opm::TransportSolverTwophasePolymer::solveMultiCell |
( |
const int |
num_cells, |
|
|
const int * |
cells |
|
) |
| |
|
virtual |
◆ solveSingleCell()
virtual void Opm::TransportSolverTwophasePolymer::solveSingleCell |
( |
const int |
cell | ) |
|
|
virtual |
◆ solveSingleCellBracketing()
void Opm::TransportSolverTwophasePolymer::solveSingleCellBracketing |
( |
int |
cell | ) |
|
◆ solveSingleCellGradient()
void Opm::TransportSolverTwophasePolymer::solveSingleCellGradient |
( |
int |
cell | ) |
|
◆ solveSingleCellGravity()
void Opm::TransportSolverTwophasePolymer::solveSingleCellGravity |
( |
const std::vector< int > & |
cells, |
|
|
const int |
pos, |
|
|
const double * |
gravflux |
|
) |
| |
◆ solveSingleCellNewton()
void Opm::TransportSolverTwophasePolymer::solveSingleCellNewton |
( |
int |
cell | ) |
|
◆ solveSingleCellNewtonSimple()
void Opm::TransportSolverTwophasePolymer::solveSingleCellNewtonSimple |
( |
int |
cell, |
|
|
bool |
use_sc |
|
) |
| |
The documentation for this class was generated from the following file:
|