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
21#include <dumux/common/concepts/variables_.hh>
23#include <dumux/common/typetraits/boundary_.hh>
24
26#include <dumux/assembly/cvfelocalresidual_.hh>
27
32
41
47
49
50namespace Dumux::Properties {
51
52namespace TTag {
53struct PQ3Base { using InheritsFrom = std::tuple<GridProperties>; };
54struct PQ3HybridModel { using InheritsFrom = std::tuple<FiniteVolumeModel, PQ3Base>; };
55struct PQ3FEModel { using InheritsFrom = std::tuple<PQ3Base>; };
56} // end namespace TTag
57
58template<class TypeTag>
59struct GridGeometry<TypeTag, TTag::PQ3HybridModel>
60{
61private:
62 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
65public:
67};
68
69template<class TypeTag>
80
81template<class TypeTag>
82struct FluxVariablesCache<TypeTag, TTag::PQ3HybridModel>
83{
84private:
87public:
89};
90
91template<class TypeTag>
92struct GridFluxVariablesCache<TypeTag, TTag::PQ3HybridModel>
93{
94private:
95 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
98 using FluxVariablesCache = GetPropTypeOr<TypeTag,
99 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
100 >;
101public:
103};
104
105template<class TypeTag>
106struct ElementBoundaryTypes<TypeTag, TTag::PQ3Base>
107{
108private:
110 using GG = std::decay_t<decltype(std::declval<Problem>().gridDiscretization())>;
111 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
112public:
113 using type = std::conditional_t<
114 Dumux::Detail::hasProblemBoundaryTypesForFaceFunction<Problem, typename GG::LocalView>(),
117 >;
118};
119
121template<class TypeTag>
122struct GridGeometry<TypeTag, TTag::PQ3FEModel>
123{
124private:
125 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
128public:
130};
131
132template<class TypeTag>
146
148template<class TypeTag>
149struct EnableGridVolumeVariablesCache<TypeTag, TTag::PQ3FEModel> { static constexpr bool value = false; };
150
152template<class TypeTag>
153struct SolutionVector<TypeTag, TTag::PQ3FEModel> { using type = Dune::BlockVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; };
154
156template<class TypeTag>
157struct JacobianMatrix<TypeTag, TTag::PQ3FEModel>
158{
159private:
162 using MatrixBlock = typename Dune::FieldMatrix<Scalar, numEq, numEq>;
163public:
165};
166
167} // namespace Dumux::Properties
168
169namespace Dumux::Detail {
170
171template<class Problem>
173{
174private:
175 using GG = std::decay_t<decltype(std::declval<Problem>().gridDiscretization())>;
176public:
177 using GridGeometry = GG;
178 using BoundaryTypes = Detail::BoundaryTypes<Problem, typename GG::LocalView>::type;
179};
180
181template<class TypeTag>
182concept PQ3Model = std::is_same_v<
185>;
186
187template<class T>
189
190template<PQ3HybridModel TypeTag>
192{
193private:
195 static constexpr bool usesGeneralGridVariables =
196 Dumux::Concept::GridVariables<GV> && !Dumux::Concept::FVGridVariables<GV>;
197public:
198 using type = std::conditional_t<usesGeneralGridVariables,
199 Dumux::Experimental::CVFELocalResidual<TypeTag>,
201};
202
203template<class T>
205
206template<PQ3FEModel TypeTag>
209
210} // end namespace Dumux::Detail
211
212#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:28
The element-wise residual for control-volume finite element schemes.
Definition cvfelocalresidual.hh:60
Base class for the grid local variables.
Definition cvfe/gridvariablescache.hh:44
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
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
Flux variables cache class for control-volume finite element schemes. For control-volume finite eleme...
Definition discretization/cvfe/hybrid/fluxvariablescache.hh:32
Flux variable caches implementation on a gridview.
Definition discretization/cvfe/hybrid/gridfluxvariablescache.hh:51
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:204
Definition pq3.hh:188
Definition pq3.hh:182
Boundary types gathered on an element.
The local element solution class for control-volume finite element methods.
The grid local variables class for control-volume finite element methods.
Classes representing interpolation point data for control-volume finite element schemes.
Calculates the element-wise residual for control-volume finite element schemes.
The default local operator than can be specialized for each discretization scheme.
Flux variables cache class for control-volume finite element schemes.
Global flux variable cache.
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.
Classes related to flux variables caching.
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
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
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.
Definition cvfe/gridvariablescache.hh:31
CCLocalResidual< TypeTag > type
Definition ccmpfa.hh:185
Definition defaultlocaloperator.hh:19
Detail::BoundaryTypes< Problem, typename GG::LocalView >::type BoundaryTypes
Definition pq3.hh:178
Definition common/typetraits/problem.hh:23
Definition fem/gridvariablescache.hh:36
An empty flux variables cache.
Definition fluxvariablescaching.hh:35
typename Detail::template ProblemTraits< Problem, typename GridGeometry::DiscretizationMethod >::BoundaryTypes BoundaryTypes
Definition common/typetraits/problem.hh:51
std::conditional_t< Dumux::Detail::hasProblemBoundaryTypesForFaceFunction< Problem, typename GG::LocalView >(), Dumux::ElementIntersectionBoundaryTypes< BoundaryTypes >, Dumux::CVFEElementBoundaryTypes< BoundaryTypes > > type
Definition pq3.hh:113
HybridCVFEFluxVariablesCache< Scalar, GridGeometry > type
Definition pq3.hh:88
HybridCVFEGridFluxVariablesCache< Problem, FluxVariablesCache, enableCache > type
Definition pq3.hh:102
Dumux::Experimental::PQ3FEGridDiscretization< Scalar, GridView, enableCache > type
Definition pq3.hh:129
PQ3FVGridGeometry< Scalar, GridView, enableCache > type
Definition pq3.hh:66
Dumux::Experimental::GridVariables< GG, GVC > type
Definition pq3.hh:144
Dumux::Detail::CVFE::CVFEGridVariablesCache< Traits, enableCache > type
Definition pq3.hh:78
typename Dune::BCRSMatrix< MatrixBlock > type
Definition pq3.hh:164
Dune::BlockVector< GetPropType< TypeTag, Properties::PrimaryVariables > > type
Definition pq3.hh:153
std::tuple< GridProperties > InheritsFrom
Definition pq3.hh:53
std::tuple< PQ3Base > InheritsFrom
Definition pq3.hh:55
std::tuple< FiniteVolumeModel, PQ3Base > InheritsFrom
Definition pq3.hh:54