Commit 60ac7781 authored by Timo Koch's avatar Timo Koch
Browse files

[test][md][boundary] Separate properties into header

parent 17cd0b13
......@@ -24,7 +24,10 @@
#include <config.h>
#include <ctime>
#ifndef DOMAINSPLIT
#define DOMAINSPLIT 0
#endif
#include <iostream>
#include <fstream>
......@@ -34,86 +37,21 @@
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/common/dumuxmessage.hh>
#include <dumux/linear/seqsolverbackend.hh>
#include <dumux/assembly/diffmethod.hh>
#include <dumux/discretization/method.hh>
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager.hh>
#include <dumux/porousmediumflow/1p/model.hh>
#include <dumux/material/components/simpleh2o.hh>
#include <dumux/material/fluidsystems/1pliquid.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh>
#include <dumux/io/grid/gridmanager_yasp.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/newtonsolver.hh>
#include <dumux/multidomain/boundary/darcydarcy/couplingmanager.hh>
#include "problem.hh"
#ifndef DOMAINSPLIT
#define DOMAINSPLIT 0
#endif
namespace Dumux {
namespace Properties {
// Create new type tags
namespace TTag {
struct OnePSub { using InheritsFrom = std::tuple<OneP, CCTpfaModel>; };
// differentiate between the two subproblems
struct OnePSub0 { using InheritsFrom = std::tuple<OnePSub>; };
struct OnePSub1 { using InheritsFrom = std::tuple<OnePSub>; };
} // end namespace TTag
// the coupling manager
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::OnePSub>
{ using type = DarcyDarcyBoundaryCouplingManager<MultiDomainTraits<Properties::TTag::OnePSub0, Properties::TTag::OnePSub1>>; };
// Set the grid type
#if DOMAINSPLIT==1
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = Dune::SubGrid<HostGrid::dimension, HostGrid>;
};
#elif DOMAINSPLIT==0
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = HostGrid;
};
#include <dumux/io/grid/gridmanager_sub.hh>
#endif
// set the spatial params
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::OnePSub>
{
using type = OnePTestSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
GetPropType<TypeTag, Properties::Scalar>>;
};
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/newtonsolver.hh>
// the fluid system
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
};
// differentiate between the two subproblems
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub0> { using type = OnePTestProblem<TypeTag, 0>; };
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub1> { using type = OnePTestProblem<TypeTag, 1>; };
} // end namespace Properties
} // end namespace Dumux
#include "properties.hh"
int main(int argc, char** argv)
{
......
......@@ -26,9 +26,12 @@
#define DUMUX_ONEP_SUB_TEST_PROBLEM_HH
#include <dune/common/indices.hh>
#include <dumux/common/boundarytypes.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/porousmediumflow/problem.hh>
#include "spatialparams.hh"
namespace Dumux {
......
// -*- 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 BoundaryTests
* \brief The properties for the incompressible test
*/
#ifndef DUMUX_ONEP_SUB_TEST_PROPERTIES_HH
#define DUMUX_ONEP_SUB_TEST_PROPERTIES_HH
#include <dumux/common/properties.hh>
#include <dumux/porousmediumflow/1p/model.hh>
#include <dumux/material/components/simpleh2o.hh>
#include <dumux/material/fluidsystems/1pliquid.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/boundary/darcydarcy/couplingmanager.hh>
#include "problem.hh"
#include "spatialparams.hh"
namespace Dumux::Properties {
// Create new type tags
namespace TTag {
struct OnePSub { using InheritsFrom = std::tuple<OneP, CCTpfaModel>; };
// differentiate between the two subproblems
struct OnePSub0 { using InheritsFrom = std::tuple<OnePSub>; };
struct OnePSub1 { using InheritsFrom = std::tuple<OnePSub>; };
} // end namespace TTag
// the coupling manager
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::OnePSub>
{ using type = DarcyDarcyBoundaryCouplingManager<MultiDomainTraits<Properties::TTag::OnePSub0, Properties::TTag::OnePSub1>>; };
// Set the grid type
#if DOMAINSPLIT==1
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = Dune::SubGrid<HostGrid::dimension, HostGrid>;
};
#elif DOMAINSPLIT==0
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = HostGrid;
};
#endif
// set the spatial params
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::OnePSub>
{
using type = OnePTestSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
GetPropType<TypeTag, Properties::Scalar>>;
};
// the fluid system
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
};
// differentiate between the two subproblems
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub0> { using type = OnePTestProblem<TypeTag, 0>; };
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub1> { using type = OnePTestProblem<TypeTag, 1>; };
} // end namespace Dumux::Properties
#endif
......@@ -24,7 +24,6 @@
#include <config.h>
#include <ctime>
#include <iostream>
#include <fstream>
......@@ -34,85 +33,16 @@
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/common/dumuxmessage.hh>
#include <dumux/linear/seqsolverbackend.hh>
#include <dumux/assembly/diffmethod.hh>
#include <dumux/discretization/method.hh>
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager.hh>
#include <dumux/porousmediumflow/1p/model.hh>
#include <dumux/porousmediumflow/2p/model.hh>
#include <dumux/material/components/simpleh2o.hh>
#include <dumux/material/components/ch4.hh>
#include <dumux/material/fluidsystems/1pliquid.hh>
#include <dumux/material/fluidsystems/1pgas.hh>
#include <dumux/material/fluidsystems/2pimmiscible.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh>
#include <dumux/io/grid/gridmanager_sub.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/newtonsolver.hh>
#include <dumux/multidomain/boundary/darcydarcy/couplingmanager.hh>
#include "problem.hh"
namespace Dumux {
namespace Properties {
// Create new type tags
namespace TTag {
struct OnePSub { using InheritsFrom = std::tuple<CCTpfaModel>; };
// differentiate between the two subproblems
struct OnePSub0 { using InheritsFrom = std::tuple<OneP, OnePSub>; };
struct OnePSub1 { using InheritsFrom = std::tuple<TwoP, OnePSub>; };
} // end namespace TTag
// the coupling manager
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::OnePSub>
{ using type = DarcyDarcyBoundaryCouplingManager<MultiDomainTraits<Properties::TTag::OnePSub0, Properties::TTag::OnePSub1>>; };
// Set the grid type
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = Dune::SubGrid<HostGrid::dimension, HostGrid>;
};
// set the spatial params
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::OnePSub>
{
using type = TestSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
GetPropType<TypeTag, Properties::Scalar>>;
};
// differentiate between the two fluid systems
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub0>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
};
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub1>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::TwoPImmiscible<Scalar, FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar>>,
FluidSystems::OnePGas<Scalar, Components::CH4<Scalar>>>;
};
// differentiate between the two subproblems
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub0> { using type = OnePTestProblem<TypeTag, 0>; };
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub1> { using type = OnePTestProblem<TypeTag, 1>; };
} // end namespace Properties
} // end namespace Dumux
#include "properties.hh"
int main(int argc, char** argv)
{
......
......@@ -26,9 +26,12 @@
#define DUMUX_ONEP_SUB_TEST_PROBLEM_HH
#include <dune/common/indices.hh>
#include <dumux/common/boundarytypes.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/porousmediumflow/problem.hh>
#include "spatialparams.hh"
namespace Dumux {
......
// -*- 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 BoundaryTests
* \brief The properties for the incompressible test
*/
#ifndef DUMUX_MULTIDOMAIN_ONEP_TWOP_PROPERTIES_HH
#define DUMUX_MULTIDOMAIN_ONEP_TWOP_PROPERTIES_HH
#include <config.h>
#include <dumux/porousmediumflow/1p/model.hh>
#include <dumux/porousmediumflow/2p/model.hh>
#include <dumux/material/components/simpleh2o.hh>
#include <dumux/material/components/ch4.hh>
#include <dumux/material/fluidsystems/1pliquid.hh>
#include <dumux/material/fluidsystems/1pgas.hh>
#include <dumux/material/fluidsystems/2pimmiscible.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/multidomain/traits.hh>
#include <dumux/multidomain/boundary/darcydarcy/couplingmanager.hh>
#include "problem.hh"
#include "spatialparams.hh"
namespace Dumux::Properties {
// Create new type tags
namespace TTag {
struct OnePSub { using InheritsFrom = std::tuple<CCTpfaModel>; };
// differentiate between the two subproblems
struct OnePSub0 { using InheritsFrom = std::tuple<OneP, OnePSub>; };
struct OnePSub1 { using InheritsFrom = std::tuple<TwoP, OnePSub>; };
} // end namespace TTag
// the coupling manager
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::OnePSub>
{ using type = DarcyDarcyBoundaryCouplingManager<MultiDomainTraits<Properties::TTag::OnePSub0, Properties::TTag::OnePSub1>>; };
// Set the grid type
template<class TypeTag>
struct Grid<TypeTag, TTag::OnePSub>
{
using HostGrid = Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<double, 2>>;
using type = Dune::SubGrid<HostGrid::dimension, HostGrid>;
};
// set the spatial params
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::OnePSub>
{
using type = TestSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
GetPropType<TypeTag, Properties::Scalar>>;
};
// differentiate between the two fluid systems
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub0>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
};
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::OnePSub1>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::TwoPImmiscible<Scalar, FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar>>,
FluidSystems::OnePGas<Scalar, Components::CH4<Scalar>>>;
};
// differentiate between the two subproblems
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub0> { using type = OnePTestProblem<TypeTag, 0>; };
template<class TypeTag>
struct Problem<TypeTag, TTag::OnePSub1> { using type = OnePTestProblem<TypeTag, 1>; };
} // end namespace Dumux::Properties
#endif
......@@ -25,13 +25,11 @@
#include <config.h>
#include <ctime>
#include <iostream>
#include <fstream>
#include <dune/common/parallel/mpihelper.hh>
#include <dune/common/timer.hh>
#include <dune/istl/io.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
......@@ -40,40 +38,15 @@
#include <dumux/geometry/diameter.hh>
#include <dumux/linear/seqsolverbackend.hh>
#include <dumux/assembly/fvassembler.hh>
#include <dumux/assembly/diffmethod.hh>
#include <dumux/discretization/method.hh>
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/staggeredvtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager.hh>
#include <dumux/io/grid/gridmanager_yasp.hh>
#include <dumux/multidomain/staggeredtraits.hh>
#include <dumux/multidomain/fvassembler.hh>
#include <dumux/multidomain/newtonsolver.hh>
#include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh>
#include "problem_darcy.hh"
#include "problem_stokes.hh"
namespace Dumux {
namespace Properties {
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::StokesOnePTwoC>
{
using Traits = StaggeredMultiDomainTraits<TypeTag, TypeTag, Properties::TTag::DarcyOnePTwoC>;
using type = Dumux::StokesDarcyCouplingManager<Traits>;
};
template<class TypeTag>
struct CouplingManager<TypeTag, TTag::DarcyOnePTwoC>
{
using Traits = StaggeredMultiDomainTraits<Properties::TTag::StokesOnePTwoC, Properties::TTag::StokesOnePTwoC, TypeTag>;
using type = Dumux::StokesDarcyCouplingManager<Traits>;
};
} // end namespace Properties
} // end namespace Dumux
#include "properties.hh"
int main(int argc, char** argv)
{
......
......@@ -26,80 +26,13 @@
#ifndef DUMUX_DARCY_SUBPROBLEM_DIFFUSION_COMPARISON_HH
#define DUMUX_DARCY_SUBPROBLEM_DIFFUSION_COMPARISON_HH
#include <dune/grid/yaspgrid.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/common/boundarytypes.hh>
#include <dumux/flux/maxwellstefanslaw.hh>
#include <dumux/material/fluidmatrixinteractions/diffusivityconstanttortuosity.hh>
#include <dumux/material/fluidsystems/1padapter.hh>
#include <dumux/material/fluidsystems/h2oair.hh>
#include <dumux/porousmediumflow/1pnc/model.hh>
#include <dumux/porousmediumflow/problem.hh>
#include "./../spatialparams.hh"
#ifndef DIFFUSIONTYPE
#define DIFFUSIONTYPE FicksLaw<TypeTag>
#endif
namespace Dumux {
template <class TypeTag>
class DarcySubProblem;
namespace Properties {
// Create new type tags
namespace TTag {
struct DarcyOnePTwoC { using InheritsFrom = std::tuple<OnePNC, CCTpfaModel>; };
} // end namespace TTag
// Set the problem property
template<class TypeTag>
struct Problem<TypeTag, TTag::DarcyOnePTwoC> { using type = Dumux::DarcySubProblem<TypeTag>; };
// The fluid system
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::DarcyOnePTwoC>
{
using H2OAir = FluidSystems::H2OAir<GetPropType<TypeTag, Properties::Scalar>>;
static constexpr auto phaseIdx = H2OAir::liquidPhaseIdx; // simulate the water phase
using type = FluidSystems::OnePAdapter<H2OAir, phaseIdx>;
};
// Use moles
template<class TypeTag>
struct UseMoles<TypeTag, TTag::DarcyOnePTwoC> { static constexpr bool value = true; };
// Do not replace one equation with a total mass balance
template<class TypeTag>
struct ReplaceCompEqIdx<TypeTag, TTag::DarcyOnePTwoC> { static constexpr int value = 3; };
//! Use a model with constant tortuosity for the effective diffusivity
template<class TypeTag>
struct EffectiveDiffusivityModel<TypeTag, TTag::DarcyOnePTwoC>
{ using type = DiffusivityConstantTortuosity<GetPropType<TypeTag, Properties::Scalar>>; };
// Set the grid type
template<class TypeTag>
struct Grid<TypeTag, TTag::DarcyOnePTwoC> { using type = Dune::YaspGrid<2>; };
// Set the diffusion type
template<class TypeTag>
struct MolecularDiffusionType<TypeTag, TTag::DarcyOnePTwoC> { using type = DIFFUSIONTYPE; };
// Set the spatial paramaters type
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::DarcyOnePTwoC>
{
using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = OnePSpatialParams<GridGeometry, Scalar>;
};
} // end namespace Properties
template <class TypeTag>
class DarcySubProblem : public PorousMediumFlowProblem<TypeTag>
......
......@@ -30,72 +30,16 @@
#ifndef DUMUX_STOKES_SUBPROBLEM_DIFFUSION_COMPARISON_HH
#define DUMUX_STOKES_SUBPROBLEM_DIFFUSION_COMPARISON_HH
#include <dune/grid/yaspgrid.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/discretization/staggered/freeflow/properties.hh>
#include <dumux/flux/maxwellstefanslaw.hh>