version 3.11-dev
Loading...
Searching...
No Matches
discretization/cvfe/elementfluxvariablescache.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#ifndef DUMUX_DISCRETIZATION_CVFE_ELEMENT_FLUXVARSCACHE_HH
13#define DUMUX_DISCRETIZATION_CVFE_ELEMENT_FLUXVARSCACHE_HH
14
15#include <cstddef>
16#include <vector>
17#include <utility>
18
19#include <dune/common/std/type_traits.hh>
20
21#include <dumux/common/concepts/ipdata_.hh>
24
25namespace Dumux {
26
27namespace Detail {
28
29template<class FluxVariablesCache>
30using DefinesScvfQuadratureRule = typename FluxVariablesCache::ScvfQuadratureRule;
31
32template<class FluxVariablesCache>
35 FluxVariablesCache>;
36
37} // namespace Detail
38
47template<class GFVC, bool cachingEnabled, class ScvfQuadratureRule>
50
55template<class GFVC, bool cachingEnabled>
57
62template<class GFVC, class ScvfQR>
63class CVFEElementFluxVariablesCacheImpl<GFVC, true, ScvfQR>
64{
65public:
68
70 using FluxVariablesCache = typename GFVC::FluxVariablesCache;
71
73 : gridFluxVarsCachePtr_(&global) {}
74
75 // Function is called prior to flux calculations on the element.
76 // We assume the FVGeometries to be bound at this point
77 template<class FVElementGeometry, class ElementVolumeVariables>
78 void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
79 const FVElementGeometry& fvGeometry,
80 const ElementVolumeVariables& elemVolVars) &
81 { bindElement(element, fvGeometry, elemVolVars); }
82
88 template<class FVElementGeometry, class ElementVolumeVariables>
89 CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
90 const FVElementGeometry& fvGeometry,
91 const ElementVolumeVariables& elemVolVars) &&
92 {
93 this->bind(element, fvGeometry, elemVolVars);
94 return std::move(*this);
95 }
96
97 template<class FVElementGeometry, class ElementVolumeVariables>
98 void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
99 const FVElementGeometry& fvGeometry,
100 const ElementVolumeVariables& elemVolVars) &
101 {
102 const auto& gridDiscretization = Deprecated::gridGeometry(fvGeometry);
103 eIdx_ = gridDiscretization.elementMapper().index(element);
104 }
105
111 template<class FVElementGeometry, class ElementVolumeVariables>
112 CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
113 const FVElementGeometry& fvGeometry,
114 const ElementVolumeVariables& elemVolVars) &&
115 {
116 this->bindElement(element, fvGeometry, elemVolVars);
117 return std::move(*this);
118 }
119
120 template<class FVElementGeometry, class ElementVolumeVariables>
121 void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
122 const FVElementGeometry& fvGeometry,
123 const ElementVolumeVariables& elemVolVars,
124 const typename FVElementGeometry::SubControlVolumeFace& scvf) &
125 { bindElement(element, fvGeometry, elemVolVars); }
126
132 template<class FVElementGeometry, class ElementVolumeVariables>
133 CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
134 const FVElementGeometry& fvGeometry,
135 const ElementVolumeVariables& elemVolVars,
136 const typename FVElementGeometry::SubControlVolumeFace& scvf) &&
137 {
138 this->bindScvf(element, fvGeometry, elemVolVars, scvf);
139 return std::move(*this);
140 }
141
143 template<class FVElementGeometry, class ElementVolumeVariables>
144 void update(const typename FVElementGeometry::Element& element,
145 const FVElementGeometry& fvGeometry,
146 const ElementVolumeVariables& elemVolVars) {}
147
148 // access operator
149 template<class SubControlVolumeFace>
150 const FluxVariablesCache& operator [](const SubControlVolumeFace& scvf) const
151 {
152 if constexpr (std::is_same_v<ScvfQR, QuadratureRules::MidpointQuadrature>)
153 return gridFluxVarsCache().cache(eIdx_, scvf.index());
154 else
155 DUNE_THROW(Dune::NotImplemented, "CVFEElementFluxVariablesCache: Scvf access operator only implemented for MidpointQuadrature.");
156 }
157
158 // access cache for given interpolation point data
159 template<Concept::ScvfIpData IpData>
160 const FluxVariablesCache& operator [](const IpData& ipData) const
161 {
162 if constexpr (std::is_same_v<ScvfQR, QuadratureRules::MidpointQuadrature>)
163 return gridFluxVarsCache().cache(eIdx_, ipData.scvfIndex());
164 else
165 return gridFluxVarsCache().cache(eIdx_, ipData.scvfIndex(), ipData.qpIndex());
166 }
167
170 { return *gridFluxVarsCachePtr_; }
171
172private:
173 const GridFluxVariablesCache* gridFluxVarsCachePtr_;
174 std::size_t eIdx_;
175};
176
181template<class GFVC>
182class CVFEElementFluxVariablesCacheImpl<GFVC, false, QuadratureRules::MidpointQuadrature>
183{
184public:
187
189 using FluxVariablesCache = typename GFVC::FluxVariablesCache;
190
192 : gridFluxVarsCachePtr_(&global) {}
193
194 // Function is called prior to flux calculations on the element.
195 // We assume the FVGeometries to be bound at this point
196 template<class FVElementGeometry, class ElementVolumeVariables>
197 void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
198 const FVElementGeometry& fvGeometry,
199 const ElementVolumeVariables& elemVolVars) &
200 {
201 bindElement(element, fvGeometry, elemVolVars);
202 }
203
209 template<class FVElementGeometry, class ElementVolumeVariables>
210 CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
211 const FVElementGeometry& fvGeometry,
212 const ElementVolumeVariables& elemVolVars) &&
213 {
214 this->bind(element, fvGeometry, elemVolVars);
215 return std::move(*this);
216 }
217
218 template<class FVElementGeometry, class ElementVolumeVariables>
219 void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
220 const FVElementGeometry& fvGeometry,
221 const ElementVolumeVariables& elemVolVars) &
222 {
223 // temporary resizing of the cache
224 fluxVarsCache_.resize(fvGeometry.numScvf());
225 for (auto&& scvf : scvfs(fvGeometry))
226 (*this)[scvf].update(gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, scvf);
227 }
228
234 template<class FVElementGeometry, class ElementVolumeVariables>
235 CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
236 const FVElementGeometry& fvGeometry,
237 const ElementVolumeVariables& elemVolVars) &&
238 {
239 this->bindElement(element, fvGeometry, elemVolVars);
240 return std::move(*this);
241 }
242
243 template<class FVElementGeometry, class ElementVolumeVariables>
244 void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
245 const FVElementGeometry& fvGeometry,
246 const ElementVolumeVariables& elemVolVars,
247 const typename FVElementGeometry::SubControlVolumeFace& scvf) &
248 {
249 fluxVarsCache_.resize(fvGeometry.numScvf());
250 (*this)[scvf].update(gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, scvf);
251 }
252
258 template<class FVElementGeometry, class ElementVolumeVariables>
259 CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
260 const FVElementGeometry& fvGeometry,
261 const ElementVolumeVariables& elemVolVars,
262 const typename FVElementGeometry::SubControlVolumeFace& scvf) &&
263 {
264 this->bindScvf(element, fvGeometry, elemVolVars, scvf);
265 return std::move(*this);
266 }
267
272 template<class FVElementGeometry, class ElementVolumeVariables>
273 void update(const typename FVElementGeometry::Element& element,
274 const FVElementGeometry& fvGeometry,
275 const ElementVolumeVariables& elemVolVars)
276 {
277 if constexpr (FluxVariablesCache::isSolDependent)
278 {
279 fluxVarsCache_.resize(fvGeometry.numScvf());
280 for (const auto& scvf : scvfs(fvGeometry))
281 (*this)[scvf].update(gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, scvf);
282 }
283 }
284
285 // access operator
286 template<class SubControlVolumeFace>
287 const FluxVariablesCache& operator [](const SubControlVolumeFace& scvf) const
288 { return fluxVarsCache_[scvf.index()]; }
289
290 // access operator
291 template<class SubControlVolumeFace>
292 FluxVariablesCache& operator [](const SubControlVolumeFace& scvf)
293 { return fluxVarsCache_[scvf.index()]; }
294
295 // access cache for a given interpolation point data
296 template<Concept::ScvfIpData IpData>
297 const FluxVariablesCache& operator [](const IpData& ipData) const
298 { return fluxVarsCache_[ipData.scvfIndex()]; }
299
300 // access cache for a given interpolation point data
301 template<Concept::ScvfIpData IpData>
302 FluxVariablesCache& operator [](const IpData& ipData)
303 { return fluxVarsCache_[ipData.scvfIndex()]; }
304
307 { return *gridFluxVarsCachePtr_; }
308
309private:
310 const GridFluxVariablesCache* gridFluxVarsCachePtr_;
311 std::vector<FluxVariablesCache> fluxVarsCache_;
312};
313
318template<class GFVC, class ScvfQR>
319class CVFEElementFluxVariablesCacheImpl<GFVC, false, ScvfQR>
320{
321public:
324
326 using FluxVariablesCache = typename GFVC::FluxVariablesCache;
327
329 : gridFluxVarsCachePtr_(&global) {}
330
331 // Function is called prior to flux calculations on the element.
332 // We assume the FVGeometries to be bound at this point
333 template<class FVElementGeometry, class ElementVolumeVariables>
334 void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
335 const FVElementGeometry& fvGeometry,
336 const ElementVolumeVariables& elemVolVars) &
337 {
338 bindElement(element, fvGeometry, elemVolVars);
339 }
340
346 template<class FVElementGeometry, class ElementVolumeVariables>
347 CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
348 const FVElementGeometry& fvGeometry,
349 const ElementVolumeVariables& elemVolVars) &&
350 {
351 this->bind(element, fvGeometry, elemVolVars);
352 return std::move(*this);
353 }
354
355 template<class FVElementGeometry, class ElementVolumeVariables>
356 void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
357 const FVElementGeometry& fvGeometry,
358 const ElementVolumeVariables& elemVolVars) &
359 {
360 // temporary resizing of the cache
361 fluxVarsCache_.resize(fvGeometry.numScvf());
362 for (auto&& scvf : scvfs(fvGeometry))
363 {
364 const auto quadRule = CVFE::quadratureRule(fvGeometry, scvf);
365 fluxVarsCache_[scvf.index()].resize(std::ranges::size(quadRule));
366 for (const auto& qpData : quadRule)
367 fluxVarsCache_[scvf.index()][qpData.ipData().qpIndex()].update(
368 gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, qpData.ipData()
369 );
370 }
371 }
372
378 template<class FVElementGeometry, class ElementVolumeVariables>
379 CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
380 const FVElementGeometry& fvGeometry,
381 const ElementVolumeVariables& elemVolVars) &&
382 {
383 this->bindElement(element, fvGeometry, elemVolVars);
384 return std::move(*this);
385 }
386
387 template<class FVElementGeometry, class ElementVolumeVariables>
388 void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
389 const FVElementGeometry& fvGeometry,
390 const ElementVolumeVariables& elemVolVars,
391 const typename FVElementGeometry::SubControlVolumeFace& scvf) &
392 {
393 fluxVarsCache_.resize(fvGeometry.numScvf());
394 const auto quadRule = CVFE::quadratureRule(fvGeometry, scvf);
395 fluxVarsCache_[scvf.index()].resize(std::ranges::size(quadRule));
396 for (const auto& qpData : quadRule)
397 fluxVarsCache_[scvf.index()][qpData.ipData().qpIndex()].update(
398 gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, qpData.ipData()
399 );
400 }
401
407 template<class FVElementGeometry, class ElementVolumeVariables>
408 CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim<0>::Entity& element,
409 const FVElementGeometry& fvGeometry,
410 const ElementVolumeVariables& elemVolVars,
411 const typename FVElementGeometry::SubControlVolumeFace& scvf) &&
412 {
413 this->bindScvf(element, fvGeometry, elemVolVars, scvf);
414 return std::move(*this);
415 }
416
421 template<class FVElementGeometry, class ElementVolumeVariables>
422 void update(const typename FVElementGeometry::Element& element,
423 const FVElementGeometry& fvGeometry,
424 const ElementVolumeVariables& elemVolVars)
425 {
426 if constexpr (FluxVariablesCache::isSolDependent)
427 {
428 fluxVarsCache_.resize(fvGeometry.numScvf());
429 for (const auto& scvf : scvfs(fvGeometry))
430 {
431 const auto quadRule = CVFE::quadratureRule(fvGeometry, scvf);
432 fluxVarsCache_[scvf.index()].resize(std::ranges::size(quadRule));
433 for (const auto& qpData : quadRule)
434 fluxVarsCache_[scvf.index()][qpData.ipData().qpIndex()].update(
435 gridFluxVarsCache().problem(), element, fvGeometry, elemVolVars, qpData.ipData()
436 );
437 }
438 }
439 }
440
441 // access cache for a given interpolation point data
442 template<Concept::ScvfQpIpData IpData>
443 const FluxVariablesCache& operator [](const IpData& ipData) const
444 { return fluxVarsCache_[ipData.scvfIndex()][ipData.qpIndex()]; }
445
446 // access cache for a given interpolation point data
447 template<Concept::ScvfQpIpData IpData>
448 FluxVariablesCache& operator [](const IpData& ipData)
449 { return fluxVarsCache_[ipData.scvfIndex()][ipData.qpIndex()]; }
450
453 { return *gridFluxVarsCachePtr_; }
454
455private:
456 const GridFluxVariablesCache* gridFluxVarsCachePtr_;
457 std::vector<std::vector<FluxVariablesCache>> fluxVarsCache_;
458};
459
460} // end namespace Dumux
461
462#endif
CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:235
void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:197
void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:219
typename GFVC::FluxVariablesCache FluxVariablesCache
export the type of the flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:189
CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:210
CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:259
const GridFluxVariablesCache & gridFluxVarsCache() const
The global object we are a restriction of.
Definition discretization/cvfe/elementfluxvariablescache.hh:306
void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &
Definition discretization/cvfe/elementfluxvariablescache.hh:244
void update(const typename FVElementGeometry::Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars)
Update the caches if the volume variables have changed and the cache is solution-dependent.
Definition discretization/cvfe/elementfluxvariablescache.hh:273
GFVC GridFluxVariablesCache
export the type of the grid flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:186
CVFEElementFluxVariablesCacheImpl(const GridFluxVariablesCache &global)
Definition discretization/cvfe/elementfluxvariablescache.hh:191
typename GFVC::FluxVariablesCache FluxVariablesCache
export the type of the flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:326
void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:356
void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &
Definition discretization/cvfe/elementfluxvariablescache.hh:388
CVFEElementFluxVariablesCacheImpl(const GridFluxVariablesCache &global)
Definition discretization/cvfe/elementfluxvariablescache.hh:328
GFVC GridFluxVariablesCache
export the type of the grid flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:323
const GridFluxVariablesCache & gridFluxVarsCache() const
The global object we are a restriction of.
Definition discretization/cvfe/elementfluxvariablescache.hh:452
void update(const typename FVElementGeometry::Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars)
Update the caches if the volume variables have changed and the cache is solution-dependent.
Definition discretization/cvfe/elementfluxvariablescache.hh:422
CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:408
CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:347
CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:379
void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:334
CVFEElementFluxVariablesCacheImpl bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:133
CVFEElementFluxVariablesCacheImpl bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:89
void bind(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:78
void update(const typename FVElementGeometry::Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars)
Specialization for the global caching being enabled - do nothing here.
Definition discretization/cvfe/elementfluxvariablescache.hh:144
GFVC GridFluxVariablesCache
export the type of the grid flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:67
typename GFVC::FluxVariablesCache FluxVariablesCache
export the type of the flux variables cache
Definition discretization/cvfe/elementfluxvariablescache.hh:70
const GridFluxVariablesCache & gridFluxVarsCache() const
The global object we are a restriction of.
Definition discretization/cvfe/elementfluxvariablescache.hh:169
void bindScvf(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const typename FVElementGeometry::SubControlVolumeFace &scvf) &
Definition discretization/cvfe/elementfluxvariablescache.hh:121
CVFEElementFluxVariablesCacheImpl(const GridFluxVariablesCache &global)
Definition discretization/cvfe/elementfluxvariablescache.hh:72
void bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &
Definition discretization/cvfe/elementfluxvariablescache.hh:98
CVFEElementFluxVariablesCacheImpl bindElement(const typename FVElementGeometry::GridGeometry::GridView::template Codim< 0 >::Entity &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars) &&
bind the local view (r-value overload) This overload is called when an instance of this class is a te...
Definition discretization/cvfe/elementfluxvariablescache.hh:112
The flux variables caches for an element.
Definition discretization/cvfe/elementfluxvariablescache.hh:49
Helpers for deprecation.
CVFEElementFluxVariablesCacheImpl< GFVC, cachingEnabled, Detail::ScvfQuadratureRuleOrDefault_t< typename GFVC::FluxVariablesCache > > CVFEElementFluxVariablesCache
The flux variables caches for an element.
Definition discretization/cvfe/elementfluxvariablescache.hh:56
auto quadratureRule(const FVElementGeometry &fvGeometry, const typename FVElementGeometry::SubControlVolume &scv, QuadratureRules::MidpointQuadrature)
Midpoint quadrature for scv.
Definition quadraturerules.hh:159
Definition cvfelocalresidual.hh:25
typename FluxVariablesCache::ScvfQuadratureRule DefinesScvfQuadratureRule
Definition discretization/cvfe/elementfluxvariablescache.hh:30
Dune::Std::detected_or_t< QuadratureRules::MidpointQuadrature, DefinesScvfQuadratureRule, FluxVariablesCache > ScvfQuadratureRuleOrDefault_t
Definition discretization/cvfe/elementfluxvariablescache.hh:33
Definition quadraturerules.hh:52
Definition adapt.hh:17
Quadrature rules over sub-control volumes and sub-control volume faces.
Midpoint quadrature rule that uses scv/scvf centers.
Definition quadraturerules.hh:58