lbm: choose the moving-link fallback from FP64 q, as the host builder does
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0f8a428f07
commit
e25828968b
1 file changed
+4
-2
@@ -71,9 +71,11 @@ __global__ void MovingCircleLinks(
|
|||||||
const float q = (float)qd;
|
const float q = (float)qd;
|
||||||
const float rx = (float)__dsub_rn(hx, cx), ry = (float)__dsub_rn(hy, cy);
|
const float rx = (float)__dsub_rn(hx, cx), ry = (float)__dsub_rn(hy, cy);
|
||||||
|
|
||||||
// Same fallback rule as build_cut_links (q < 1/2 needs a fluid donor at x - c).
|
// Same two-stage order as build_cut_links + pack_cut_links_to_soa: the fallback
|
||||||
|
// class is chosen from the clamped FP64 q (q < 1/2 needs a fluid donor at x - c);
|
||||||
|
// only then are q, rx, ry rounded to FP32 for the BFL branch and spin velocity.
|
||||||
unsigned char fallback = CURVED_FALLBACK_BOUZIDI;
|
unsigned char fallback = CURVED_FALLBACK_BOUZIDI;
|
||||||
if (q < 0.5f) {
|
if (qd < 0.5) {
|
||||||
const int xd = x - ex, yd = y - ey;
|
const int xd = x - ex, yd = y - ey;
|
||||||
if (xd < 0 || xd >= (int)NX || yd < 0 || yd >= (int)NY || mc_inside(xd, yd, cx, cy, r)
|
if (xd < 0 || xd >= (int)NX || yd < 0 || yd >= (int)NY || mc_inside(xd, yd, cx, cy, r)
|
||||||
|| (flag[linear_index((unsigned int)xd, (unsigned int)yd)] & FLAG_FLUID) == 0)
|
|| (flag[linear_index((unsigned int)xd, (unsigned int)yd)] & FLAG_FLUID) == 0)
|
||||||
|
|||||||
Reference in new issue
Block a user