BlackOilSolventModules: use if constexpr

This commit is contained in:
Arne Morten Kvarving 2022-08-09 09:08:02 +02:00
parent 04c8d8f232
commit 45b2898c6e

View File

@ -469,10 +469,7 @@ public:
*/ */
static void registerParameters() static void registerParameters()
{ {
if (!enableSolvent) if constexpr (enableSolvent)
// solvents have disabled at compile time
return;
VtkBlackOilSolventModule<TypeTag>::registerParameters(); VtkBlackOilSolventModule<TypeTag>::registerParameters();
} }
@ -482,20 +479,16 @@ public:
static void registerOutputModules(Model& model, static void registerOutputModules(Model& model,
Simulator& simulator) Simulator& simulator)
{ {
if (!enableSolvent) if constexpr (enableSolvent)
// solvents have disabled at compile time
return;
model.addOutputModule(new VtkBlackOilSolventModule<TypeTag>(simulator)); model.addOutputModule(new VtkBlackOilSolventModule<TypeTag>(simulator));
} }
static bool primaryVarApplies(unsigned pvIdx) static bool primaryVarApplies(unsigned pvIdx)
{ {
if (!enableSolvent) if constexpr (enableSolvent)
// solvents have disabled at compile time
return false;
return pvIdx == solventSaturationIdx; return pvIdx == solventSaturationIdx;
else
return false;
} }
static std::string primaryVarName([[maybe_unused]] unsigned pvIdx) static std::string primaryVarName([[maybe_unused]] unsigned pvIdx)
@ -515,10 +508,10 @@ public:
static bool eqApplies(unsigned eqIdx) static bool eqApplies(unsigned eqIdx)
{ {
if (!enableSolvent) if constexpr (enableSolvent)
return false;
return eqIdx == contiSolventEqIdx; return eqIdx == contiSolventEqIdx;
else
return false;
} }
static std::string eqName([[maybe_unused]] unsigned eqIdx) static std::string eqName([[maybe_unused]] unsigned eqIdx)
@ -540,10 +533,8 @@ public:
static void addStorage(Dune::FieldVector<LhsEval, numEq>& storage, static void addStorage(Dune::FieldVector<LhsEval, numEq>& storage,
const IntensiveQuantities& intQuants) const IntensiveQuantities& intQuants)
{ {
if (!enableSolvent) if constexpr (enableSolvent) {
return; if constexpr (blackoilConserveSurfaceVolume) {
if (blackoilConserveSurfaceVolume) {
storage[contiSolventEqIdx] += storage[contiSolventEqIdx] +=
Toolbox::template decay<LhsEval>(intQuants.porosity()) Toolbox::template decay<LhsEval>(intQuants.porosity())
* Toolbox::template decay<LhsEval>(intQuants.solventSaturation()) * Toolbox::template decay<LhsEval>(intQuants.solventSaturation())
@ -556,23 +547,22 @@ public:
* Toolbox::template decay<LhsEval>(intQuants.solventDensity()); * Toolbox::template decay<LhsEval>(intQuants.solventDensity());
} }
} }
}
static void computeFlux(RateVector& flux, static void computeFlux([[maybe_unused]] RateVector& flux,
const ElementContext& elemCtx, [[maybe_unused]] const ElementContext& elemCtx,
unsigned scvfIdx, [[maybe_unused]] unsigned scvfIdx,
unsigned timeIdx) [[maybe_unused]] unsigned timeIdx)
{ {
if (!enableSolvent) if constexpr (enableSolvent) {
return;
const auto& extQuants = elemCtx.extensiveQuantities(scvfIdx, timeIdx); const auto& extQuants = elemCtx.extensiveQuantities(scvfIdx, timeIdx);
unsigned upIdx = extQuants.solventUpstreamIndex(); unsigned upIdx = extQuants.solventUpstreamIndex();
unsigned inIdx = extQuants.interiorIndex(); unsigned inIdx = extQuants.interiorIndex();
const auto& up = elemCtx.intensiveQuantities(upIdx, timeIdx); const auto& up = elemCtx.intensiveQuantities(upIdx, timeIdx);
if (blackoilConserveSurfaceVolume) { if constexpr (blackoilConserveSurfaceVolume) {
if (upIdx == inIdx) if (upIdx == inIdx)
flux[contiSolventEqIdx] = flux[contiSolventEqIdx] =
extQuants.solventVolumeFlux() extQuants.solventVolumeFlux()
@ -593,6 +583,7 @@ public:
*decay<Scalar>(up.solventDensity()); *decay<Scalar>(up.solventDensity());
} }
} }
}
/*! /*!
* \brief Assign the solvent specific primary variables to a PrimaryVariables object * \brief Assign the solvent specific primary variables to a PrimaryVariables object
@ -600,9 +591,7 @@ public:
static void assignPrimaryVars(PrimaryVariables& priVars, static void assignPrimaryVars(PrimaryVariables& priVars,
Scalar solventSaturation) Scalar solventSaturation)
{ {
if (!enableSolvent) if constexpr (enableSolvent)
return;
priVars[solventSaturationIdx] = solventSaturation; priVars[solventSaturationIdx] = solventSaturation;
} }
@ -613,9 +602,7 @@ public:
const PrimaryVariables& oldPv, const PrimaryVariables& oldPv,
const EqVector& delta) const EqVector& delta)
{ {
if (!enableSolvent) if constexpr (enableSolvent)
return;
// do a plain unchopped Newton update // do a plain unchopped Newton update
newPv[solventSaturationIdx] = oldPv[solventSaturationIdx] - delta[solventSaturationIdx]; newPv[solventSaturationIdx] = oldPv[solventSaturationIdx] - delta[solventSaturationIdx];
} }
@ -644,21 +631,18 @@ public:
template <class DofEntity> template <class DofEntity>
static void serializeEntity(const Model& model, std::ostream& outstream, const DofEntity& dof) static void serializeEntity(const Model& model, std::ostream& outstream, const DofEntity& dof)
{ {
if (!enableSolvent) if constexpr (enableSolvent) {
return;
unsigned dofIdx = model.dofMapper().index(dof); unsigned dofIdx = model.dofMapper().index(dof);
const PrimaryVariables& priVars = model.solution(/*timeIdx=*/0)[dofIdx]; const PrimaryVariables& priVars = model.solution(/*timeIdx=*/0)[dofIdx];
outstream << priVars[solventSaturationIdx]; outstream << priVars[solventSaturationIdx];
} }
}
template <class DofEntity> template <class DofEntity>
static void deserializeEntity(Model& model, std::istream& instream, const DofEntity& dof) static void deserializeEntity(Model& model, std::istream& instream, const DofEntity& dof)
{ {
if (!enableSolvent) if constexpr (enableSolvent) {
return;
unsigned dofIdx = model.dofMapper().index(dof); unsigned dofIdx = model.dofMapper().index(dof);
PrimaryVariables& priVars0 = model.solution(/*timeIdx=*/0)[dofIdx]; PrimaryVariables& priVars0 = model.solution(/*timeIdx=*/0)[dofIdx];
@ -669,6 +653,7 @@ public:
// set the primary variables for the beginning of the current time step. // set the primary variables for the beginning of the current time step.
priVars1 = priVars0[solventSaturationIdx]; priVars1 = priVars0[solventSaturationIdx];
} }
}
static const SolventPvt& solventPvt() static const SolventPvt& solventPvt()
{ return solventPvt_; } { return solventPvt_; }