version 3.11-dev
cvfe/interpolationpointdata.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-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12#ifndef DUMUX_CVFE_IP_DATA_HH
13#define DUMUX_CVFE_IP_DATA_HH
14
15#include <type_traits>
16
17namespace Dumux::CVFE {
18
23template<class LocalPosition, class GlobalPosition>
25{
26public:
27 InterpolationPointData(LocalPosition&& localPos, GlobalPosition&& pos) : local_(std::move(localPos)), global_(std::move(pos)) {}
28 InterpolationPointData(const LocalPosition& localPos, const GlobalPosition& pos) : local_(localPos), global_(pos) {}
29
31 const GlobalPosition& global() const
32 { return global_; }
33
35 const LocalPosition& local() const
36 { return local_; }
37
38
39private:
40 LocalPosition local_;
41 GlobalPosition global_;
42};
43
48template<class LocalPosition, class GlobalPosition, class LocalIndex>
49class LocalDofInterpolationPointData : public InterpolationPointData<LocalPosition, GlobalPosition>
50{
52public:
53 LocalDofInterpolationPointData(LocalPosition&& localPos, GlobalPosition&& pos, LocalIndex index)
54 : ParentType(localPos, pos), localDofIndex_(index) {}
55 LocalDofInterpolationPointData(const LocalPosition& localPos, const GlobalPosition& pos, LocalIndex index)
56 : ParentType(localPos, pos), localDofIndex_(index) {}
57
59 LocalIndex localDofIndex() const
60 { return localDofIndex_; }
61
62private:
63 LocalIndex localDofIndex_;
64};
65
70template<class LocalMapping, class GlobalPosition>
72{
73 using LocalPosition = std::invoke_result_t<LocalMapping, const GlobalPosition&>;
74
75public:
76 InterpolationPointDataLocalMapping(LocalMapping&& mapping, GlobalPosition&& pos) : localMapping_(std::move(mapping)), global_(std::move(pos)) {}
77 InterpolationPointDataLocalMapping(LocalMapping&& mapping, const GlobalPosition& pos) : localMapping_(std::move(mapping)), global_(pos) {}
78
80 const GlobalPosition& global() const
81 { return global_; }
82
84 const LocalPosition local() const
85 { return localMapping_(global_); }
86
87
88private:
89 LocalMapping localMapping_;
90 GlobalPosition global_;
91};
92
97template<class LocalPosition, class GlobalPosition, class LocalIndex>
98class FaceInterpolationPointData : public InterpolationPointData<LocalPosition, GlobalPosition>
99{
101public:
102 FaceInterpolationPointData(GlobalPosition&& localPos, GlobalPosition&& pos, GlobalPosition&& n, LocalIndex index)
103 : ParentType(localPos, pos), normal_(std::move(n)), scvfIndex_(index) {}
104 FaceInterpolationPointData(const GlobalPosition& localPos, const GlobalPosition& pos, const GlobalPosition& n, LocalIndex index)
105 : ParentType(localPos, pos), normal_(n), scvfIndex_(index) {}
106
108 const GlobalPosition& unitOuterNormal() const
109 { return normal_; }
110
112 LocalIndex scvfIndex() const
113 { return scvfIndex_; }
114
115private:
116 GlobalPosition normal_;
117 LocalIndex scvfIndex_;
118};
119
120} // end namespace Dumux::CVFE
121
122#endif
An interpolation point related to a face of an element.
Definition: cvfe/interpolationpointdata.hh:99
FaceInterpolationPointData(GlobalPosition &&localPos, GlobalPosition &&pos, GlobalPosition &&n, LocalIndex index)
Definition: cvfe/interpolationpointdata.hh:102
LocalIndex scvfIndex() const
The local index of an scvf.
Definition: cvfe/interpolationpointdata.hh:112
FaceInterpolationPointData(const GlobalPosition &localPos, const GlobalPosition &pos, const GlobalPosition &n, LocalIndex index)
Definition: cvfe/interpolationpointdata.hh:104
const GlobalPosition & unitOuterNormal() const
The unit outer normal vector at the quadrature point.
Definition: cvfe/interpolationpointdata.hh:108
An interpolation point related to an element that includes global and local positions.
Definition: cvfe/interpolationpointdata.hh:25
InterpolationPointData(LocalPosition &&localPos, GlobalPosition &&pos)
Definition: cvfe/interpolationpointdata.hh:27
InterpolationPointData(const LocalPosition &localPos, const GlobalPosition &pos)
Definition: cvfe/interpolationpointdata.hh:28
const LocalPosition & local() const
The local position of the quadrature point.
Definition: cvfe/interpolationpointdata.hh:35
const GlobalPosition & global() const
The global position of the quadrature point.
Definition: cvfe/interpolationpointdata.hh:31
An interpolation point related to a global position of an element, giving its local positions by a ma...
Definition: cvfe/interpolationpointdata.hh:72
const GlobalPosition & global() const
The global position of the quadrature point.
Definition: cvfe/interpolationpointdata.hh:80
InterpolationPointDataLocalMapping(LocalMapping &&mapping, GlobalPosition &&pos)
Definition: cvfe/interpolationpointdata.hh:76
InterpolationPointDataLocalMapping(LocalMapping &&mapping, const GlobalPosition &pos)
Definition: cvfe/interpolationpointdata.hh:77
const LocalPosition local() const
The local position of the quadrature point.
Definition: cvfe/interpolationpointdata.hh:84
An interpolation point related to a localDof of an element, giving its global and local positions.
Definition: cvfe/interpolationpointdata.hh:50
LocalDofInterpolationPointData(const LocalPosition &localPos, const GlobalPosition &pos, LocalIndex index)
Definition: cvfe/interpolationpointdata.hh:55
LocalDofInterpolationPointData(LocalPosition &&localPos, GlobalPosition &&pos, LocalIndex index)
Definition: cvfe/interpolationpointdata.hh:53
LocalIndex localDofIndex() const
The local index of the corresponding dof.
Definition: cvfe/interpolationpointdata.hh:59
Definition: cvfe/interpolationpointdata.hh:17