Opm::SimulatorFullyImplicitBlackoilEbos< TypeTag > Class Template Reference

a simulator for the blackoil model More...

#include <SimulatorFullyImplicitBlackoilEbos.hpp>

Public Types

typedef Ewoms::BlackOilPolymerModule< TypeTag > PolymerModule
 
typedef WellStateFullyImplicitBlackoil WellState
 
typedef BlackoilState ReservoirState
 
typedef BlackoilOutputWriter OutputWriter
 
typedef BlackoilModelEbos< TypeTag > Model
 
typedef BlackoilModelParameters ModelParameters
 
typedef NonlinearSolver< ModelSolver
 
typedef BlackoilWellModel< TypeTag > WellModel
 
typedef RateConverter::SurfaceToReservoirVoidage< FluidSystem, std::vector< int > > RateConverterType
 

Public Member Functions

typedef GET_PROP_TYPE (TypeTag, Simulator) Simulator
 
typedef GET_PROP_TYPE (TypeTag, Grid) Grid
 
typedef GET_PROP_TYPE (TypeTag, FluidSystem) FluidSystem
 
typedef GET_PROP_TYPE (TypeTag, ElementContext) ElementContext
 
typedef GET_PROP_TYPE (TypeTag, Indices) BlackoilIndices
 
typedef GET_PROP_TYPE (TypeTag, PrimaryVariables) PrimaryVariables
 
typedef GET_PROP_TYPE (TypeTag, MaterialLaw) MaterialLaw
 
typedef GET_PROP_TYPE (TypeTag, SolutionVector) SolutionVector
 
typedef GET_PROP_TYPE (TypeTag, MaterialLawParams) MaterialLawParams
 
 SimulatorFullyImplicitBlackoilEbos (Simulator &ebosSimulator, const ParameterGroup &param, NewtonIterationBlackoilInterface &linsolver, const bool has_disgas, const bool has_vapoil, const EclipseState &, OutputWriter &output_writer, 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...
 
const SimulatorReport & failureReport () const
 Returns the simulator report for the failed substeps of the simulation.
 
const Grid & grid () const
 

Protected Types

typedef Solver::SolverParameters SolverParameters
 

Protected Member Functions

void handleAdditionalWellInflow (SimulatorTimer &, WellsManager &, WellState &, const Wells *)
 
std::unique_ptr< SolvercreateSolver (WellModel &well_model)
 
void computeRESV (const std::size_t step, const Wells *wells, WellState &xw)
 
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 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)
 
void outputTimestampFIP (SimulatorTimer &timer, const std::string version)
 
void outputFluidInPlace (const std::vector< double > &oip, const std::vector< double > &cip, const UnitSystem &units, const int reg)
 
const EclipseState & eclState () const
 
void extractLegacyCellPvtRegionIndex_ ()
 
void initHysteresisParams (ReservoirState &state)
 
void extractLegacyDepth_ ()
 
void convertInput (const int iterationIdx, const ReservoirState &reservoirState, Simulator &simulator) const
 
RateConverterType createRateConverter_ ()
 

Protected Attributes

Simulator & ebosSimulator_
 
std::vector< int > legacyCellPvtRegionIdx_
 
std::vector< double > legacyDepth_
 
SimulatorReport failureReport_
 
const ParameterGroup param_
 
ModelParameters model_param_
 
SolverParameters solver_param_
 
NewtonIterationBlackoilInterfacesolver_
 
PhaseUsage phaseUsage_
 
const bool has_disgas_
 
const bool has_vapoil_
 
bool terminal_output_
 
OutputWriteroutput_writer_
 
RateConverterType rateConverter_
 
std::unordered_set< std::string > defunct_well_names_
 
bool is_parallel_run_
 

Detailed Description

template<class TypeTag>
class Opm::SimulatorFullyImplicitBlackoilEbos< TypeTag >

a simulator for the blackoil model

Constructor & Destructor Documentation

◆ SimulatorFullyImplicitBlackoilEbos()

template<class TypeTag >
Opm::SimulatorFullyImplicitBlackoilEbos< TypeTag >::SimulatorFullyImplicitBlackoilEbos ( Simulator &  ebosSimulator,
const ParameterGroup &  param,
NewtonIterationBlackoilInterface linsolver,
const bool  has_disgas,
const bool  has_vapoil,
const EclipseState &  ,
OutputWriter output_writer,
const std::unordered_set< std::string > &  defunct_well_names 
)
inline

Initialise from parameters and objects to observe.

Parameters
[in]paramparameters, 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]propsfluid and rock properties
[in]linsolverlinear solver
[in]has_disgastrue for dissolved gas option
[in]has_vapoiltrue for vaporized oil option
[in]eclipse_statethe object which represents an internalized ECL deck
[in]output_writer
[in]threshold_pressures_by_faceif nonempty, threshold pressures that inhibit flow

Member Function Documentation

◆ run()

template<class TypeTag >
SimulatorReport Opm::SimulatorFullyImplicitBlackoilEbos< TypeTag >::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]timergoverns the requested reporting timesteps
[in,out]statestate of reservoir: pressure, fluxes
Returns
simulation report, with timing data

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