version 3.11-dev
Loading...
Searching...
No Matches
pq2.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_PQ2_HH
14#define DUMUX_DISCRETIZATION_PQ2_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
40
42
43namespace Dumux::Properties {
44
46// Create new type tags
47namespace TTag {
48struct PQ2HybridModel { using InheritsFrom = std::tuple<FiniteVolumeModel>; };
49} // end namespace TTag
50
52template<class TypeTag>
53struct GridGeometry<TypeTag, TTag::PQ2HybridModel>
54{
55private:
56 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
59public:
61};
62
64template<class TypeTag>
75
77template<class TypeTag>
78struct FluxVariablesCache<TypeTag, TTag::PQ2HybridModel>
79{
80private:
83public:
85};
86
88template<class TypeTag>
89struct GridFluxVariablesCache<TypeTag, TTag::PQ2HybridModel>
90{
91private:
92 static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridFluxVariablesCache>();
94
96 using FluxVariablesCache = GetPropTypeOr<TypeTag,
97 Properties::FluxVariablesCache, FluxVariablesCaching::EmptyCache<Scalar>
98 >;
99public:
101};
102
104template<class TypeTag>
105struct ElementBoundaryTypes<TypeTag, TTag::PQ2HybridModel>
106{
107private:
109 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
110 using BoundaryTypes = typename ProblemTraits<Problem>::BoundaryTypes;
111public:
112 // Check if problem has new boundaryTypes interface
113 // then use ElementIntersectionBoundaryTypes
114 using type = std::conditional_t<
115 Dumux::Detail::hasProblemBoundaryTypesForFaceFunction<Problem, typename GG::LocalView>(),
118 >;
119};
120
121} // namespace Dumux::Properties
122
123namespace Dumux::Detail {
124
125template<class Problem>
127{
128private:
129 using GG = std::decay_t<decltype(std::declval<Problem>().gridGeometry())>;
130public:
131 using GridGeometry = GG;
132 // Determine BoundaryTypes dependent on the used problem interface, either boundaryTypes(element, scv) or boundaryTypes(element, boundaryFace)
133 using BoundaryTypes = Detail::BoundaryTypes<Problem, typename GG::LocalView>::type;
134};
135
136template<class TypeTag>
137concept PQ2HybridModel = std::is_same_v<
140>;
141
142template<PQ2HybridModel TypeTag>
144{
145private:
147 static constexpr bool usesGeneralGridVariables =
148 Dumux::Concept::GridVariables<GV> && !Dumux::Concept::FVGridVariables<GV>;
149public:
150 using type = std::conditional_t<usesGeneralGridVariables,
151 Dumux::Experimental::CVFELocalResidual<TypeTag>,
153};
154
155} // end namespace Dumux::Detail
156
157#endif
Boundary flag to store e.g. in sub control volume faces.
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 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
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
Base class for the finite volume geometry vector for pq2 schemes This builds up the sub control volum...
Definition discretization/pq2/fvgridgeometry.hh:138
Defines all properties used in Dumux.
Type traits for problem classes.
Definition pq2.hh:137
Boundary types gathered on an element.
The local element solution class for control-volume finite element methods.
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.
Base class for the finite volume geometry vector for the pq2 method This builds up the sub control vo...
Boundary types gathered on an element.
Classes related to flux variables caching.
Declares properties required for finite-volume models models.
The grid local variables class for control-volume finite element methods.
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
The available discretization methods in Dumux.
Definition cvfelocalresidual.hh:25
Definition method.hh:20
CVFE< CVFEMethods::PQ2 > PQ2
Definition method.hh:122
Type tag for numeric models.
Definition grid.hh:24
The energy balance equation for a porous solid.
Definition common/properties.hh:26
std::conditional_t< usesGeneralGridVariables, Dumux::Experimental::CVFELocalResidual< TypeTag >, Dumux::CVFELocalResidual< TypeTag > > type
Definition box.hh:152
Definition defaultlocaloperator.hh:19
Detail::BoundaryTypes< Problem, typename GG::LocalView >::type BoundaryTypes
Definition pq2.hh:133
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:51
std::conditional_t< Dumux::Detail::hasProblemBoundaryTypesForFaceFunction< Problem, typename GG::LocalView >(), Dumux::ElementIntersectionBoundaryTypes< BoundaryTypes >, Dumux::CVFEElementBoundaryTypes< BoundaryTypes > > type
Definition pq2.hh:114
HybridCVFEFluxVariablesCache< Scalar, GridGeometry > type
Definition pq2.hh:84
HybridCVFEGridFluxVariablesCache< Problem, FluxVariablesCache, enableCache > type
Definition pq2.hh:100
PQ2FVGridGeometry< Scalar, GridView, enableCache > type
Definition pq2.hh:60
Dumux::Detail::CVFE::CVFEGridVariablesCache< Traits, enableCache > type
Definition pq2.hh:73
std::tuple< FiniteVolumeModel > InheritsFrom
Definition pq2.hh:48