From 2b60f3e4e5ff0dcfbf074b463d779f13909aa514 Mon Sep 17 00:00:00 2001 From: Maziar Veyskarami <maziar.veyskarami@iws.uni-stuttgart.de> Date: Fri, 3 Apr 2020 15:36:16 +0200 Subject: [PATCH] [ex-fluidsystem-solution][propertiesheader] move properties to property header for 2p case --- .../exercise-fluidsystem/2pproblem.hh | 77 +------------- .../exercise-fluidsystem/2pproperties.hh | 100 ++++++++++++++++++ .../solution/exercise-fluidsystem/main.cc | 2 +- 3 files changed, 105 insertions(+), 74 deletions(-) create mode 100644 exercises/solution/exercise-fluidsystem/2pproperties.hh diff --git a/exercises/solution/exercise-fluidsystem/2pproblem.hh b/exercises/solution/exercise-fluidsystem/2pproblem.hh index 228a212d..f4608455 100644 --- a/exercises/solution/exercise-fluidsystem/2pproblem.hh +++ b/exercises/solution/exercise-fluidsystem/2pproblem.hh @@ -24,88 +24,18 @@ #ifndef DUMUX_EXERCISE_FLUIDSYSTEM_A_PROBLEM_HH #define DUMUX_EXERCISE_FLUIDSYSTEM_A_PROBLEM_HH -// The grid manager -#include <dune/grid/yaspgrid.hh> - -// The numerical model -#include <dumux/porousmediumflow/2p/model.hh> - -// The box discretization -#include <dumux/discretization/box.hh> - // The porous media base problem #include <dumux/porousmediumflow/problem.hh> - -// Spatially dependent parameters -#include "spatialparams.hh" +#include <dumux/common/properties.hh> // The water component #include <dumux/material/components/tabulatedcomponent.hh> #include <dumux/material/components/h2o.hh> -// The components that will be created in this exercise -#include "components/myincompressiblecomponent.hh" -#include "components/mycompressiblecomponent.hh" - -// We will only have liquid phases here -#include <dumux/material/fluidsystems/1pliquid.hh> - -// The two-phase immiscible fluid system -#include <dumux/material/fluidsystems/2pimmiscible.hh> - // The interface to create plots during simulation #include <dumux/io/gnuplotinterface.hh> -namespace Dumux{ -// Forward declaration of the problem class -template <class TypeTag> class ExerciseFluidsystemProblemTwoP; - -namespace Properties { -// Create a new type tag for the problem -// Create new type tags -namespace TTag { -struct ExerciseFluidsystemTwoP { using InheritsFrom = std::tuple<TwoP, BoxModel>; }; -} // end namespace TTag - -// Set the "Problem" property -template<class TypeTag> -struct Problem<TypeTag, TTag::ExerciseFluidsystemTwoP> { using type = ExerciseFluidsystemProblemTwoP<TypeTag>; }; - -// Set the spatial parameters -template<class TypeTag> -struct SpatialParams<TypeTag, TTag::ExerciseFluidsystemTwoP> -{ -private: - using FVGridGeometry = GetPropType<TypeTag, Properties::GridGeometry>; - using Scalar = GetPropType<TypeTag, Properties::Scalar>; -public: - using type = ExerciseFluidsystemSpatialParams<FVGridGeometry, Scalar>; -}; - -// Set grid to be used -template<class TypeTag> -struct Grid<TypeTag, TTag::ExerciseFluidsystemTwoP> { using type = Dune::YaspGrid<2>; }; - -// we use the immiscible fluid system here -template<class TypeTag> -struct FluidSystem<TypeTag, TTag::ExerciseFluidsystemTwoP> -{ -private: - using Scalar = GetPropType<TypeTag, Properties::Scalar>; - using TabulatedH2O = Components::TabulatedComponent<Components::H2O<Scalar>>; - using LiquidWater = typename FluidSystems::OnePLiquid<Scalar, TabulatedH2O>; - /*! - * Uncomment first line and comment second line for using the incompressible component - * Uncomment second line and comment first line for using the compressible component - */ - using LiquidMyComponentPhase = typename FluidSystems::OnePLiquid<Scalar, MyIncompressibleComponent<Scalar> >; - // using LiquidMyComponentPhase = typename FluidSystems::OnePLiquid<Scalar, MyCompressibleComponent<Scalar> >; - -public: - using type = typename FluidSystems::TwoPImmiscible<Scalar, LiquidWater, LiquidMyComponentPhase>; -}; - -} +namespace Dumux { /*! * \ingroup TwoPBoxModel @@ -320,6 +250,7 @@ private: Scalar depthBOR_; //! depth at the bottom of the reservoir Dumux::GnuplotInterface<double> gnuplot_; //! collects data for plotting }; -} + +} // end namespace Dumux #endif diff --git a/exercises/solution/exercise-fluidsystem/2pproperties.hh b/exercises/solution/exercise-fluidsystem/2pproperties.hh new file mode 100644 index 00000000..66aaf11b --- /dev/null +++ b/exercises/solution/exercise-fluidsystem/2pproperties.hh @@ -0,0 +1,100 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief The properties file for two phase exercise-fluidsystem. + */ +#ifndef DUMUX_EXERCISE_FLUIDSYSTEM_A_PROPERTIES_HH +#define DUMUX_EXERCISE_FLUIDSYSTEM_A_PROPERTIES_HH + +// The grid manager +#include <dune/grid/yaspgrid.hh> + +// The numerical model +#include <dumux/porousmediumflow/2p/model.hh> + +// The box discretization +#include <dumux/discretization/box.hh> + +// Spatially dependent parameters +#include "spatialparams.hh" + +// The components that will be created in this exercise +#include "components/myincompressiblecomponent.hh" +#include "components/mycompressiblecomponent.hh" + +// We will only have liquid phases here +#include <dumux/material/fluidsystems/1pliquid.hh> + +// The two-phase immiscible fluid system +#include <dumux/material/fluidsystems/2pimmiscible.hh> + +// The problem file, where setup-specific boundary and initial conditions are defined. +#include"2pproblem.hh" + +namespace Dumux::Properties { + +// Create a new type tag for the problem +// Create new type tags +namespace TTag { +struct ExerciseFluidsystemTwoP { using InheritsFrom = std::tuple<TwoP, BoxModel>; }; +} // end namespace TTag + +// Set the "Problem" property +template<class TypeTag> +struct Problem<TypeTag, TTag::ExerciseFluidsystemTwoP> { using type = ExerciseFluidsystemProblemTwoP<TypeTag>; }; + +// Set the spatial parameters +template<class TypeTag> +struct SpatialParams<TypeTag, TTag::ExerciseFluidsystemTwoP> +{ +private: + using FVGridGeometry = GetPropType<TypeTag, Properties::GridGeometry>; + using Scalar = GetPropType<TypeTag, Properties::Scalar>; +public: + using type = ExerciseFluidsystemSpatialParams<FVGridGeometry, Scalar>; +}; + +// Set grid to be used +template<class TypeTag> +struct Grid<TypeTag, TTag::ExerciseFluidsystemTwoP> { using type = Dune::YaspGrid<2>; }; + +// we use the immiscible fluid system here +template<class TypeTag> +struct FluidSystem<TypeTag, TTag::ExerciseFluidsystemTwoP> +{ +private: + using Scalar = GetPropType<TypeTag, Properties::Scalar>; + using TabulatedH2O = Components::TabulatedComponent<Components::H2O<Scalar>>; + using LiquidWater = typename FluidSystems::OnePLiquid<Scalar, TabulatedH2O>; + /*! + * Uncomment first line and comment second line for using the incompressible component + * Uncomment second line and comment first line for using the compressible component + */ + using LiquidMyComponentPhase = typename FluidSystems::OnePLiquid<Scalar, MyIncompressibleComponent<Scalar> >; + // using LiquidMyComponentPhase = typename FluidSystems::OnePLiquid<Scalar, MyCompressibleComponent<Scalar> >; + +public: + using type = typename FluidSystems::TwoPImmiscible<Scalar, LiquidWater, LiquidMyComponentPhase>; +}; + +} // end namespace Dumux::Properties + +#endif diff --git a/exercises/solution/exercise-fluidsystem/main.cc b/exercises/solution/exercise-fluidsystem/main.cc index 23e72785..16133e90 100644 --- a/exercises/solution/exercise-fluidsystem/main.cc +++ b/exercises/solution/exercise-fluidsystem/main.cc @@ -32,7 +32,7 @@ #include <dune/grid/io/file/vtk.hh> #include <dune/istl/io.hh> -#include "2pproblem.hh" +#include "2pproperties.hh" #include "2p2cproblem.hh" #include <dumux/common/properties.hh> -- GitLab