Class collecting all necessary components for a two-phase simulation.
More...
#include <SimulatorBase.hpp>
|
typedef Traits::ReservoirState | ReservoirState |
|
typedef Traits::WellState | WellState |
|
typedef Traits::OutputWriter | OutputWriter |
|
typedef Traits::Grid | Grid |
|
typedef Traits::Solver | Solver |
|
typedef Traits::WellModel | WellModel |
|
|
| SimulatorBase (const ParameterGroup ¶m, const Grid &grid, DerivedGeology &geo, BlackoilPropsAdFromDeck &props, const RockCompressibility *rock_comp_props, NewtonIterationBlackoilInterface &linsolver, const double *gravity, const bool disgas, const bool vapoil, std::shared_ptr< EclipseState > eclipse_state, OutputWriter &output_writer, const std::vector< double > &threshold_pressures_by_face, const std::unordered_set< std::string > &defunct_well_names) |
| Initialise from parameters and objects to observe. More...
|
|
SimulatorReport | run (SimulatorTimer &timer, ReservoirState &state) |
| Run the simulation. More...
|
|
|
typedef RateConverter::SurfaceToReservoirVoidage< BlackoilPropsAdFromDeck::FluidSystem, std::vector< int > > | RateConverterType |
|
typedef Traits::Model | Model |
|
typedef Model::ModelParameters | ModelParameters |
|
typedef Solver::SolverParameters | SolverParameters |
|
|
Implementation & | asImpl () |
|
const Implementation & | asImpl () const |
|
void | handleAdditionalWellInflow (SimulatorTimer &timer, WellsManager &wells_manager, WellState &well_state, const Wells *wells) |
|
std::unique_ptr< Solver > | createSolver (const WellModel &well_model) |
|
void | computeRESV (const std::size_t step, const Wells *wells, const BlackoilState &x, WellState &xw) |
|
void | FIPUnitConvert (const UnitSystem &units, std::vector< std::vector< double > > &fip) |
|
void | FIPUnitConvert (const UnitSystem &units, std::vector< double > &fip) |
|
std::vector< double > | FIPTotals (const std::vector< std::vector< double > > &fip, const ReservoirState &state) |
|
void | outputFluidInPlace (const std::vector< double > &oip, const std::vector< double > &cip, const UnitSystem &units, const int reg) |
|
void | updateListEconLimited (const std::unique_ptr< Solver > &solver, const Schedule &schedule, const int current_step, const Wells *wells, const WellState &well_state, DynamicListEconLimited &list_econ_limited) const |
|
void | initHysteresisParams (ReservoirState &state) |
|
|
const ParameterGroup | param_ |
|
ModelParameters | model_param_ |
|
SolverParameters | solver_param_ |
|
const Grid & | grid_ |
|
BlackoilPropsAdFromDeck & | props_ |
|
const RockCompressibility * | rock_comp_props_ |
|
const double * | gravity_ |
|
DerivedGeology & | geo_ |
|
NewtonIterationBlackoilInterface & | solver_ |
|
std::vector< int > | allcells_ |
|
const bool | has_disgas_ |
|
const bool | has_vapoil_ |
|
bool | terminal_output_ |
|
std::shared_ptr< EclipseState > | eclipse_state_ |
|
OutputWriter & | output_writer_ |
|
RateConverterType | rateConverter_ |
|
std::vector< double > | threshold_pressures_by_face_ |
|
bool | is_parallel_run_ |
|
std::unordered_set< std::string > | defunct_well_names_ |
|
template<class Implementation>
class Opm::SimulatorBase< Implementation >
Class collecting all necessary components for a two-phase simulation.
◆ SimulatorBase()
template<class Implementation >
Opm::SimulatorBase< Implementation >::SimulatorBase |
( |
const ParameterGroup & |
param, |
|
|
const Grid & |
grid, |
|
|
DerivedGeology & |
geo, |
|
|
BlackoilPropsAdFromDeck & |
props, |
|
|
const RockCompressibility * |
rock_comp_props, |
|
|
NewtonIterationBlackoilInterface & |
linsolver, |
|
|
const double * |
gravity, |
|
|
const bool |
disgas, |
|
|
const bool |
vapoil, |
|
|
std::shared_ptr< EclipseState > |
eclipse_state, |
|
|
OutputWriter & |
output_writer, |
|
|
const std::vector< double > & |
threshold_pressures_by_face, |
|
|
const std::unordered_set< std::string > & |
defunct_well_names |
|
) |
| |
Initialise from parameters and objects to observe.
- Parameters
-
[in] | param | parameters, this class accepts the following: parameter (default) effect
|
output (true) write output to files? output_dir ("output") output directoty output_interval (1) output every nth step nl_pressure_residual_tolerance (0.0) pressure solver residual tolerance (in Pascal) nl_pressure_change_tolerance (1.0) pressure solver change tolerance (in Pascal) nl_pressure_maxiter (10) max nonlinear iterations in pressure nl_maxiter (30) max nonlinear iterations in transport nl_tolerance (1e-9) transport solver absolute residual tolerance num_transport_substeps (1) number of transport steps per pressure step use_segregation_split (false) solve for gravity segregation (if false, segregation is ignored).
- Parameters
-
[in] | grid | grid data structure |
[in] | geo | derived geological properties |
[in] | props | fluid and rock properties |
[in] | rock_comp_props | if non-null, rock compressibility properties |
[in] | linsolver | linear solver |
[in] | gravity | if non-null, gravity vector |
[in] | disgas | true for dissolved gas option |
[in] | vapoil | true for vaporized oil option |
[in] | eclipse_state | the object which represents an internalized ECL deck |
[in] | output_writer | |
[in] | threshold_pressures_by_face | if nonempty, threshold pressures that inhibit flow |
◆ run()
template<class Implementation >
Run the simulation.
This will run succesive timesteps until timer.done() is true. It will modify the reservoir and well states.
- Parameters
-
[in,out] | timer | governs the requested reporting timesteps |
[in,out] | state | state of reservoir: pressure, fluxes |
- Returns
- simulation report, with timing data
The documentation for this class was generated from the following files: