From 168dfee8c049f94b19637ee65b4f75a5de7490f6 Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Tue, 10 Jul 2018 11:53:03 +0200 Subject: [PATCH] [fluidstate] state scalar type publicly --- dumux/material/fluidstates/2p2c.hh | 4 +++- dumux/material/fluidstates/compositional.hh | 5 ++++- dumux/material/fluidstates/immiscible.hh | 5 ++++- .../material/fluidstates/isothermalimmiscible.hh | 6 +++++- dumux/material/fluidstates/nonequilibrium.hh | 5 ++++- .../material/fluidstates/nonequilibriumenergy.hh | 9 ++++++--- dumux/material/fluidstates/nonequilibriummass.hh | 9 ++++++--- dumux/material/fluidstates/pressureoverlay.hh | 5 ++++- dumux/material/fluidstates/pseudo1p2c.hh | 7 +++++-- dumux/material/fluidstates/saturationoverlay.hh | 5 ++++- dumux/material/fluidstates/temperatureoverlay.hh | 5 ++++- test/material/fluidsystems/checkfluidsystem.hh | 15 ++++++--------- test/material/fluidsystems/test_fluidsystems.cc | 6 +++--- 13 files changed, 58 insertions(+), 28 deletions(-) diff --git a/dumux/material/fluidstates/2p2c.hh b/dumux/material/fluidstates/2p2c.hh index c628adde8c..1642a873a1 100644 --- a/dumux/material/fluidstates/2p2c.hh +++ b/dumux/material/fluidstates/2p2c.hh @@ -32,7 +32,7 @@ namespace Dumux { * sequential 2p2c model. * This boils down to so-called "flash calculation", in this case isothermal and isobaric. */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class TwoPTwoCFluidState { public: @@ -47,6 +47,8 @@ public: }; public: + //! export the scalar type + using Scalar = ScalarType; // comply with new style 2p2c models int wettingPhase() const diff --git a/dumux/material/fluidstates/compositional.hh b/dumux/material/fluidstates/compositional.hh index 35f58e3dc2..6a92bc71d4 100644 --- a/dumux/material/fluidstates/compositional.hh +++ b/dumux/material/fluidstates/compositional.hh @@ -40,13 +40,16 @@ namespace Dumux { * multi-phase, multi-component fluid system assuming * thermodynamic equilibrium. */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class CompositionalFluidState { public: enum { numPhases = FluidSystem::numPhases }; enum { numComponents = FluidSystem::numComponents }; + //! export the scalar type + using Scalar = ScalarType; + //! default constructor CompositionalFluidState() = default; diff --git a/dumux/material/fluidstates/immiscible.hh b/dumux/material/fluidstates/immiscible.hh index ec7b05b630..03f7d698c6 100644 --- a/dumux/material/fluidstates/immiscible.hh +++ b/dumux/material/fluidstates/immiscible.hh @@ -37,7 +37,7 @@ namespace Dumux { * multi-phase fluid system assuming immiscibility and * thermodynamic equilibrium. */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class ImmiscibleFluidState { public: @@ -47,6 +47,9 @@ public: "The number of phases must be equal to the number of " "components if immiscibility is assumed!"); + //! export the scalar type + using Scalar = ScalarType; + //! default constructor ImmiscibleFluidState() = default; diff --git a/dumux/material/fluidstates/isothermalimmiscible.hh b/dumux/material/fluidstates/isothermalimmiscible.hh index 6885d05baf..41d89e189b 100644 --- a/dumux/material/fluidstates/isothermalimmiscible.hh +++ b/dumux/material/fluidstates/isothermalimmiscible.hh @@ -37,11 +37,15 @@ namespace Dumux { * multi-phase fluid system assuming immiscibility and * thermodynamic equilibrium. */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class IsothermalImmiscibleFluidState { public: static constexpr int numPhases = FluidSystem::numPhases; + static constexpr int numComponents = FluidSystem::numComponents; + + //! export the scalar type + using Scalar = ScalarType; //! default constructor IsothermalImmiscibleFluidState() = default; diff --git a/dumux/material/fluidstates/nonequilibrium.hh b/dumux/material/fluidstates/nonequilibrium.hh index 0c1a34ad5f..879dd66232 100644 --- a/dumux/material/fluidstates/nonequilibrium.hh +++ b/dumux/material/fluidstates/nonequilibrium.hh @@ -38,13 +38,16 @@ namespace Dumux { * multi-phase, multi-component fluid system without using * any assumptions. */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class NonEquilibriumFluidState { public: static constexpr int numPhases = FluidSystem::numPhases; static constexpr int numComponents = FluidSystem::numComponents; + //! export the scalar type + using Scalar = ScalarType; + /***************************************************** * Generic access to fluid properties (No assumptions * on thermodynamic equilibrium required) diff --git a/dumux/material/fluidstates/nonequilibriumenergy.hh b/dumux/material/fluidstates/nonequilibriumenergy.hh index c9584df750..4c641647b6 100644 --- a/dumux/material/fluidstates/nonequilibriumenergy.hh +++ b/dumux/material/fluidstates/nonequilibriumenergy.hh @@ -40,15 +40,18 @@ namespace Dumux { * - local thermal non-equilibrium * - local chemical equilibrium */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class NonEquilibriumEnergyFluidState -: public NonEquilibriumFluidState<Scalar, FluidSystem> +: public NonEquilibriumFluidState<ScalarType, FluidSystem> { - using ParentType = NonEquilibriumFluidState<Scalar, FluidSystem>; + using ParentType = NonEquilibriumFluidState<ScalarType, FluidSystem>; public: enum { numPhases = FluidSystem::numPhases }; enum { numComponents = FluidSystem::numComponents }; + //! export the scalar type + using Scalar = ScalarType; + using ParentType::ParentType; /***************************************************** diff --git a/dumux/material/fluidstates/nonequilibriummass.hh b/dumux/material/fluidstates/nonequilibriummass.hh index c450d2fc3b..db4012bfaa 100644 --- a/dumux/material/fluidstates/nonequilibriummass.hh +++ b/dumux/material/fluidstates/nonequilibriummass.hh @@ -40,15 +40,18 @@ namespace Dumux { * - local thermal equilibrium * - local chemical non-equilibrium */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class NonEquilibriumMassFluidState -: public NonEquilibriumFluidState<Scalar, FluidSystem> +: public NonEquilibriumFluidState<ScalarType, FluidSystem> { - using ParentType = NonEquilibriumFluidState<Scalar, FluidSystem>; + using ParentType = NonEquilibriumFluidState<ScalarType, FluidSystem>; public: enum { numPhases = FluidSystem::numPhases }; enum { numComponents = FluidSystem::numComponents }; + //! export the scalar type + using Scalar = ScalarType; + using ParentType::ParentType; /***************************************************** diff --git a/dumux/material/fluidstates/pressureoverlay.hh b/dumux/material/fluidstates/pressureoverlay.hh index 5ee250deda..502a09ee6d 100644 --- a/dumux/material/fluidstates/pressureoverlay.hh +++ b/dumux/material/fluidstates/pressureoverlay.hh @@ -34,13 +34,16 @@ namespace Dumux { * pressures and takes all other quantities from an other * fluid state. */ -template <class Scalar, class FluidState> +template <class FluidState> class PressureOverlayFluidState { public: enum { numPhases = FluidState::numPhases }; enum { numComponents = FluidState::numComponents }; + //! export the scalar type + using Scalar = typename FluidState::Scalar; + /*! * \brief Constructor * diff --git a/dumux/material/fluidstates/pseudo1p2c.hh b/dumux/material/fluidstates/pseudo1p2c.hh index 81213dd393..cd33f6fd46 100644 --- a/dumux/material/fluidstates/pseudo1p2c.hh +++ b/dumux/material/fluidstates/pseudo1p2c.hh @@ -39,7 +39,7 @@ namespace Dumux { * The "flash" calculation routines are in the sequential flash constrain solver, see * CompositionalFlash . */ -template <class Scalar, class FluidSystem> +template <class ScalarType, class FluidSystem> class PseudoOnePTwoCFluidState { @@ -48,6 +48,10 @@ public: numPhases = FluidSystem::numPhases, numComponents = FluidSystem::numComponents }; + + //! export the scalar type + using Scalar = ScalarType; + enum { phase0Idx = FluidSystem::phase0Idx, phase1Idx = FluidSystem::phase1Idx, @@ -56,7 +60,6 @@ public: comp1Idx = FluidSystem::comp1Idx }; -public: /*! \name Acess functions */ //@{ /*! diff --git a/dumux/material/fluidstates/saturationoverlay.hh b/dumux/material/fluidstates/saturationoverlay.hh index c3d2f81a9d..f930a77caf 100644 --- a/dumux/material/fluidstates/saturationoverlay.hh +++ b/dumux/material/fluidstates/saturationoverlay.hh @@ -34,13 +34,16 @@ namespace Dumux { * saturations and takes all other quantities from an other * fluid state. */ -template <class Scalar, class FluidState> +template <class FluidState> class SaturationOverlayFluidState { public: enum { numPhases = FluidState::numPhases }; enum { numComponents = FluidState::numComponents }; + //! export the scalar type + using Scalar = typename FluidState::Scalar; + /*! * \brief Constructor * diff --git a/dumux/material/fluidstates/temperatureoverlay.hh b/dumux/material/fluidstates/temperatureoverlay.hh index 65d52b8724..28e37dbe7a 100644 --- a/dumux/material/fluidstates/temperatureoverlay.hh +++ b/dumux/material/fluidstates/temperatureoverlay.hh @@ -34,13 +34,16 @@ namespace Dumux { * temperatures and takes all other quantities from an other * fluid state. */ -template <class Scalar, class FluidState> +template <class FluidState> class TemperatureOverlayFluidState { public: enum { numPhases = FluidState::numPhases }; enum { numComponents = FluidState::numComponents }; + //! export the scalar type + using Scalar = typename FluidState::Scalar; + /*! * \brief Constructor * diff --git a/test/material/fluidsystems/checkfluidsystem.hh b/test/material/fluidsystems/checkfluidsystem.hh index dff2e241e4..7f8bb33017 100644 --- a/test/material/fluidsystems/checkfluidsystem.hh +++ b/test/material/fluidsystems/checkfluidsystem.hh @@ -64,18 +64,15 @@ namespace Dumux /*! \brief This fluid state ensures that only the allowed quantities * are accessed */ -template<class Scalar, class FluidSystem, class BaseFluidState = CompositionalFluidState<Scalar, FluidSystem> > +template<class ScalarType, class FluidSystem, class BaseFluidState = CompositionalFluidState<ScalarType, FluidSystem> > class HairSplittingFluidState: protected BaseFluidState { public: - enum - { - numPhases = FluidSystem::numPhases - }; - enum - { - numComponents = FluidSystem::numComponents - }; + //! export the type used for scalars + using typename BaseFluidState::Scalar; + + static constexpr int numPhases = FluidSystem::numPhases; + static constexpr int numComponents = FluidSystem::numComponents; HairSplittingFluidState() { diff --git a/test/material/fluidsystems/test_fluidsystems.cc b/test/material/fluidsystems/test_fluidsystems.cc index 469a983cc3..8d53730d4d 100644 --- a/test/material/fluidsystems/test_fluidsystems.cc +++ b/test/material/fluidsystems/test_fluidsystems.cc @@ -104,15 +104,15 @@ int main() success += checkFluidState<Scalar>(nonEquilibriumMassFluidState); // PressureOverlayFluidState - PressureOverlayFluidState<Scalar, BaseFluidState> pressureOverlayFluidState(baseFs); + PressureOverlayFluidState<BaseFluidState> pressureOverlayFluidState(baseFs); success += checkFluidState<Scalar>(pressureOverlayFluidState); // SaturationOverlayFluidState - SaturationOverlayFluidState<Scalar, BaseFluidState> saturationOverlayFluidState(baseFs); + SaturationOverlayFluidState<BaseFluidState> saturationOverlayFluidState(baseFs); success += checkFluidState<Scalar>(saturationOverlayFluidState); // TemperatureOverlayFluidState - TemperatureOverlayFluidState<Scalar, BaseFluidState> temperatureOverlayFluidState(baseFs); + TemperatureOverlayFluidState<BaseFluidState> temperatureOverlayFluidState(baseFs); success += checkFluidState<Scalar>(temperatureOverlayFluidState); } -- GitLab