#include <BlackoilPolymerModel.hpp>
|
| BlackoilPolymerModel (const typename Base::ModelParameters ¶m, const Grid &grid, const BlackoilPropsAdInterface &fluid, const DerivedGeology &geo, const RockCompressibility *rock_comp_props, const PolymerPropsAd &polymer_props_ad, const Wells *wells, const NewtonIterationBlackoilInterface &linsolver, EclipseStateConstPtr eclipse_state, const bool has_disgas, const bool has_vapoil, const bool has_polymer, const bool has_plyshlog, const bool has_shrate, const std::vector< double > &wells_rep_radius, const std::vector< double > &wells_perf_length, const std::vector< double > &wells_bore_diameter, const bool terminal_output) |
|
void | prepareStep (const double dt, ReservoirState &reservoir_state, WellState &well_state) |
|
void | afterStep (const double dt, ReservoirState &reservoir_state, WellState &well_state) |
|
void | updateState (const V &dx, ReservoirState &reservoir_state, WellState &well_state) |
|
void | assemble (const ReservoirState &reservoir_state, WellState &well_state, const bool initial_assembly) |
|
|
void | makeConstantState (SolutionState &state) const |
|
std::vector< V > | variableStateInitials (const ReservoirState &x, const WellState &xw) const |
|
std::vector< int > | variableStateIndices () const |
|
SolutionState | variableStateExtractVars (const ReservoirState &x, const std::vector< int > &indices, std::vector< ADB > &vars) const |
|
void | computeAccum (const SolutionState &state, const int aix) |
|
void | assembleMassBalanceEq (const SolutionState &state) |
|
void | addWellContributionToMassBalanceEq (const std::vector< ADB > &cq_s, const SolutionState &state, WellState &xw) |
|
void | computeMassFlux (const int actph, const V &transi, const ADB &kr, const ADB &p, const SolutionState &state) |
|
void | computeCmax (ReservoirState &state) |
|
ADB | computeMc (const SolutionState &state) const |
|
const std::vector< PhasePresence > | phaseCondition () const |
|
void | computeWaterShearVelocityFaces (const V &transi, const std::vector< ADB > &kr, const std::vector< ADB > &phasePressure, const SolutionState &state, std::vector< double > &water_vel, std::vector< double > &visc_mult) |
|
void | computeWaterShearVelocityWells (const SolutionState &state, WellState &xw, const ADB &cq_sw, std::vector< double > &water_vel_wells, std::vector< double > &visc_mult_wells) |
|
template<class Grid>
class Opm::BlackoilPolymerModel< Grid >
A model implementation for three-phase black oil with polymer.
The simulator is capable of handling three-phase problems where gas can be dissolved in oil and vice versa, with polymer in the water phase. It uses an industry-standard TPFA discretization with per-phase upwind weighting of mobilities.
It uses automatic differentiation via the class AutoDiffBlock to simplify assembly of the jacobian matrix.
template<class Grid>
Opm::BlackoilPolymerModel< Grid >::BlackoilPolymerModel |
( |
const typename Base::ModelParameters & |
param, |
|
|
const Grid & |
grid, |
|
|
const BlackoilPropsAdInterface & |
fluid, |
|
|
const DerivedGeology & |
geo, |
|
|
const RockCompressibility * |
rock_comp_props, |
|
|
const PolymerPropsAd & |
polymer_props_ad, |
|
|
const Wells * |
wells, |
|
|
const NewtonIterationBlackoilInterface & |
linsolver, |
|
|
EclipseStateConstPtr |
eclipse_state, |
|
|
const bool |
has_disgas, |
|
|
const bool |
has_vapoil, |
|
|
const bool |
has_polymer, |
|
|
const bool |
has_plyshlog, |
|
|
const bool |
has_shrate, |
|
|
const std::vector< double > & |
wells_rep_radius, |
|
|
const std::vector< double > & |
wells_perf_length, |
|
|
const std::vector< double > & |
wells_bore_diameter, |
|
|
const bool |
terminal_output |
|
) |
| |
Construct the model. It will retain references to the arguments of this functions, and they are expected to remain in scope for the lifetime of the solver. - Parameters
-
[in] | param | parameters |
[in] | grid | grid data structure |
[in] | fluid | fluid properties |
[in] | geo | rock properties |
[in] | rock_comp_props | if non-null, rock compressibility properties |
[in] | wells | well structure |
[in] | linsolver | linear solver |
[in] | has_disgas | turn on dissolved gas |
[in] | has_vapoil | turn on vaporized oil feature |
[in] | has_polymer | turn on polymer feature |
[in] | has_plyshlog | true when PLYSHLOG keyword available |
[in] | has_shrate | true when PLYSHLOG keyword available |
[in] | wells_rep_radius | representative radius of well perforations during shear effects calculation |
[in] | wells_perf_length | perforation length for well perforations |
[in] | wells_bore_diameter | wellbore diameters for well performations |
[in] | terminal_output | request output to cout/cerr |
References Opm::BlackoilPolymerModel< Grid >::has_polymer_, and Opm::BlackoilPolymerModel< Grid >::poly_pos_.
Called once after each time step. - Parameters
-
[in] | dt | time step size |
[in,out] | reservoir_state | reservoir state variables |
[in,out] | well_state | well state variables |
Assemble the residual and Jacobian of the nonlinear system. - Parameters
-
[in] | reservoir_state | reservoir state variables |
[in,out] | well_state | well state variables |
[in] | initial_assembly | pass true if this is the first call to assemble() in this timestep |
template<class Grid >
void Opm::BlackoilPolymerModel< Grid >::computeWaterShearVelocityFaces |
( |
const V & |
transi, |
|
|
const std::vector< ADB > & |
kr, |
|
|
const std::vector< ADB > & |
phasePressure, |
|
|
const SolutionState & |
state, |
|
|
std::vector< double > & |
water_vel, |
|
|
std::vector< double > & |
visc_mult |
|
) |
| |
|
protected |
Computing the water velocity without shear-thinning for the cell faces. The water velocity will be used for shear-thinning calculation.
References cmax.
Computing the water velocity without shear-thinning for the well perforations based on the water flux rate. The water velocity will be used for shear-thinning calculation.
Called once before each time step. - Parameters
-
[in] | dt | time step size |
[in,out] | reservoir_state | reservoir state variables |
[in,out] | well_state | well state variables |
Apply an update to the primary variables, chopped if appropriate. - Parameters
-
[in] | dx | updates to apply to primary variables |
[in,out] | reservoir_state | reservoir state variables |
[in,out] | well_state | well state variables |
The documentation for this class was generated from the following files:
|