|
| BlackoilPolymerModel (const typename Base::ModelParameters ¶m, const Grid &grid, const BlackoilPropsAdFromDeck &fluid, const DerivedGeology &geo, const RockCompressibility *rock_comp_props, const PolymerPropsAd &polymer_props_ad, const StandardWells &well_model, const NewtonIterationBlackoilInterface &linsolver, std::shared_ptr< const EclipseState > eclipseState, 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. More...
|
|
void | prepareStep (const SimulatorTimerInterface &timer, const ReservoirState &reservoir_state, const WellState &well_state) |
| Called once before each time step. More...
|
|
void | afterStep (const SimulatorTimerInterface &timer, ReservoirState &reservoir_state, WellState &well_state) |
| Called once after each time step. More...
|
|
void | updateState (const V &dx, ReservoirState &reservoir_state, WellState &well_state) |
| Apply an update to the primary variables, chopped if appropriate. More...
|
|
SimulatorReport | assemble (const ReservoirState &reservoir_state, WellState &well_state, const bool initial_assembly) |
| Assemble the residual and Jacobian of the nonlinear system. More...
|
|
| BlackoilModelBase (const ModelParameters ¶m, const Grid &grid, const BlackoilPropsAdFromDeck &fluid, const DerivedGeology &geo, const RockCompressibility *rock_comp_props, const WellModel &well_model, const NewtonIterationBlackoilInterface &linsolver, std::shared_ptr< const EclipseState > eclState, const bool has_disgas, const bool has_vapoil, const bool terminal_output) |
| Construct the model. More...
|
|
void | setThresholdPressures (const std::vector< double > &threshold_pressures_by_face) |
| Set threshold pressures that prevent or reduce flow. More...
|
|
void | prepareStep (const SimulatorTimerInterface &timer, const ReservoirState &reservoir_state, const WellState &well_state) |
| Called once before each time step. More...
|
|
template<class NonlinearSolverType > |
SimulatorReport | nonlinearIteration (const int iteration, const SimulatorTimerInterface &timer, NonlinearSolverType &nonlinear_solver, ReservoirState &reservoir_state, WellState &well_state) |
| Called once per nonlinear iteration. More...
|
|
void | afterStep (const SimulatorTimerInterface &timer, ReservoirState &reservoir_state, WellState &well_state) |
| Called once after each time step. More...
|
|
SimulatorReport | assemble (const ReservoirState &reservoir_state, WellState &well_state, const bool initial_assembly) |
| Assemble the residual and Jacobian of the nonlinear system. More...
|
|
std::vector< double > | computeResidualNorms () const |
| Compute the residual norms of the mass balance for each phase, the well flux, and the well equation. More...
|
|
double | relativeChange (const SimulationDataContainer &previous, const SimulationDataContainer ¤t) const |
| compute the relative change between to simulation states
|
|
int | sizeNonLinear () const |
| The size (number of unknowns) of the nonlinear system of equations.
|
|
int | linearIterationsLastSolve () const |
| Number of linear iterations used in last call to solveJacobianSystem().
|
|
V | solveJacobianSystem () const |
| Solve the Jacobian system Jx = r where J is the Jacobian and r is the residual. More...
|
|
void | updateState (const V &dx, ReservoirState &reservoir_state, WellState &well_state) |
| Apply an update to the primary variables, chopped if appropriate. More...
|
|
bool | isParallel () const |
| Return true if this is a parallel run.
|
|
bool | terminalOutputEnabled () const |
| Return true if output to cout is wanted.
|
|
bool | getConvergence (const SimulatorTimerInterface &timer, const int iteration) |
| Compute convergence based on total mass balance (tol_mb) and maximum residual mass balance (tol_cnv). More...
|
|
int | numPhases () const |
| The number of active fluid phases in the model.
|
|
int | numMaterials () const |
| The number of active materials in the model. More...
|
|
const std::string & | materialName (int material_index) const |
| The name of an active material in the model. More...
|
|
void | updateEquationsScaling () |
| Update the scaling factors for mass balance equations.
|
|
WellModel & | wellModel () |
| return the WellModel object
|
|
const WellModel & | wellModel () const |
|
const SimulatorData & | getSimulatorData (const SimulationDataContainer &) const |
| Return reservoir simulation data (for output functionality)
|
|
FIPDataType | getFIPData () const |
| Return fluid-in-place data (for output functionality)
|
|
std::vector< std::vector< double > > | computeFluidInPlace (const ReservoirState &x, const std::vector< int > &fipnum) |
| Compute fluid in place. More...
|
|
void | computeWellVoidageRates (const ReservoirState &reservoir_state, const WellState &well_state, std::vector< double > &well_voidage_rates, std::vector< double > &voidage_conversion_coeffs) |
| Function to compute the resevoir voidage for the production wells. More...
|
|
void | applyVREPGroupControl (const ReservoirState &reservoir_state, WellState &well_state) |
|
const SimulatorReport & | failureReport () const |
| return the statistics if the nonlinearIteration() method failed. More...
|
|
|
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 | computeInjectionMobility (const SolutionState &state, std::vector< ADB > &mob_perfcells) |
|
void | assembleMassBalanceEq (const SolutionState &state) |
|
void | addWellContributionToMassBalanceEq (const std::vector< ADB > &cq_s, const SolutionState &state, WellState &xw) |
|
void | updateEquationsScaling () |
|
void | computeMassFlux (const int actph, const V &transi, const ADB &kr, const ADB &mu, const ADB &rho, 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 > &phasePressure, const SolutionState &state, std::vector< double > &water_vel, std::vector< double > &visc_mult) |
| Computing the water velocity without shear-thinning for the cell faces. More...
|
|
void | computeWaterShearVelocityWells (const SolutionState &state, WellState &xw, const ADB &cq_sw, std::vector< double > &water_vel_wells, std::vector< double > &visc_mult_wells) |
| Computing the water velocity without shear-thinning for the well perforations based on the water flux rate. More...
|
|
Implementation & | asImpl () |
| Access the most-derived class used for static polymorphism (CRTP). More...
|
|
const Implementation & | asImpl () const |
| Access the most-derived class used for static polymorphism (CRTP). More...
|
|
const Wells & | wells () const |
| return the Well struct in the WellModel
|
|
bool | wellsActive () const |
| return true if wells are available in the reservoir
|
|
bool | localWellsActive () const |
| return true if wells are available on this process
|
|
void | makeConstantState (SolutionState &state) const |
|
SolutionState | variableState (const ReservoirState &x, const WellState &xw) const |
|
std::vector< V > | variableStateInitials (const ReservoirState &x, const WellState &xw) const |
|
void | variableReservoirStateInitials (const ReservoirState &x, std::vector< V > &vars0) 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) |
|
SimulatorReport | solveWellEq (const std::vector< ADB > &mob_perfcells, const std::vector< ADB > &b_perfcells, const ReservoirState &reservoir_state, SolutionState &state, WellState &well_state) |
|
void | addWellContributionToMassBalanceEq (const std::vector< ADB > &cq_s, const SolutionState &state, const WellState &xw) |
|
bool | getWellConvergence (const int iteration) |
|
bool | isVFPActive () const |
|
std::vector< ADB > | computePressures (const ADB &po, const ADB &sw, const ADB &so, const ADB &sg) const |
|
V | computeGasPressure (const V &po, const V &sw, const V &so, const V &sg) const |
|
std::vector< ADB > | computeRelPerm (const SolutionState &state) const |
|
void | computeMassFlux (const int actph, const V &transi, const ADB &kr, const ADB &mu, const ADB &rho, const ADB &p, const SolutionState &state) |
|
void | applyThresholdPressures (ADB &dp) |
|
ADB | fluidViscosity (const int phase, const ADB &p, const ADB &temp, const ADB &rs, const ADB &rv, const std::vector< PhasePresence > &cond) const |
|
ADB | fluidReciprocFVF (const int phase, const ADB &p, const ADB &temp, const ADB &rs, const ADB &rv, const std::vector< PhasePresence > &cond) const |
|
ADB | fluidDensity (const int phase, const ADB &b, const ADB &rs, const ADB &rv) const |
|
V | fluidRsSat (const V &p, const V &so, const std::vector< int > &cells) const |
|
ADB | fluidRsSat (const ADB &p, const ADB &so, const std::vector< int > &cells) const |
|
V | fluidRvSat (const V &p, const V &so, const std::vector< int > &cells) const |
|
ADB | fluidRvSat (const ADB &p, const ADB &so, const std::vector< int > &cells) const |
|
ADB | poroMult (const ADB &p) const |
|
ADB | transMult (const ADB &p) const |
|
const std::vector< PhasePresence > | phaseCondition () const |
|
void | classifyCondition (const ReservoirState &state) |
|
void | updatePrimalVariableFromState (const ReservoirState &state) |
| update the primal variable for Sg, Rv or Rs. More...
|
|
void | updatePhaseCondFromPrimalVariable (const ReservoirState &state) |
| Update the phaseCondition_ member based on the primalVariable_ member. More...
|
|
void | computeWellConnectionPressures (const SolutionState &state, const WellState &well_state) |
|
double | convergenceReduction (const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic > &B, const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic > &tempV, const Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic > &R, std::vector< double > &R_sum, std::vector< double > &maxCoeff, std::vector< double > &B_avg, std::vector< double > &maxNormWell, int nc) const |
| Compute the reduction within the convergence check. More...
|
|
void | setupGroupControl (const ReservoirState &reservoir_state, WellState &well_state) |
| Set up the group control related at the beginning of each time step.
|
|
double | dpMaxRel () const |
|
double | dbhpMaxRel () const |
|
double | dsMax () const |
|
double | drMaxRel () const |
|
double | maxResidualAllowed () const |
|
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.