version 3.8
box.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//
13#ifndef DUMUX_DISCRETIZTAION_BOX_HH
14#define DUMUX_DISCRETIZTAION_BOX_HH
15
16#include <type_traits>
17
18#include <dune/common/fvector.hh>
19#include <dune/geometry/multilineargeometry.hh>
20
24
26
30
37
39
40namespace Dumux::Properties {
41
43// Create new type tags
44namespace TTag {
45struct BoxModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
46} // end namespace TTag
47
49template<class TypeTag>
50struct GridGeometry<TypeTag, TTag::BoxModel>
51{
52private:
53 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
56public:
58};
59
61template<class TypeTag>
62struct GridVolumeVariables<TypeTag, TTag::BoxModel>
63{
64private:
65 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridVolumeVariablesCache>();
69public:
71};
72
74template<class TypeTag>
75struct GridFluxVariablesCache<TypeTag, TTag::BoxModel>
76{
77private:
78 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
80
82 using FluxVariablesCache = GetPropTypeOr<TypeTag,
83 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
84 >;
85public:
87};
88
90template<class TypeTag>
91struct FluxVariablesCache<TypeTag, TTag::BoxModel>
92{
93private:
96public:
98};
99
101template<class TypeTag>
102struct ElementBoundaryTypes<TypeTag, TTag::BoxModel>
103{
104private:
106 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
107public:
109};
110
112template<class TypeTag>
113struct BaseLocalResidual<TypeTag, TTag::BoxModel>
115
116} // namespace Dumux::Properties
117
118namespace Dumux::Detail {
119
120template<class Problem>
121struct ProblemTraits<Problem, DiscretizationMethods::Box>
122{
123private:
124 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
125 using Element = typename GG::GridView::template Codim<0>::Entity;
126 using SubControlVolume = typename GG::SubControlVolume;
127public:
128 using GridGeometry = GG;
129 // BoundaryTypes is whatever the problem returns from boundaryTypes(element, scv)
130 using BoundaryTypes = std::decay_t<decltype(std::declval<Problem>().boundaryTypes(std::declval<Element>(), std::declval<SubControlVolume>()))>;
131};
132
133template<class GridView>
134struct LocalDofTraits<GridView, DiscretizationMethods::Box>
135{
136 static constexpr int dim = GridView::dimension;
137 // Dofs are located at the corners
138 static constexpr int numCubeElementDofs = (1<<dim);
139};
140
141} // end namespace Dumux:Detail
142
143#endif
Boundary flag to store e.g. in sub control volume faces.
Base class for the finite volume geometry vector for box schemes This builds up the sub control volum...
Definition: discretization/box/fvgridgeometry.hh:72
This class stores an array of BoundaryTypes objects.
Definition: cvfe/elementboundarytypes.hh:28
Flux variables cache class for control-volume finite element schemes. For control-volume finite eleme...
Definition: discretization/cvfe/fluxvariablescache.hh:27
Flux variable caches on a gridview.
Definition: discretization/cvfe/gridfluxvariablescache.hh:46
Base class for the grid volume variables.
Definition: cvfe/gridvolumevariables.hh:42
The element-wise residual for control-volume finite element schemes.
Definition: cvfelocalresidual.hh:60
Defines all properties used in Dumux.
Type traits for problem classes.
Boundary types gathered on an element.
The local element solution class for control-volume finite element methods.
The grid volume variables class for control-volume finite element methods.
Calculates the element-wise residual for control-volume finite element schemes.
Base class for the finite volume geometry vector for box models This builds up the sub control volume...
Flux variables cache class for control-volume finite element schemes.
Global flux variable cache.
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
Element-specific traits of grid geometries / discretization schemes.
The available discretization methods in Dumux.
Distance implementation details.
Definition: cvfelocalresidual.hh:25
CVFE< CVFEMethods::PQ1 > Box
Definition: method.hh:94
The energy balance equation for a porous solid.
Definition: common/properties.hh:26
Definition: cvfe/gridvolumevariables.hh:29
Definition: localdoftraits.hh:18
std::decay_t< decltype(std::declval< Problem >().boundaryTypes(std::declval< Element >(), std::declval< SubControlVolume >()))> BoundaryTypes
Definition: box.hh:130
Definition: common/typetraits/problem.hh:23
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: box.hh:45