Opm::SimulatorBase< Implementation > Class Template Reference

Class collecting all necessary components for a two-phase simulation. More...

#include <SimulatorBase.hpp>

List of all members.

Public Types

typedef Traits::ReservoirState ReservoirState
typedef Traits::WellState WellState
typedef Traits::OutputWriter OutputWriter
typedef Traits::Grid Grid
typedef Traits::Solver Solver
typedef Traits::WellModel WellModel

Public Member Functions

 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.
SimulatorReport run (SimulatorTimer &timer, ReservoirState &state)
 Run the simulation.

Protected Types

typedef
RateConverter::SurfaceToReservoirVoidage
< BlackoilPropsAdFromDeck::FluidSystem,
std::vector< int > > 
RateConverterType
typedef Traits::Model Model
typedef Model::ModelParameters ModelParameters
typedef Solver::SolverParameters SolverParameters

Protected Member Functions

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)

Protected Attributes

const ParameterGroup param_
ModelParameters model_param_
SolverParameters solver_param_
const Grid & grid_
BlackoilPropsAdFromDeckprops_
const RockCompressibility * rock_comp_props_
const double * gravity_
DerivedGeologygeo_
NewtonIterationBlackoilInterfacesolver_
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_

Detailed Description

template<class Implementation>
class Opm::SimulatorBase< Implementation >

Class collecting all necessary components for a two-phase simulation.


Constructor & Destructor Documentation

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 
) [inline]

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).
[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

Member Function Documentation

template<class Implementation >
SimulatorReport Opm::SimulatorBase< Implementation >::run ( SimulatorTimer timer,
ReservoirState &  state 
) [inline]

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

Reimplemented in Opm::SimulatorFullyImplicitBlackoilMultiSegment< GridT >.


The documentation for this class was generated from the following files:

Generated on 26 Mar 2018 by  doxygen 1.6.1