36 #ifndef OPENRS_SIMULATORBASE_HEADER
37 #define OPENRS_SIMULATORBASE_HEADER
40 #include <boost/lexical_cast.hpp>
42 #include <opm/core/utility/parameters/ParameterGroup.hpp>
44 #include <opm/core/utility/SparseVector.hpp>
45 #include <opm/core/utility/SparseTable.hpp>
46 #include <opm/core/utility/Units.hpp>
48 #include <dune/grid/common/Volumes.hpp>
49 #include <dune/grid/CpGrid.hpp>
50 #include <dune/grid/yaspgrid.hh>
79 template <
class SimTraits>
98 void init(
const Opm::parameter::ParameterGroup& param)
108 std::cout <<
"==================== Unused parameters: ====================\n";
109 param.displayUsage();
110 std::cout <<
"================================================================\n";
116 typedef Dune::FieldVector<double, Dimension>
Vector;
143 virtual void initControl(
const Opm::parameter::ParameterGroup& param)
145 simulation_steps_ = param.getDefault(
"simulation_steps", simulation_steps_);
146 stepsize_ = Opm::unit::convert::from(param.getDefault(
"stepsize", stepsize_),
153 ginterf_.
init(grid_);
155 gravity_[0] = param.getDefault(
"gx", 0.0);
156 gravity_[1] = param.getDefault(
"gy", 0.0);
157 gravity_[2] = param.getDefault(
"gz", 0.0);
162 if (param.getDefault(
"init_saturation_from_file",
false)) {
163 std::string filename = param.get<std::string>(
"init_saturation_filename");
164 std::ifstream satfile(filename.c_str());
166 OPM_THROW(std::runtime_error,
"Could not open initial saturation file: " << filename);
171 OPM_THROW(std::runtime_error,
"Number of saturation values claimed different from number of grid cells: "
174 std::istream_iterator<double> beg(satfile);
175 std::istream_iterator<double> end;
176 init_saturation_.assign(beg, end);
177 if (
int(init_saturation_.size()) != num_sats) {
178 OPM_THROW(std::runtime_error,
"Number of saturation values claimed different from actual file content: "
179 << num_sats <<
" vs. " << init_saturation_.size());
182 double init_s = param.getDefault(
"init_saturation", 0.0);
183 init_saturation_.clear();
193 virtual void initSources(
const Opm::parameter::ParameterGroup& param)
196 injection_rates_ = Opm::SparseVector<double>(nc);
197 injection_rates_psolver_.resize(nc, 0.0);
204 virtual void initSolvers(
const Opm::parameter::ParameterGroup& param)
207 flow_solver_.init(ginterf_, res_prop_, gravity_, bcond_);
208 residual_tolerance_ = param.getDefault(
"residual_tolerance", residual_tolerance_);
209 linsolver_verbosity_ = param.getDefault(
"linsolver_verbosity", linsolver_verbosity_);
210 linsolver_type_ = param.getDefault(
"linsolver_type", linsolver_type_);
213 transport_solver_.init(param, ginterf_, res_prop_, bcond_);
225 #endif // OPENRS_SIMULATORBASE_HEADER
TransportSolver transport_solver_
Definition: SimulatorBase.hpp:140
std::vector< double > init_saturation_
Definition: SimulatorBase.hpp:127
Vector gravity_
Definition: SimulatorBase.hpp:128
Definition: BlackoilFluid.hpp:31
FlowSolver flow_solver_
Definition: SimulatorBase.hpp:139
SimTraits::template FlowSolver< GridInterface, BCs >::Type FlowSolver
Definition: SimulatorBase.hpp:122
void init(const DuneGrid &grid, bool build_facemap=true)
Definition: GridInterfaceEuler.hpp:437
int numberOfCells() const
Definition: GridInterfaceEuler.hpp:453
GridType grid_
Definition: SimulatorBase.hpp:133
int linsolver_verbosity_
Definition: SimulatorBase.hpp:130
GridInterface ginterf_
Definition: SimulatorBase.hpp:134
BCs bcond_
Definition: SimulatorBase.hpp:136
virtual void initControl(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:143
void setupBoundaryConditions(const Opm::parameter::ParameterGroup ¶m, const GridInterface &g, BCs &bcs)
Setup boundary conditions for a simulation. It is assumed that the boundary ids are 1-6...
Definition: setupBoundaryConditions.hpp:51
GridInterface::CellIterator CellIter
Definition: SimulatorBase.hpp:119
void setupGridAndProps(const Opm::parameter::ParameterGroup ¶m, Dune::CpGrid &grid, ResProp< 3 > &res_prop)
Definition: setupGridAndProps.hpp:66
ResProp res_prop_
Definition: SimulatorBase.hpp:135
Definition: SimulatorBase.hpp:80
double residual_tolerance_
Definition: SimulatorBase.hpp:129
Intersection (face) iterator for solver-near grid interface.
Definition: GridInterfaceEuler.hpp:245
virtual void initInitialConditions(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:160
SimTraits::template TransportSolver< GridInterface, BCs >::Type TransportSolver
Definition: SimulatorBase.hpp:123
CellIter::FaceIterator FaceIter
Definition: SimulatorBase.hpp:120
int linsolver_type_
Definition: SimulatorBase.hpp:131
BasicBoundaryConditions< true, true > BCs
Definition: SimulatorBase.hpp:121
Dune::CpGrid GridType
Definition: SimulatorBase.hpp:114
virtual void initGridAndProps(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:150
virtual void initSources(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:193
GridInterfaceEuler< GridType > GridInterface
Definition: SimulatorBase.hpp:118
std::vector< double > injection_rates_psolver_
Definition: SimulatorBase.hpp:138
int simulation_steps_
Definition: SimulatorBase.hpp:125
void init(const Opm::parameter::ParameterGroup ¶m)
Initialization from parameters.
Definition: SimulatorBase.hpp:98
double stepsize_
Definition: SimulatorBase.hpp:126
virtual void initBoundaryConditions(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:188
SimTraits::template ResProp< Dimension >::Type ResProp
Definition: SimulatorBase.hpp:117
virtual void initSolvers(const Opm::parameter::ParameterGroup ¶m)
Definition: SimulatorBase.hpp:204
Definition: GridInterfaceEuler.hpp:371
Opm::SparseVector< double > injection_rates_
Definition: SimulatorBase.hpp:137
SimulatorBase()
Definition: SimulatorBase.hpp:86
Definition: SimulatorBase.hpp:115
Dune::FieldVector< double, Dimension > Vector
Definition: SimulatorBase.hpp:116