24#ifndef SUPER_PLANE_INTEGRAL_FLUX_MASS_3D_HH
25#define SUPER_PLANE_INTEGRAL_FLUX_MASS_3D_HH
45 T conversationFactorMass,
46 T conversationFactorTime,
52 (*densityF) * (*velocityF),
55 std::forward<decltype(integrationIndicator)>(integrationIndicator),
56 std::forward<decltype(subplaneIndicator)>(subplaneIndicator),
58 _velocityF(std::move(velocityF)),
59 _densityF(std::move(densityF)),
60 _conversationFactorMass(conversationFactorMass),
61 _conversationFactorTime(conversationFactorTime)
63 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
71 T conversationFactorMass,
72 T conversationFactorTime,
78 (*densityF) * (*velocityF),
81 std::forward<decltype(integrationIndicator)>(integrationIndicator),
82 std::forward<decltype(subplaneIndicator)>(subplaneIndicator),
84 _velocityF(std::move(velocityF)),
85 _densityF(std::move(densityF)),
86 _conversationFactorMass(conversationFactorMass),
87 _conversationFactorTime(conversationFactorTime)
89 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
97 T conversationFactorMass,
98 T conversationFactorTime,
103 (*densityF) * (*velocityF),
106 std::forward<decltype(integrationIndicator)>(integrationIndicator),
108 _velocityF(std::move(velocityF)),
109 _densityF(std::move(densityF)),
110 _conversationFactorMass(conversationFactorMass),
111 _conversationFactorTime(conversationFactorTime)
113 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
121 T conversationFactorMass,
122 T conversationFactorTime,
124 std::vector<int> materials,
127 (*densityF) * (*velocityF),
130 std::move(materials),
132 _velocityF(std::move(velocityF)),
133 _densityF(std::move(densityF)),
134 _conversationFactorMass(conversationFactorMass),
135 _conversationFactorTime(conversationFactorTime)
137 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
145 T conversationFactorMass,
146 T conversationFactorTime,
150 (*densityF) * (*velocityF),
154 _velocityF(std::move(velocityF)),
155 _densityF(std::move(densityF)),
156 _conversationFactorMass(conversationFactorMass),
157 _conversationFactorTime(conversationFactorTime)
159 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
167 T conversationFactorMass,
168 T conversationFactorTime,
170 std::vector<int> materials,
173 (*densityF) * (*velocityF),
176 std::move(materials),
178 _velocityF(std::move(velocityF)),
179 _densityF(std::move(densityF)),
180 _conversationFactorMass(conversationFactorMass),
181 _conversationFactorTime(conversationFactorTime)
183 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
191 T conversationFactorMass,
192 T conversationFactorTime,
196 (*densityF) * (*velocityF),
200 _velocityF(std::move(velocityF)),
201 _densityF(std::move(densityF)),
202 _conversationFactorMass(conversationFactorMass),
203 _conversationFactorTime(conversationFactorTime)
205 this->
getName() =
"SuperPlaneIntegralFluxMass3D";
213 output[0] = output[0] * _conversationFactorMass / _conversationFactorTime;
220 std::string regionName, std::string massFluxSiScaleName)
224 T output[this->getTargetDim()];
225 operator()(output, input);
226 if (regionName !=
"") {
227 clout <<
"regionName=" << regionName <<
"; regionSize[m^2]=" << output[1]
231 clout <<
"regionSize[m^2]=" << output[1] << std::flush;
234 if (massFluxSiScaleName ==
"mcg/s") {
235 std::cout <<
"; massFlowRate[mcg/s]=" << output[0] * T(1.e6)
238 else if (massFluxSiScaleName ==
"mg/s") {
239 std::cout <<
"; massFlowRate[mg/s]=" << output[0] * T(1.e3)
243 std::cout <<
"; massFlowRate[kg/s]=" << output[0] << std::endl;
Smart pointer for managing the various ways of passing functors around.
std::string & getName()
read and write access to name
Parametrization of a hyperplane lattice.
indicator function for a 3D circle
IndicatorF2D is an application from .
class for marking output with some text
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.
bool operator()(T output[], const int input[]) override
Returns the plane integral in the following structure:
bool operator()(T output[], const int input[]) override
SuperPlaneIntegralFluxMass3D(FunctorPtr< SuperF3D< T > > &&velocityF, FunctorPtr< SuperF3D< T > > &&densityF, SuperGeometry< T, 3 > &geometry, T conversationFactorMass, T conversationFactorTime, const HyperplaneLattice3D< T > &hyperplaneLattice, FunctorPtr< SuperIndicatorF3D< T > > &&integrationIndicator, FunctorPtr< IndicatorF2D< T > > &&subplaneIndicator, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
Primary constructor.
void print(std::string regionName, std::string massFluxSiScaleName)
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.
Definition of a analytical 2D plane embedded in 3D space.