Skip to content

Universal dataset providers

NAVIER-CFD 0.8.0 gives every dataset in the built-in catalog a runtime loading path that returns canonical CFDSample objects. The access method follows the actual upstream storage and licensing model instead of pretending that every dataset is a normal Hugging Face table.

Provider matrix

Dataset Runtime provider Official access path Small-compute controls
PDEBench selective scientific HDF5 provider selected files from the official PDEBench Hugging Face organization filename/pattern, file-size cap, trajectory and window limits
CFDBench selective case-archive provider selected ZIP from chen-yingfa/CFDBench-raw scenario, case, file-size cap, sample stride and limit
RealPDEBench selective Arrow provider selected official Arrow shards scenario/type, shard cap, file-size cap, trajectory and window limits
The Well official WellDataset provider official API and storage options individual dataset configuration, split, local cache and provider streaming
APEBench official procedural provider installed upstream scenario API scenario group/kwargs, sample and window limits
AirfRANS official archive plus local VTK provider official processed or OpenFOAM archive archive selection, transfer-size cap, split and sample limits
DrivAerNet++ Dataverse/Globus plus local multimodal provider selected Harvard Dataverse file ID, official URL, or official split metadata selected artifact, size cap, split and sample limits
DrivAerML official Hugging Face plus local mesh provider selected neashton/drivaerml file run/file path, revision, split and sample limits
ScalarFlow official TUM FTP plus local volumetric provider selected published FTP artifact explicit remote file, size cap and temporal-window limits
ShapeNet-Car CFD official direct archive plus local geometry provider original mlcfd_data.zip distribution transfer-size cap, extraction and sample limits
EAGLE checksum-pinned direct archives plus local hybrid provider selected official LIRIS archive archive selection, SHA-256 verification and window limits

Official upstream staging

Use OfficialDatasetManager to inspect the publisher before transferring anything:

from navier_cfd import OfficialDatasetManager

upstream = OfficialDatasetManager()
status = upstream.probe("eagle")
print(status.to_dict())

Stage only the official artifact needed for the experiment:

result = upstream.download(
    "drivaerml",
    destination="/data/navier-official",
    artifacts=["run_1/boundary_1.vtp"],
)

print(result.files)
print(result.sha256)
print(result.manifest_path)

Then pass the staged file to the canonical loader:

from navier_cfd import load_cfd_dataset

sample_set = load_cfd_dataset(
    "drivaerml",
    local_path=result.files[0],
    split="all",
    max_samples=1,
)

Source-specific examples

AirfRANS processed archive:

upstream.download(
    "airfrans",
    "/data/navier-official",
    artifacts=["processed"],
    max_bytes=50 * 1024**3,
    extract=True,
)

EAGLE checksum-pinned archive:

upstream.download(
    "eagle",
    "/data/navier-official",
    artifacts=["step"],
    verify_checksum=True,
    extract=True,
)

ScalarFlow requires an explicit remote filename returned by probe() because individual reconstructions are several gigabytes:

probe = upstream.probe("scalarflow")
print(probe.entries)

upstream.download(
    "scalarflow",
    "/data/navier-official",
    artifacts=["SELECTED_REMOTE_FILE"],
    max_bytes=8 * 1024**3,
)

For a selected DrivAerNet++ Harvard Dataverse CFD file:

upstream.download(
    "drivaernetpp",
    "/data/navier-official",
    dataverse_file_id=12345678,
    max_bytes=20 * 1024**3,
)

The file ID must come from the official Dataverse record. NAVIER-CFD does not bypass license acceptance, registration, Globus authorization, or publisher access controls.

Install optional readers

pip install "navier-cfd[scientific-data,mesh-data,torch]"

For procedural APEBench generation:

pip install "navier-cfd[apebench]"

APEBench procedural generation

from navier_cfd import load_cfd_dataset

advection = load_cfd_dataset(
    "apebench",
    configuration="Advection",
    scenario_group="difficulty",
    split="train",
    scenario_kwargs={"num_points": 128},
    n_steps_input=4,
    n_steps_output=1,
    max_samples=8,
    max_windows=64,
)

The provider records the installed APEBench version, scenario class, scenario name, generated split and subset policy in the access plan and sample metadata.

Local canonical loading

After an official artifact is staged, LocalScientificDatasetManager or load_cfd_dataset reads supported NPZ, NPY, CSV, TXT, DAT, HDF5, VTK, VTP, VTU, PLY, STL, OpenFOAM marker files and safe PyTorch tensor exports.

train = load_cfd_dataset(
    "airfrans",
    local_path="/data/navier-official/airfrans/extracted/Dataset",
    split="train",
    max_samples=32,
)

Temporal fields such as ScalarFlow and EAGLE are converted from time-first arrays into channel-last, time-flattened input and target tensors, matching the existing NAVIER-CFD structured-data contract.

Security and provenance

  • Upstream HTTP downloads are restricted to registered official hosts.
  • Every staged file receives a SHA-256 digest and JSON provenance manifest.
  • Published EAGLE checksums are verified after complete transfers.
  • Transfer-size limits remove partial files when exceeded.
  • ZIP and TAR members are checked against path traversal; archive links are rejected.
  • NumPy files are opened with allow_pickle=False.
  • PyTorch files require weights_only=True.
  • Arbitrary pickle payloads are not executed.
  • Credentials are never written to manifests.

Validation grades

The live workflow uses explicit grades so a network probe is never confused with a parsed CFD sample:

Grade Meaning
real_official_file_loaded publisher-hosted file downloaded, parsed into CFDSample, and checked for non-empty finite arrays
official_procedural_sample_generated real installed upstream API generated a canonical trajectory
official_file_downloaded genuine official file downloaded and validated, but the file is metadata rather than a CFD field
official_endpoint_verified official endpoint or manifest reached without downloading the complete large collection

Pull-request CI currently performs a real DrivAerML VTP download and parse, a real APEBench generation, official DrivAerNet++ split-file downloads, and live probes of the remaining public distribution channels. The scheduled workflow repeats these checks weekly so publisher-side file moves become visible.

Complete multi-gigabyte and multi-terabyte collections are not downloaded in pull-request CI. They can be selected explicitly through the same manager on the target workstation or cluster.