Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8f6747a
fix: secret_path_guard — sync canonical DomI pattern (.env + root-rel…
Jun 12, 2026
f684c99
fix: remove destructive auto-reset onto deprecated daily-maintenance …
Jun 12, 2026
c9f0e6c
chore: exclude Claude-derived docs from distributions (MANIFEST.in)
Jun 12, 2026
d4e63a8
chore: spec-010 v3 (DomI): managed workflow copies replace per-repo d…
Jun 12, 2026
b5f1b27
fix: re-sync workflow-conformance managed copy (self-match + log echo)
Jun 12, 2026
79f59b2
docs: dedup coding-dispatch block → DomI canonical policy (#83)
Jun 12, 2026
badcbce
fix: re-sync workflow-conformance managed copy (dead-branch regex exc…
Jun 12, 2026
82ab38d
docs: seed mesh-segmenter architecture ADR + CONTEXT glossary (#153)
Jun 13, 2026
7b4241e
docs: add mesh-segmenter v1 mechanism contracts from grill round 2 (#…
Jun 13, 2026
a6cf119
docs: set provisional name mesh_segmenter, drop ADMESH ADR back-ref (…
Jun 13, 2026
df97f18
chore: sync DomI@3e46639
Jun 13, 2026
fef9cf9
fix: honest backend detection + non-silent pure-Python slow-path warn…
Jun 13, 2026
4eda66a
docs: introspection corpus entry for rotation 2026-06-13T02Z
Jun 13, 2026
363d1bc
docs: add mesh_segmenter sandbox handoff + rasterize-SAM2 prototype p…
Jun 13, 2026
ae77ee1
fix: correct padded-triangle sentinel in split_triangle/split_triangl…
Jun 13, 2026
1a795ec
docs: introspection corpus entry for rotation 2026-06-13T08Z (#211)
Jun 13, 2026
f06a0ad
fix: correct stale >200s pure-Python perf claim + vectorize centroids…
Jun 13, 2026
6699660
docs: introspection corpus entry for rotation 2026-06-13T14Z (#202)
Jun 13, 2026
5ac79f8
docs: canonical README rewrite (write-readme skill)
Jun 13, 2026
65b4442
docs: sync README perf table + speedup (~15x) + version to v1.1.0 ben…
Jun 13, 2026
83f6229
feat: add ADCIRC fort.13 nodal-attribute reader/writer (#201, #196)
Jun 13, 2026
35cfea8
docs: introspection corpus entry for rotation 2026-06-13T20Z (#201)
Jun 13, 2026
07ada11
chore: sync DomI pin 3e46639 → 69b073d
Jun 15, 2026
2b6923e
fix: correct mixed-element insert_vertex on quad meshes (#211 tail)
Jun 15, 2026
c7da5f2
docs: introspection corpus entry for rotation 2026-06-15T10Z (#211, #48)
Jun 15, 2026
a89d2ee
chore: release chilmesh 1.2.1
domattioli Jun 15, 2026
21a18e3
chore: export-ignore agent/dev files from source archives (Zenodo/sdi…
domattioli Jun 15, 2026
a3a22f7
chore: sync DomI pin 69b073d → a9b240f
Jun 15, 2026
c7a581c
docs: remove duplicated #168 size-field note in direct_smoother docst…
Jun 15, 2026
af70ebb
docs: introspection corpus entry for rotation 2026-06-15T18Z (#168, #…
Jun 15, 2026
7f2c06c
chore: rename ADMESH-Domains->Valence in docs/strings; drop internal …
domattioli Jun 15, 2026
81dbeb8
move specs to .specify
domattioli Jun 16, 2026
01105cd
Merge branch 'main' into development
domattioli Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .domi-pin
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@

upstream: domattioli/DomI
branch: main
sha: 69b073dd5888411aef5c7e7f4ad30e557fd6f057
manifest_sha256: 9d57d1fd6f468969892bc87017f0021647a6ed91f61c40ee544801b23914f014
pinned_at: 2026-06-15T10:07:23Z
sha: a9b240f2d6f2158e2273da46a800af3ff70c6132
manifest_sha256: 8e928b85a6aa6b7e3869cb3d04832eb2b2576a9a343e5cf4a92ad7890782cb75
pinned_at: 2026-06-15T18:08:55Z
12 changes: 9 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
and the project adheres to [Semantic Versioning](https://semver.org/).

## [1.2.2] — 2026-06-15

### Changed
- Renamed registry references `ADMESH-Domains` → `Valence` / `valence-domains` (registry was renamed). Public API names (`from_admesh_domain`, `admesh_metadata`) unchanged.
- Removed internal design proposals from the published source tree.

## [1.2.0] — 2026-05-24

### ✨ Added
Expand Down Expand Up @@ -88,7 +94,7 @@ and the project adheres to [Semantic Versioning](https://semver.org/).
## [1.0.0] — 2026-05-22

First **stable** release. CHILmesh is now the production backbone for ADMESH,
MADMESHR, and ADMESH-Domains.
MADMESHR, and Valence.

### 🚀 Headline

Expand Down Expand Up @@ -441,7 +447,7 @@ These numbers carry forward unchanged into v0.4.0 — Phase 5 spatial queries an
#### Enhanced Test Coverage
- `test_skeletonization_invariant.py`: Layer separation invariant validation across all fixtures
- `test_skeletonization_matlab_parity.py`: MATLAB reference layer count validation
- `test_skeletonization_matlab_parity_external.py`: External ADMESH-Domains catalog parity validation
- `test_skeletonization_matlab_parity_external.py`: External Valence catalog parity validation
- `test_smoothing.py`: Comprehensive FEM smoother tests for triangles, quads, and mixed-element meshes

## [0.2.0] — 2026-04-27 (Modernization Release)
Expand Down Expand Up @@ -510,7 +516,7 @@ pinches = mesh.pinch_points(width_threshold=0.3)
#### Documentation & Release Infrastructure
- `API.md` - Complete 25+ method reference with stability guarantees
- `BENCHMARK.md` - Performance comparison v0.1.1 vs v0.2.0 with real-world impact
- `DOWNSTREAM_MIGRATION_GUIDE.md` - Integration guide for MADMESHR, ADMESH, ADMESH-Domains
- `DOWNSTREAM_MIGRATION_GUIDE.md` - Integration guide for MADMESHR, ADMESH, Valence
- `docs/CHILmesh_Access_Interface.md` - Stability guarantees and usage patterns
- Stable API contract (CAI) through v1.0

Expand Down
21 changes: 17 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

## Why CHILmesh

**The stable backbone for hydrodynamic mesh tooling.** Sibling projects [ADMESH](https://github.com/domattioli/ADMESH), [ADMESH-Domains](https://github.com/domattioli/ADMESH-Domains), and [QuADMesh](https://github.com/domattioli/QuADMesh) build on top of it.
**The stable backbone for hydrodynamic mesh tooling.** Sibling projects [ADMESH](https://github.com/domattioli/ADMESH), [Valence](https://github.com/domattioli/Valence), and [QuADMesh](https://github.com/domattioli/QuADMesh) build on top of it.

- **Pythonic API** — `from chilmesh import Mesh`; backwards-compatible `CHILmesh` alias preserved.
- **C++ acceleration, bit-identical output** — half-edge extension is **~15× faster than pure Python** on full init, verified bit-for-bit by [36 cross-backend equivalence tests](tests/test_backend_equivalence.py).
Expand Down Expand Up @@ -77,7 +77,20 @@ The legacy `chilmesh.CHILmesh` import is preserved for backward compatibility. B
- **I/O** — [ADCIRC](https://adcirc.org/) `.fort.14` and [SMS Aquaveo](https://www.aquaveo.com/sms) `.2dm` read/write
- **Spatial queries** — point-in-element, k-nearest vertices, radius search at O(log n)
- **Mesh alterations** — `insert_vertex`, coord moves, advancing-front element addition; full mutation suite tracked in [#94](https://github.com/domattioli/CHILmesh/issues/94)
- **ADMESH-Domains integration** — `from_admesh_domain()` adapter
- **Valence integration** — `from_admesh_domain()` adapter

### Performance

Reference workload: WNAT_Hagen (52,774 vertices · 98,365 elements · 151,248 edges · 30 layers). v1.1.0 medians, single machine. **Backends are output-equivalent** — the C++ extension produces bit-identical skeletonization layers to Python (`n_layers = 30` on all three), verified by [`tests/test_backend_equivalence.py`](tests/test_backend_equivalence.py).

| Stage | MATLAB (Octave) ‡ | Python | C++ |
|---|---:|---:|---:|
| Fast init (adj, no skeletonization) | 0.27 s | 1.31 s | 0.060 s |
| Skeletonization only | 0.67 s | 0.32 s | 0.052 s |
| Full init (adj + skeletonization) | 1.04 s | 1.65 s | 0.112 s |
| Quality analysis | 12 ms | 6.4 ms | 1.3 ms |

**C++ is ~15× faster than Python on full init** (1.65 s → 0.112 s) and ~9× faster than the original Octave implementation. ‡ MATLAB measured under GNU Octave 8.4 (interpreter, not MATLAB JIT) — the original-algorithm baseline, not a MATLAB-vs-Octave claim. Rust is excluded — its skeletonization is incomplete ([#163](https://github.com/domattioli/CHILmesh/issues/163)). Absolute times are machine-dependent; full methodology and the regenerating harness: [`docs/BENCHMARK.md`](docs/BENCHMARK.md).

### Performance

Expand All @@ -100,7 +113,7 @@ Reference workload: WNAT_Hagen (52,774 vertices · 98,365 elements · 151,248 ed

### Validation

Python, C++, and the original MATLAB/Octave implementation all produce identical `n_layers` (medial-axis skeletonization) across the ADMESH-Domains catalog, from 557 to 132k vertices. Identical connectivity + points are fed to both implementations; only the layering algorithm is compared.
Python, C++, and the original MATLAB/Octave implementation all produce identical `n_layers` (medial-axis skeletonization) across the Valence catalog, from 557 to 132k vertices. Identical connectivity + points are fed to both implementations; only the layering algorithm is compared.

| Mesh | Vertices | Elements | MATLAB | Python | C++ | Match |
|---|--:|--:|--:|--:|--:|:--:|
Expand Down Expand Up @@ -182,7 +195,7 @@ CHILmesh is the core engine for the ADCIRC mesh ecosystem. Sibling projects buil
| Repo | Role |
|---|---|
| [ADMESH](https://github.com/domattioli/ADMESH) | Unstructured triangle mesh generator; consumes CHILmesh for adjacency, smoothing, and quality analysis |
| [ADMESH-Domains](https://github.com/domattioli/ADMESH-Domains) | Curated ADCIRC mesh registry; `Mesh.from_admesh_domain()` reads from it directly |
| [Valence](https://github.com/domattioli/Valence) | Curated ADCIRC mesh registry; `Mesh.from_admesh_domain()` reads from it directly |
| [QuADMesh](https://github.com/domattioli/QuADMesh) | Quad mesh generator (MATLAB → Python port, in progress); CHILmesh data structure descends from the original QuADMesh+ |
| [MADMESHing](https://github.com/domattioli/MADMESHing) | Benchmark harness comparing ADMESH triangulation vs quad generators; uses CHILmesh for quality analysis |

Expand Down
2 changes: 1 addition & 1 deletion docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ success = mesh.write_to_fort14("output.fort.14", grid_name="My Mesh")
#### `from_admesh_domain(record, compute_layers: bool = True) -> CHILmesh`
**Stability:** Stable | **Complexity:** O(n log n)

Load mesh from ADMESH-Domains catalog record (duck-typed).
Load mesh from Valence catalog record (duck-typed).

---

Expand Down
4 changes: 2 additions & 2 deletions docs/BENCHMARK.md
Original file line number Diff line number Diff line change
Expand Up @@ -276,14 +276,14 @@ Total: 14.7s ✅ Interactive development
## How to Reproduce

```bash
git clone https://github.com/domattioli/ADMESH-Domains /tmp/admesh-domains
git clone https://github.com/domattioli/Valence /tmp/valence-domains

python3 << 'PYTHON'
from chilmesh import CHILmesh
from pathlib import Path
import time

mesh_path = Path("/tmp/admesh-domains/registry_data/meshes/WNAT_Hagen.14")
mesh_path = Path("/tmp/valence-domains/registry_data/meshes/WNAT_Hagen.14")

start = time.time()
mesh = CHILmesh.read_from_fort14(mesh_path, compute_layers=False)
Expand Down
8 changes: 4 additions & 4 deletions docs/CHIL_FORMAT_INVESTIGATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ already built, and what the object model is still missing.
| ADCIRC `fort.14` (`.14`/`.fort14`) | ✅ | ✅ | `CHILmesh.read_from_fort14`, `write_to_fort14`, module `write_fort14` |
| SMS `.2dm` | ✅ | ✅ (private `_write_2dm`) | `CHILmesh.read_from_2dm`, `_write_2dm` |
| Gmsh `.msh` (v2.2 + v4.1) | ✅ | ✅ | `gmsh_io.read_msh`/`write_msh`, `CHILmesh.read_from_msh`/`write_to_msh` |
| ADMESH-Domains registry record | ✅ | — | `CHILmesh.from_admesh_domain(record)` |
| Valence registry record | ✅ | — | `CHILmesh.from_admesh_domain(record)` |
| `.chil` | ❌ | ❌ | **none — does not exist anywhere in `src/`** |

**Unified dispatch already exists.** `CHILmesh.save(filename)` and
Expand Down Expand Up @@ -60,7 +60,7 @@ same three things the fort.14 writer already emits, plus the new metadata below.
| Native CRS declaration (Q8) | ❌ | No CRS field; Principle V makes coords **opaque** → direct conflict (#154 D9 HIGH) |
| Domain Boundary distinct from Mesh Boundary (Q11) | ❌ | Only `boundary_segments` (mesh edges) exist; no domain-outline concept |
| `fort.13` nodal attributes for lossless mesh round-trip (Q11) | ❌ | No fort.13 read/write anywhere → "lossless fort.14+fort.13" unmet |
| Deterministic content hash / `content_uid` (Q15) | ❌ | No hashing in CHILmesh (lives in ADMESH-Domains schema, not here) |
| Deterministic content hash / `content_uid` (Q15) | ❌ | No hashing in CHILmesh (lives in Valence schema, not here) |
| Multi-ring boundary (holes, Bermuda) (Q10/Q11) | partial | boundary_segments can list multiple rings, but no canonical winding/start-vertex normalization |
| Quantization to fixed grid (Q9) | ❌ | No coordinate quantization step |

Expand Down Expand Up @@ -94,7 +94,7 @@ If/when the RESHAPE blockers clear, integration is **localized**:
- Principle VI (format pluralism) vs `.chil` as *canonical* — promoting one
format is exactly what VI forbids; CHILmesh should treat `.chil` as **one more
readable/writable adapter**, not privileged. Registry-canonical is an
ADMESH-Domains decision, not a CHILmesh one.
Valence decision, not a CHILmesh one.
- fort.13 nodal-attribute round-trip is a prerequisite for `kind="mesh"`
losslessness and is entirely unbuilt.

Expand All @@ -108,7 +108,7 @@ If/when the RESHAPE blockers clear, integration is **localized**:
recorded as `native = "unknown"`/passthrough (no transform — respects
Principle V). No Identity hash, no WGS84 transform. This is a pure additive
adapter, no constitution amendment required.
2. **Defer the Identity/CRS/Domain-Boundary half** to ADMESH-Domains where the
2. **Defer the Identity/CRS/Domain-Boundary half** to Valence where the
registry, hashing, and curation already live (#154 D6/D9/D15 put the heavy
deps — shapely/pyproj/numpy — on the registry side, which CHILmesh's minimal
base install should not absorb).
Expand Down
6 changes: 3 additions & 3 deletions docs/CHILmesh_Access_Interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

## Executive Summary

**CAI** defines stable, documented public API that downstream projects (MADMESHR, ADMESH, ADMESH-Domains) can depend on. All methods listed here maintain signatures, return types, and semantics through v1.0. Breaking changes require major version bump + minimum 2-week advance notice.
**CAI** defines stable, documented public API that downstream projects (MADMESHR, ADMESH, Valence) can depend on. All methods listed here maintain signatures, return types, and semantics through v1.0. Breaking changes require major version bump + minimum 2-week advance notice.

---

Expand Down Expand Up @@ -127,7 +127,7 @@ def read_from_2dm(full_file_name: Path, compute_layers: bool = True) -> "CHILmes
@staticmethod
def from_admesh_domain(record, compute_layers: bool = True) -> "CHILmesh":
"""
Create from ADMESH-Domains catalog record (duck-typed, zero imports).
Create from Valence catalog record (duck-typed, zero imports).
Record must have 'fort14_path' attribute.
"""

Expand All @@ -145,7 +145,7 @@ def copy(self) -> "CHILmesh":

def admesh_metadata(self) -> Dict[str, Any]:
"""
ADMESH-Domains compatible metadata.
Valence compatible metadata.
Returns: node_count, element_count, element_type ('tri'/'quad'/'mixed'), bounding_box.
"""
```
Expand Down
12 changes: 6 additions & 6 deletions docs/DOWNSTREAM_MIGRATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Version:** 2.0 (revised for CHILmesh v1.0.0)
**CHILmesh Version:** 1.0.0+
**Target Projects:** MADMESHR, ADMESH, ADMESH-Domains
**Target Projects:** MADMESHR, ADMESH, Valence

---

Expand Down Expand Up @@ -173,7 +173,7 @@ print(f"Mean quality: {report['mean']:.3f}")
print(f"Poor elements: {report['poor_count']}")
```

### ADMESH-Domains Quick Start
### Valence Quick Start

#### Before (v0.1.1)
```python
Expand Down Expand Up @@ -406,7 +406,7 @@ report = adapter.get_mesh_quality_report()
angle_summary = adapter.get_element_angles_summary()
```

### ADMESH-Domains: Domain Decomposition
### Valence: Domain Decomposition

**Relevant CAI Methods:**
```python
Expand Down Expand Up @@ -435,15 +435,15 @@ Include:
- Python version: `python --version`
- Minimal reproducible example
- Full error traceback
- Downstream project name (MADMESHR/ADMESH/ADMESH-Domains)
- Downstream project name (MADMESHR/ADMESH/Valence)

Report at: https://github.com/domattioli/CHILmesh/issues

---

## Version Compatibility

| CHILmesh | MADMESHR | ADMESH | ADMESH-Domains | Notes |
| CHILmesh | MADMESHR | ADMESH | Valence | Notes |
|----------|----------|--------|----------------|-------|
| 0.1.1 | ✅ Legacy | ✅ Legacy | ✅ Legacy | Old version, still works |
| 0.2.0 | ✅ Recommended | ✅ Recommended | ✅ Recommended | Current, use this |
Expand Down Expand Up @@ -479,7 +479,7 @@ None required. Migration completely optional.
See `examples/` directory for complete working examples:
- `madmeshr_refinement.py` - MADMESHR mesh adaptation workflow
- `admesh_quality.py` - ADMESH quality assessment
- `admesh_domains_setup.py` - ADMESH-Domains domain initialization
- `admesh_domains_setup.py` - Valence domain initialization

---

Expand Down
2 changes: 1 addition & 1 deletion docs/gallery/benchmark.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"chilmesh_version": "0.4.1",
"python": "3.11.15",
"os": "Linux x86_64",
"mesh": "/tmp/admesh-domains/registry_data/meshes/WNAT_Hagen.14",
"mesh": "/tmp/valence-domains/registry_data/meshes/WNAT_Hagen.14",
"init": {
"fast_init_s": 1.2139215900000409,
"full_init_s": 4.567989638999961,
Expand Down
4 changes: 2 additions & 2 deletions docs/gallery/benchmark.log
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
ERROR: WNAT_Hagen mesh not found. Clone ADMESH-Domains:
git clone https://github.com/domattioli/ADMESH-Domains /tmp/admesh-domains
ERROR: WNAT_Hagen mesh not found. Clone Valence:
git clone https://github.com/domattioli/Valence /tmp/valence-domains
then re-run this script.
44 changes: 44 additions & 0 deletions docs/introspections/development_c7a581c.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!-- Session handoff + corpus entry. Caveman style. R5 frontmatter per introspect@DomI tmpl. -->
---
date: 2026-06-15
session: 2026-06-15T18Z-rotation
repo: domattioli/CHILmesh
severity: low
freq: recurring
issues: [168, 196, 214, 48]
wasted_min: 3
wasted_tok: 2000
missing_skill: null
---

# Session Handoff — CHILmesh · development_c7a581c · 2026-06-15 (rotation hour-18)

**Task:** rotation maintenance track — C spec-048 slice shipped prior; queue + pin
**Phase:** maintenance
**Progress:** complete — pin synced, docstring defect fixed, coordination triaged, divergence flagged
**Branch:** development (new rolling PR #213; #210 operator-merged 16:25Z)
**Duration:** ~25 min
**Tool failures:** 0
**Outcome:** complete

## Pre-flight
- branch_policy_conflict: caught_and_resolved <!-- harness claude/happy-pascal-8ky4j3 → development per CLAUDE.md precedence; origin/development fetched fresh -->
- domi_pin_drift: caught_and_synced <!-- 69b073d → a9b240f via sibling-clone update_pin.sh; manifest changed 9d57d1f→8e928b8 -->
- caveman_plugin: NOT loaded at boot → Unknown skill → emulated from CLAUDE.md; marketplace connected mid-session → re-attempt /caveman:caveman ultra succeeded (DomI#268 race, expected)

## What shipped (evidence)
- chore pin sync `69b073d → a9b240f` (`a3a22f7`). drift gate closed.
- docs dedup `#168` note in `direct_smoother` docstring — pasted twice verbatim, removed dup, logic untouched, AST parse clean (`c7a581c`).
- coordination triage #196 item 1: QuADMesh→CHILmesh API gaps #132/#133/#134/#138/#139 all CLOSED+completed, consumed downstream → item 1 resolved. items 2/3 remain.
- filed #214: introspect-v2 migration incomplete on development (28 deprecated docs/introspections records main deleted via #212 + write-target contradiction: CHILmesh pull-only, cannot write DomI .introspect/CHILmesh/). operator/governance.

## Pains (→ matrix, no new request:skill per #203)
- introspect-v2-downstream-write-target-contradiction: downstream repo sessions have no compliant path to DomI central corpus (pull-only + no-cross-repo-write). deprecated dir regrows each session. routed to #214. severity med, freq recurring.
- caveman-cold-start-race: DomI#268, known. low.
- domi-pin-drift-each-rotation: mechanical sibling-clone sync each slot. low, recurring.

## Next slot (hour-2/10 CHILmesh)
- watch #214 for operator decision on introspect-v2 sweep before merging #213.
- #196 items 2 (canonical layer-path traversal standalone fn) + 3 (API-stability contract) open coordination.
- #163 status:blocked (Rust array n_layers=2 / C++ editable stub) — needs build env.
- env: no send_later/remote MCP → cannot arm 1h self-check-in; PR #213 webhook covers CI-fail/review wake.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "chilmesh"
version = "1.2.1"
version = "1.2.2"
description = "Fast 2D mesh library for hydrodynamic domains — Python API with optional C++ acceleration"
authors = [{name = "Dominik Mattioli"}]
license = {text = "PolyForm Noncommercial License 1.0.0"}
Expand Down
2 changes: 1 addition & 1 deletion scripts/benchmark_all_backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def _fmt(seconds: float, unit: str = "s") -> str:
def _locate_mesh(explicit: str | None) -> Path:
candidates = [
explicit,
"/tmp/admesh-domains/registry_data/meshes/WNAT_Hagen.14",
"/tmp/valence-domains/registry_data/meshes/WNAT_Hagen.14",
"/tmp/WNAT_Hagen.14",
str(Path.home() / "WNAT_Hagen.14"),
]
Expand Down
2 changes: 1 addition & 1 deletion scripts/benchmark_quadegg_variants.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

BACKENDS = ['edgemap', 'halfedge', 'quadegg']
OPERATIONS = ['fast_init', 'full_init', 'quality_analysis', 'query_latency']
WNAT_HAGEN_PATH = "/tmp/admesh-domains/registry_data/meshes/WNAT_Hagen.14"
WNAT_HAGEN_PATH = "/tmp/valence-domains/registry_data/meshes/WNAT_Hagen.14"


def measure_operation(op_name: str, op_fn, n_trials: int = 2) -> Tuple[float, float, float]:
Expand Down
12 changes: 6 additions & 6 deletions scripts/benchmark_wnat_hagen.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
python scripts/benchmark_wnat_hagen.py [MESH_PATH] [--json OUTPUT.json]

If MESH_PATH is omitted the script looks for the mesh in the default
ADMESH-Domains clone location (/tmp/admesh-domains/registry_data/meshes/).
Valence clone location (/tmp/valence-domains/registry_data/meshes/).

Outputs a markdown table suitable for pasting into docs/BENCHMARK.md and,
optionally, a JSON file for CI archival / diff-over-time comparisons.
Expand Down Expand Up @@ -47,17 +47,17 @@ def _measure(label: str, fn, *, n: int = 1) -> tuple[str, float]:
def _locate_mesh(explicit: str | None) -> Path:
candidates = [
explicit,
"/tmp/admesh-domains/registry_data/meshes/WNAT_Hagen.14",
"/tmp/admesh-domains/WNAT_Hagen.14",
"/tmp/valence-domains/registry_data/meshes/WNAT_Hagen.14",
"/tmp/valence-domains/WNAT_Hagen.14",
str(Path.home() / "WNAT_Hagen.14"),
]
for c in candidates:
if c and Path(c).exists():
return Path(c)
raise FileNotFoundError(
"WNAT_Hagen mesh not found. Clone ADMESH-Domains:\n"
" git clone https://github.com/domattioli/ADMESH-Domains "
"/tmp/admesh-domains\n"
"WNAT_Hagen mesh not found. Clone Valence:\n"
" git clone https://github.com/domattioli/Valence "
"/tmp/valence-domains\n"
"then re-run this script."
)

Expand Down
Loading