OpenLB 1.7
Loading...
Searching...
No Matches
superPlaneIntegralF3D.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2017 Adrian Kummerlaender
4 * E-mail contact: info@openlb.net
5 * The most recent release of OpenLB can be downloaded at
6 * <http://www.openlb.net/>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program; if not, write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301, USA.
22*/
23
24#ifndef SUPER_PLANE_INTEGRAL_F_3D_H
25#define SUPER_PLANE_INTEGRAL_F_3D_H
26
27
28#include "core/vector.h"
39
40namespace olb {
41
42
44template<typename T>
46protected:
48
57
60
72
75 std::vector<std::tuple<int, int>> _rankLocalSubplane;
76
78
82 bool isToBeIntegrated(const Vector<T,3>& physR, int iC);
83
84public:
86
108 SuperGeometry<T,3>& geometry,
109 const HyperplaneLattice3D<T>& hyperplaneLattice,
110 FunctorPtr<SuperIndicatorF3D<T>>&& integrationIndicator,
111 FunctorPtr<IndicatorF2D<T>>&& subplaneIndicator,
114
131 SuperGeometry<T,3>& geometry,
132 const Hyperplane3D<T>& hyperplane,
133 FunctorPtr<SuperIndicatorF3D<T>>&& integrationIndicator,
134 FunctorPtr<IndicatorF2D<T>>&& subplaneIndicator,
137
153 SuperGeometry<T,3>& geometry,
154 const Hyperplane3D<T>& hyperplane,
155 FunctorPtr<SuperIndicatorF3D<T>>&& integrationIndicator,
157
159
168 SuperGeometry<T,3>& geometry,
169 const Vector<T,3>& origin,
170 const Vector<T,3>& u, const Vector<T,3>& v,
171 std::vector<int> materials,
174
182 SuperGeometry<T,3>& geometry,
183 const Vector<T,3>& origin,
184 const Vector<T,3>& u, const Vector<T,3>& v,
186
188
196 SuperGeometry<T,3>& geometry,
197 const Vector<T,3>& origin,
198 const Vector<T,3>& normal,
199 std::vector<int> materials,
202
209 SuperGeometry<T,3>& geometry,
210 const Vector<T,3>& origin,
211 const Vector<T,3>& normal,
213
215
222 SuperGeometry<T,3>& geometry,
223 const Vector<T,3>& normal,
224 std::vector<int> materials,
227
233 SuperGeometry<T,3>& geometry,
234 const Vector<T,3>& normal,
236
238
245 SuperGeometry<T,3>& geometry,
246 const IndicatorCircle3D<T>& circle,
247 std::vector<int> materials,
250
256 SuperGeometry<T,3>& geometry,
257 const IndicatorCircle3D<T>& circle,
259
273 bool operator() (T output[], const int input[]) override;
274};
275
276
277}
278
279#endif
BlockReduction3D2D reduces the data of a SuperF3D functor to the intersection between a given hyperpl...
Smart pointer for managing the various ways of passing functors around.
Definition functorPtr.h:60
Parametrization of a hyperplane lattice.
indicator function for a 3D circle
IndicatorF2D is an application from .
represents all functors that operate on a SuperStructure<T,3> in general
Representation of a statistic for a parallel 2D geometry.
Base indicator functor (discrete)
Surface integral of a subset of a interpolated hyperplane.
SuperPlaneIntegralF3D(FunctorPtr< SuperF3D< T > > &&f, SuperGeometry< T, 3 > &geometry, const HyperplaneLattice3D< T > &hyperplaneLattice, FunctorPtr< SuperIndicatorF3D< T > > &&integrationIndicator, FunctorPtr< IndicatorF2D< T > > &&subplaneIndicator, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
Primary constructor.
FunctorPtr< SuperIndicatorF3D< T > > _integrationIndicatorF
Indicator describing relevant discrete integration points.
bool operator()(T output[], const int input[]) override
Returns the plane integral in the following structure:
BlockReduction3D2D< T > _reductionF
Functor describing plane to be interpolated and integrated.
Vector< T, 3 > _v
Span vector v as given by hyperplane definition, normalized to h.
Vector< T, 3 > _origin
Origin vector as given by hyperplane definition, (0,0) in respect to the subplane indicator _subplane...
FunctorPtr< IndicatorF2D< T > > _subplaneIndicatorF
Indicator describing the relevant subset of the interpolated hyperplane.
Vector< T, 3 > _u
Span vector u as given by hyperplane definition, normalized to h.
std::vector< std::tuple< int, int > > _rankLocalSubplane
Subset of the discrete plane points given by _reductionF as indicated by _integrationIndicatorF.
Vector< T, 3 > _normal
Orthogonal vector to _u and _v.
bool isToBeIntegrated(const Vector< T, 3 > &physR, int iC)
This is determined using the _integrationIndicatorF indicated subset of the 2d plane reduced by _redu...
SuperGeometry< T, 3 > & _geometry
FunctorPtr< SuperF3D< T > > _f
Functor to be integrated on the plane.
Plain old scalar vector.
Definition vector.h:47
Groups all include files for the directory genericFunctions.
Top level namespace for all of OpenLB.
BlockDataReductionMode
Mode of reducing block data from given, possibly higher dimensional data.
@ Analytical
Interpolate block data at exact physical locations.
Definition of a analytical 2D plane embedded in 3D space.
Representation of a parallel 2D geometry – header file.
efficient implementation of a vector class