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
36
40
41
42namespace Dumux::Properties {
43
44namespace TTag {
45struct PQ3Base { using InheritsFrom = std::tuple<GridProperties>; };
46struct PQ3HybridModel { using InheritsFrom = std::tuple<PQ3Base>; };
47struct PQ3FEModel { using InheritsFrom = std::tuple<PQ3Base>; };
48} // end namespace TTag
49
50template<class TypeTag>
51struct GridGeometry<TypeTag, TTag::PQ3HybridModel>
52{
53private:
54 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
57public:
59};
60
62template<class TypeTag>
63struct GridVariables<TypeTag, TTag::PQ3HybridModel>
65
67template<class TypeTag>
68struct EnableGridGeometryCache<TypeTag, TTag::PQ3HybridModel> { static constexpr bool value = false; };
69
71template<class TypeTag>
72struct EnableGridVolumeVariablesCache<TypeTag, TTag::PQ3HybridModel> { static constexpr bool value = false; };
73
75template<class TypeTag>
76struct SolutionVector<TypeTag, TTag::PQ3HybridModel> { using type = Dune::BlockVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; };
77
79template<class TypeTag>
80struct JacobianMatrix<TypeTag, TTag::PQ3HybridModel>
81{
82private:
85 using MatrixBlock = typename Dune::FieldMatrix<PrimaryVariable, numEq, numEq>;
86public:
88};
89
90template<class TypeTag>
91struct ElementBoundaryTypes<TypeTag, TTag::PQ3Base>
92{
93private:
96 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
97public:
98 using type = std::conditional_t<
99 Dumux::Detail::hasProblemBoundaryTypesForFaceFunction<Problem, typename GD::LocalView>(),
102 >;
103};
104
106template<class TypeTag>
107struct GridGeometry<TypeTag, TTag::PQ3FEModel>
108{
109private:
110 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
113public:
115};
116
117template<class TypeTag>
118struct GridVariables<TypeTag, TTag::PQ3FEModel>
120
122template<class TypeTag>
123struct EnableGridVolumeVariablesCache<TypeTag, TTag::PQ3FEModel> { static constexpr bool value = false; };
124
126template<class TypeTag>
127struct SolutionVector<TypeTag, TTag::PQ3FEModel> { using type = Dune::BlockVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; };
128
130template<class TypeTag>
131struct JacobianMatrix<TypeTag, TTag::PQ3FEModel>
132{
133private:
136 using MatrixBlock = typename Dune::FieldMatrix<PrimaryVariable, numEq, numEq>;
137public:
139};
140
141} // namespace Dumux::Properties
142
143namespace Dumux::Detail {
144
145template<class Problem>
147{
148private:
149 using GD = std::decay_t<decltype(std::declval<Problem>().gridDiscretization())>;
150public:
152 using BoundaryTypes = Detail::BoundaryTypes<Problem, typename GD::LocalView>::type;
153};
154
155template<class TypeTag>
156concept PQ3Model = std::is_same_v<
159>;
160
161template<class T>
163
164template<PQ3HybridModel TypeTag>
166{ using type = Dumux::Experimental::CVFELocalResidual<TypeTag>; };
167
168template<class T>
170
171template<PQ3FEModel TypeTag>
174
175} // end namespace Dumux::Detail
176
177#endif
The element-wise residual for grid-based discretization schemes.
Boundary flag to store e.g. in sub control volume faces.
This class stores an array of BoundaryTypes objects.
Definition cvfe/elementboundarytypes.hh:29
This class stores an array of BoundaryTypes objects. This class is not dependent on the used discreti...
Definition elementboundarytypes.hh:30
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:87
Finite volume geometry for the pq3 hybrid CVFE scheme (order-3 Lagrange elements).
Definition discretization/pq3/fvgridgeometry.hh:159
Definition matrix.hh:20
Defines all properties used in Dumux.
Type traits for problem classes.
Definition pq3.hh:169
Definition pq3.hh:162
Definition pq3.hh:156
Boundary types gathered on an element.
The local element solution class for control-volume finite element methods.
Grid variables with the variables cache selected depending on the element discretization.
The default local operator than can be specialized for each discretization scheme.
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.
Declares properties required for finite-volume models models.
GridVariables< GetPropType< TypeTag, Properties::GridGeometry >, DefaultGridVariablesCache< GetPropType< TypeTag, Properties::GridGeometry >, GetPropType< TypeTag, Properties::Problem >, Variables, getPropValue< TypeTag, Properties::EnableGridVolumeVariablesCache >() > > DefaultGridVariables
The grid variables of a model whose variables are defined per local degree of freedom.
Definition defaultgridvariables.hh:82
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:152
Definition common/typetraits/problem.hh:23
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:98
Dumux::Experimental::PQ3FEGridDiscretization< Scalar, GridView, enableCache > type
Definition pq3.hh:114
PQ3FVGridGeometry< Scalar, GridView, enableCache > type
Definition pq3.hh:58
Dumux::Experimental::DefaultGridVariables< TypeTag > type
Definition pq3.hh:119
Dumux::Experimental::DefaultGridVariables< TypeTag > type
Definition pq3.hh:64
typename Dune::BCRSMatrix< MatrixBlock > type
Definition pq3.hh:138
typename Dune::BCRSMatrix< MatrixBlock > type
Definition pq3.hh:87
Dune::BlockVector< GetPropType< TypeTag, Properties::PrimaryVariables > > type
Definition pq3.hh:127
Dune::BlockVector< GetPropType< TypeTag, Properties::PrimaryVariables > > type
Definition pq3.hh:76
std::tuple< GridProperties > InheritsFrom
Definition pq3.hh:45
std::tuple< PQ3Base > InheritsFrom
Definition pq3.hh:47
std::tuple< PQ3Base > InheritsFrom
Definition pq3.hh:46