25#ifndef SUPER_BASE_F_3D_H
26#define SUPER_BASE_F_3D_H
46template<
typename T,
typename BaseType>
class SuperData3D;
55template <
typename T,
typename W = T>
66 std::vector<std::unique_ptr<BlockF3D<W>>>
_blockF;
70 static constexpr unsigned d = 3;
84 bool operator() (W output[],
const int input []);
91template<
typename T,
typename BaseType>
107template <
typename T,
typename W=T>
113 bool operator() (W output[],
const int input[])
override;
118template <
typename T,
typename W=T>
126 bool operator() (W output[],
const int input[]);
131template <
typename T,
typename W=T>
138 bool operator() (W output[],
const int input[])
override;
143template <
typename T,
typename W=T>
151 bool operator() (W output[],
const int input[]);
156template <
typename T,
typename W,
typename W2>
162 bool operator() (W output[],
const int input[]);
166template <
typename T,
typename W=T>
174 bool operator() (W output[],
const int input[]);
178template <
typename T,
typename DESCRIPTOR>
189 bool operator() (T output [],
const int input []);
195template <
typename T,
typename DESCRIPTOR>
201 bool operator() (T output[],
const int input[])
override;
205template <
typename T,
typename DESCRIPTOR>
216template <
typename T,
typename DESCRIPTOR,
typename TDESCRIPTOR>
227template <
typename T,
typename DESCRIPTOR>
237 bool operator() (T output[],
const int x[])
override;
242template <
typename T,
typename DESCRIPTOR>
253 template <
typename F>
257 this->
getName() =
"FromCallable";
260 for (
int iC = 0; iC < load.
size(); ++iC) {
261 this->_blockF.emplace_back(
263 this->_sLattice.getBlock(iC), iC, f));
represents all functors that operate on a cuboid in general, mother class of BlockLatticeF,...
Generate a BlockLatticeF from an arbitrary function.
bool operator()(T output[], const int x[]) override
ComposedSuperLatticeF3D(SuperLatticeF3D< T, DESCRIPTOR > &f0, SuperLatticeF3D< T, DESCRIPTOR > &f1, SuperLatticeF3D< T, DESCRIPTOR > &f2)
Smart pointer for managing the various ways of passing functors around.
GenericF is a base class, that can represent continuous as well as discrete functions.
Base class for all LoadBalancer.
SuperDataF3D(SuperData< 3, T, BaseType > &superData)
Constructor from SuperData3D - stores _superData reference.
SuperData< 3, T, BaseType > & _superData
SuperData3D object this functor was created from
bool operator()(BaseType output[], const int input[])
Operator for this functor - copies data from _superData object into output.
SuperData< 3, T, BaseType > & getSuperData()
Getter for _superData
represents all functors that operate on a SuperStructure<T,3> in general
SuperStructure< T, 3 > & getSuperStructure()
SuperF3D< T, W > & operator*(SuperF3D< T, W > &rhs)
static constexpr bool isSuper
int getBlockFSize() const
SuperStructure< T, 3 > & _superStructure
BlockF3D< W > & getBlockF(int iCloc)
SuperF3D(SuperStructure< T, 3 > &superStructure, int targetDim)
SuperF3D< T, W > & operator/(SuperF3D< T, W > &rhs)
static constexpr unsigned d
std::vector< std::unique_ptr< BlockF3D< W > > > _blockF
Super functors may consist of several BlockF3D<W> derived functors.
bool operator()(W output[], const int input[])
has to be implemented for 'every' derived class
SuperF3D< T, W > & operator+(SuperF3D< T, W > &rhs)
SuperF3D< T, W > & operator-(SuperF3D< T, W > &rhs)
identity functor for memory management
FunctorPtr< SuperF3D< T, W > > _f
bool operator()(W output[], const int input[]) override
has to be implemented for 'every' derived class
SuperIdentity3D(FunctorPtr< SuperF3D< T, W > > &&f)
identity functor for memory management
SuperIdentityOnSuperIndicatorF3D(SuperF3D< T, W > &f, SuperIndicatorF3D< T > &indicatorF, W defaultValue=0.)
SuperIndicatorF3D< T > & _indicatorF
bool operator()(W output[], const int input[])
has to be implemented for 'every' derived class
Base indicator functor (discrete)
represents all functors that operate on a SuperLattice in general, e.g. getVelocity(),...
SuperLattice< T, DESCRIPTOR > & getSuperLattice()
SuperLattice< T, DESCRIPTOR > & _sLattice
SuperLatticeF3D(SuperLattice< T, DESCRIPTOR > &superLattice, int targetDim)
bool operator()(T output[], const int input[])
Generate a SuperLatticeF from an arbitrary function.
SuperLatticeFfromCallableF(SuperLattice< T, DESCRIPTOR > &superLattice, F &&f)
Generate a SuperLatticeF from an arbitrary function.
identity functor for memory management
FunctorPtr< SuperLatticeF3D< T, DESCRIPTOR > > _f
bool operator()(T output[], const int input[]) override
SuperLatticeIdentity3D(FunctorPtr< SuperLatticeF3D< T, DESCRIPTOR > > &&f)
represents all functors that operate on a DESCRIPTOR with output in Phys, e.g. physVelocity(),...
const UnitConverter< T, DESCRIPTOR > & _converter
UnitConverter< T, DESCRIPTOR > const & getConverter() const
SuperLatticePhysF3D(SuperLattice< T, DESCRIPTOR > &sLattice, const UnitConverter< T, DESCRIPTOR > &converter, int targetDim)
represents all thermal functors that operate on a DESCRIPTOR with output in Phys, e....
ThermalUnitConverter< T, DESCRIPTOR, TDESCRIPTOR > const & getConverter() const
const ThermalUnitConverter< T, DESCRIPTOR, TDESCRIPTOR > & _converter
SuperLatticeThermalPhysF3D(SuperLattice< T, TDESCRIPTOR > &sLattice, const ThermalUnitConverter< T, DESCRIPTOR, TDESCRIPTOR > &converter, int targetDim)
Super class maintaining block lattices for a cuboid decomposition.
perform explicit typecast from output type W2 to W
FunctorPtr< SuperF3D< T, W2 > > _f
SuperTypecastF3D(FunctorPtr< SuperF3D< T, W2 > > &&f)
bool operator()(W output[], const int input[])
has to be implemented for 'every' derived class
Conversion between physical and lattice units, as well as discretization specialized for thermal appl...
Conversion between physical and lattice units, as well as discretization.
The description of a generic interface for all functor classes – header file.
Top level namespace for all of OpenLB.
std::conditional_t< DESCRIPTOR::d==2, SuperLatticeF2D< T, DESCRIPTOR >, SuperLatticeF3D< T, DESCRIPTOR > > SuperLatticeF
typename util::BaseTypeHelper< T >::type BaseType
std::string getName(OperatorScope scope)
Returns human-readable name of scope.
Dynamics for a generic 2D super data – header file.