|
|
|
@@ -78,8 +78,8 @@ int eclPositionalParameter(Dune::ParameterTree& tree,
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
FlowGenericProblem(const EclipseState& eclState,
|
|
|
|
FlowGenericProblem(const EclipseState& eclState,
|
|
|
|
const Schedule& schedule,
|
|
|
|
const Schedule& schedule,
|
|
|
|
const GridView& gridView)
|
|
|
|
const GridView& gridView)
|
|
|
|
@@ -91,9 +91,9 @@ FlowGenericProblem(const EclipseState& eclState,
|
|
|
|
{
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
FlowGenericProblem<GridView,FluidSystem,Scalar>
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>
|
|
|
|
FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
serializationTestObject(const EclipseState& eclState,
|
|
|
|
serializationTestObject(const EclipseState& eclState,
|
|
|
|
const Schedule& schedule,
|
|
|
|
const Schedule& schedule,
|
|
|
|
const GridView& gridView)
|
|
|
|
const GridView& gridView)
|
|
|
|
@@ -112,9 +112,9 @@ serializationTestObject(const EclipseState& eclState,
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
std::string
|
|
|
|
std::string
|
|
|
|
FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
helpPreamble(int,
|
|
|
|
helpPreamble(int,
|
|
|
|
const char **argv)
|
|
|
|
const char **argv)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@@ -127,16 +127,16 @@ helpPreamble(int,
|
|
|
|
+ desc;
|
|
|
|
+ desc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
std::string
|
|
|
|
std::string
|
|
|
|
FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
briefDescription()
|
|
|
|
briefDescription()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return briefDescription_;
|
|
|
|
return briefDescription_;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
readRockParameters_(const std::vector<Scalar>& cellCenterDepths,
|
|
|
|
readRockParameters_(const std::vector<Scalar>& cellCenterDepths,
|
|
|
|
std::function<std::array<int,3>(const unsigned)> ijkIndex)
|
|
|
|
std::function<std::array<int,3>(const unsigned)> ijkIndex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@@ -210,8 +210,8 @@ readRockParameters_(const std::vector<Scalar>& cellCenterDepths,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
readRockCompactionParameters_()
|
|
|
|
readRockCompactionParameters_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto& rock_config = eclState_.getSimulationConfig().rock_config();
|
|
|
|
const auto& rock_config = eclState_.getSimulationConfig().rock_config();
|
|
|
|
@@ -303,8 +303,9 @@ readRockCompactionParameters_()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
rockCompressibility(unsigned globalSpaceIdx) const
|
|
|
|
rockCompressibility(unsigned globalSpaceIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (this->rockParams_.empty())
|
|
|
|
if (this->rockParams_.empty())
|
|
|
|
@@ -317,8 +318,9 @@ rockCompressibility(unsigned globalSpaceIdx) const
|
|
|
|
return this->rockParams_[tableIdx].compressibility;
|
|
|
|
return this->rockParams_[tableIdx].compressibility;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
rockReferencePressure(unsigned globalSpaceIdx) const
|
|
|
|
rockReferencePressure(unsigned globalSpaceIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (this->rockParams_.empty())
|
|
|
|
if (this->rockParams_.empty())
|
|
|
|
@@ -331,15 +333,17 @@ rockReferencePressure(unsigned globalSpaceIdx) const
|
|
|
|
return this->rockParams_[tableIdx].referencePressure;
|
|
|
|
return this->rockParams_[tableIdx].referencePressure;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
porosity(unsigned globalSpaceIdx, unsigned timeIdx) const
|
|
|
|
porosity(unsigned globalSpaceIdx, unsigned timeIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this->referencePorosity_[timeIdx][globalSpaceIdx];
|
|
|
|
return this->referencePorosity_[timeIdx][globalSpaceIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
rockFraction(unsigned elementIdx, unsigned timeIdx) const
|
|
|
|
rockFraction(unsigned elementIdx, unsigned timeIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// the reference porosity is defined as the accumulated pore volume divided by the
|
|
|
|
// the reference porosity is defined as the accumulated pore volume divided by the
|
|
|
|
@@ -350,9 +354,9 @@ rockFraction(unsigned elementIdx, unsigned timeIdx) const
|
|
|
|
return referencePorosity(elementIdx, timeIdx) / porosity * (1 - porosity);
|
|
|
|
return referencePorosity(elementIdx, timeIdx) / porosity * (1 - porosity);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
template<class T>
|
|
|
|
template<class T>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updateNum(const std::string& name, std::vector<T>& numbers, std::size_t num_regions)
|
|
|
|
updateNum(const std::string& name, std::vector<T>& numbers, std::size_t num_regions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!eclState_.fieldProps().has_int(name))
|
|
|
|
if (!eclState_.fieldProps().has_int(name))
|
|
|
|
@@ -372,40 +376,40 @@ updateNum(const std::string& name, std::vector<T>& numbers, std::size_t num_regi
|
|
|
|
true /*needsTranslation*/, valueCheck);
|
|
|
|
true /*needsTranslation*/, valueCheck);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updatePvtnum_()
|
|
|
|
updatePvtnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumPVTTables();
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumPVTTables();
|
|
|
|
updateNum("PVTNUM", pvtnum_, num_regions);
|
|
|
|
updateNum("PVTNUM", pvtnum_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updateSatnum_()
|
|
|
|
updateSatnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
updateNum("SATNUM", satnum_, num_regions);
|
|
|
|
updateNum("SATNUM", satnum_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updateMiscnum_()
|
|
|
|
updateMiscnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = 1; // we only support single region
|
|
|
|
const auto num_regions = 1; // we only support single region
|
|
|
|
updateNum("MISCNUM", miscnum_, num_regions);
|
|
|
|
updateNum("MISCNUM", miscnum_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updatePlmixnum_()
|
|
|
|
updatePlmixnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = 1; // we only support single region
|
|
|
|
const auto num_regions = 1; // we only support single region
|
|
|
|
updateNum("PLMIXNUM", plmixnum_, num_regions);
|
|
|
|
updateNum("PLMIXNUM", plmixnum_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updateKrnum_()
|
|
|
|
updateKrnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
@@ -414,8 +418,8 @@ updateKrnum_()
|
|
|
|
updateNum("KRNUMZ", krnumz_, num_regions);
|
|
|
|
updateNum("KRNUMZ", krnumz_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
updateImbnum_()
|
|
|
|
updateImbnum_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
const auto num_regions = eclState_.getTableManager().getTabdims().getNumSatTables();
|
|
|
|
@@ -424,16 +428,16 @@ updateImbnum_()
|
|
|
|
updateNum("IMBNUMZ", imbnumz_, num_regions);
|
|
|
|
updateNum("IMBNUMZ", imbnumz_, num_regions);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
vapparsActive(int episodeIdx) const
|
|
|
|
vapparsActive(int episodeIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const auto& oilVaporizationControl = schedule_[episodeIdx].oilvap();
|
|
|
|
const auto& oilVaporizationControl = schedule_[episodeIdx].oilvap();
|
|
|
|
return (oilVaporizationControl.getType() == OilVaporizationProperties::OilVaporization::VAPPARS);
|
|
|
|
return (oilVaporizationControl.getType() == OilVaporizationProperties::OilVaporization::VAPPARS);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
beginEpisode_(bool enableExperiments,
|
|
|
|
beginEpisode_(bool enableExperiments,
|
|
|
|
int episodeIdx)
|
|
|
|
int episodeIdx)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@@ -469,8 +473,8 @@ beginEpisode_(bool enableExperiments,
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
beginTimeStep_(bool enableExperiments,
|
|
|
|
beginTimeStep_(bool enableExperiments,
|
|
|
|
int episodeIdx,
|
|
|
|
int episodeIdx,
|
|
|
|
int timeStepIndex,
|
|
|
|
int timeStepIndex,
|
|
|
|
@@ -496,15 +500,15 @@ beginTimeStep_(bool enableExperiments,
|
|
|
|
this->mixControls_.updateExplicitQuantities(episodeIdx, timeStepSize);
|
|
|
|
this->mixControls_.updateExplicitQuantities(episodeIdx, timeStepSize);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
initFluidSystem_()
|
|
|
|
initFluidSystem_()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FluidSystem::initFromState(eclState_, schedule_);
|
|
|
|
FluidSystem::initFromState(eclState_, schedule_);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
void FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
readBlackoilExtentionsInitialConditions_(std::size_t numDof,
|
|
|
|
readBlackoilExtentionsInitialConditions_(std::size_t numDof,
|
|
|
|
bool enableSolvent,
|
|
|
|
bool enableSolvent,
|
|
|
|
bool enablePolymer,
|
|
|
|
bool enablePolymer,
|
|
|
|
@@ -568,8 +572,9 @@ readBlackoilExtentionsInitialConditions_(std::size_t numDof,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
maxWaterSaturation(unsigned globalDofIdx) const
|
|
|
|
maxWaterSaturation(unsigned globalDofIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (maxWaterSaturation_.empty())
|
|
|
|
if (maxWaterSaturation_.empty())
|
|
|
|
@@ -578,8 +583,9 @@ maxWaterSaturation(unsigned globalDofIdx) const
|
|
|
|
return maxWaterSaturation_[globalDofIdx];
|
|
|
|
return maxWaterSaturation_[globalDofIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
minOilPressure(unsigned globalDofIdx) const
|
|
|
|
minOilPressure(unsigned globalDofIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (minRefPressure_.empty())
|
|
|
|
if (minRefPressure_.empty())
|
|
|
|
@@ -588,8 +594,9 @@ minOilPressure(unsigned globalDofIdx) const
|
|
|
|
return minRefPressure_[globalDofIdx];
|
|
|
|
return minRefPressure_[globalDofIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
overburdenPressure(unsigned elementIdx) const
|
|
|
|
overburdenPressure(unsigned elementIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (overburdenPressure_.empty())
|
|
|
|
if (overburdenPressure_.empty())
|
|
|
|
@@ -598,8 +605,9 @@ overburdenPressure(unsigned elementIdx) const
|
|
|
|
return overburdenPressure_[elementIdx];
|
|
|
|
return overburdenPressure_[elementIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
solventSaturation(unsigned elemIdx) const
|
|
|
|
solventSaturation(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (solventSaturation_.empty())
|
|
|
|
if (solventSaturation_.empty())
|
|
|
|
@@ -608,8 +616,9 @@ solventSaturation(unsigned elemIdx) const
|
|
|
|
return solventSaturation_[elemIdx];
|
|
|
|
return solventSaturation_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
solventRsw(unsigned elemIdx) const
|
|
|
|
solventRsw(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (solventRsw_.empty())
|
|
|
|
if (solventRsw_.empty())
|
|
|
|
@@ -618,16 +627,18 @@ solventRsw(unsigned elemIdx) const
|
|
|
|
return solventRsw_[elemIdx];
|
|
|
|
return solventRsw_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
drsdtcon(unsigned elemIdx, int episodeIdx) const
|
|
|
|
drsdtcon(unsigned elemIdx, int episodeIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this->mixControls_.drsdtcon(elemIdx, episodeIdx,
|
|
|
|
return this->mixControls_.drsdtcon(elemIdx, episodeIdx,
|
|
|
|
this->pvtRegionIndex(elemIdx));
|
|
|
|
this->pvtRegionIndex(elemIdx));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
polymerConcentration(unsigned elemIdx) const
|
|
|
|
polymerConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (polymer_.concentration.empty()) {
|
|
|
|
if (polymer_.concentration.empty()) {
|
|
|
|
@@ -637,8 +648,9 @@ polymerConcentration(unsigned elemIdx) const
|
|
|
|
return polymer_.concentration[elemIdx];
|
|
|
|
return polymer_.concentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
polymerMolecularWeight(const unsigned elemIdx) const
|
|
|
|
polymerMolecularWeight(const unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (polymer_.moleWeight.empty()) {
|
|
|
|
if (polymer_.moleWeight.empty()) {
|
|
|
|
@@ -648,8 +660,9 @@ polymerMolecularWeight(const unsigned elemIdx) const
|
|
|
|
return polymer_.moleWeight[elemIdx];
|
|
|
|
return polymer_.moleWeight[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
microbialConcentration(unsigned elemIdx) const
|
|
|
|
microbialConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (micp_.microbialConcentration.empty()) {
|
|
|
|
if (micp_.microbialConcentration.empty()) {
|
|
|
|
@@ -659,8 +672,9 @@ microbialConcentration(unsigned elemIdx) const
|
|
|
|
return micp_.microbialConcentration[elemIdx];
|
|
|
|
return micp_.microbialConcentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
oxygenConcentration(unsigned elemIdx) const
|
|
|
|
oxygenConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (micp_.oxygenConcentration.empty()) {
|
|
|
|
if (micp_.oxygenConcentration.empty()) {
|
|
|
|
@@ -670,8 +684,9 @@ oxygenConcentration(unsigned elemIdx) const
|
|
|
|
return micp_.oxygenConcentration[elemIdx];
|
|
|
|
return micp_.oxygenConcentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
ureaConcentration(unsigned elemIdx) const
|
|
|
|
ureaConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (micp_.ureaConcentration.empty()) {
|
|
|
|
if (micp_.ureaConcentration.empty()) {
|
|
|
|
@@ -681,8 +696,9 @@ ureaConcentration(unsigned elemIdx) const
|
|
|
|
return micp_.ureaConcentration[elemIdx];
|
|
|
|
return micp_.ureaConcentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
biofilmConcentration(unsigned elemIdx) const
|
|
|
|
biofilmConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (micp_.biofilmConcentration.empty()) {
|
|
|
|
if (micp_.biofilmConcentration.empty()) {
|
|
|
|
@@ -692,8 +708,9 @@ biofilmConcentration(unsigned elemIdx) const
|
|
|
|
return micp_.biofilmConcentration[elemIdx];
|
|
|
|
return micp_.biofilmConcentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
calciteConcentration(unsigned elemIdx) const
|
|
|
|
calciteConcentration(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (micp_.calciteConcentration.empty()) {
|
|
|
|
if (micp_.calciteConcentration.empty()) {
|
|
|
|
@@ -703,8 +720,8 @@ calciteConcentration(unsigned elemIdx) const
|
|
|
|
return micp_.calciteConcentration[elemIdx];
|
|
|
|
return micp_.calciteConcentration[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
pvtRegionIndex(unsigned elemIdx) const
|
|
|
|
pvtRegionIndex(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (pvtnum_.empty())
|
|
|
|
if (pvtnum_.empty())
|
|
|
|
@@ -713,8 +730,8 @@ pvtRegionIndex(unsigned elemIdx) const
|
|
|
|
return pvtnum_[elemIdx];
|
|
|
|
return pvtnum_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
satnumRegionIndex(unsigned elemIdx) const
|
|
|
|
satnumRegionIndex(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (satnum_.empty())
|
|
|
|
if (satnum_.empty())
|
|
|
|
@@ -723,8 +740,8 @@ satnumRegionIndex(unsigned elemIdx) const
|
|
|
|
return satnum_[elemIdx];
|
|
|
|
return satnum_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
miscnumRegionIndex(unsigned elemIdx) const
|
|
|
|
miscnumRegionIndex(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (miscnum_.empty())
|
|
|
|
if (miscnum_.empty())
|
|
|
|
@@ -733,8 +750,8 @@ miscnumRegionIndex(unsigned elemIdx) const
|
|
|
|
return miscnum_[elemIdx];
|
|
|
|
return miscnum_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
unsigned FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
plmixnumRegionIndex(unsigned elemIdx) const
|
|
|
|
plmixnumRegionIndex(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (plmixnum_.empty())
|
|
|
|
if (plmixnum_.empty())
|
|
|
|
@@ -743,8 +760,9 @@ plmixnumRegionIndex(unsigned elemIdx) const
|
|
|
|
return plmixnum_[elemIdx];
|
|
|
|
return plmixnum_[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
Scalar FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
typename FlowGenericProblem<GridView,FluidSystem>::Scalar
|
|
|
|
|
|
|
|
FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
maxPolymerAdsorption(unsigned elemIdx) const
|
|
|
|
maxPolymerAdsorption(unsigned elemIdx) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (polymer_.maxAdsorption.empty()) {
|
|
|
|
if (polymer_.maxAdsorption.empty()) {
|
|
|
|
@@ -754,8 +772,8 @@ maxPolymerAdsorption(unsigned elemIdx) const
|
|
|
|
return polymer_.maxAdsorption[elemIdx];
|
|
|
|
return polymer_.maxAdsorption[elemIdx];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template<class GridView, class FluidSystem, class Scalar>
|
|
|
|
template<class GridView, class FluidSystem>
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem,Scalar>::
|
|
|
|
bool FlowGenericProblem<GridView,FluidSystem>::
|
|
|
|
operator==(const FlowGenericProblem& rhs) const
|
|
|
|
operator==(const FlowGenericProblem& rhs) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this->maxWaterSaturation_ == rhs.maxWaterSaturation_ &&
|
|
|
|
return this->maxWaterSaturation_ == rhs.maxWaterSaturation_ &&
|
|
|
|
|