ADCIRC mesh registry - domain management and validation for mesh data
Project description
Valence
A curated registry of hydrodynamic domains and meshes — one canonical manifest.toml, with mesh files fetched on demand from a HuggingFace mirror.
Thomas Estep & Dominik Mattioli
Unaffiliated
Table of Contents
- Why Valence
- Installation
- Quickstart
- Examples
- Registry
- Ecosystem
- Status & roadmap
- Citation
- Contact
- License
flowchart LR
A["registry_data/\nmanifest.toml"] --> B["valence_domains/data/\nmanifest.toml\n(bundled in wheel)"]
A --> C["Parquet sidecar\n(derived at publish)"]
B --> D["HuggingFace Hub\ndomattioli/Valence"]
C --> D
D -->|"Mesh.load()\non demand"| E["chilmesh.Mesh"]
Why Valence
Hydrodynamic mesh data is scattered across papers, lab drives, and agency portals, and rarely reproducible. Valence consolidates it into one catalog of 13 Domains and 40 Meshes (~59 MB), addressable by composite ID (WNAT/hagen@v1):
- One canonical
manifest.tomlis the single source of truth for every mesh's metadata — provenance, element type, lineage. The Parquet sidecar is derived from it at publish time, never authoritative. - Mesh files load on demand.
Mesh.load()pulls a.14/.2dmfrom the HuggingFace mirror and caches it; the base wheel ships no mesh bytes (~50 KB install). - Contribution is a validated pull request. The PR validator runs on every push; provenance is mandatory, so a generated stand-in cannot masquerade as a published mesh.
- Code and data release on separate tracks. Code/API/schema changes tag
vX.Y.Z→ PyPI + HF; mesh add/edit publishes to HF only (data-YYYY-MM-DD-<sha7>), leaving the PyPI version untouched.
Browse the registry at domattioli.github.io/Valence — interactive map, search, preview, download, contribute.
| Surface | Contents |
|---|---|
| domattioli.github.io/Valence | Website — browse / preview / download / contribute |
| pypi.org/project/valence-domains | Python package |
| huggingface.co/datasets/domattioli/Valence | Mesh files + Parquet sidecar + dataset card |
This repository holds the data, schema, publisher pipeline, and CI for contributors and maintainers. End users do not clone it — pip install valence-domains[hf] is enough.
Installation
pip install valence-domains # bundled manifest only (~50 KB, no mesh downloads)
pip install valence-domains[hf] # + Mesh.load() — fetches mesh files from the HF mirror
pip install valence-domains[gen] # + the synthetic-mesh generator (numpy + scipy)
The query API (find_domains, find_meshes, get_mesh, test_meshes, Mesh.load) is documented on the HF dataset card. For pytest fixtures, from valence_domains import test_meshes returns every registry mesh flagged for testing.
Quickstart
The generator writes deterministic fort.14 meshes for tests, docs, and comparison fixtures:
valence-domains generate --output mesh.14 --seed 42 --node-count 500
valence-domains generate --output tri.14 --element-type triangle --seed 1
valence-domains generate --output quad.14 --element-type quad --seed 1
Identical --seed + --node-count + --element-type produce byte-identical output. Requires the [gen] extra.
Examples
Query the registry and load a mesh on demand (requires the [hf] extra):
from valence_domains import find_domains, find_meshes, get_mesh, test_meshes
find_domains() # every domain in the manifest
find_meshes(domain="WNAT") # meshes within a domain
mesh = get_mesh("WNAT/hagen@v1") # fetches from the HF mirror, cached
nodes, elements = mesh.load() # fort.14 contents
for m in test_meshes(): # meshes flagged as test fixtures
...
Full API reference: the HuggingFace dataset card.
Registry
src/valence_domains/ Python package — schema, manifest loader, query API,
CLI, HF publisher, dataset-card template
src/valence_domains/data/ Bundled manifest.toml shipped in the wheel
registry_data/ Source-of-truth manifest + mesh files (.14, .2dm);
excluded from wheel/sdist, mirrored to HF
specs/ Spec-driven design docs (one folder per feature)
scripts/ One-shot data tooling (mesh import, bbox extractor)
tests/ pytest suite (mocked huggingface_hub)
.github/workflows/ release.yml (tag → PyPI + HF), validate-pr.yml (CI)
Ecosystem
| Repo | Role |
|---|---|
| CHILmesh | Core mesh engine; Mesh.from_admesh_domain() reads from this registry |
| ADMESH | Triangle mesh generator this registry complements; WNAT_Hagen.14 is its reference domain |
| QuADMESH | Quad mesh generator; uses registry domains as test inputs |
| MADMESHing | Benchmark harness; pulls Block-O from this registry |
Status & roadmap
- Shipped —
valence-domains0.4.1 on PyPI (renamed fromadmesh-domains, which remains a stub that redirects to it). Registry holds 13 Domains + 40 Meshes (~59 MB), mirrored todomattioli/Valenceon HuggingFace. - Next — content-UID identity for deduplication, domain lineage graph, expanded test-suite coverage.
See CHANGELOG.md for the full release history.
Citation
Mattioli, D. & Estep, T. (2026). Valence: Curated registry of hydrodynamic domains and meshes. Zenodo. https://doi.org/10.5281/zenodo.20519657
Contact
- Thomas Estep — github.com/thomas-estep
- Dominik Mattioli — github.com/domattioli
License
Noncommercial / research use only. PolyForm Noncommercial License 1.0.0 with an additional No-AI/ML-training restriction — see LICENSE and AI-USAGE.md. No commercial use and no use as AI/ML training data without a separate written license; for either, contact Dominik Mattioli at mango-kooky-okay@duck.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file valence_domains-0.4.2.tar.gz.
File metadata
- Download URL: valence_domains-0.4.2.tar.gz
- Upload date:
- Size: 110.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fa2b98188b57b42cc737528406deff28008552d487672e363a542f4d58804f4
|
|
| MD5 |
f600a299c06f990990f5e9b7a5cf467e
|
|
| BLAKE2b-256 |
787abcc3bb60a1a0419f8b2d02ffa7b5f8888f28c7fb5cf51fbcb51d548be1c3
|
File details
Details for the file valence_domains-0.4.2-py3-none-any.whl.
File metadata
- Download URL: valence_domains-0.4.2-py3-none-any.whl
- Upload date:
- Size: 49.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c8148b08f055749a5080b48863d1b37e82bac1877ec2913139ccdb39f0755ef
|
|
| MD5 |
7f41cddb3539278182bcc84f2b8c5570
|
|
| BLAKE2b-256 |
c9d1fee52c1132bb803e2ab0be6b4d521e324458c22e463a95bd16438b015a9d
|