move Cells(X|Y|Z) to TypeTag-free parameter system

This commit is contained in:
Arne Morten Kvarving
2024-07-05 17:49:51 +02:00
parent ac4c723da7
commit 25aed6d79a
10 changed files with 128 additions and 120 deletions

View File

@@ -156,19 +156,6 @@ struct EpisodeLength { using type = Properties::UndefinedProperty;};
template <class TypeTag, class MyTypeTag> template <class TypeTag, class MyTypeTag>
struct Initialpressure { using type = Properties::UndefinedProperty;}; struct Initialpressure { using type = Properties::UndefinedProperty;};
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::CO2PTBaseProblem>
{ static constexpr unsigned value = 30; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::CO2PTBaseProblem>
{ static constexpr unsigned value = 1; };
// CellsZ is not needed, while to keep structuredgridvanguard.hh compile
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::CO2PTBaseProblem>
{ static constexpr unsigned value = 1; };
//\Note: from the Julia code, the problem is a 1D problem with 3X1 cell. //\Note: from the Julia code, the problem is a 1D problem with 3X1 cell.
//\Note: DomainSizeX is 3.0 meters //\Note: DomainSizeX is 3.0 meters
//\Note: DomainSizeY is 1.0 meters //\Note: DomainSizeY is 1.0 meters
@@ -424,6 +411,16 @@ public:
("The name of the simulation used for the output files"); ("The name of the simulation used for the output files");
Parameters::registerParam<TypeTag, Parameters::EpisodeLength> Parameters::registerParam<TypeTag, Parameters::EpisodeLength>
("Time interval [s] for episode length"); ("Time interval [s] for episode length");
Parameters::SetDefault<Parameters::CellsX>(30);
if constexpr (dim > 1) {
Parameters::SetDefault<Parameters::CellsY>(1);
}
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(1);
}
} }
/*! /*!
@@ -517,7 +514,7 @@ public:
{ {
int spatialIdx = context.globalSpaceIndex(spaceIdx, timeIdx); int spatialIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
int inj = 0; int inj = 0;
int prod = Parameters::get<TypeTag, Parameters::CellsX>() - 1; int prod = Parameters::Get<Parameters::CellsX>() - 1;
if (spatialIdx == inj || spatialIdx == prod) { if (spatialIdx == inj || spatialIdx == prod) {
return 1.0; return 1.0;
} else { } else {
@@ -568,7 +565,7 @@ private:
// p0 = 75e5 // p0 = 75e5
// T0 = 423.25 // T0 = 423.25
int inj = 0; int inj = 0;
int prod = Parameters::get<TypeTag, Parameters::CellsX>() - 1; int prod = Parameters::Get<Parameters::CellsX>() - 1;
int spatialIdx = context.globalSpaceIndex(spaceIdx, timeIdx); int spatialIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
ComponentVector comp; ComponentVector comp;
comp[0] = Evaluation::createVariable(0.5, 1); comp[0] = Evaluation::createVariable(0.5, 1);

View File

@@ -110,18 +110,6 @@ struct EnableDiffusion<TypeTag, TTag::DiffusionBaseProblem> { static constexpr b
namespace Opm::Parameters { namespace Opm::Parameters {
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::DiffusionBaseProblem>
{ static constexpr unsigned value = 250; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::DiffusionBaseProblem>
{ static constexpr unsigned value = 1; };
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::DiffusionBaseProblem>
{ static constexpr unsigned value = 1; };
// define the properties specific for the diffusion problem // define the properties specific for the diffusion problem
template<class TypeTag> template<class TypeTag>
struct DomainSizeX<TypeTag, Properties::TTag::DiffusionBaseProblem> struct DomainSizeX<TypeTag, Properties::TTag::DiffusionBaseProblem>
@@ -245,6 +233,24 @@ public:
setupInitialFluidStates_(); setupInitialFluidStates_();
} }
/*!
* \copydoc FvBaseMultiPhaseProblem::registerParameters
*/
static void registerParameters()
{
ParentType::registerParameters();
Parameters::SetDefault<Parameters::CellsX>(250);
if constexpr (dim > 1) {
Parameters::SetDefault<Parameters::CellsY>(1);
}
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(1);
}
}
/*! /*!
* \name Auxiliary methods * \name Auxiliary methods
*/ */

View File

