diff --git a/dumux/discretization/staggered/gridvariablestraits.hh b/dumux/discretization/staggered/gridvariablestraits.hh new file mode 100644 index 0000000000000000000000000000000000000000..c94a3b57ed5485ec60fe94477c6a77191a3a645e --- /dev/null +++ b/dumux/discretization/staggered/gridvariablestraits.hh @@ -0,0 +1,85 @@ +// -*- 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 + * \ingroup StaggeredDiscretization + * \brief Traits class to be used in conjunction with the StaggeredGridFaceVariables. + */ +#ifndef DUMUX_DISCRETIZATION_STAGGERED_GRID_VARIABLES_TRAITS_HH +#define DUMUX_DISCRETIZATION_STAGGERED_GRID_VARIABLES_TRAITS_HH + + +namespace Dumux { + +/*! + * \ingroup StaggeredDiscretization + * \brief Traits class to be used for the StaggeredGridFaceVariables. + * + * \tparam FV The face variables type + * \tparam P The problem type + */ +template<class FV, class P> +struct StaggeredGridFaceVariablesTraits +{ + template<class FVGridGeometry, class GridFaceVariables, bool enableCache> + using LocalView = StaggeredElementFaceVariables<FVGridGeometry, GridFaceVariables, enableCache>; + + using FaceVariables = FV; + using Problem = P; +}; + +/*! + * \ingroup StaggeredDiscretization + * \brief Traits class to be used for the StaggeredGridVolumeVariables. + * + * \tparam VV The volume variables type + * \tparam P The problem type + * \tparam I The indices type + */ +template<class VV, class P, class PV, class I> +struct StaggeredGridVolumeVariablesTraits +{ + template<class FVGridGeometry, class GridVolumeVariables, bool enableCache> + using LocalView = StaggeredElementVolumeVariables<FVGridGeometry, GridVolumeVariables, enableCache>; + + using Indices = I; + using Problem = P; + using VolumeVariables = VV; +}; + +/*! + * \ingroup StaggeredDiscretization + * \brief Traits class to be used for the StaggeredGridVFluxVariablesCache. + * + * \tparam FVC The flux variables cache type + * \tparam P The problem type + */ +template<class FVC, class P> +struct StaggeredGridFluxVariablesCacheTraits +{ + template<class FVGridGeometry, class StaggeredGridFluxVariablesCache, bool enableCache> + using LocalView = StaggeredElementFluxVariablesCache<FVGridGeometry, StaggeredGridFluxVariablesCache, enableCache>; + + using FluxVariablesCache = FVC; + using Problem = P; +}; + +} // end namespace Dumux + +#endif