73 lines
4.5 KiB
Markdown
73 lines
4.5 KiB
Markdown
# One bounded bodyless SRT inlet control
|
|
|
|
Preparation only; review precedes any GPU admission. This test-only opt-in is based on
|
|
8e378aa047bb35ae4ec46037eff7256bd2f074e7. Historical first-health evidence and its source
|
|
manifest are untouched. The control calls the same pinned D80 config factory and uses
|
|
unchanged production `Simulation.initialize()` / `run(1)`; `--without-cylinder` changes
|
|
only the single cylinder object list to empty. No profile, wall/source plane, domain,
|
|
collision, relaxation, speed, representation, step cap, health limit or field observation
|
|
is adjusted. SRT tau=.524 and the existing inlet/outlet remain as in the failed run.
|
|
|
|
Production already supports zero objects through `ensure_packed_buffers`. The absent
|
|
body has no force observable: the control never calls `read_force(0)`, records `force:null`
|
|
and `force_observation:not_applicable_no_body`, and does not invent a zero force. Physical
|
|
population/macro/Mach/density checks remain intact. Existing per-step diagnostics, first
|
|
health crossing, immediately preceding/current raw+decoded state capture, 128 MiB budget,
|
|
external watchdog and maximum 320 steps remain unchanged. No extra baseline run is needed.
|
|
|
|
Removing the cylinder necessarily turns its former solid cells into fluid. Those cells
|
|
receive the same production parabolic fluid initializer; shared fluid and boundary-ghost
|
|
cells retain the original initializer and configuration. This is not a transplant of the
|
|
baseline's solid-cell state into new fluid. Removing the body also removes its cut links
|
|
and specializes the existing kernel for zero objects, as ordinary Simulation already does.
|
|
The spatial `body_near` category is retained only as the **former-cylinder neighborhood**
|
|
for comparing locations. It does not claim an actual body is present; body-solid flag
|
|
counts should be zero in the control.
|
|
|
|
## Explicit identity and source checks
|
|
|
|
The unchanged manifest still pins numerical source 9805383, as used by the baseline8e
|
|
harness. The new test-only HEAD does not pretend to be that historical run. Preflight,
|
|
READY and diagnostic/result records include the control label, original baseline harness
|
|
commit, new diagnostic checkout revision/dirty status, selected numerical checkout
|
|
revision/dirty status, and new diagnostic file hash. Production/helper bytes are verified
|
|
against the original manifest before either case. A later development checkout with
|
|
changed numerical files is rejected; the old pin is not silently accepted or regenerated.
|
|
The default cylinder case remains available for compatibility, but this requested control
|
|
uses only `--without-cylinder` and a distinct new output directory.
|
|
|
|
## Interpretation before seeing outcomes
|
|
|
|
- Similar early inlet-region failure without a cylinder: cylinder presence is not
|
|
necessary for this observed short-time instability under these settings. This supports
|
|
investigating inlet/collision/kinetic-state dynamics; it does not prove a specific
|
|
boundary defect or exclude other shared boundaries/initialization effects.
|
|
- No health violation through 320: removing the body changes the observed onset, consistent
|
|
with a body-generated transient or altered amplification interacting with the inlet.
|
|
This does not prove the cylinder is erroneous, establish inlet stability beyond320,
|
|
or certify SRT generally.
|
|
- Different failure location/time: geometry affects the transient; classify the preserved
|
|
incoming distributions and moments before assigning any mechanism.
|
|
|
|
The baseline failed at196 on finite Mach>.2, not nonfinite state. A control can likewise
|
|
stop on a finite threshold crossing. Do not describe either as a NaN blow-up unless the
|
|
separate diagnostic flags establish that.
|
|
|
|
CPU-only checks:
|
|
|
|
```sh
|
|
python tests/validation/uniform_srt_diagnostic/test_diagnostic.py
|
|
python tests/validation/uniform_srt_diagnostic/diagnose_uniform_srt.py --without-cylinder --output /tmp/new-bodyless-preflight
|
|
```
|
|
|
|
After review and root admission, from the explicitly recorded test checkout:
|
|
|
|
```sh
|
|
CUDA_VISIBLE_DEVICES=<admitted-device> timeout --signal=TERM --kill-after=30s 240s python tests/validation/uniform_srt_diagnostic/diagnose_uniform_srt.py --without-cylinder --execute --gpu-admitted --wall-seconds 180 --output output/new-srt-bodyless-control
|
|
```
|
|
|
|
This patch performs no GPU run or remote push. Original runner gates/results and
|
|
production files are unchanged. The extra tests verify removal-only selection without
|
|
mutating inputs, reject unexpected object sets, verify absence of force readback, and
|
|
retain physical health failures when force is unavailable.
|