@@ -131,18 +131,6 @@ namespace Opm::Parameters {
template<class TypeTag, class MyTypeTag> template<class TypeTag, class MyTypeTag>
struct InitialWaterSaturation { using type = Properties::UndefinedProperty; }; struct InitialWaterSaturation { using type = Properties::UndefinedProperty; };
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::FingerBaseProblem>
{ static constexpr unsigned value = 20; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::FingerBaseProblem>
{ static constexpr unsigned value = 70; };
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::FingerBaseProblem>
{ static constexpr unsigned value = 1; };
// define the properties specific for the finger problem // define the properties specific for the finger problem
template<class TypeTag> template<class TypeTag>
struct DomainSizeX<TypeTag, Properties::TTag::FingerBaseProblem> struct DomainSizeX<TypeTag, Properties::TTag::FingerBaseProblem>
@@ -320,6 +308,16 @@ public:
Parameters::registerParam<TypeTag, Parameters::InitialWaterSaturation> Parameters::registerParam<TypeTag, Parameters::InitialWaterSaturation>
("The initial saturation in the domain [] of the wetting phase"); ("The initial saturation in the domain [] of the wetting phase");
Parameters::SetDefault<Parameters::CellsX>(20);
if constexpr (dim > 1) {
Parameters::SetDefault<Parameters::CellsY>(70);
}
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(1);
}
} }
/*! /*!

View File

@@ -138,18 +138,6 @@ struct LensUpperRightY { using type = Properties::UndefinedProperty; };
template<class TypeTag, class MyTypeTag> template<class TypeTag, class MyTypeTag>
struct LensUpperRightZ { using type = Properties::UndefinedProperty; }; struct LensUpperRightZ { using type = Properties::UndefinedProperty; };
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::LensBaseProblem>
{ static constexpr unsigned value = 48; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::LensBaseProblem>
{ static constexpr unsigned value = 32; };
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::LensBaseProblem>
{ static constexpr unsigned value = 16; };
template<class TypeTag> template<class TypeTag>
struct DomainSizeX<TypeTag, Properties::TTag::LensBaseProblem> struct DomainSizeX<TypeTag, Properties::TTag::LensBaseProblem>
{ {
@@ -343,7 +331,7 @@ public:
lensUpperRight_[0] = Parameters::get<TypeTag, Parameters::LensUpperRightX>(); lensUpperRight_[0] = Parameters::get<TypeTag, Parameters::LensUpperRightX>();
lensUpperRight_[1] = Parameters::get<TypeTag, Parameters::LensUpperRightY>(); lensUpperRight_[1] = Parameters::get<TypeTag, Parameters::LensUpperRightY>();
if (dimWorld == 3) { if constexpr (dim == 3) {
lensLowerLeft_[2] = Parameters::get<TypeTag, Parameters::LensLowerLeftZ>(); lensLowerLeft_[2] = Parameters::get<TypeTag, Parameters::LensLowerLeftZ>();
lensUpperRight_[2] = Parameters::get<TypeTag, Parameters::LensUpperRightZ>(); lensUpperRight_[2] = Parameters::get<TypeTag, Parameters::LensUpperRightZ>();
} }
@@ -388,12 +376,19 @@ public:
Parameters::registerParam<TypeTag, Parameters::LensUpperRightY> Parameters::registerParam<TypeTag, Parameters::LensUpperRightY>
("The y-coordinate of the lens' upper-right corner [m]."); ("The y-coordinate of the lens' upper-right corner [m].");
if (dimWorld == 3) { if constexpr (dim == 3) {
Parameters::registerParam<TypeTag, Parameters::LensLowerLeftZ> Parameters::registerParam<TypeTag, Parameters::LensLowerLeftZ>
("The z-coordinate of the lens' lower-left corner [m]."); ("The z-coordinate of the lens' lower-left corner [m].");
Parameters::registerParam<TypeTag, Parameters::LensUpperRightZ> Parameters::registerParam<TypeTag, Parameters::LensUpperRightZ>
("The z-coordinate of the lens' upper-right corner [m]."); ("The z-coordinate of the lens' upper-right corner [m].");
} }
Parameters::SetDefault<Parameters::CellsX>(48);
Parameters::SetDefault<Parameters::CellsY>(32);
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(16);
}
} }
/*! /*!

View File

@@ -123,18 +123,6 @@ public:
namespace Opm::Parameters { namespace Opm::Parameters {
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::PowerInjectionBaseProblem>
{ static constexpr unsigned value = 250; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::PowerInjectionBaseProblem>
{ static constexpr unsigned value = 1; };
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::PowerInjectionBaseProblem>
{ static constexpr unsigned value = 1; };
// define the properties specific for the power injection problem // define the properties specific for the power injection problem
template<class TypeTag> template<class TypeTag>
struct DomainSizeX<TypeTag, Properties::TTag::PowerInjectionBaseProblem> struct DomainSizeX<TypeTag, Properties::TTag::PowerInjectionBaseProblem>
@@ -270,6 +258,24 @@ public:
setupInitialFluidState_(); setupInitialFluidState_();
} }
/*!
* \copydoc FvBaseMultiPhaseProblem::registerParameters
*/
static void registerParameters()
{
ParentType::registerParameters();
Parameters::SetDefault<Parameters::CellsX>(250);
if constexpr (dim > 1) {
Parameters::SetDefault<Parameters::CellsY>(1);
}
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(1);
}
}
/*! /*!
* \name Auxiliary methods * \name Auxiliary methods
*/ */

