Guide 09 · September 13, 2026
The fields behind the movie.
The native voxel dataset preserves velocity and forcing on the solver's fixed nested grids. An interactive slice explorer makes those fields inspectable without downloading the whole history.
Explore three perpendicular planes
Move x to select a YZ plane, y for XZ, and z for XY. Choose velocity or forcing, then select a saved state or press Play. The displayed time is the actual output time. Saved times are not uniformly spaced, and playback waits for data instead of skipping or interpolating states.
The Hugging Face explorer shows the available frame count and actual time in its time control. Oliver's complete source archive and the homepage movies have 280 states from exact rest to 0.995. Check the explorer's frame count before treating its current release as complete.
Cold loads can take several seconds, especially for an uncached frame or a sleeping Space. Small native slabs are cached; memory does not grow with the whole time series. Manual controls share one ordered render queue, separate from up to four playback sessions, so older control requests cannot finish after newer ones. Plotting is serialized for thread safety. The GIFs and videos remain available independently of the app.
When the selected archive fits an 18 GiB raw-data budget and leaves 5 GiB free, the Space also warms a lossless disk cache in the background. The app stays usable through remote slice reads until the complete pinned snapshot is ready. This cache lives on the server's ephemeral disk, not in the browser, and larger future runs fall back to remote reads.
Native resolution, not an enlarged image
Each saved state contains five 64³ patches: a full-domain base and four nested refined cubes. The stored count is 1,310,720 cells, including covered coarse cells; 1,179,648 cells contribute to the active composite solution. The finest spacing is equivalent to a 1024³ grid only in the innermost core.
The viewer uses a fixed 256 × 256 display grid for each plane, selecting the finest native cell containing each display location. Display sampling does not change the solver's resolution. No smoothing, vector arrows, or automatic peak-height tracking is applied. At cell boundaries the positive-side cell is selected, except at the domain's upper edge, where the last cell is used.
Playback prepares three saved frames before starting, then buffers upcoming frames while the browser displays the current one. A bounded image cache and retained plot axes make repeat playback faster. Cold reads can still pause playback while data arrives; no saved state is skipped or invented.
Dataset structure
The public dataset stores immutable releases under releases/<manifest-hash-prefix>/. Each has manifest.json, the source record source-best.json, and fields.zarr. Pin the dataset commit and release prefix for reproducibility.
Zarr arrays level_0 through level_4 have axes (t, x, y, z, component). Components are u_x, u_y, u_z, f_x, f_y, f_z in nondimensional model units. Origins describe cell boundaries; add half a cell spacing to obtain a cell center. All values remain float64, with lossless Zstd/bitshuffle compression. Covered coarse cells are retained but must be excluded from composite integrals.
The full raw field payload is 16.40625 GiB. Small 8³ chunks support plane reads, while per-level, per-time shards keep the file count manageable. This is a field dataset, not a restart archive: pressure, ghost cells, and checkpoint state are not included.
Reproduce the export
uv venv .venv-hf --python 3.12
uv pip install --python .venv-hf/bin/python -r spaces/native_explorer/requirements.txt
cmake -S backends/amrex -B build/amrex
cmake --build build/amrex --target ns_volume_export -j 2
.venv-hf/bin/python -m scripts.export_native_dataset \
--source /path/to/frozen/native/archive --best site/data/best.json \
--exporter build/amrex/ns_volume_export --output outputs/native-voxels
NS_DATASET_LOCAL=outputs/native-voxels .venv-hf/bin/python spaces/native_explorer/app.py
The output directory must be new; a 20 GiB free-space guard protects local storage. An explicit --indices 0 85 279 produces a clearly labeled prototype. The exporter does not mutate the native source or change any simulation settings.
Validate before publishing
Every exported level round-trips exactly against its source values. Per-frame checks cover finite values, exact rest, timestamps, composite peak speed, and full-domain volume; the endpoint also checks kinetic energy. SHA-256 digests retain per-level provenance. Independent native slice comparisons and synthetic nested-grid tests check all axes and refinement boundaries.
.venv-hf/bin/python -m scripts.publish_native_dataset \
--folder outputs/native-voxels --repo ccm/navier-stokes-singularity-simulation
# Record the returned immutable reference in spaces/native_explorer/dataset.json.
.venv-hf/bin/python -m scripts.deploy_native_space \
--repo ccm/navier-stokes-singularity-simulation
Publication rechecks the stored digests, uploads only an allowlist, and compares public remote slices with local values before advertising a release. The app requires no viewing credentials. The basic CPU Space has no hourly hardware charge under the existing account plan; deployment does not request a paid hardware upgrade. Hosting details ↗
The optional scripts.finish_native_release command combines the transfer, export, publication, deployment, and final reference update in one bounded job, not a recurring watcher. It records its phase and failure state, limits the default run to six hours, and keeps native sources intact. It updates only the Space dataset reference and the site's release record on GitHub main after the hosted full-history endpoint passes. Concurrent changes to those records or the app source stop promotion for review.
These checks establish archive and visualization integrity, not spatial convergence or blowup. The finite manufactured-force surrogate remains distinct from the analytical construction. Read the method and accuracy budget before interpreting its peaks.