Author: jlatt
Hi,Bounce-Back is implemented through the class “BounceBack”, which is
declared in src/core/dynamics.h and implemented in
src/core/dynamics.hh . The easiest way to implement your own version
of bounce-back is to copy this code (both the declaration and the
implementation) into an end-user program, change the name from
“BounceBack” to something else, and to modify the function “collide”.
一般在流场中,我们会把固体区域的dynamics设置为BounceBack,这样的格点在LB里面产生无滑移的边界条件,比如算例cylinder2d.cpp中定义圆柱区域,后利用defineDynamics将其设置为BounceBack。
/// A functional, used to instantiate bounce-back nodes at the locations of the cylinder
template<typename T>
class CylinderShapeDomain2D : public plb::DomainFunctional2D {
public:
……
{ }
virtual bool operator() (plb::plint iX, plb::plint iY) const {
return plb::util::sqr(iX-cx) + plb::util::sqr(iY-cy) <= radiusSqr;
}
……
}
private:
……
};
defineDynamics(lattice, lattice.getBoundingBox(),
new CylinderShapeDomain2D<T>(cx,cy,radius),
new plb::BounceBack<T,DESCRIPTOR>);
如果我们想修改BounceBack,可以去复制走src/core/dynamics.h和hh,然后换掉BounceBack名字,再修改里面的collide部分。