OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::SuperPlaneIntegralFluxMass2D< T > Class Template Referencefinal

Mass flux line integral. More...

#include <superPlaneIntegralFluxMass2D.h>

+ Inheritance diagram for olb::SuperPlaneIntegralFluxMass2D< T >:
+ Collaboration diagram for olb::SuperPlaneIntegralFluxMass2D< T >:

Public Member Functions

 SuperPlaneIntegralFluxMass2D (FunctorPtr< SuperF2D< T > > &&velocityF, FunctorPtr< SuperF2D< T > > &&densityF, SuperGeometry< T, 2 > &geometry, T conversationFactorMass, T conversationFactorTime, const HyperplaneLattice2D< T > &hyperplaneLattice, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, FunctorPtr< IndicatorF2D< T > > &&subplaneIndicator, BlockDataReductionMode mode)
 Primary constructor.
 
 SuperPlaneIntegralFluxMass2D (FunctorPtr< SuperF2D< T > > &&velocityF, FunctorPtr< SuperF2D< T > > &&densityF, SuperGeometry< T, 2 > &geometry, T conversationFactorMass, T conversationFactorTime, const Hyperplane2D< T > &hyperplane, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, FunctorPtr< IndicatorF2D< T > > &&subplaneIndicator, BlockDataReductionMode mode)
 Constructor providing automatic lattice generation.
 
 SuperPlaneIntegralFluxMass2D (FunctorPtr< SuperF2D< T > > &&velocityF, FunctorPtr< SuperF2D< T > > &&densityF, SuperGeometry< T, 2 > &geometry, T conversationFactorMass, T conversationFactorTime, const Hyperplane2D< T > &hyperplane, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, BlockDataReductionMode mode)
 Constructor providing automatic lattice generation and omitting subplane restriction.
 
 SuperPlaneIntegralFluxMass2D (FunctorPtr< SuperF2D< T > > &&velocityF, FunctorPtr< SuperF2D< T > > &&densityF, SuperGeometry< T, 2 > &geometry, T conversationFactorMass, T conversationFactorTime, const Vector< T, 2 > &origin, const Vector< T, 2 > &u, std::vector< int > materials, BlockDataReductionMode mode)
 Constructor providing automatic lattice and material indicator instantiation.
 
 SuperPlaneIntegralFluxMass2D (FunctorPtr< SuperF2D< T > > &&velocityF, FunctorPtr< SuperF2D< T > > &&densityF, SuperGeometry< T, 2 > &geometry, T conversationFactorMass, T conversationFactorTime, const Vector< T, 2 > &origin, const Vector< T, 2 > &u, BlockDataReductionMode mode)
 Constructor providing automatic lattice parametrization, only interpolating material 1.
 
bool operator() (T output[], const int input[]) override
 
void print (std::string regionName, std::string massFluxSiScaleName)
 
