version 3.8
fcstaggered.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3//
4// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
15#ifndef DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_HH
16#define DUMUX_DISCRETIZATION_FACECENTERED_STAGGERED_HH
17
20
25
30
31namespace Dumux::Properties {
32
34// Create new type tags
35namespace TTag {
36struct FaceCenteredStaggeredModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
37} // end namespace TTag
38
40template<class TypeTag>
41struct GridGeometry<TypeTag, TTag::FaceCenteredStaggeredModel>
42{
43private:
44 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
46public:
48};
49
51template<class TypeTag>
52struct GridVolumeVariables<TypeTag, TTag::FaceCenteredStaggeredModel>
53{
54private:
55 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
59public:
61};
62
63
65template<class TypeTag>
66struct GridFluxVariablesCache<TypeTag, TTag::FaceCenteredStaggeredModel>
67{
68private:
69 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
72 using FluxVariablesCache = GetPropTypeOr<TypeTag,
73 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
74 >;
75 using FluxVariablesCacheFiller = GetPropTypeOr<TypeTag,
76 Properties::FluxVariablesCacheFiller, FluxVariablesCaching::EmptyCacheFiller
77 >;
78public:
80};
81
83template<class TypeTag>
84struct GridVariables<TypeTag, TTag::FaceCenteredStaggeredModel>
85{
86private:
90public:
92};
93
95template<class TypeTag>
96struct BaseLocalResidual<TypeTag, TTag::FaceCenteredStaggeredModel> { using type = FaceCenteredLocalResidual<TypeTag>; };
97
99template<class TypeTag>
100struct ElementBoundaryTypes<TypeTag, TTag::FaceCenteredStaggeredModel>
101{
102private:
104 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
105public:
107};
108
109} // namespace Dumux::Properties
110
111namespace Dumux::Detail {
112
113template<class Problem>
114struct ProblemTraits<Problem, DiscretizationMethods::FCStaggered>
115{
116private:
117 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
118 using Element = typename GG::GridView::template Codim<0>::Entity;
119 using SubControlVolumeFace = typename GG::SubControlVolumeFace;
120public:
121 using GridGeometry = GG;
122 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scv)
123 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolumeFace>()))>;
124};
125
126} // end namespace Detail
127
128#endif
The grid variable class for finite volume schemes storing variables on scv and scvf (volume and flux ...
Definition: discretization/fvgridvariables.hh:30
The element-wise residual for the box scheme.
Definition: fclocalresidual.hh:34
This class stores an array of BoundaryTypes objects.
Definition: facecentered/staggered/elementboundarytypes.hh:25
Base class for the finite volume geometry vector for face-centered staggered models This builds up th...
Definition: discretization/facecentered/staggered/fvgridgeometry.hh:84
Flux variable caches on a gridview.
Definition: discretization/facecentered/staggered/gridfluxvariablescache.hh:48
Base class for the grid volume variables.
Definition: facecentered/staggered/gridvolumevariables.hh:45
Defines all properties used in Dumux.
Type traits for problem classes.
Global flux variable cache.
Boundary types gathered on an element.
The grid volume variables class for face-centered staggered models.
Calculates the element-wise residual for the box scheme.
Classes related to flux variables caching.
Declares properties required for finite-volume models models.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
typename GetPropOr< TypeTag, Property, T >::type GetPropTypeOr
get the type alias defined in the property or the type T if the property is undefined
Definition: propertysystem.hh:303
The available discretization methods in Dumux.
Distance implementation details.
Definition: cvfelocalresidual.hh:25
The energy balance equation for a porous solid.
Definition: common/properties.hh:26
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolumeFace >()))> BoundaryTypes
Definition: fcstaggered.hh:123
Definition: common/typetraits/problem.hh:23
Definition: facecentered/staggered/gridvolumevariables.hh:29
The empty filler class corresponding to EmptyCache.
Definition: fluxvariablescaching.hh:20
An empty flux variables cache.
Definition: fluxvariablescaching.hh:35
typename Detail::template ProblemTraits< Problem, typename GridGeometry::DiscretizationMethod >::BoundaryTypes BoundaryTypes
Definition: common/typetraits/problem.hh:34
std::tuple< FiniteVolumeModel > InheritsFrom
Definition: fcstaggered.hh:36