Commit 7f5f969e authored by Timo Koch's avatar Timo Koch
Browse files

Merge branch 'feature/propertiesheader_mm-columnxylene' into 'master'

Properties header file for [MM] columnxylene

See merge request !119
parents 042caae4 7fc3dd99
......@@ -13,5 +13,6 @@ dune_add_test(NAME columnxyleneexercise
#install sources
install(FILES
columnxyleneproblem.hh
columnxyleneproperties.hh
columnxylenespatialparameters.hh
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lecture/mm/columnxylene)
......@@ -42,7 +42,7 @@
#include <dumux/io/vtkoutputmodule.hh>
#include <dumux/io/grid/gridmanager.hh>
#include "columnxyleneproblem.hh"
#include "columnxyleneproperties.hh"
/*!
* \brief Provides an interface for customizing error messages associated with
......
......@@ -24,85 +24,14 @@
#ifndef DUMUX_COLUMNXYLENEPROBLEM_HH
#define DUMUX_COLUMNXYLENEPROBLEM_HH
#include <dune/grid/yaspgrid.hh>
#include <dumux/common/properties.hh>
#include <dumux/common/parameters.hh>
#include <dumux/material/fluidsystems/h2oairxylene.hh>
#include <dumux/material/solidstates/compositionalsolidstate.hh>
#include <dumux/material/solidsystems/compositionalsolidphase.hh>
#include <dumux/material/components/constant.hh>
#include <dumux/discretization/cctpfa.hh>
#include <dumux/discretization/box.hh>
#include <dumux/porousmediumflow/3p3c/model.hh>
#include <dumux/porousmediumflow/problem.hh>
#include "columnxylenespatialparams.hh"
#define ISOTHERMAL 0
namespace Dumux {
/*!
* \brief Non-isothermal injection problem where water is injected into a
* sand column with a NAPL contamination.
*/
template <class TypeTag>
class ColumnProblem;
namespace Properties {
// Create new type tags
namespace TTag {
struct ColumnTypeTag { using InheritsFrom = std::tuple<ThreePThreeCNI>; };
struct ColumnProblemBoxTypeTag { using InheritsFrom = std::tuple<BoxModel, ColumnTypeTag>; };
} // end namespace TTag
// Set the grid type
template<class TypeTag>
struct Grid<TypeTag, TTag::ColumnTypeTag> { using type = Dune::YaspGrid<2>; };
// Set the problem property
template<class TypeTag>
struct Problem<TypeTag, TTag::ColumnTypeTag> { using type = ColumnProblem<TypeTag>; };
// Set the fluid system
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::ColumnTypeTag>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::H2OAirXylene<Scalar>;
};
template<class TypeTag>
struct SolidSystem<TypeTag, TTag::ColumnTypeTag>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using ComponentOne = Dumux::Components::Constant<1, Scalar>;
using ComponentTwo = Dumux::Components::Constant<2, Scalar>;
static constexpr int numInertComponents = 2;
using type = SolidSystems::CompositionalSolidPhase<Scalar, ComponentOne, ComponentTwo, numInertComponents>;
};
//! The two-phase model uses the immiscible fluid state
template<class TypeTag>
struct SolidState<TypeTag, TTag::ColumnTypeTag>
{
private:
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using SolidSystem = GetPropType<TypeTag, Properties::SolidSystem>;
public:
using type = CompositionalSolidState<Scalar, SolidSystem>;
};
// Set the spatial parameters
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::ColumnTypeTag>
{
using FVGridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = ColumnSpatialParams<FVGridGeometry, Scalar>;
};
} // end namespace Properties
/*!
* \brief Non-isothermal injection problem where a water is injected into a
......
// -*- 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 vesion. *
* *
* 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 Properties file of non-isothermal water injection into a
* sand column with a NAPL contamination.
*/
#ifndef DUMUX_COLUMNXYLENEPROPERTIES_HH
#define DUMUX_COLUMNXYLENEPROPERTIES_HH
#include <dune/grid/yaspgrid.hh>
#include <dumux/material/fluidsystems/h2oairxylene.hh>
#include <dumux/material/solidstates/compositionalsolidstate.hh>
#include <dumux/material/solidsystems/compositionalsolidphase.hh>
#include <dumux/material/components/constant.hh>
#include <dumux/discretization/box.hh>
#include <dumux/porousmediumflow/3p3c/model.hh>
#include "columnxylenespatialparams.hh"
#include "columnxyleneproblem.hh"
namespace Dumux::Properties {
// Create new type tags
namespace TTag {
struct ColumnTypeTag { using InheritsFrom = std::tuple<ThreePThreeCNI>; };
struct ColumnProblemBoxTypeTag { using InheritsFrom = std::tuple<BoxModel, ColumnTypeTag>; };
} // end namespace TTag
// Set the grid type
template<class TypeTag>
struct Grid<TypeTag, TTag::ColumnTypeTag> { using type = Dune::YaspGrid<2>; };
// Set the problem property
template<class TypeTag>
struct Problem<TypeTag, TTag::ColumnTypeTag> { using type = ColumnProblem<TypeTag>; };
// Set the fluid system
template<class TypeTag>
struct FluidSystem<TypeTag, TTag::ColumnTypeTag>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = FluidSystems::H2OAirXylene<Scalar>;
};
template<class TypeTag>
struct SolidSystem<TypeTag, TTag::ColumnTypeTag>
{
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using ComponentOne = Dumux::Components::Constant<1, Scalar>;
using ComponentTwo = Dumux::Components::Constant<2, Scalar>;
static constexpr int numInertComponents = 2;
using type = SolidSystems::CompositionalSolidPhase<Scalar, ComponentOne, ComponentTwo, numInertComponents>;
};
//! The two-phase model uses the immiscible fluid state
template<class TypeTag>
struct SolidState<TypeTag, TTag::ColumnTypeTag>
{
private:
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using SolidSystem = GetPropType<TypeTag, Properties::SolidSystem>;
public:
using type = CompositionalSolidState<Scalar, SolidSystem>;
};
// Set the spatial parameters
template<class TypeTag>
struct SpatialParams<TypeTag, TTag::ColumnTypeTag>
{
using FVGridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
using Scalar = GetPropType<TypeTag, Properties::Scalar>;
using type = ColumnSpatialParams<FVGridGeometry, Scalar>;
};
} // end namespace Dumux::Properties
#endif
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment