A model implementation for the pressure equation in three-phase black oil. More...
#include <BlackoilPressureModel.hpp>
Public Types | |
typedef BlackoilModelBase < Grid, WellModel, BlackoilPressureModel< Grid, WellModel > > | Base |
typedef Base::ReservoirState | ReservoirState |
typedef Base::WellState | WellState |
typedef Base::SolutionState | SolutionState |
typedef Base::V | V |
![]() | |
typedef AutoDiffBlock< double > | ADB |
typedef ADB::V | V |
typedef ADB::M | M |
typedef Opm::FIPData | FIPDataType |
typedef ModelTraits < BlackoilPressureModel< Grid, WellModel > >::ReservoirState | ReservoirState |
typedef ModelTraits < BlackoilPressureModel< Grid, WellModel > >::WellState | WellState |
typedef ModelTraits < BlackoilPressureModel< Grid, WellModel > >::ModelParameters | ModelParameters |
typedef ModelTraits < BlackoilPressureModel< Grid, WellModel > >::SolutionState | SolutionState |
using | RateConverterType = RateConverter::SurfaceToReservoirVoidage< BlackoilPropsAdFromDeck::FluidSystem, std::vector< int > > |
Public Member Functions | |
BlackoilPressureModel (const typename Base::ModelParameters ¶m, const Grid &grid, const BlackoilPropsAdFromDeck &fluid, const DerivedGeology &geo, const RockCompressibility *rock_comp_props, const StandardWells &std_wells, 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 | prepareStep (const SimulatorTimerInterface &timer, const ReservoirState &reservoir_state, const WellState &well_state) |
Called once per timestep. | |
V | solveJacobianSystem () const |
Solve the Jacobian system Jx = r where J is the Jacobian and r is the residual. 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... | |
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... | |
Public Attributes | |
friend | Base |
Protected Member Functions | |
SimulatorReport | assemble (const ReservoirState &reservoir_state, WellState &well_state, const bool initial_assembly) |
SolutionState | variableState (const ReservoirState &x, const WellState &xw) const |
void | computeAccum (const SolutionState &state, const int aix) |
void | assembleMassBalanceEq (const SolutionState &state) |
void | updateState (const V &dx, ReservoirState &reservoir_state, WellState &well_state) |
bool | getConvergence (const SimulatorTimerInterface &, const int iteration) |
![]() | |
BlackoilPressureModel< Grid, WellModel > & | asImpl () |
Access the most-derived class used for static polymorphism (CRTP). More... | |
const BlackoilPressureModel < Grid, WellModel > & | 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 |
Protected Attributes | |
SolutionState | state0_ |
double | max_dp_rel_ = std::numeric_limits<double>::infinity() |
ADB | scaling_ [3] = { ADB::null(), ADB::null(), ADB::null() } |
![]() | |
SimulatorReport | failureReport_ |
const Grid & | grid_ |
const BlackoilPropsAdFromDeck & | fluid_ |
const DerivedGeology & | geo_ |
const RockCompressibility * | rock_comp_props_ |
VFPProperties | vfp_properties_ |
const NewtonIterationBlackoilInterface & | linsolver_ |
const std::vector< bool > | active_ |
const std::vector< int > | canph_ |
const std::vector< int > | cells_ |
HelperOps | ops_ |
const bool | has_disgas_ |
const bool | has_vapoil_ |
ModelParameters | param_ |
bool | use_threshold_pressure_ |
V | threshold_pressures_by_connection_ |
SimulatorData | sd_ |
std::vector< PhasePresence > | phaseCondition_ |
WellModel | well_model_ |
V | isRs_ |
V | isRv_ |
V | isSg_ |
LinearisedBlackoilResidual | residual_ |
bool | terminal_output_ |
Whether we print something to std::cout. | |
int | global_nc_ |
The number of cells of the global grid. | |
V | pvdt_ |
std::vector< std::string > | material_name_ |
std::vector< std::vector < double > > | residual_norms_history_ |
double | current_relaxation_ |
V | dx_old_ |
RateConverterType | rate_converter_ |
Additional Inherited Members | |
![]() | |
typedef Eigen::Array< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > | DataBlock |
A model implementation for the pressure equation in three-phase black oil.
The model is based on the normal black oil model. It uses automatic differentiation via the class AutoDiffBlock to simplify assembly of the jacobian matrix.
|
inline |
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.
[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_arg | well structure |
[in] | linsolver | linear solver |
[in] | eclState | eclipse state |
[in] | has_disgas | turn on dissolved gas |
[in] | has_vapoil | turn on vaporized oil feature |
[in] | terminal_output | request output to cout/cerr |
|
inline |
Solve the Jacobian system Jx = r where J is the Jacobian and r is the residual.