mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
BlackOilSolventModules: use if constexpr
This commit is contained in:
parent
04c8d8f232
commit
45b2898c6e
@ -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_; }
|
||||||
|
Loading…
Reference in New Issue
Block a user