-
Notifications
You must be signed in to change notification settings - Fork 52
Description
Contact Details
No response
Is your proposal related to a problem?
currently only one solid boundary condition "BounceBackBoundary" (which is a fullway bounce back implementation) is provided in the master branch of lettucecfd.
Fullway Bounce Back is slightly incorrect from a temporal standpoint. Halfway Bounce Back (HWBB) is a more established form of simple Bounce Back. Interpolated Bounce Back (IBB) Boundary Conditions like the linearly interpolated one by Bouzidi et al. would be a nice addition for better representation of curved solid geometries.
Describe the solution you'd like
Fullway (currently implemented as "BounceBackBoundary"), Halfway and Interpolated Bounce Back Boundaries can be implemented in an efficient way. We provide a list of [x,y,z,q,d] tuples that specify, which populations need to be bounced and which d (location of the boundary on the link between solid and fluid node) is used for interpolation in case of the IBB.
This takes less memory than working with full masks and full tensors, the size of the domain. (and it can be faster).
There are multiple options for providing the list of tuples. For simple geometries, analytical functions can be evaluated to get the intersection points of node-to-node links on the obstacles surface. For more complex geometry, a CAD-kernel can help find them (e.g. open cascade)
Describe alternatives you've considered
Additional context
It is necessary to store the relevant populations prior to the streaming substep. The HWBB and IBB need these post-collision populations AND the post-streaming populations in the boundary substep to calculate the populations streaming into the fluid region, coming from the solid region.
associated to issues #273 (used as a test case and example) and #271 (needed for observable calculation in #273 ).