View File

@@ -124,19 +124,6 @@ public:
namespace Opm::Parameters { namespace Opm::Parameters {
// // define the number of cells used for discretizing the physical domain
template<class TypeTag>
struct CellsX<TypeTag, Properties::TTag::Tutorial1Problem>
{ static constexpr unsigned value = 100; };
template<class TypeTag>
struct CellsY<TypeTag, Properties::TTag::Tutorial1Problem>
{ static constexpr unsigned value = 1; };
template<class TypeTag>
struct CellsZ<TypeTag, Properties::TTag::Tutorial1Problem>
{ static constexpr unsigned value = 1; }; /*@\label{tutorial1:default-params-end}@*/
// define the physical size of the problem's domain [m] // define the physical size of the problem's domain [m]
template<class TypeTag> template<class TypeTag>
struct DomainSizeX<TypeTag, Properties::TTag::Tutorial1Problem> struct DomainSizeX<TypeTag, Properties::TTag::Tutorial1Problem>
@@ -193,7 +180,10 @@ class Tutorial1Problem
using GridView = GetPropType<TypeTag, Properties::GridView>; using GridView = GetPropType<TypeTag, Properties::GridView>;
// Grid dimension // Grid dimension
enum { dimWorld = GridView::dimensionworld }; enum {
dim = GridView::dimension,
dimWorld = GridView::dimensionworld
};
// The type of the intrinsic permeability tensor // The type of the intrinsic permeability tensor
using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>; using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
@@ -247,6 +237,21 @@ public:
materialParams_.finalize(); materialParams_.finalize();
} }
/*!
* \copydoc FvBaseMultiPhaseProblem::registerParameters
*/
static void registerParameters()
{
ParentType::registerParameters();
Parameters::SetDefault<Parameters::CellsX>(100);
Parameters::SetDefault<Parameters::CellsY>(1);
if constexpr (dim == 3) {
Parameters::SetDefault<Parameters::CellsZ>(1);
}
}
//! Specifies the problem name. This is used for files generated by the simulation. //! Specifies the problem name. This is used for files generated by the simulation.
std::string name() const std::string name() const
{ return "tutorial1"; } { return "tutorial1"; }

View File

