27#ifndef POST_PROCESSING_H
28#define POST_PROCESSING_H
42template<
typename T,
typename DESCRIPTOR>
52 int x0_,
int x1_,
int y0_,
int y1_) =0;
56 virtual int extent(
int direction)
const =0;
60 std::string
const&
getName()
const;
69template<
typename T,
typename DESCRIPTOR>
74 void shift(
int deltaX,
int deltaY);
76 bool extract(
int x0_,
int x1_,
int y0_,
int y1_);
78 void reset(
int x0_,
int x1_,
int y0_,
int y1_);
86template<
typename T,
typename DESCRIPTOR>
92 void shift(
int deltaX,
int deltaY);
93 bool extract(
int x0_,
int x1_,
int y0_,
int y1_);
95 void reset(
int x0_,
int x1_,
int y0_,
int y1_);
104template<
typename T,
typename DESCRIPTOR>
108template<
typename T,
typename DESCRIPTOR>
112 int x0_,
int x1_,
int y0_,
int y1_ )
override
129template<
typename T,
typename DESCRIPTOR>
139 int x0_,
int x1_,
int y0_,
int y1_,
140 int z0_,
int z1_ ) =0;
144 virtual int extent(
int direction)
const =0;
148 std::string
const&
getName()
const;
157template<
typename T,
typename DESCRIPTOR>
163 void shift(
int deltaX,
int deltaY,
int deltaZ,
int iC_=-1);
165 bool extract(
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_);
167 void reset(
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_);
176template<
typename T,
typename DESCRIPTOR>
184 void shift(
int deltaX,
int deltaY,
int deltaZ,
int iC_=-1);
185 bool extract(
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_);
188 void reset(
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_);
196template<
typename T,
typename DESCRIPTOR>
200template<
typename T,
typename DESCRIPTOR>
204 int x0_,
int x1_,
int y0_,
int y1_,
205 int z0_,
int z1_ )
override
224 return std::numeric_limits<int>::min();
227 template <
typename BLOCK>
229 void setup(BLOCK& blockLattice);
230 void apply(BLOCK& blockLattice);
233 template <
typename BLOCK>
238 template <
typename BLOCK>
Platform-abstracted block lattice for external access and inter-block interaction.
virtual PostProcessor2D< T, DESCRIPTOR > * generate(std::vector< BlockStructureD< 2 > * > partners) const =0
bool extract(int x0_, int x1_, int y0_, int y1_)
void shift(LatticeR< 2 > delta)
virtual LatticeCouplingGenerator2D< T, DESCRIPTOR > * clone() const =0
virtual ~LatticeCouplingGenerator2D()
void reset(int x0_, int x1_, int y0_, int y1_)
LatticeCouplingGenerator2D(int x0_, int x1_, int y0_, int y1_)
virtual LatticeCouplingGenerator3D< T, DESCRIPTOR > * clone() const =0
void reset(LatticeR< 3 > lower, LatticeR< 3 > upper)
LatticeCouplingGenerator3D()=delete
void shift(LatticeR< 3 > delta, int iC_=-1)
bool extract(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_)
virtual ~LatticeCouplingGenerator3D()
virtual PostProcessor3D< T, DESCRIPTOR > * generate(std::vector< BlockStructureD< 3 > * > partners) const =0
Interface of 2D post-processing steps.
virtual void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_)=0
Execute post-processing step on a sublattice.
std::string & getName()
read and write access to name
virtual ~PostProcessor2D()
virtual int extent() const =0
Extent of application area (0 for purely local operations)
int getPriority() const
read only access to priority
virtual int extent(int direction) const =0
Extent of application area along a direction (0 or 1)
virtual void process(BlockLattice< T, DESCRIPTOR > &blockLattice)=0
Execute post-processing step.
virtual int extent(int direction) const =0
Extent of application area along a direction (0 or 1)
std::string & getName()
read and write access to name
virtual int extent() const =0
Extent of application area (0 for purely local operations)
virtual ~PostProcessor3D()
virtual void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_)=0
Execute post-processing step on a sublattice.
int getPriority() const
read only access to priority
virtual void process(BlockLattice< T, DESCRIPTOR > &blockLattice)=0
Execute post-processing step.
bool extract(int x0_, int x1_, int y0_, int y1_)
void shift(int deltaX, int deltaY)
virtual PostProcessorGenerator2D< T, DESCRIPTOR > * clone() const =0
PostProcessorGenerator2D(int x0_, int x1_, int y0_, int y1_)
void reset(int x0_, int x1_, int y0_, int y1_)
virtual ~PostProcessorGenerator2D()
virtual PostProcessor2D< T, DESCRIPTOR > * generate() const =0
bool extract(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_)
virtual ~PostProcessorGenerator3D()
PostProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_)
void shift(int deltaX, int deltaY, int deltaZ, int iC_=-1)
virtual PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const =0
virtual PostProcessor3D< T, DESCRIPTOR > * generate() const =0
void reset(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_)
Top level namespace for all of OpenLB.
OperatorScope
Block-wide operator application scopes.
@ PerBlock
Per-block application, i.e. OPERATOR::apply is passed a ConcreteBlockLattice.
int extent(int direction) const override
Extent of application area along a direction (0 or 1)
void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_) override
Execute post-processing step on a sublattice.
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override=0
Execute post-processing step.
int extent() const override
Extent of application area (0 for purely local operations)
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override=0
Execute post-processing step.
void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override
Execute post-processing step on a sublattice.
int extent(int direction) const override
Extent of application area along a direction (0 or 1)
int extent() const override
Extent of application area (0 for purely local operations)
void apply(BLOCK &blockLattice)
void setup(BLOCK &blockLattice)
static constexpr OperatorScope scope
void setup(BLOCK &blockLattice)
void apply(BLOCK &blockLattice)