ADCIRC mesh registry - domain management and validation for mesh data
Project description
Valence
Curated registry of hydrodyanmic domain and meshes — a canonical `manifest.toml` with on-demand mesh fetch from the HuggingFace mirror.
Thomas Estep1† & Dominik Mattioli1†, †Corresponding author | 1Unaffiliated | 2Ohio State University (CHIL)
Table of Contents
flowchart LR
A["registry_data/\nmanifest.toml"] --> B["valence_domains/data/\nmanifest.toml\n(bundled in wheel)"]
A --> C["Parquet sidecar\n(auto-generated)"]
B --> D["HuggingFace Hub\ndomattioli/Valence"]
C --> D
D -->|"Mesh.load()\non demand"| E["chilmesh.Mesh"]
Why Valence
Hydrodynamic mesh data is scattered and hard to reproduce. Valence provides a single curated catalog with:
- Canonical
manifest.toml— one source of truth for mesh metadata (provenance, element type, lineage). - On-demand fetch —
Mesh.load()pulls from the HuggingFace mirror; no bulk download required. - PR-based contribution — add a new domain mesh through a validated pull request; validator runs on every push.
- Reproducible data releases — code changes → PyPI + HF tagged
vX.Y.Z; data updates → HF taggeddata-YYYY-MM-DD-<sha7>, PyPI untouched.
Browse registry: domattioli.github.io/Valence — interactive map, search, preview, download, contribute.
| Where to go | What you'll find |
|---|---|
| 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 + auto-generated dataset card |
This repo is for contributors and maintainers — data, schema, publisher pipeline, and CI live here. End users normally don't need to clone; pip install valence-domains[hf] is enough.
Install
# Read bundled manifest only (no mesh downloads, ~50 KB install)
pip install valence-domains
# Add Mesh.load() — fetches mesh files from HF mirror on demand
pip install valence-domains[hf]
# Add synthetic-mesh generator (numpy + scipy)
pip install valence-domains[gen]
User-facing API (find_domains, find_meshes, get_mesh, test_meshes, Mesh.load) documented on the HF dataset card. For pytest fixtures, use from valence_domains import test_meshes — returns all registry meshes marked for testing.
Quickstart
Deterministic random fort.14 generator for tests, documentation, and mesh-comparison fixtures:
# Write a single deterministic fort.14
valence-domains generate --output mesh.14 --seed 42 --node-count 500
# Triangle / quad / mixed elements
valence-domains generate --output tri.14 --element-type triangle --seed 1
valence-domains generate --output quad.14 --element-type quad --seed 1
Same --seed + --node-count + --element-type → byte-identical output. Requires the [gen] extra (numpy + scipy).
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
# Discover what's registered
find_domains() # all domains in the manifest
find_meshes(domain="WNAT") # meshes within a domain
# Fetch a specific mesh (downloads from the HuggingFace mirror, cached)
mesh = get_mesh("WNAT/hagen@v1")
nodes, elements = mesh.load() # fort.14 contents
# Meshes flagged for use as test fixtures
for m in test_meshes():
...
See the HuggingFace dataset card for the full API reference.
Registry
Repo layout
valence/ Python package (schema, manifest loader, query API,
CLI, HF publisher, dataset-card template)
valence/data/ Bundled manifest.toml shipped in 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 | Mesh generator this registry complements; WNAT_Hagen.14 is the ADMESH reference domain |
| QuADMesh | Quad mesh generator; uses registry domains as test inputs |
| MADMESHing | Benchmark harness; pulls Block-O from this registry |
HuggingFace slug: domattioli/Valence.
Status & Roadmap
Coming soon
See CHANGELOG.md for full release history.
Citation
This software (cite the archived release):
Mattioli, D. & Estep, T. (2026). Valence: Curated registry of hydrodynamic domains and meshes. Zenodo. https://doi.org/10.5281/zenodo.20519657
Contact
Thomas Estep - (repo co owner)
Dominik Mattioli - (repo co owner)
License
Noncommercial / research use only. Licensed under the 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. Commercial or AI-training licenses: contact domattioli via 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.1.tar.gz.
File metadata
- Download URL: valence_domains-0.4.1.tar.gz
- Upload date:
- Size: 109.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e909210130ece3bae7d8bf70976ee7e7d6c31078d0ee9fae58b89a99543b4a53
|
|
| MD5 |
7bee41615ac4025fdfb69753428dd7bb
|
|
| BLAKE2b-256 |
678fbf4b541164f2082dff31e44b8634fdadebd78c724dd5a89356b5fa0a6561
|
File details
Details for the file valence_domains-0.4.1-py3-none-any.whl.
File metadata
- Download URL: valence_domains-0.4.1-py3-none-any.whl
- Upload date:
- Size: 48.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26b4b902e1a9a8ab4587c4f8e7a55ad927207797f0cf9aae837fcdde5c166a0c
|
|
| MD5 |
0031e4b0b80abdaa3f5b5f8025090797
|
|
| BLAKE2b-256 |
fdc42374974ffe574aaf262e86001fabb4b26352618e3a6b7ba57e37092a3332
|