@@ -58,7 +58,10 @@ class CubeGridVanguard : public BaseVanguard<TypeTag>
using GridPointer = std::unique_ptr<Grid>; using GridPointer = std::unique_ptr<Grid>;
using CoordScalar = typename Grid::ctype; using CoordScalar = typename Grid::ctype;
enum { dimWorld = Grid::dimensionworld }; enum {
dim = Grid::dimension,
dimWorld = Grid::dimensionworld,
};
using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>; using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
public: public:
@@ -72,18 +75,18 @@ public:
"executed after it was loaded"); "executed after it was loaded");
Parameters::registerParam<TypeTag, Parameters::DomainSizeX> Parameters::registerParam<TypeTag, Parameters::DomainSizeX>
("The size of the domain in x direction"); ("The size of the domain in x direction");
Parameters::registerParam<TypeTag, Parameters::CellsX> Parameters::Register<Parameters::CellsX>
("The number of intervalls in x direction"); ("The number of intervalls in x direction");
if (dimWorld > 1) { if constexpr (dim > 1) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeY> Parameters::registerParam<TypeTag, Parameters::DomainSizeY>
("The size of the domain in y direction"); ("The size of the domain in y direction");
Parameters::registerParam<TypeTag, Parameters::CellsY> Parameters::Register<Parameters::CellsY>
("The number of intervalls in y direction"); ("The number of intervalls in y direction");
} }
if (dimWorld > 2) { if constexpr (dim > 2) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeZ> Parameters::registerParam<TypeTag, Parameters::DomainSizeZ>
("The size of the domain in z direction"); ("The size of the domain in z direction");
Parameters::registerParam<TypeTag, Parameters::CellsZ> Parameters::Register<Parameters::CellsZ>
("The number of intervalls in z direction"); ("The number of intervalls in z direction");
} }
} }
@@ -94,22 +97,22 @@ public:
CubeGridVanguard(Simulator& simulator) CubeGridVanguard(Simulator& simulator)
: ParentType(simulator) : ParentType(simulator)
{ {
std::array<unsigned int, dimWorld> cellRes; std::array<unsigned int, dim> cellRes;
GlobalPosition upperRight(0.0); GlobalPosition upperRight(0.0);
GlobalPosition lowerLeft(0.0); GlobalPosition lowerLeft(0.0);
for (unsigned i = 0; i < dimWorld; ++i) for (unsigned i = 0; i < dim; ++i)
cellRes[i] = 0; cellRes[i] = 0;
upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>(); upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>();
cellRes[0] = Parameters::get<TypeTag, Parameters::CellsX>(); cellRes[0] = Parameters::Get<Parameters::CellsX>();
if (dimWorld > 1) { if constexpr (dim > 1) {
upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>(); upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>();
cellRes[1] = Parameters::get<TypeTag, Parameters::CellsY>(); cellRes[1] = Parameters::Get<Parameters::CellsY>();
} }
if (dimWorld > 2) { if constexpr (dim > 2) {
upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>(); upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>();
cellRes[2] = Parameters::get<TypeTag, Parameters::CellsZ>(); cellRes[2] = Parameters::Get<Parameters::CellsZ>();
} }
unsigned numRefinements = Parameters::Get<Parameters::GridGlobalRefinements>(); unsigned numRefinements = Parameters::Get<Parameters::GridGlobalRefinements>();

View File

@@ -53,7 +53,10 @@ class SimplexGridVanguard
using GridPointer = std::unique_ptr<Grid>; using GridPointer = std::unique_ptr<Grid>;
using CoordScalar = typename Grid::ctype; using CoordScalar = typename Grid::ctype;
enum { dimWorld = Grid::dimensionworld }; enum {
dim = Grid::dimension,
dimWorld = Grid::dimensionworld,
};
using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>; using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>;
public: public:
@@ -67,18 +70,18 @@ public:
"executed after it was loaded"); "executed after it was loaded");
Parameters::registerParam<TypeTag, Parameters::DomainSizeX> Parameters::registerParam<TypeTag, Parameters::DomainSizeX>
("The size of the domain in x direction"); ("The size of the domain in x direction");
Parameters::registerParam<TypeTag, Parameters::CellsX> Parameters::Register<Parameters::CellsX>
("The number of intervalls in x direction"); ("The number of intervalls in x direction");
if (dimWorld > 1) { if (dimWorld > 1) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeY> Parameters::registerParam<TypeTag, Parameters::DomainSizeY>
("The size of the domain in y direction"); ("The size of the domain in y direction");
Parameters::registerParam<TypeTag, Parameters::CellsY> Parameters::Register<Parameters::CellsY>
("The number of intervalls in y direction"); ("The number of intervalls in y direction");
} }
if (dimWorld > 2) { if constexpr (dim > 2) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeZ> Parameters::registerParam<TypeTag, Parameters::DomainSizeZ>
("The size of the domain in z direction"); ("The size of the domain in z direction");
Parameters::registerParam<TypeTag, Parameters::CellsZ> Parameters::Register<Parameters::CellsZ>
("The number of intervalls in z direction"); ("The number of intervalls in z direction");
} }
} }
@@ -89,22 +92,22 @@ public:
SimplexGridVanguard(Simulator& simulator) SimplexGridVanguard(Simulator& simulator)
: ParentType(simulator) : ParentType(simulator)
{ {
Dune::array<unsigned, dimWorld> cellRes; Dune::array<unsigned, dim> cellRes;
GlobalPosition upperRight; GlobalPosition upperRight;
GlobalPosition lowerLeft; GlobalPosition lowerLeft;
lowerLeft[0] = 0.0; lowerLeft[0] = 0.0;
upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>(); upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>();
cellRes[0] = Parameters::get<TypeTag, Parameters::CellsX>(); cellRes[0] = Parameters::Get<Parameters::CellsX>();
if (dimWorld > 1) { if constexpr (dim > 1) {
lowerLeft[1] = 0.0; lowerLeft[1] = 0.0;
upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>(); upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>();
cellRes[1] = Parameters::get<TypeTag, Parameters::CellsY>(); cellRes[1] = Parameters::Get<Parameters::CellsY>();
} }
if (dimWorld > 2) { if constexpr (dim > 2) {
lowerLeft[2] = 0.0; lowerLeft[2] = 0.0;
upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>(); upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>();
cellRes[2] = Parameters::get<TypeTag, Parameters::CellsZ>(); cellRes[2] = Parameters::Get<Parameters::CellsZ>();
} }
simplexGrid_ = Dune::StructuredGridFactory<Grid>::createSimplexGrid(lowerLeft, simplexGrid_ = Dune::StructuredGridFactory<Grid>::createSimplexGrid(lowerLeft,

View File

@@ -100,7 +100,7 @@ class StructuredGridVanguard : public BaseVanguard<TypeTag>
using GridPointer = std::unique_ptr<Grid>; using GridPointer = std::unique_ptr<Grid>;
static const int dim = Grid::dimension; static constexpr int dim = Grid::dimension;
public: public:
/*! /*!
@@ -113,18 +113,18 @@ public:
"executed after it was loaded"); "executed after it was loaded");
Parameters::registerParam<TypeTag, Parameters::DomainSizeX> Parameters::registerParam<TypeTag, Parameters::DomainSizeX>
("The size of the domain in x direction"); ("The size of the domain in x direction");
Parameters::registerParam<TypeTag, Parameters::CellsX> Parameters::Register<Parameters::CellsX>
("The number of intervalls in x direction"); ("The number of intervalls in x direction");
if (dim > 1) { if (dim > 1) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeY> Parameters::registerParam<TypeTag, Parameters::DomainSizeY>
("The size of the domain in y direction"); ("The size of the domain in y direction");
Parameters::registerParam<TypeTag, Parameters::CellsY> Parameters::Register<Parameters::CellsY>
("The number of intervalls in y direction"); ("The number of intervalls in y direction");
} }
if (dim > 2) { if constexpr (dim > 2) {
Parameters::registerParam<TypeTag, Parameters::DomainSizeZ> Parameters::registerParam<TypeTag, Parameters::DomainSizeZ>
("The size of the domain in z direction"); ("The size of the domain in z direction");
Parameters::registerParam<TypeTag, Parameters::CellsZ> Parameters::Register<Parameters::CellsZ>
("The number of intervalls in z direction"); ("The number of intervalls in z direction");
} }
} }
@@ -144,11 +144,11 @@ public:
upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>(); upperRight[0] = Parameters::get<TypeTag, Parameters::DomainSizeX>();
upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>(); upperRight[1] = Parameters::get<TypeTag, Parameters::DomainSizeY>();
cellRes[0] = Parameters::get<TypeTag, Parameters::CellsX>(); cellRes[0] = Parameters::Get<Parameters::CellsX>();
cellRes[1] = Parameters::get<TypeTag, Parameters::CellsY>(); cellRes[1] = Parameters::Get<Parameters::CellsY>();
if (dim == 3) { if constexpr (dim == 3) {
upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>(); upperRight[2] = Parameters::get<TypeTag, Parameters::DomainSizeZ>();
cellRes[2] = Parameters::get<TypeTag, Parameters::CellsZ>(); cellRes[2] = Parameters::Get<Parameters::CellsZ>();
} }
std::stringstream dgffile; std::stringstream dgffile;

View File

@@ -33,14 +33,9 @@
namespace Opm::Parameters { namespace Opm::Parameters {
//! grid resolution //! grid resolution
template<class TypeTag, class MyTypeTag> struct CellsX { static constexpr unsigned value = 1; };
struct CellsX { using type = Properties::UndefinedProperty; }; struct CellsY { static constexpr unsigned value = 1; };
struct CellsZ { static constexpr unsigned value = 1; };
template<class TypeTag, class MyTypeTag>
struct CellsY { using type = Properties::UndefinedProperty; };
template<class TypeTag, class MyTypeTag>
struct CellsZ { using type = Properties::UndefinedProperty; };
//! domain size //! domain size
template<class TypeTag, class MyTypeTag> template<class TypeTag, class MyTypeTag>