28#ifndef OPM_FLOW_GENERIC_PROBLEM_HPP
29#define OPM_FLOW_GENERIC_PROBLEM_HPP
31#include <opm/material/common/UniformXTabulated2DFunction.hpp>
32#include <opm/material/common/Tabulated1DFunction.hpp>
51template<
typename Gr
id,
typename Gr
idView>
class LookUpData;
59template<
class Gr
idView,
class Flu
idSystem>
60class FlowGenericProblem
63 using Scalar =
typename FluidSystem::Scalar;
64 using TabulatedTwoDFunction = UniformXTabulated2DFunction<Scalar>;
65 using TabulatedFunction = Tabulated1DFunction<Scalar>;
68 Scalar referencePressure;
69 Scalar compressibility;
72 FlowGenericProblem(
const EclipseState& eclState,
73 const Schedule& schedule,
74 const GridView& gridView);
77 static FlowGenericProblem serializationTestObject(
const EclipseState& eclState,
78 const Schedule& schedule,
79 const GridView& gridView);
98 { briefDescription_ = msg; }
138 {
return referencePorosity_[timeIdx][elementIdx]; }
155 void setPorosity(Scalar poro,
unsigned elementIdx,
unsigned timeIdx = 0)
156 { referencePorosity_[timeIdx][elementIdx] = poro; }
249 Scalar
porosity(
unsigned globalSpaceIdx,
unsigned timeIdx)
const;
251 bool vapparsActive(
int episodeIdx)
const;
253 int numPressurePointsEquil()
const
254 {
return numPressurePointsEquil_; }
258 template<
class Serializer>
259 void serializeOp(Serializer& serializer)
261 serializer(maxOilSaturation_);
262 serializer(polymer_);
263 serializer(maxWaterSaturation_);
264 serializer(minRefPressure_);
265 serializer(overburdenPressure_);
266 serializer(solventSaturation_);
267 serializer(solventRsw_);
268 serializer(bioeffects_);
272 void initFluidSystem_();
289 bool beginEpisode_(
bool enableExperiments,
291 void beginTimeStep_(
bool enableExperiments,
299 void readRockParameters_(
const std::vector<Scalar>& cellCenterDepths,
300 std::function<std::array<int,3>(
const unsigned)> ijkIndex);
301 void readRockCompactionParameters_();
303 void readBlackoilExtentionsInitialConditions_(std::size_t numDof,
306 bool enablePolymerMolarWeight,
307 bool enableBioeffects,
310 void updatePvtnum_();
311 void updateSatnum_();
312 void updateMiscnum_();
313 void updatePlmixnum_();
315 const EclipseState& eclState_;
316 const Schedule& schedule_;
317 const GridView& gridView_;
319 static inline std::string briefDescription_;
320 std::array<std::vector<Scalar>, 2> referencePorosity_;
322 std::vector<int> pvtnum_;
323 std::vector<unsigned short> satnum_;
324 std::vector<unsigned short> miscnum_;
325 std::vector<unsigned short> plmixnum_;
327 std::vector<RockParams> rockParams_;
328 std::vector<unsigned short> rockTableIdx_;
329 std::vector<TabulatedTwoDFunction> rockCompPoroMultWc_;
330 std::vector<TabulatedTwoDFunction> rockCompTransMultWc_;
331 std::vector<TabulatedFunction> rockCompPoroMult_;
332 std::vector<TabulatedFunction> rockCompTransMult_;
333 std::vector<Scalar> rockCompTransMultVal_;
336 std::vector<Scalar> maxOilSaturation_;
337 std::vector<Scalar> maxWaterSaturation_;
338 std::vector<Scalar> minRefPressure_;
339 std::vector<Scalar> overburdenPressure_;
340 std::vector<Scalar> solventSaturation_;
341 std::vector<Scalar> solventRsw_;
346 Scalar initialTimeStepSize_;
347 Scalar maxTimeStepAfterWellEvent_;
350 int numPressurePointsEquil_;
352 bool enableDriftCompensation_;
353 bool explicitRockCompaction_;
356 using Grid = std::remove_cv_t<
typename std::remove_reference<
decltype(gridView_.grid())>::type>;
364 std::function<unsigned(
unsigned)> lookupIdxOnLevelZeroAssigner_()
366 return [
this](
unsigned elemIdx) {
return lookUpData_.template getFieldPropIdx<Grid>(elemIdx);};
371 void updateNum(
const std::string& name, std::vector<T>& numbers, std::size_t num_regions);
This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato...
This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato...
Definition FlowGenericProblem.hpp:61
void setPorosity(Scalar poro, unsigned elementIdx, unsigned timeIdx=0)
Sets the porosity of an element.
Definition FlowGenericProblem.hpp:155
Scalar maxPolymerAdsorption(unsigned elemIdx) const
Returns the max polymer adsorption value.
Definition FlowGenericProblem_impl.hpp:744
unsigned pvtRegionIndex(unsigned elemIdx) const
Returns the index the relevant PVT region given a cell index.
Definition FlowGenericProblem_impl.hpp:703
Scalar oxygenConcentration(unsigned elemIdx) const
Returns the initial oxygen concentration for a given a cell index.
Definition FlowGenericProblem_impl.hpp:656
Scalar microbialConcentration(unsigned elemIdx) const
Returns the initial microbial concentration for a given a cell index.
Definition FlowGenericProblem_impl.hpp:644
static std::string briefDescription()
Returns a human readable description of the problem for the help message.
Definition FlowGenericProblem_impl.hpp:129
Scalar solventRsw(unsigned elemIdx) const
Returns the initial solvent dissolved in water for a given a cell index.
Definition FlowGenericProblem_impl.hpp:607
Scalar overburdenPressure(unsigned elementIdx) const
Get the pressure of the overburden.
Definition FlowGenericProblem_impl.hpp:585
Scalar porosity(unsigned globalSpaceIdx, unsigned timeIdx) const
Direct indexed access to the porosity.
Definition FlowGenericProblem_impl.hpp:332
Scalar rockCompressibility(unsigned globalSpaceIdx) const
Direct access to rock compressibility.
Definition FlowGenericProblem_impl.hpp:317
unsigned miscnumRegionIndex(unsigned elemIdx) const
Returns the index the relevant MISC region given a cell index.
Definition FlowGenericProblem_impl.hpp:723
Scalar referencePorosity(unsigned elementIdx, unsigned timeIdx) const
Returns the porosity of an element.
Definition FlowGenericProblem.hpp:137
unsigned satnumRegionIndex(unsigned elemIdx) const
Returns the index the relevant saturation function region given a cell index.
Definition FlowGenericProblem_impl.hpp:713
Scalar rockFraction(unsigned elementIdx, unsigned timeIdx) const
Returns the rockFraction of an element.
Definition FlowGenericProblem_impl.hpp:340
Scalar maxWaterSaturation(unsigned globalDofIdx) const
Returns an element's historic maximum water phase saturation that was observed during the simulation.
Definition FlowGenericProblem_impl.hpp:563
Scalar calciteVolumeFraction(unsigned elemIdx) const
Returns the initial calcite volume fraction for a given a cell index.
Definition FlowGenericProblem_impl.hpp:692
unsigned plmixnumRegionIndex(unsigned elemIdx) const
Returns the index the relevant PLMIXNUM (for polymer module) region given a cell index.
Definition FlowGenericProblem_impl.hpp:733
Scalar solventSaturation(unsigned elemIdx) const
Returns the initial solvent saturation for a given a cell index.
Definition FlowGenericProblem_impl.hpp:596
Scalar polymerMolecularWeight(const unsigned elemIdx) const
Returns the polymer molecule weight for a given cell index.
Definition FlowGenericProblem_impl.hpp:632
Scalar minOilPressure(unsigned globalDofIdx) const
Returns an element's historic minimum pressure of the oil phase that was observed during the simulati...
Definition FlowGenericProblem_impl.hpp:574
Scalar ureaConcentration(unsigned elemIdx) const
Returns the initial urea concentration for a given a cell index.
Definition FlowGenericProblem_impl.hpp:668
bool shouldWriteOutput() const
Always returns true.
Definition FlowGenericProblem.hpp:277
static void setBriefDescription(const std::string &msg)
Specifies the string returned by briefDescription().
Definition FlowGenericProblem.hpp:97
Scalar biofilmVolumeFraction(unsigned elemIdx) const
Returns the initial biofilm volume fraction for a given a cell index.
Definition FlowGenericProblem_impl.hpp:680
static std::string helpPreamble(int, const char **argv)
Returns the string that is printed before the list of command line parameters in the help message.
Definition FlowGenericProblem_impl.hpp:114
bool shouldWriteRestartFile() const
Returns true if an eWoms restart file should be written to disk.
Definition FlowGenericProblem.hpp:286
Scalar polymerConcentration(unsigned elemIdx) const
Returns the initial polymer concentration for a given a cell index.
Definition FlowGenericProblem_impl.hpp:620
Definition FlowGenericProblem.hpp:51
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
Struct holding MICP extension data.
Definition SolutionContainers.hpp:57
Definition FlowGenericProblem.hpp:67
Struct holding polymer extension data.
Definition SolutionContainers.hpp:37