23 b = geom.SceneBuilder()
24 slab = b.add_leaf(
"box", [slab_half, NY * 2.0, slab_half])
25 cav = b.add_leaf(
"box", [HW, NY * 2.0, HW])
26 node = b.add_difference(slab, cav)
27 ni, nr, _, _ = b.encode()
28 ii = np.zeros((1, KI_I), dtype=np.int32); ir = np.zeros((1, KI_R))
29 ii[0] = (node, -1); ir[0, 0:3] = (x0, 0.5 * NY, x0); ir[0, 6] = 1.0; ir[0, 7] = 1.0
30 s = sdflow.Solver(L, NY, L)
31 s.set_rho(1.0); s.set_mu(0.1); s.set_dt(1.0)
32 s.set_scene(np.asarray(ni, np.int32), np.asarray(nr, float), ii.ravel(), ir.ravel(),
34 s.set_solid_from_scene(
True)
35 s.set_velocity(1, np.full((L, NY, L), U, dtype=np.float64, order=
"F"))
36 v = np.asarray(s.get_v()).reshape((L, NY, L), order=
"F")
37 cols = np.where((np.abs(v) > 0).sum(axis=(1, 2)) > 0.5 * NY * L)[0]
38 return len(cols), s.periodic_image_overlap_cells()
42for tag, half, want_overlap, want_w
in ((
"0.70 L slab (WIDER than the box)", 0.70 * L,
True, 38),