70 lines
4.3 KiB
Markdown
70 lines
4.3 KiB
Markdown
# Uncontrolled steady pinball: development protocol
|
|
|
|
Frozen before results: 1280 x 512 D2Q9/FP32/MRT, unshifted double buffer;
|
|
rho=1, mean U=.01, nu=.004, D=20, Re_D=50. Centres are (600,255.5),
|
|
(626,270.5), (626,240.5), radius10. No upstream cylinder. Passive probes stay
|
|
at (800,295.5), (800,255.5), (800,215.5), radius5. Every omega is zero.
|
|
Parabolic inlet, regularized NEQ damping1; y bounce-back planes .5/510.5;
|
|
NEQ-extrapolated outlet with existing backflow clamp/blending. Initial fluid is
|
|
parabolic equilibrium. Fixed warmup is 4 NX/U=512000 steps.
|
|
|
|
Geometry and fluid parameters follow DynamisLab 609116ec26f19766f5e9ce2b0df427d4e24faae8,
|
|
`legacy_test/core/legacy_env_builder.py:build_steady_cloak` and the retained
|
|
`config_lbm_pinball_legacy_re50d_u001.json`. This is a modern Celeris reconstruction,
|
|
not a bitwise Legacy reproduction: Legacy uses shifted incompressible MRT, a
|
|
different curved interpolation and prescribed parabolic outlet velocity. Current
|
|
Celeris uses standard MRT, two-branch BFL and extrapolated outlet velocity.
|
|
The fixed-hold control uses the SAME modern settings as the free case.
|
|
|
|
## Shared translation and ownership
|
|
|
|
`Translation(..., shared=True)` is explicitly transverse only. Reusing one
|
|
envelope INSTANCE declares common motion; equal but separate envelopes are not
|
|
linked. Before initialization and every positive Simulation.run, group members
|
|
must have identical applied offsets, effective target offsets and interval wall
|
|
velocities. Stage each member with set_body, then call run(1) once. An incomplete
|
|
or inconsistent target group is rejected before device uploads and can be fixed.
|
|
Existing pending-target direct-stepper restrictions remain.
|
|
|
|
Only members of that group may have overlapping whole swept bands. Their fixed
|
|
surface clearance must exceed4 lattice cells. This conservative bound exceeds
|
|
2 sqrt(2)+MAX_STEP = 3.329: M1 changed cells lie in old/new disks and read one-link
|
|
neighbors; M2 reads at most two links outside its new disk. Old/new relative
|
|
displacement is at most .5. Thus reads cannot reach another member's old/new
|
|
solid or M1 write region. M1 writes are disjoint. M2 writes opposite population
|
|
slots inside its own new disk, also disjoint. Separate first_slot ranges still
|
|
allocate each body's logical band/debug storage. Shared band cells alone do not
|
|
write anything: M1 returns unless membership changes; M2 returns unless a cut
|
|
link exists. Unrelated moving/static body and probe overlaps still reject.
|
|
|
|
This is a sufficient restricted-group condition, not support for near-contact
|
|
or independent motion. The r4, distance8.3, dy=.5 counterexample remains rejected.
|
|
CPU tests enumerate candidate donors/write footprints over subcell phases;
|
|
GPU tests compare fixed vs hold and member-order permutations through crossings.
|
|
CUDA kernels and arithmetic are unchanged.
|
|
|
|
## New structural parameters (not inherited from the paper)
|
|
|
|
One transverse state y,v; total assembly M=10 rho (3 pi D^2/4)=9424.77796,
|
|
fn=U/(5D)=.0001, Tn=10000, zeta=.01, K=M(2 pi fn)^2,
|
|
C=2 zeta M(2 pi fn). Initial y=v=0, no seed or later kick. Force is the sum
|
|
of the three instantaneous CME_y+Wen_y values from the previous fluid step;
|
|
node impulses are logged separately and never added. The damped oscillator is
|
|
integrated exactly for that piecewise-constant force over dt=1. Wall velocity
|
|
is y[n+1]-y[n], not the endpoint oscillator velocity. No filtering or retuning.
|
|
|
|
Observe600000 steps=60Tn=300 D/U after warmup, in each of free and fixed-hold
|
|
cases. Final20Tn is a descriptive comparison window; ten-Tn blocks expose drift.
|
|
No settled/periodic claim follows merely from reaching the cap. Stop on |y|>D,
|
|
nonfinite values, no_donor, rejected displacement or speed>.05. Report any quiet
|
|
response honestly. No automatic extension. --smoke uses32 warmup+32 steps only.
|
|
|
|
Native-step rows retain y,v, each body's CME/Wen/node terms and refill counters;
|
|
each600000x15 FP64 file is72MB. No full-field output or policy training. Compile
|
|
and run on one device serially, keep original outputs and dirty trees untouched.
|
|
This stage makes no claim of physical grid convergence or vibration suppression.
|
|
|
|
Run from checkout with PYTHONPATH=src and the existing Python environment:
|
|
`python research/steady_pinball/run.py --smoke --out <new-external-directory>`
|
|
then separately `--out <new-free-directory>` and `--fixed --out <new-fixed-directory>`.
|