24#ifndef SUPER_INDICATOR_F_2D_HH
25#define SUPER_INDICATOR_F_2D_HH
39 _indicatorF(std::move(indicatorF))
45 for (
int iC = 0; iC < load.
size(); ++iC) {
57 this->_superStructure.getCuboidGeometry().getPhysR(physR, input);
58 return _indicatorF(output, physR);
62template <
typename T,
bool HLBM>
67 _indicatorF(std::move(indicatorF))
73 for (
int iC = 0; iC < load.
size(); ++iC) {
81template <
typename T,
bool HLBM>
86 this->_superStructure.getCuboidGeometry().getPhysR(physR, input);
87 _indicatorF(inside, physR);
97 const std::string matString = std::accumulate(
100 std::to_string(materials[0]),
101 [](
const std::string& a,
int b) {
102 return a +
'_' + std::to_string(b);
104 this->
getName() =
"SuperIndicator_on_Material_" + matString;
118 std::vector<int>(materials.begin(), materials.end()))
128 if (!this->_blockF.empty() && load.
isLocal(input[0])) {
130 return this->getBlockF(load.
loc(input[0]))(output, &input[1]);
140 _indicatorF(std::move(indicatorF))
144 for (
int iC = 0; iC <
_indicatorF->getBlockFSize(); ++iC) {
153 return _indicatorF(output, input);
159 _indicatorF(std::move(indicatorF)),
162 this->
getName() =
"SuperIndicatorBoundaryNeighbor_for_BoundaryMaterial_" +
_indicatorF->getName();
164 for (
int iC = 0; iC <
_indicatorF->getBlockFSize(); ++iC) {
178 return this->getBlockF(load.
loc(input[0]))(output, &input[1]);
Block indicator identifying neighbors of boundary cells.
BlockIndicatorF2D from IndicatorF2D.
BlockIndicatorF2D from SmoothIndicatorF2D.
Block indicator identity.
Block indicator functor from material numbers.
Smart pointer for managing the various ways of passing functors around.
std::string & getName()
read and write access to name
IndicatorF2D is an application from .
Base class for all LoadBalancer.
bool isLocal(const int &glob)
returns whether glob is on this process
std::vector< std::unique_ptr< BlockF2D< bool > > > _blockF
Super functors may consist of several BlockF2D<W> derived functors.
SuperStructure< T, 2 > & getSuperStructure()
Representation of a statistic for a parallel 2D geometry.
void updateStatistics(bool verbose=true)
Updates the super geometry at the boundaries if needed and afterwards the statisics if needed.
BlockGeometry< T, D > & getBlockGeometry(int locIC)
Read and write access to a single block geometry.
bool operator()(bool output[], const int input[]) override
SuperIndicatorBoundaryNeighbor2D(FunctorPtr< SuperIndicatorF2D< T > > &&indicatorF, int overlap)
FunctorPtr< SuperIndicatorF2D< T > > _indicatorF
SuperGeometry< T, 2 > & _superGeometry
SuperIndicatorFfromIndicatorF2D(FunctorPtr< IndicatorF2D< T > > &&indicatorF, SuperGeometry< T, 2 > &geometry)
bool operator()(bool output[], const int input[]) override
FunctorPtr< IndicatorF2D< T > > _indicatorF
SuperIndicatorFfromSmoothIndicatorF2D(FunctorPtr< SmoothIndicatorF2D< T, T, HLBM > > &&indicatorF, SuperGeometry< T, 2 > &geometry)
FunctorPtr< SmoothIndicatorF2D< T, T, HLBM > > _indicatorF
bool operator()(bool output[], const int input[]) override
bool operator()(bool output[], const int input[]) override
SuperIndicatorIdentity2D(FunctorPtr< SuperIndicatorF2D< T > > &&indicatorF)
FunctorPtr< SuperIndicatorF2D< T > > _indicatorF
Indicator functor from material numbers.
SuperIndicatorMaterial2D(SuperGeometry< T, 2 > &geometry, std::vector< int > materials)
bool operator()(bool output[], const int input[]) override
LoadBalancer< T > & getLoadBalancer()
Read and write access to the load balancer.
bool nearZero(const ADf< T, DIM > &a)
Top level namespace for all of OpenLB.
Set of functions commonly used in LB computations – header file.