version 3.11-dev
Loading...
Searching...
No Matches
pq3.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-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12
13#ifndef DUMUX_DISCRETIZATION_PQ3_HH
14#define DUMUX_DISCRETIZATION_PQ3_HH
15
16#include <concepts>
17#include <type_traits>
18#include <utility>
19
23#include <dumux/common/typetraits/boundary_.hh>
24
25#include <dumux/assembly/cvfelocalresidual_.hh>
26
31
38
44
45
46namespace Dumux::Properties {
47
48namespace TTag {
49struct PQ3Base { using InheritsFrom = std::tuple<GridProperties>; };
50struct PQ3HybridModel { using InheritsFrom = std::tuple<PQ3Base>; };
51struct PQ3FEModel { using InheritsFrom = std::tuple<PQ3Base>; };
52} // end namespace TTag
53
54template<class TypeTag>
55struct GridGeometry<TypeTag, TTag::PQ3HybridModel>
56{
57private:
58 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
61public:
63};
64
66template<class TypeTag>
81
83template<class TypeTag>
84struct EnableGridGeometryCache<TypeTag, TTag::PQ3HybridModel> { static constexpr bool value = false; };
85
87template<class TypeTag>
88struct EnableGridVolumeVariablesCache<TypeTag, TTag::PQ3HybridModel> { static constexpr bool value = false; };
89
91template<class TypeTag>
92struct SolutionVector<TypeTag, TTag::PQ3HybridModel> { using type = Dune::BlockVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; };
93
95template<class TypeTag>
96struct JacobianMatrix<TypeTag, TTag::PQ3HybridModel>
97{
98private:
101 using MatrixBlock = typename Dune::FieldMatrix<Scalar, numEq, numEq>;
102public:
104};
105
106template<class TypeTag>
107struct ElementBoundaryTypes<TypeTag, TTag::PQ3Base>
108{
109private:
112 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
113public:
114 using type = std::conditional_t<
115 Dumux::Detail::hasProblemBoundaryTypesForFaceFunction<Problem, typename GD::LocalView>(),
118 >;
119};
120
122template<class TypeTag>
123struct GridGeometry<TypeTag, TTag::PQ3FEModel>
124{
125private:
126 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
129public:
131};
132
133template<class TypeTag>
147
149template<class TypeTag>
150struct EnableGridVolumeVariablesCache<TypeTag, TTag::PQ3FEModel> { static constexpr bool value = false; };
151
153template<class TypeTag>
154struct SolutionVector<TypeTag, TTag::PQ3FEModel> { using type = Dune::BlockVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; };
155
157template<class TypeTag>
158struct JacobianMatrix<TypeTag, TTag::PQ3FEModel>
159{
160private:
163 using MatrixBlock = typename Dune::FieldMatrix<Scalar, numEq, numEq>;
164public:
166};
167
168} // namespace Dumux::Properties
169
170namespace Dumux::Detail {
171
172template<class Problem>
174{
175private:
176 using GD = std::decay_t<decltype(std::declval<Problem>().gridDiscretization())>;
177public:
179 using BoundaryTypes = Detail::BoundaryTypes<Problem, typename GD::LocalView>::type;
180};
181
182template<class TypeTag>
183concept PQ3Model = std::is_same_v<
186>;
187
188template<class T>
190
191template<PQ3HybridModel TypeTag>
193{ using type = Dumux::Experimental::CVFELocalResidual<TypeTag>; };
194
195template<class T>
197
198template<PQ3FEModel TypeTag>
201
202} // end namespace Dumux::Detail
203
204#endif
The element-wise residual for grid-based discretization schemes.
Boundary flag to store e.g. in sub control volume faces.
Interpolation point data related to a local basis.
Definition cvfe/interpolationpointdata.hh:161
This class stores an array of BoundaryTypes objects.
Definition cvfe/elementboundarytypes.hh:29
A class for providing the new update interface of variables. This allows to still use the VolumesVari...
Definition variablesadapter.hh:36
This class stores an array of BoundaryTypes objects. This class is not dependent on the used discreti...
Definition elementboundarytypes.hh:30
The grid variables cache class for hybrid control-volume finite element methods.
Definition cvfe/hybrid/gridvariablescache.hh:49
Base class for the grid local variables.
Definition fem/gridvariablescache.hh:50
The grid variables class for general schemes, storing variables and data.
Definition discretization/gridvariables.hh:27
The element-wise residual for grid-based discretization schemes.
Definition assembly/localresidual.hh:39
Class for pq3 finite element grid discretizations.
Definition pq3/fegriddiscretization.hh:84
Finite volume geometry for the pq3 hybrid CVFE scheme (order-3 Lagrange elements).
Definition discretization/pq3/fvgridgeometry.hh:157
Definition matrix.hh:20
Defines all properties used in Dumux.
Type traits for problem classes.
Definition pq3.hh:196
Definition pq3.hh:189
Definition pq3.hh:183
Boundary types gathered on an element.
The local element solution class for control-volume finite element methods.
The grid variables cache class for hybrid control-volume finite element methods.
Classes representing interpolation point data for control-volume finite element schemes.
The default local operator than can be specialized for each discretization scheme.
The grid variables class for general schemes, storing variables and data.
Base class for the finite volume geometry vector for the pq3 method This builds up the sub control vo...
Boundary types gathered on an element.
The element variables class.
The grid local variables class for finite element methods.
Declares properties required for finite-volume models models.
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:310
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:296
constexpr bool inheritsFrom()
Return true if the given type tag inherits from the given parent type tag.
Definition propertysystem.hh:262
The available discretization methods in Dumux.
Definition cvfelocalresidual.hh:25
Definition method.hh:20
CVFE< CVFEMethods::PQ3 > PQ3
Definition method.hh:138
Type tag for numeric models.
Definition grid.hh:24
The energy balance equation for a porous solid.
Definition common/properties.hh:26
Finite element grid discretization for the PQ3 method.
CCLocalResidual< TypeTag > type
Definition ccmpfa.hh:185
Definition defaultlocaloperator.hh:19
Detail::BoundaryTypes< Problem, typename GD::LocalView >::type BoundaryTypes
Definition pq3.hh:179
Definition common/typetraits/problem.hh:23
Definition cvfe/hybrid/gridvariablescache.hh:35
Definition fem/gridvariablescache.hh:36
Detail::ProblemGridGeometry< Problem > GridDiscretization
Definition common/typetraits/problem.hh:51
typename Detail::template ProblemTraits< Problem, typename GridGeometry::DiscretizationMethod >::BoundaryTypes BoundaryTypes
Definition common/typetraits/problem.hh:52
std::conditional_t< Dumux::Detail::hasProblemBoundaryTypesForFaceFunction< Problem, typename GD::LocalView >(), Dumux::ElementIntersectionBoundaryTypes< BoundaryTypes >, Dumux::CVFEElementBoundaryTypes< BoundaryTypes > > type
Definition pq3.hh:114
Dumux::Experimental::PQ3FEGridDiscretization< Scalar, GridView, enableCache > type
Definition pq3.hh:130
PQ3FVGridGeometry< Scalar, GridView, enableCache > type
Definition pq3.hh:62
Dumux::Experimental::GridVariables< GG, GVC > type
Definition pq3.hh:145
Dumux::Experimental::GridVariables< GG, GVC > type
Definition pq3.hh:79
typename Dune::BCRSMatrix< MatrixBlock > type
Definition pq3.hh:165
typename Dune::BCRSMatrix< MatrixBlock > type
Definition pq3.hh:103
Dune::BlockVector< GetPropType< TypeTag, Properties::PrimaryVariables > > type
Definition pq3.hh:154
Dune::BlockVector< GetPropType< TypeTag, Properties::PrimaryVariables > > type
Definition pq3.hh:92
std::tuple< GridProperties > InheritsFrom
Definition pq3.hh:49
std::tuple< PQ3Base > InheritsFrom
Definition pq3.hh:51
std::tuple< PQ3Base > InheritsFrom
Definition pq3.hh:50