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< Model > | Solver |
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 ¶m, 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< Solver > | createSolver (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_ |
NewtonIterationBlackoilInterface & | solver_ |
PhaseUsage | phaseUsage_ |
const bool | has_disgas_ |
const bool | has_vapoil_ |
bool | terminal_output_ |
OutputWriter & | output_writer_ |
RateConverterType | rateConverter_ |
std::unordered_set< std::string > | defunct_well_names_ |
bool | is_parallel_run_ |
a simulator for the blackoil model
|
inline |
Initialise from parameters and objects to observe.
[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] | props | fluid and rock properties |
[in] | linsolver | linear solver |
[in] | has_disgas | true for dissolved gas option |
[in] | has_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 |
|
inline |
Run the simulation.
This will run succesive timesteps until timer.done() is true. It will modify the reservoir and well states.
[in,out] | timer | governs the requested reporting timesteps |
[in,out] | state | state of reservoir: pressure, fluxes |