From fab0a5cc0d8cf7491ea642f9bdf432345de11786 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 7 Aug 2024 12:40:34 +0200 Subject: [PATCH] BlackOilIndices: use constexpr --- opm/models/blackoil/blackoilindices.hh | 101 +++++++++++++------------ 1 file changed, 54 insertions(+), 47 deletions(-) diff --git a/opm/models/blackoil/blackoilindices.hh b/opm/models/blackoil/blackoilindices.hh index e5616b12b..8350373d0 100644 --- a/opm/models/blackoil/blackoilindices.hh +++ b/opm/models/blackoil/blackoilindices.hh @@ -35,55 +35,63 @@ namespace Opm { * * \brief The primary variable and equation indices for the black-oil model. */ -template +template struct BlackOilIndices { //! Number of phases active at all times - static const int numPhases = 3; + static constexpr int numPhases = 3; //! All phases are enabled - static const bool oilEnabled = true; - static const bool waterEnabled = true; - static const bool gasEnabled = true; + static constexpr bool oilEnabled = true; + static constexpr bool waterEnabled = true; + static constexpr bool gasEnabled = true; //! Are solvents involved? - static const bool enableSolvent = numSolventsV > 0; + static constexpr bool enableSolvent = numSolventsV > 0; //! Is extbo invoked? - static const bool enableExtbo = numExtbosV > 0; + static constexpr bool enableExtbo = numExtbosV > 0; //! Are polymers involved? - static const bool enablePolymer = numPolymersV > 0; + static constexpr bool enablePolymer = numPolymersV > 0; //! Shall energy be conserved? - static const bool enableEnergy = numEnergyV > 0; + static constexpr bool enableEnergy = numEnergyV > 0; //! Is MICP involved? - static const bool enableMICP = numMICPsV > 0; + static constexpr bool enableMICP = numMICPsV > 0; //! Number of solvent components to be considered - static const int numSolvents = enableSolvent ? numSolventsV : 0; + static constexpr int numSolvents = enableSolvent ? numSolventsV : 0; //! Number of components to be considered for extbo - static const int numExtbos = enableExtbo ? numExtbosV : 0; + static constexpr int numExtbos = enableExtbo ? numExtbosV : 0; //! Number of polymer components to be considered - static const int numPolymers = enablePolymer ? numPolymersV : 0; + static constexpr int numPolymers = enablePolymer ? numPolymersV : 0; //! Number of energy equations to be considered - static const int numEnergy = enableEnergy ? numEnergyV : 0; + static constexpr int numEnergy = enableEnergy ? numEnergyV : 0; //! Number of foam equations to be considered - static const int numFoam = enableFoam? 1 : 0; + static constexpr int numFoam = enableFoam? 1 : 0; //! Number of salt equations to be considered - static const int numBrine = enableBrine? 1 : 0; + static constexpr int numBrine = enableBrine? 1 : 0; //! Number of MICP components to be considered - static const int numMICPs = enableMICP ? numMICPsV : 0; + static constexpr int numMICPs = enableMICP ? numMICPsV : 0; //! The number of equations - static const int numEq = numPhases + numSolvents + numExtbos + numPolymers + numEnergy + numFoam + numBrine + numMICPs; + static constexpr int numEq = numPhases + numSolvents + numExtbos + numPolymers + + numEnergy + numFoam + numBrine + numMICPs; //! \brief returns the index of "active" component static constexpr unsigned canonicalToActiveComponentIndex(unsigned compIdx) @@ -102,7 +110,7 @@ struct BlackOilIndices * Depending on the phases present, this variable is either interpreted as * water saturation or vapporized water in gas phase */ - static const int waterSwitchIdx = PVOffset + 0; + static constexpr int waterSwitchIdx = PVOffset + 0; /*! * \brief Index of the switching variable which determines the pressure @@ -110,7 +118,7 @@ struct BlackOilIndices * Depending on the phases present, this variable is either interpreted as the * pressure of the oil phase, gas phase (if no oil) or water phase (if only water) */ - static const int pressureSwitchIdx = PVOffset + 1; + static constexpr int pressureSwitchIdx = PVOffset + 1; /*! * \brief Index of the switching variable which determines the composition of the @@ -120,54 +128,54 @@ struct BlackOilIndices * saturation of the gas phase, as the mole fraction of the gas component in the oil * phase or as the mole fraction of the oil component in the gas phase. */ - static const int compositionSwitchIdx = PVOffset + 2; + static constexpr int compositionSwitchIdx = PVOffset + 2; //! Index of the primary variable for the first solvent - static const int solventSaturationIdx = + static constexpr int solventSaturationIdx = enableSolvent ? PVOffset + numPhases : -1000; //! Index of the primary variable for the first extbo component - static const int zFractionIdx = + static constexpr int zFractionIdx = enableExtbo ? PVOffset + numPhases + numSolvents : -1000; //! Index of the primary variable for the first polymer - static const int polymerConcentrationIdx = + static constexpr int polymerConcentrationIdx = enablePolymer ? PVOffset + numPhases + numSolvents : -1000; //! Index of the primary variable for the second polymer primary variable (molecular weight) - static const int polymerMoleWeightIdx = + static constexpr int polymerMoleWeightIdx = numPolymers > 1 ? polymerConcentrationIdx + 1 : -1000; //! Index of the primary variable for the first MICP component - static const int microbialConcentrationIdx = + static constexpr int microbialConcentrationIdx = enableMICP ? PVOffset + numPhases + numSolvents : -1000; //! Index of the primary variable for the second MICP component - static const int oxygenConcentrationIdx = + static constexpr int oxygenConcentrationIdx = numMICPs > 1 ? microbialConcentrationIdx + 1 : -1000; //! Index of the primary variable for the third MICP component - static const int ureaConcentrationIdx = + static constexpr int ureaConcentrationIdx = numMICPs > 2 ? oxygenConcentrationIdx + 1 : -1000; //! Index of the primary variable for the fourth MICP component - static const int biofilmConcentrationIdx = + static constexpr int biofilmConcentrationIdx = numMICPs > 3 ? ureaConcentrationIdx + 1 : -1000; //! Index of the primary variable for the fifth MICP component - static const int calciteConcentrationIdx = + static constexpr int calciteConcentrationIdx = numMICPs > 4 ? biofilmConcentrationIdx + 1 : -1000; //! Index of the primary variable for the foam - static const int foamConcentrationIdx = + static constexpr int foamConcentrationIdx = enableFoam ? PVOffset + numPhases + numSolvents + numExtbos + numPolymers + numMICPs : -1000; //! Index of the primary variable for the brine - static const int saltConcentrationIdx = + static constexpr int saltConcentrationIdx = enableBrine ? PVOffset + numPhases + numSolvents + numExtbos + numExtbos + numPolymers + numMICPs + numFoam : -1000; //! Index of the primary variable for temperature - static const int temperatureIdx = + static constexpr int temperatureIdx = enableEnergy ? PVOffset + numPhases + numSolvents + numExtbos + numPolymers + numMICPs + numFoam + numBrine : - 1000; @@ -176,56 +184,55 @@ struct BlackOilIndices //////// //! Index of the continuity equation of the first phase - static const int conti0EqIdx = PVOffset + 0; + static constexpr int conti0EqIdx = PVOffset + 0; // two continuity equations follow //! Index of the continuity equation for the first solvent component - static const int contiSolventEqIdx = + static constexpr int contiSolventEqIdx = enableSolvent ? PVOffset + numPhases : -1000; //! Index of the continuity equation for the first extbo component - static const int contiZfracEqIdx = + static constexpr int contiZfracEqIdx = enableExtbo ? PVOffset + numPhases + numSolvents : -1000; //! Index of the continuity equation for the first polymer component - static const int contiPolymerEqIdx = + static constexpr int contiPolymerEqIdx = enablePolymer ? PVOffset + numPhases + numSolvents + numExtbos : -1000; //! Index of the continuity equation for the second polymer component (molecular weight) - static const int contiPolymerMWEqIdx = + static constexpr int contiPolymerMWEqIdx = numPolymers > 1 ? contiPolymerEqIdx + 1 : -1000; //! Index of the continuity equation for the first MICP component - static const int contiMicrobialEqIdx = + static constexpr int contiMicrobialEqIdx = enableMICP ? PVOffset + numPhases + numSolvents + numExtbos : -1000; //! Index of the continuity equation for the second MICP component - static const int contiOxygenEqIdx = + static constexpr int contiOxygenEqIdx = numMICPs > 1 ? contiMicrobialEqIdx + 1 : -1000; //! Index of the continuity equation for the third MICP component - static const int contiUreaEqIdx = + static constexpr int contiUreaEqIdx = numMICPs > 2 ? contiOxygenEqIdx + 1 : -1000; //! Index of the continuity equation for the fourth MICP component - static const int contiBiofilmEqIdx = + static constexpr int contiBiofilmEqIdx = numMICPs > 3 ? contiUreaEqIdx + 1 : -1000; //! Index of the continuity equation for the fifth MICP component - static const int contiCalciteEqIdx = + static constexpr int contiCalciteEqIdx = numMICPs > 4 ? contiBiofilmEqIdx + 1 : -1000; //! Index of the continuity equation for the foam component - static const int contiFoamEqIdx = + static constexpr int contiFoamEqIdx = enableFoam ? PVOffset + numPhases + numSolvents + numExtbos + numPolymers + numMICPs : -1000; //! Index of the continuity equation for the salt water component - static const int contiBrineEqIdx = + static constexpr int contiBrineEqIdx = enableBrine ? PVOffset + numPhases + numSolvents + numExtbos + numPolymers + numMICPs + numFoam : -1000; - //! Index of the continuity equation for energy - static const int contiEnergyEqIdx = + static constexpr int contiEnergyEqIdx = enableEnergy ? PVOffset + numPhases + numSolvents + numExtbos + numPolymers + numMICPs + numFoam + numBrine: -1000; };