diff --git a/test/freeflow/rans/main.cc b/test/freeflow/rans/main.cc index a9fefc3c8127f6acbc72484b38d91909a577a859..2360d7879bc2560ba7af6f4cbebb71751335592a 100644 --- a/test/freeflow/rans/main.cc +++ b/test/freeflow/rans/main.cc @@ -45,7 +45,7 @@ #include <dumux/nonlinear/newtonsolver.hh> #include <dumux/discretization/method.hh> -#include "problem.hh" +#include "properties.hh" /*! * \brief Provides an interface for customizing error messages associated with diff --git a/test/freeflow/rans/problem.hh b/test/freeflow/rans/problem.hh index c491d35c813df29f2251b57b10898d915bc75213..2f1b519f7ad1c66c4331f905c307a7fe92e9891e 100644 --- a/test/freeflow/rans/problem.hh +++ b/test/freeflow/rans/problem.hh @@ -27,85 +27,12 @@ #ifndef DUMUX_PIPE_LAUFER_PROBLEM_HH #define DUMUX_PIPE_LAUFER_PROBLEM_HH -#include <dune/grid/yaspgrid.hh> - -#include <dumux/discretization/staggered/freeflow/properties.hh> - -#include <dumux/freeflow/navierstokes/boundarytypes.hh> -#include <dumux/freeflow/turbulenceproperties.hh> -#include <dumux/freeflow/turbulencemodel.hh> - +#include <dumux/common/properties.hh> #include <dumux/freeflow/rans/problem.hh> - -#include <dumux/freeflow/rans/oneeq/problem.hh> -#include <dumux/freeflow/rans/oneeq/model.hh> - -#include <dumux/freeflow/rans/twoeq/kepsilon/model.hh> -#include <dumux/freeflow/rans/twoeq/kepsilon/problem.hh> - -#include <dumux/freeflow/rans/twoeq/komega/model.hh> -#include <dumux/freeflow/rans/twoeq/komega/problem.hh> - -#include <dumux/freeflow/rans/twoeq/lowrekepsilon/problem.hh> -#include <dumux/freeflow/rans/twoeq/lowrekepsilon/model.hh> - -#include <dumux/freeflow/rans/zeroeq/model.hh> - -#include <dumux/material/components/air.hh> -#include <dumux/material/fluidsystems/1pgas.hh> +#include <dumux/freeflow/turbulencemodel.hh> namespace Dumux { -template <class TypeTag> -class PipeLauferProblem; - -namespace Properties { - -// Create new type tags -namespace TTag { -// Base Typetag -struct RANSModel { using InheritsFrom = std::tuple<StaggeredFreeFlowModel>; }; -// Isothermal Typetags -struct PipeLauferZeroEq { using InheritsFrom = std::tuple<RANSModel, ZeroEq>; }; -struct PipeLauferOneEq { using InheritsFrom = std::tuple<RANSModel, OneEq>; }; -struct PipeLauferKOmega { using InheritsFrom = std::tuple<RANSModel, KOmega>; }; -struct PipeLauferLowReKEpsilon { using InheritsFrom = std::tuple<RANSModel, LowReKEpsilon>; }; -struct PipeLauferKEpsilon { using InheritsFrom = std::tuple<RANSModel, KEpsilon>; }; -// Non-Isothermal Typetags -struct PipeLauferNIZeroEq { using InheritsFrom = std::tuple<RANSModel, ZeroEqNI>; }; -struct PipeLauferNIOneEq { using InheritsFrom = std::tuple<RANSModel, OneEqNI>; }; -struct PipeLauferNIKOmega { using InheritsFrom = std::tuple<RANSModel, KOmegaNI>; }; -struct PipeLauferNILowReKEpsilon { using InheritsFrom = std::tuple<RANSModel, LowReKEpsilonNI>; }; -struct PipeLauferNIKEpsilon { using InheritsFrom = std::tuple<RANSModel, KEpsilonNI>; }; -} // end namespace TTag - -// the fluid system -template<class TypeTag> -struct FluidSystem<TypeTag, TTag::RANSModel> -{ - using Scalar = GetPropType<TypeTag, Properties::Scalar>; - using type = FluidSystems::OnePGas<Scalar, Components::Air<Scalar> >; -}; - -// Set the grid type -template<class TypeTag> -struct Grid<TypeTag, TTag::RANSModel> -{ using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; }; - -// Set the problem property -template<class TypeTag> -struct Problem<TypeTag, TTag::RANSModel> -{ using type = Dumux::PipeLauferProblem<TypeTag>; }; - -template<class TypeTag> -struct EnableGridGeometryCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; - -template<class TypeTag> -struct EnableGridFluxVariablesCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; -template<class TypeTag> -struct EnableGridVolumeVariablesCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; -} // end namespace Properties - /*! * \ingroup NavierStokesTests * \brief Test problem for the one-phase (Navier-) Stokes problem in a channel. diff --git a/test/freeflow/rans/properties.hh b/test/freeflow/rans/properties.hh new file mode 100644 index 0000000000000000000000000000000000000000..da4473d01cb2e4e56c0b7d99796ad8899c8fbd9c --- /dev/null +++ b/test/freeflow/rans/properties.hh @@ -0,0 +1,98 @@ +// -*- 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 3 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 + * \ingroup RANSTests + * \brief Pipe flow test for the staggered grid RANS model + * + * This test simulates pipe flow experiments performed by John Laufer in 1954 + * \cite Laufer1954a. + */ +#ifndef DUMUX_PIPE_LAUFER_PROPERTIES_HH +#define DUMUX_PIPE_LAUFER_PROPERTIES_HH + +#include <dune/grid/yaspgrid.hh> + +#include <dumux/discretization/staggered/freeflow/properties.hh> +#include <dumux/material/components/air.hh> +#include <dumux/material/fluidsystems/1pgas.hh> +#include <dumux/freeflow/navierstokes/boundarytypes.hh> +#include <dumux/freeflow/turbulenceproperties.hh> +#include <dumux/freeflow/turbulencemodel.hh> + +#include <dumux/freeflow/rans/problem.hh> +#include <dumux/freeflow/rans/zeroeq/model.hh> +#include <dumux/freeflow/rans/oneeq/problem.hh> +#include <dumux/freeflow/rans/oneeq/model.hh> +#include <dumux/freeflow/rans/twoeq/kepsilon/model.hh> +#include <dumux/freeflow/rans/twoeq/kepsilon/problem.hh> +#include <dumux/freeflow/rans/twoeq/komega/model.hh> +#include <dumux/freeflow/rans/twoeq/komega/problem.hh> +#include <dumux/freeflow/rans/twoeq/lowrekepsilon/problem.hh> +#include <dumux/freeflow/rans/twoeq/lowrekepsilon/model.hh> + +#include "problem.hh" + +namespace Dumux::Properties { + +// Create new type tags +namespace TTag { +// Base Typetag +struct RANSModel { using InheritsFrom = std::tuple<StaggeredFreeFlowModel>; }; +// Isothermal Typetags +struct PipeLauferZeroEq { using InheritsFrom = std::tuple<RANSModel, ZeroEq>; }; +struct PipeLauferOneEq { using InheritsFrom = std::tuple<RANSModel, OneEq>; }; +struct PipeLauferKOmega { using InheritsFrom = std::tuple<RANSModel, KOmega>; }; +struct PipeLauferLowReKEpsilon { using InheritsFrom = std::tuple<RANSModel, LowReKEpsilon>; }; +struct PipeLauferKEpsilon { using InheritsFrom = std::tuple<RANSModel, KEpsilon>; }; +// Non-Isothermal Typetags +struct PipeLauferNIZeroEq { using InheritsFrom = std::tuple<RANSModel, ZeroEqNI>; }; +struct PipeLauferNIOneEq { using InheritsFrom = std::tuple<RANSModel, OneEqNI>; }; +struct PipeLauferNIKOmega { using InheritsFrom = std::tuple<RANSModel, KOmegaNI>; }; +struct PipeLauferNILowReKEpsilon { using InheritsFrom = std::tuple<RANSModel, LowReKEpsilonNI>; }; +struct PipeLauferNIKEpsilon { using InheritsFrom = std::tuple<RANSModel, KEpsilonNI>; }; +} // end namespace TTag + +// the fluid system +template<class TypeTag> +struct FluidSystem<TypeTag, TTag::RANSModel> +{ + using Scalar = GetPropType<TypeTag, Properties::Scalar>; + using type = FluidSystems::OnePGas<Scalar, Components::Air<Scalar> >; +}; + +// Set the grid type +template<class TypeTag> +struct Grid<TypeTag, TTag::RANSModel> +{ using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; }; + +// Set the problem property +template<class TypeTag> +struct Problem<TypeTag, TTag::RANSModel> +{ using type = Dumux::PipeLauferProblem<TypeTag>; }; + +template<class TypeTag> +struct EnableGridGeometryCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; +template<class TypeTag> +struct EnableGridFluxVariablesCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; +template<class TypeTag> +struct EnableGridVolumeVariablesCache<TypeTag, TTag::RANSModel> { static constexpr bool value = true; }; +} // end namespace Dumux::Properties + +#endif