Opm::VertEqWrapperBase Struct Reference

#include <wrapper.hpp>

Inheritance diagram for Opm::VertEqWrapperBase:
Inheritance graph

Public Member Functions

virtual ~VertEqWrapperBase ()
 
virtual SimulatorReport run (SimulatorTimer &timer, TwophaseState &state, WellState &well_state)
 
Event & timestep_completed ()
 
void sync ()
 

Protected Member Functions

 VertEqWrapperBase (std::unique_ptr< Simulator > underlaying, const parameter::ParameterGroup &param, const UnstructuredGrid &grid, const IncompPropertiesInterface &props, const RockCompressibility *rock_comp_props, WellsManager &wells_manager, const std::vector< double > &src, const FlowBoundaryConditions *bcs, LinearSolverInterface &linsolver, const double *gravity)
 

Detailed Description

Wrapper that takes fine-scale 3D input, but uses an underlaying simulator to do coarse-scale 2D simulation under the vertical equilibrium assumption.

The wrapper will setup the necessary translation layer for the input, and provide methods to query a 3D translation of the output (which may be expensive and is not done for every timestep).

You are not supposed to use the base class directly; rather use VertEqWrapper<T>.

Constructor & Destructor Documentation

Opm::VertEqWrapperBase::VertEqWrapperBase ( std::unique_ptr< Simulator underlaying,
const parameter::ParameterGroup &  param,
const UnstructuredGrid &  grid,
const IncompPropertiesInterface &  props,
const RockCompressibility *  rock_comp_props,
WellsManager &  wells_manager,
const std::vector< double > &  src,
const FlowBoundaryConditions *  bcs,
LinearSolverInterface &  linsolver,
const double *  gravity 
)
protected

Initialise from parameters and objects to observe.

Parameters
underlayingType to use for 2D simulations. This pointer is adopted, i.e. the wrapper takes ownership of it. Use with newly created SimulatorInstance.
paramParameters for the underlaying simulator class
gridFine-scale grid data structure
propsFluid and rock properties
rock_comp_propsIf non-null, rock compressibility properties
well_managerWell manager, may manage no (null) wells
srcSource terms
bcsBoundary conditions, treat as all noflow if null
linsolverLinear solver
gravityIf non-null, gravity vector
virtual Opm::VertEqWrapperBase::~VertEqWrapperBase ( )
virtual

Clean up resources added in the wrapper.

Member Function Documentation

virtual SimulatorReport Opm::VertEqWrapperBase::run ( SimulatorTimer &  timer,
TwophaseState &  state,
WellState &  well_state 
)
virtual

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
[in,out]well_stateState of wells: bhp, perforation rates
Returns
Simulation report, with timing data
void Opm::VertEqWrapperBase::sync ( )

Notify the simulator that a callback has an interest in reading for reporting purposes the contents of the state argument that was passed to the run() method. The simulator will then flush any internal state which is currently not reflected in it.

See also
Opm::SimulatorIncompTwophase::sync
Event& Opm::VertEqWrapperBase::timestep_completed ( )

Event that is signaled every time the simulator has completed a timestep.

Returns
Reference to the event object where callbacks can be registered.
See also
Opm::SimulatorIncompTwophase::timestep_completed

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