- Public Member Functions inherited from olb::SuperPlaneIntegralF2D< T >
 SuperPlaneIntegralF2D (FunctorPtr< SuperF2D< T > > &&f, SuperGeometry< T, 2 > &geometry, const HyperplaneLattice2D< T > &hyperplaneLattice, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, FunctorPtr< IndicatorF1D< T > > &&subplaneIndicator, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
 Primary constructor.
 
 SuperPlaneIntegralF2D (FunctorPtr< SuperF2D< T > > &&f, SuperGeometry< T, 2 > &geometry, const Hyperplane2D< T > &hyperplane, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, FunctorPtr< IndicatorF1D< T > > &&subplaneIndicator, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
 Constructor providing automatic lattice generation.
 
 SuperPlaneIntegralF2D (FunctorPtr< SuperF2D< T > > &&f, SuperGeometry< T, 2 > &geometry, const Hyperplane2D< T > &hyperplane, FunctorPtr< SuperIndicatorF2D< T > > &&integrationIndicator, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
 Constructor providing automatic lattice generation and omitting subplane restriction.
 
 SuperPlaneIntegralF2D (FunctorPtr< SuperF2D< T > > &&f, SuperGeometry< T, 2 > &geometry, const Vector< T, 2 > &origin, const Vector< T, 2 > &u, std::vector< int > materials, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
 Constructor providing automatic lattice and material indicator instantiation.
 
 SuperPlaneIntegralF2D (FunctorPtr< SuperF2D< T > > &&f, SuperGeometry< T, 2 > &geometry, const Vector< T, 2 > &origin, const Vector< T, 2 > &u, BlockDataReductionMode mode=BlockDataReductionMode::Analytical)
 Constructor providing automatic lattice parametrization, only interpolating material 1.
 
bool operator() (T output[], const int input[]) override
 Returns the line integral in the following structure:
 
- Public Member Functions inherited from olb::SuperF2D< T, W >
SuperF2D< T, W > & operator- (SuperF2D< T, W > &rhs)
 
SuperF2D< T, W > & operator+ (SuperF2D< T, W > &rhs)
 
SuperF2D< T, W > & operator* (SuperF2D< T, W > &rhs)
 
SuperF2D< T, W > & operator/ (SuperF2D< T, W > &rhs)
 
SuperStructure< T, 2 > & getSuperStructure ()
 
int getBlockFSize () const
 
BlockF2D< W > & getBlockF (int iCloc)
 
bool operator() (W output[], const int input[]) override
 
- Public Member Functions inherited from olb::GenericF< T, S >
virtual ~GenericF ()=default
 
int getSourceDim () const
 read only access to member variable _m
 
int getTargetDim () const
 read only access to member variable _n
 
std::string & getName ()
 read and write access to name
 
std::string const & getName () const
 read only access to name
 
virtual bool operator() (T output[], const S input[])=0
 has to be implemented for 'every' derived class
 
bool operator() (T output[])
 wrapper that call the pure virtual operator() (T output[], const S input[]) from above
 
bool operator() (T output[], S input0)
 
bool operator() (T output[], S input0, S input1)
 
bool operator() (T output[], S input0, S input1, S input2)
 
bool operator() (T output[], S input0, S input1, S input2, S input3)
 

Additional Inherited Members

- Public Types inherited from olb::SuperF2D< T, W >
using identity_functor_type = SuperIdentity2D<T,W>
 
- Public Types inherited from olb::GenericF< T, S >
using targetType = T
 
using sourceType = S
 
- Public Attributes inherited from olb::GenericF< T, S >
std::shared_ptr< GenericF< T, S > > _ptrCalcC
 memory management, frees resouces (calcClass)
 
- Protected Member Functions inherited from olb::SuperPlaneIntegralF2D< T >
bool isToBeIntegrated (const Vector< T, 2 > &physR, int iC)
 This is determined using the _integrationIndicatorF indicated subset of the 2d hyperplane reduced by _reductionF.
 
- Protected Member Functions inherited from olb::SuperF2D< T, W >
 SuperF2D (SuperStructure< T, 2 > &superStructure, int targetDim)
 
- Protected Member Functions inherited from olb::GenericF< T, S >
 GenericF (int targetDim, int sourceDim)
 
- Protected Attributes inherited from olb::SuperPlaneIntegralF2D< T >
SuperGeometry< T, 2 > & _geometry
 
FunctorPtr< SuperF2D< T > > _f
 Functor to be integrated on the line.
 
FunctorPtr< SuperIndicatorF2D< T > > _integrationIndicatorF
 Indicator describing relevant discrete integration points.
 
FunctorPtr< IndicatorF1D< T > > _subplaneIndicatorF
 Indicator describing the relevant subset of the interpolated hyperplane.
 
BlockReduction2D1D< T > _reductionF
 Functor describing line to be interpolated and integrated.
 
Vector< T, 2 > _origin
 Origin vector as given by hyperplane definition, (0,0) in respect to the subplane indicator _subplaneIndicatorF.
 
Vector< T, 2 > _u
 Direction vector u as given by hyperplane definition, normalized to h.
 
Vector< T, 2 > _normal
 Orthogonal vector to _u.
 
std::vector< int > _rankLocalSubplane
 Subset of the discrete line points given by _reductionF as indicated by _integrationIndicatorF.
 
- Protected Attributes inherited from olb::SuperF2D< T, W >
SuperStructure< T, 2 > & _superStructure
 
std::vector< std::unique_ptr< BlockF2D< W > > > _blockF
 Super functors may consist of several BlockF2D<W> derived functors.
 

Detailed Description

template<typename T>
class olb::SuperPlaneIntegralFluxMass2D< T >

Mass flux line integral.

Calculates the flux integral of a 2-dimensional velocity functor multiplied by a 1-dimensional density functor i.e. mass flux.

Flux calculation is performed by SuperPlaneIntegralF2D<T>. This class adds a print method and mass flux specific constructor wrappers.

Definition at line 41 of file superPlaneIntegralFluxMass2D.h.

Constructor & Destructor Documentation

◆ SuperPlaneIntegralFluxMass2D() [1/5]

template<typename T >
olb::SuperPlaneIntegralFluxMass2D< T >::SuperPlaneIntegralFluxMass2D ( FunctorPtr< SuperF2D< T > > && velocityF,
FunctorPtr< SuperF2D< T > > && densityF,
SuperGeometry< T, 2 > & geometry,
T conversationFactorMass,
T conversationFactorTime,
const HyperplaneLattice2D< T > & hyperplaneLattice,
FunctorPtr< SuperIndicatorF2D< T > > && integrationIndicator,
FunctorPtr< IndicatorF2D< T > > && subplaneIndicator,
BlockDataReductionMode mode )

Primary constructor.

Parameters
velocityF(non-)owning pointer or reference to velocity functor.
densityF(non-)owning pointer or reference to density functor.
conversationFactorMassMass conversation factor
conversationFactorTimeTime conversation factor e.g. converter.getConversionFactorTime()
hyperplaneLatticeParametrization of the hyperplane lattice to be interpolated.
integrationIndicator(non-)owning pointer or reference to SuperIndicatorF2D<T>. Describes the set of lattice points relevant for integration.
subplaneIndicator(non-)owning pointer or reference to IndicatorF2D<T>. Describes the relevant subplane of the interpolated hyperplane.
modeDefines how the values of the discrete hyperplane are determined. i.e. if they are interpolated or read directly from lattice points. Note: BlockDataReductionMode::Analytical imposes restrictions on hyperplane definition and discretization. If you are not sure consider providing only a hyperplane defintion instead of both a definition and a discretization.

Definition at line 41 of file superPlaneIntegralFluxMass2D.hh.

51 : SuperPlaneIntegralF2D<T>(
52 (*densityF) * (*velocityF),
53 geometry,
54 hyperplaneLattice,
55 std::forward<decltype(integrationIndicator)>(integrationIndicator),
56 std::forward<decltype(subplaneIndicator)>(subplaneIndicator),
57 mode),
58 _velocityF(std::move(velocityF)),
59 _densityF(std::move(densityF)),
60 _conversationFactorMass(conversationFactorMass),
61 _conversationFactorTime(conversationFactorTime)
62{
63 this->getName() = "SuperPlaneIntegralFluxMass2D";
64}
std::string & getName()
read and write access to name
Definition genericF.hh:51

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

◆ SuperPlaneIntegralFluxMass2D() [2/5]

template<typename T >
olb::SuperPlaneIntegralFluxMass2D< T >::SuperPlaneIntegralFluxMass2D ( FunctorPtr< SuperF2D< T > > && velocityF,
FunctorPtr< SuperF2D< T > > && densityF,
SuperGeometry< T, 2 > & geometry,
T conversationFactorMass,
T conversationFactorTime,
const Hyperplane2D< T > & hyperplane,
FunctorPtr< SuperIndicatorF2D< T > > && integrationIndicator,
FunctorPtr< IndicatorF2D< T > > && subplaneIndicator,
BlockDataReductionMode mode )

Constructor providing automatic lattice generation.

Parameters
velocityF(non-)owning pointer or reference to velocity functor.
densityF(non-)owning pointer or reference to density functor.
conversationFactorMassMass conversation factor
conversationFactorTimeTime conversation factor e.g. converter.getConversionFactorTime()
hyperplaneParametrization of the hyperplane to be integrated. The lattice resolution is set to CuboidGeometry2D<T>::getMinDeltaR.
integrationIndicator(non-)owning pointer or reference to SuperIndicatorF2D<T>. Describes the set of lattice points relevant for integration.
subplaneIndicator(non-)owning pointer or reference to IndicatorF2D<T>. Describes the relevant subplane of the interpolated hyperplane.
modeDefines how the values of the discrete hyperplane are determined. i.e. if they are interpolated or read directly from lattice points.

Definition at line 67 of file superPlaneIntegralFluxMass2D.hh.

77 : SuperPlaneIntegralF2D<T>(
78 (*densityF) * (*velocityF),
79 geometry,
80 hyperplane,
81 std::forward<decltype(integrationIndicator)>(integrationIndicator),
82 std::forward<decltype(subplaneIndicator)>(subplaneIndicator),
83 mode),
84 _velocityF(std::move(velocityF)),
85 _densityF(std::move(densityF)),
86 _conversationFactorMass(conversationFactorMass),
87 _conversationFactorTime(conversationFactorTime)
88{
89 this->getName() = "SuperPlaneIntegralFluxMass2D";
90}

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

◆ SuperPlaneIntegralFluxMass2D() [3/5]

template<typename T >
olb::SuperPlaneIntegralFluxMass2D< T >::SuperPlaneIntegralFluxMass2D ( FunctorPtr< SuperF2D< T > > && velocityF,
FunctorPtr< SuperF2D< T > > && densityF,
SuperGeometry< T, 2 > & geometry,
T conversationFactorMass,
T conversationFactorTime,
const Hyperplane2D< T > & hyperplane,
FunctorPtr< SuperIndicatorF2D< T > > && integrationIndicator,
BlockDataReductionMode mode )

Constructor providing automatic lattice generation and omitting subplane restriction.

i.e. the intersection between geometry and hyperplane is integrated wherever _integrationIndicatorF allows.

Parameters
velocityF(non-)owning pointer or reference to velocity functor.
densityF(non-)owning pointer or reference to density functor.
conversationFactorMassMass conversation factor
conversationFactorTimeTime conversation factor e.g. converter.getConversionFactorTime()
hyperplaneParametrization of the hyperplane to be integrated. The lattice resolution is set to the cuboid geometry's minDeltaR.
integrationIndicator(non-)owning pointer or reference to SuperIndicatorF2D<T>. Describes the set of lattice points relevant for integration.
modeDefines how the values of the discrete hyperplane are determined. i.e. if they are interpolated or read directly from lattice points.

Definition at line 93 of file superPlaneIntegralFluxMass2D.hh.

102 : SuperPlaneIntegralF2D<T>(
103 (*densityF) * (*velocityF),
104 geometry,
105 hyperplane,
106 std::forward<decltype(integrationIndicator)>(integrationIndicator),
107 mode),
108 _velocityF(std::move(velocityF)),
109 _densityF(std::move(densityF)),
110 _conversationFactorMass(conversationFactorMass),
111 _conversationFactorTime(conversationFactorTime)
112{
113 this->getName() = "SuperPlaneIntegralFluxMass2D";
114}

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

◆ SuperPlaneIntegralFluxMass2D() [4/5]

template<typename T >
olb::SuperPlaneIntegralFluxMass2D< T >::SuperPlaneIntegralFluxMass2D ( FunctorPtr< SuperF2D< T > > && velocityF,
FunctorPtr< SuperF2D< T > > && densityF,
SuperGeometry< T, 2 > & geometry,
T conversationFactorMass,
T conversationFactorTime,
const Vector< T, 2 > & origin,
const Vector< T, 2 > & u,
std::vector< int > materials,
BlockDataReductionMode mode )

Constructor providing automatic lattice and material indicator instantiation.

Parameters
velocityF(non-)owning pointer or reference to velocity functor.
densityF(non-)owning pointer or reference to density functor.
conversationFactorMassMass conversation factor
conversationFactorTimeTime conversation factor
originhyperplane origin
uhyperplane direction vector
materialsmaterial numbers relevant for hyperplane integration
modedefines how the values of the discrete hyperplane are determined

Definition at line 117 of file superPlaneIntegralFluxMass2D.hh.

126 : SuperPlaneIntegralF2D<T>(
127 (*densityF) * (*velocityF),
128 geometry,
129 origin, u,
130 std::move(materials),
131 mode),
132 _velocityF(std::move(velocityF)),
133 _densityF(std::move(densityF)),
134 _conversationFactorMass(conversationFactorMass),
135 _conversationFactorTime(conversationFactorTime)
136{
137 this->getName() = "SuperPlaneIntegralFluxMass2D";
138}

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

◆ SuperPlaneIntegralFluxMass2D() [5/5]

template<typename T >
olb::SuperPlaneIntegralFluxMass2D< T >::SuperPlaneIntegralFluxMass2D ( FunctorPtr< SuperF2D< T > > && velocityF,
FunctorPtr< SuperF2D< T > > && densityF,
SuperGeometry< T, 2 > & geometry,
T conversationFactorMass,
T conversationFactorTime,
const Vector< T, 2 > & origin,
const Vector< T, 2 > & u,
BlockDataReductionMode mode )

Constructor providing automatic lattice parametrization, only interpolating material 1.

Parameters
velocityF(non-)owning pointer or reference to velocity functor.
densityF(non-)owning pointer or reference to density functor.
conversationFactorMassMass conversation factor
conversationFactorTimeTime conversation factor
originhyperplane origin
uhyperplane direction vector
modedefines how the values of the discrete hyperplane are determined

Definition at line 141 of file superPlaneIntegralFluxMass2D.hh.

149 : SuperPlaneIntegralF2D<T>(
150 (*densityF) * (*velocityF),
151 geometry,
152 origin, u,
153 mode),
154 _velocityF(std::move(velocityF)),
155 _densityF(std::move(densityF)),
156 _conversationFactorMass(conversationFactorMass),
157 _conversationFactorTime(conversationFactorTime)
158{
159 this->getName() = "SuperPlaneIntegralFluxMass2D";
160}

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

Member Function Documentation

◆ operator()()

template<typename T >
bool olb::SuperPlaneIntegralFluxMass2D< T >::operator() ( T output[],
const int input[] )
override

Definition at line 163 of file superPlaneIntegralFluxMass2D.hh.

164{
165 const bool result = SuperPlaneIntegralF2D<T>::operator()(output, input);
166
167 output[0] = output[0] * _conversationFactorMass / _conversationFactorTime;
168
169 return result;
170}
bool operator()(T output[], const int input[]) override
Returns the line integral in the following structure:

References olb::SuperPlaneIntegralF2D< T >::operator()().

+ Here is the call graph for this function:

◆ print()

template<typename T >
void olb::SuperPlaneIntegralFluxMass2D< T >::print ( std::string regionName,
std::string massFluxSiScaleName )

Definition at line 173 of file superPlaneIntegralFluxMass2D.hh.

175{
176 OstreamManager clout("SuperPlaneIntegralFluxMass2D");
177 int input[1] = { };
178 T output[this->getTargetDim()]; // = 5
179 operator()(output, input);
180 if (regionName != "") {
181 clout << "regionName=" << regionName << "; regionSize[m]=" << output[1]
182 << std::flush;
183 }
184 else {
185 clout << "regionSize[m]=" << output[1] << std::flush;
186 }
187 if (singleton::mpi().isMainProcessor()) {
188 if (massFluxSiScaleName == "mcg/s") { // milli gramm
189 std::cout << "; massFlowRate[mcg/s]=" << output[0] * T(1.e6)
190 << std::endl;
191 }
192 else if (massFluxSiScaleName == "mg/s") { // micro gramm
193 std::cout << "; massFlowRate[mg/s]=" << output[0] * T(1.e3)
194 << std::endl;
195 }
196 else {
197 std::cout << "; massFlowRate[kg/s]=" << output[0] << std::endl;
198 }
199 }
200}
int getTargetDim() const
read only access to member variable _n
Definition genericF.hh:45
bool operator()(T output[], const int input[]) override
MpiManager & mpi()

References olb::singleton::mpi().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: