docs: checkpoint save/load scope and read_surface_exchange wording

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-10-20 13:38:30 +00:00
co-authored by Claude Opus 5.5
parent ba3772e3b8
commit 9660894a1b
+8 -5
View File
@@ -18,15 +18,18 @@ Rejected with `ValueError`, before flags, populations or device buffers change:
or the inlet/outlet column ("Cut links must have active fluid receivers").
Both were previously accepted silently for passive bodies; the interpolated
boundary then had undefined results. The check runs in
`Simulation.initialize`, runtime body sync (`sync_bodies`) and checkpoint load
(`common/checkpoint.py`). A checkpoint whose saved geometry violates either rule
no longer restores; rebuild the geometry with separated bodies.
boundary then had undefined results. The rules apply to the cut links of all
bodies together, so a passive body overlapping a Jet body is rejected as well.
The check runs in `Simulation.initialize`, runtime body sync (`sync_bodies`),
checkpoint save and checkpoint load (`common/checkpoint.py`). Load validates
before restoring anything, so a checkpoint whose saved geometry violates either
rule no longer restores; rebuild the geometry with separated bodies.
## 87c3a31: `Simulation.read_surface_exchange` accepts Jet-driven bodies
`read_surface_exchange(id)` previously required `SurfaceActuation` on the body.
It now also accepts bodies that own Jet aperture links, including Jets with zero
or negative amplitude. Bodies without any aperture still raise
or negative amplitude (the aperture test is geometric). Bodies with neither
`SurfaceActuation` nor aperture links still raise
`ValueError("Body has no surface actuation")`. The value is unchanged: the latest
step's wall/aperture exchange, not total nozzle force.