27#ifndef BOUNDARY_POST_PROCESSORS_3D_H
28#define BOUNDARY_POST_PROCESSORS_3D_H
41template<
typename T,
typename DESCRIPTOR,
int direction,
int orientation>
50 template <CONCEPT(Cell) CELL>
54 template <
int deriveDirection,
typename CELL>
55 void interpolateGradients(CELL& cell, T velDeriv[DESCRIPTOR::d])
const any_platform;
60template <
typename DESCRIPTOR,
int direction,
int orientation>
66 util::populationsContributingToVelocity<DESCRIPTOR,direction,-orientation>().size()
73 template <CONCEPT(Cell) CELL>
76 template <CONCEPT(Cell) CELL>
87template <
typename T,
typename DESCRIPTOR,
int plane,
int normal1,
int normal2>
96 template <CONCEPT(Cell) CELL>
100 template <
typename CELL>
101 T getNeighborRho(CELL& cell,
int step1,
int step2)
any_platform;
103 template <
int deriveDirection,
int orientation,
typename CELL>
104 void interpolateGradients(CELL& cell, T velDeriv[DESCRIPTOR::d])
const any_platform;
109template<
typename T,
typename DESCRIPTOR,
110 int xNormal,
int yNormal,
int zNormal>
118 template <CONCEPT(Cell) CELL>
126template<
typename T,
typename DESCRIPTOR>
129 SlipBoundaryProcessor3D(
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_,
int discreteNormalX_,
int discreteNormalY_,
int discreteNormalZ_);
134 int extent(
int whichDirection)
const override
140 int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_ )
override;
142 int reflectionPop[DESCRIPTOR::q];
143 int x0, x1, y0, y1, z0, z1;
147template<
typename T,
typename DESCRIPTOR>
163template<
typename T,
typename DESCRIPTOR>
166 PartialSlipBoundaryProcessor3D(T tuner_,
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_,
int discreteNormalX_,
int discreteNormalY_,
int discreteNormalZ_);
171 int extent(
int whichDirection)
const override
177 int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_ )
override;
179 int reflectionPop[DESCRIPTOR::q];
180 int x0, x1, y0, y1, z0, z1;
185template<
typename T,
typename DESCRIPTOR>
207template<
typename T,
typename DESCRIPTOR,
int NORMAL_X,
int NORMAL_Y,
int NORMAL_Z>
216 template <CONCEPT(Cell) CELL>
221template<
typename T,
typename DESCRIPTOR,
int NORMAL_X,
int NORMAL_Y,
int NORMAL_Z>
230 template <CONCEPT(Cell) CELL>
240template<
typename T,
typename DESCRIPTOR,
int NORMAL_X,
int NORMAL_Y,
int NORMAL_Z>
251 template <CONCEPT(Cell) CELL,
typename PARAMETERS>
260template<
typename T,
typename DESCRIPTOR,
int NORMAL_X,
int NORMAL_Y,
int NORMAL_Z>
269 template <CONCEPT(Cell) CELL>
Platform-abstracted block lattice for external access and inter-block interaction.
PostProcessors for the chemical potential boundary condition in the free energy model.
void apply(CELL &cell) any_platform
static constexpr OperatorScope scope
static constexpr OperatorScope scope
void apply(CELL &cell) any_platform
PostProcessor for the density / velocity outflow boundaries in the free energy model.
static constexpr OperatorScope scope
void apply(CELL &cell) any_platform
PostProcessor for the wetting boundary condition in the free energy model.
meta::list< olb::descriptors::ADDEND > parameters
static constexpr OperatorScope scope
void apply(CELL &cell, PARAMETERS ¶meters) any_platform
This class computes the skordos BC on a convex edge wall in 3D but with a limited number of terms add...
static constexpr OperatorScope scope
void apply(CELL &cell) any_platform
This class computes a partial slip BC in 3D.
int extent() const override
Extent of application area (0 for purely local operations)
PartialSlipBoundaryProcessor3D(T tuner_, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
int extent(int whichDirection) 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_, int z0_, int z1_) override
Execute post-processing step on a sublattice.
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override
Execute post-processing step.
PartialSlipBoundaryProcessorGenerator3D(T tuner_, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
PostProcessor3D< T, DESCRIPTOR > * generate() const override
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
This class computes the skordos BC on a plane wall in 3D but with a limited number of terms added to ...
static constexpr OperatorScope scope
void apply(CELL &cell) any_platform
This class computes a slip BC in 3D.
int extent(int whichDirection) 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)
SlipBoundaryProcessor3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
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.
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override
Execute post-processing step.
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
SlipBoundaryProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
PostProcessor3D< T, DESCRIPTOR > * generate() const override
void initialize(CELL &cell) any_platform
void apply(CELL &cell) any_platform
static constexpr OperatorScope scope
Top level namespace for all of OpenLB.
OperatorScope
Block-wide operator application scopes.
@ PerCell
Per-cell application, i.e. OPERATOR::apply is passed a CELL concept implementation.
@ PerCellWithParameters
Per-cell application with parameters, i.e. OPERATOR::apply is passed a CELL concept implementation an...
Interface for post-processing steps – header file.
void apply(CELL &cell) any_platform
static constexpr OperatorScope scope
Base of a field whose size is defined by [C,U_1,...,U_N]^T * [1,V_1,...V_N].