24#ifndef OFF_BOUNDARY_POST_PROCESSORS_3D_HH
25#define OFF_BOUNDARY_POST_PROCESSORS_3D_HH
47template<
typename T,
typename DESCRIPTOR>
50 : x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
52 this->
getName() =
"ZeroVelocityBouzidiLinearPostProcessor3D";
55 if (dist < 0 || dist > 1)
56 std::cout <<
"WARNING: Bogus distance at (" << x <<
"," << y <<
"," << z <<
"): "
61 opp = descriptors::opposite<L>(iPop);
88template<
typename T,
typename DESCRIPTOR>
93 process(blockLattice);
97template<
typename T,
typename DESCRIPTOR>
101 blockLattice.
get(x, y, z)[opp] = q*blockLattice.
get(xN, yN, zN)[iPop] +
102 (1-q)*blockLattice.
get(xB, yB, zB)[iPop2];
105template<
typename T,
typename DESCRIPTOR>
108 : x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
110 this->
getName() =
"VelocityBouzidiLinearPostProcessor3D";
114 if (dist < 0 || dist > 1)
115 std::cout <<
"WARNING: Bogus distance at (" << x <<
"," << y <<
"," << z <<
"): "
116 << dist << std::endl;
118 typedef DESCRIPTOR L;
120 opp = descriptors::opposite<L>(iPop);
149template<
typename T,
typename DESCRIPTOR>
154 process(blockLattice);
158template<
typename T,
typename DESCRIPTOR>
164 auto cellN = blockLattice.
get(xN, yN, zN);
165 auto cell = blockLattice.
get(x, y, z);
166 dynamics->defineRho(cellN, cell.computeRho());
167 cell[opp] = q*cellN[iPop] + (1-q)*blockLattice.
get(xB, yB, zB)[iPop2] + u;
173template<
typename T,
typename DESCRIPTOR>
176 : x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
178 this->
getName() =
"ZeroVelocityBounceBackPostProcessor3D";
182 if (dist < 0 || dist > 1)
183 std::cout <<
"WARNING: Bogus distance at (" << x <<
"," << y <<
"," << z <<
"): "
184 << dist << std::endl;
186 typedef DESCRIPTOR L;
188 opp = descriptors::opposite<L>(iPop);
199template<
typename T,
typename DESCRIPTOR>
204 process(blockLattice);
208template<
typename T,
typename DESCRIPTOR>
212 blockLattice.
get(x, y, z)[opp] = blockLattice.
get(xN, yN, zN)[iPop];
215template<
typename T,
typename DESCRIPTOR>
218 : x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
220 this->
getName() =
"VelocityBounceBackPostProcessor3D";
224 if (dist < 0 || dist > 1)
225 std::cout <<
"WARNING: Bogus distance at (" << x <<
"," << y <<
"," << z <<
"): "
226 << dist << std::endl;
228 typedef DESCRIPTOR L;
230 opp = descriptors::opposite<L>(iPop);
242template<
typename T,
typename DESCRIPTOR>
247 process(blockLattice);
251template<
typename T,
typename DESCRIPTOR>
257 auto cellN = blockLattice.
get(xN, yN, zN);
258 auto cell = blockLattice.
get(x, y, z);
259 dynamics->defineRho(cellN, cell.computeRho());
260 cell[opp] = cellN[iPop] + u;
265template<
typename T,
typename DESCRIPTOR>
269 x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
272template<
typename T,
typename DESCRIPTOR>
277 ( this->x, this->y, this->z, this->iPop, this->dist);
280template<
typename T,
typename DESCRIPTOR>
285 (this->x, this->y, this->z, this->iPop, this->dist);
288template<
typename T,
typename DESCRIPTOR>
292 x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
295template<
typename T,
typename DESCRIPTOR>
300 ( this->x, this->y, this->z, this->iPop, this->dist);
303template<
typename T,
typename DESCRIPTOR>
308 (this->x, this->y, this->z, this->iPop, this->dist);
313template<
typename T,
typename DESCRIPTOR>
317 x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
320template<
typename T,
typename DESCRIPTOR>
325 ( this->x, this->y, this->z, this->iPop, this->dist);
328template<
typename T,
typename DESCRIPTOR>
333 (this->x, this->y, this->z, this->iPop, this->dist);
336template<
typename T,
typename DESCRIPTOR>
340 x(x_), y(y_), z(z_), iPop(iPop_), dist(dist_)
343template<
typename T,
typename DESCRIPTOR>
348 ( this->x, this->y, this->z, this->iPop, this->dist);
351template<
typename T,
typename DESCRIPTOR>
356 (this->x, this->y, this->z, this->iPop, this->dist);
Definition of a LB cell – header file.
Platform-abstracted block lattice for external access and inter-block interaction.
virtual Dynamics< T, DESCRIPTOR > * getDynamics(DynamicsPromise< T, DESCRIPTOR > &&)=0
Return pointer to dynamics yielded by promise.
Cell< T, DESCRIPTOR > get(CellID iCell)
Get Cell interface for index iCell.
std::string & getName()
read and write access to name
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.
VelocityBounceBackPostProcessor3D(int x_, int y_, int z_, int iPop_, T dist_)
VelocityBounceBackPostProcessorGenerator3D(int x_, int y_, int z_, int iPop_, T dist_)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
PostProcessor3D< T, DESCRIPTOR > * generate() const override
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.
VelocityBouzidiLinearPostProcessor3D(int x_, int y_, int z_, int iPop_, T dist_)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
PostProcessor3D< T, DESCRIPTOR > * generate() const override
VelocityBouzidiLinearPostProcessorGenerator3D(int x_, int y_, int z_, int iPop_, T dist_)
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.
ZeroVelocityBounceBackPostProcessor3D(int x_, int y_, int z_, int iPop_, T dist_)
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override
Execute post-processing step.
ZeroVelocityBounceBackPostProcessorGenerator3D(int x_, int y_, int z_, int iPop_, T dist_)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
PostProcessor3D< T, DESCRIPTOR > * generate() const override
This class computes the Linear Bouzidi BC.
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.
ZeroVelocityBouzidiLinearPostProcessor3D(int x_, int y_, int z_, int iPop_, T dist_)
Linear Bouzidi BC Generator.
ZeroVelocityBouzidiLinearPostProcessorGenerator3D(int x_, int y_, int z_, int iPop_, T dist_)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
PostProcessor3D< T, DESCRIPTOR > * generate() const override
Dynamics for offLattice boundary conditions OffDynamics are basically NoLatticeDynamics with the addi...
T getVelocityCoefficient(int iPop)
Get VelocitySummand for Bouzidi-Boundary Condition.
bool contained(int x, int y, int x0, int x1, int y0, int y1)
Top level namespace for all of OpenLB.
Set of functions commonly used in LB computations – header file.