Rename the project to FieldCraft

Crates fieldcraft-*, binaries fieldcraft and fieldcraft-cli, the .fieldcraft file (format tag
fieldcraft/1, manifest fieldcraft.json), FIELDCRAFT_* environment variables, the MCP server
name, egui widget ids (fc_*), the app icon document FieldCraft.icon and its generated family,
docs and licences. No compatibility shim: no files of the earlier name exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-13 23:51:40 -04:00
1 parent 9bc4e1b182
commit d5bd74570f
268 files changed
+1666 -1666

No files matched your search

+9 -9
View File
@@ -1,4 +1,4 @@
# Volume meshing literature survey for ModelCraft (tet → hex)
# Volume meshing literature survey for FieldCraft (tet → hex)
Compiled 2026-10-13. Scope: watertight triangulated B-rep tessellation in, then (1) tetrahedral mesh by
Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant meshes.
@@ -110,7 +110,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
---
**A0.5 Boundary surface preparation (implemented in `modelcraft-mesh::surface`).** **Verdict: BUILD ON.**
**A0.5 Boundary surface preparation (implemented in `fieldcraft-mesh::surface`).** **Verdict: BUILD ON.**
- **Guigue and Devillers 2003.** P. Guigue, O. Devillers. *Fast and Robust Triangle–Triangle Overlap Test Using
Orientation Predicates.* Journal of Graphics Tools 8(1):25–32, 2003. Triangle overlap decided from `orient3d` /
`orient2d` signs alone, so it is exact on the A0.1 predicates. We use the equivalent edge–triangle reduction (two
@@ -151,7 +151,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
- Hilbert index: J. Skilling, *Programming the Hilbert curve*, AIP Conf. Proc. 707:381–387, 2004, DOI
[10.1063/1.1751381](https://doi.org/10.1063/1.1751381).
- **Code.** For a permissive reference, see geogram `delaunay_3d.cpp` (BSD).
- **Implemented** in `modelcraft-mesh::delaunay` (ghost vertex for the hull, Devillers–Teillaud perturbation for
- **Implemented** in `fieldcraft-mesh::delaunay` (ghost vertex for the hull, Devillers–Teillaud perturbation for
cospherical points, exact verifier).
**A1.2 Marot, Pellerin, Remacle 2019, "One machine, one minute, three billion tetrahedra".** **Verdict: reference (later).**
@@ -238,7 +238,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
- **Complexity.** High: about 8–12k lines of Rust including the predicate generator. It is the single most valuable
investment in the tet pipeline.
- **Code.** `MarcoAttene/CDT` is **GPL, or LGPL by build option** (README): FORBIDDEN.
- **Implemented** in `modelcraft-mesh::cdt` from the paper only, with these choices:
- **Implemented** in `fieldcraft-mesh::cdt` from the paper only, with these choices:
- Steiner points are LNC points (§4.3) on the original segment, `a + t (b − a)` with `t` a double; the in-sphere test
on them is exact (interval filter, then exact dyadic integers) and perturbed with the same lexicographic lift as
the Delaunay step, so Bowyer–Watson insertion of Steiner points stays consistent with it.
@@ -785,7 +785,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
- **HexaLab** (MIT, https://github.com/mlivesu/HexaLab, https://www.hexalab.net) is READ OK. It is a hex quality
viewer whose metrics match the literature's.
**B6.6 Element validity and quality metrics (implemented in `modelcraft-mesh::quality`).** **Verdict: BUILD ON.**
**B6.6 Element validity and quality metrics (implemented in `fieldcraft-mesh::quality`).** **Verdict: BUILD ON.**
- **Johnen, Remacle, Geuzaine 2013.** *Geometrical validity of curvilinear finite elements.* J. Comput. Phys.
233:359–372, 2013. The Jacobian
determinant in Bernstein form is bounded by its coefficients, equals them at the vertices and converges under
@@ -803,7 +803,7 @@ Delaunay methods with Voronoi/ODT improvement, then (2) all-hex and hex-dominant
> Shell (curved-face) quad meshing — advancing front in (u,v) with a cross field, recombination and cleanup — is surveyed separately in [shell-quad-literature.md](shell-quad-literature.md).
(implemented in `modelcraft-mesh::quad`)
(implemented in `fieldcraft-mesh::quad`)
The face meshers under mapped and swept hex meshing and shell meshing. All quads on prescribed
boundary nodes, so faces sharing an edge share its nodes. DOIs below were checked through
@@ -878,7 +878,7 @@ input points), Steiner points kept half the local spacing from the boundary.
---
### B8. Mapped and swept hexahedral meshing (implemented in `modelcraft-mesh::hex`)
### B8. Mapped and swept hexahedral meshing (implemented in `fieldcraft-mesh::hex`)
`mesh.hex.generate` (and `mesh.hex.sweep`, `mesh.hex.mapped`). Every method below is implemented from
its paper; no code was read. DOIs marked "checked" were confirmed on 2026-10-13 through a repository
@@ -939,14 +939,14 @@ Collision Detection*, 2005, §5.1.5).
## Part C: Datasets and benchmarks
| Dataset | Content | Licence | Usable for ModelCraft? |
| Dataset | Content | Licence | Usable for FieldCraft? |
|---|---|---|---|
| **Thingi10K**: Zhou & Jacobson 2016, arXiv https://arxiv.org/abs/1605.04797; site https://ten-thousand-models.appspot.com; tooling https://github.com/Thingi10K/Thingi10K | 10,000 STL meshes. 45% self-intersecting, 50% non-solid. The 4,408 "valid" subset is the standard tet-meshing robustness benchmark (fTetWild, Diazzi 2023). | Tooling Apache-2.0. **Each model has its own licence** (10 licences, including CC-BY-NC and GPL). Filter by the `license` field. | **Conditionally.** Use CC-BY / CC0 / public-domain models for robustness testing. **Provenance risk:** Thingiverse records no authoring tool, and many uploads were modelled in commercial CAD. Under the "no test data produced with commercial CAD products" rule this is an **owner decision**. |
| **HexMe**: DOI 10.5281/zenodo.6642020, https://hexme.algohex.eu | 189 tet meshes from 63 CAD models, with feature tags. | Dataset **CC-BY-4.0**. The source models come from the **ABC dataset (Onshape terms), GrabCAD (GrabCAD terms)**, MAMBO (Apache-2.0), and models made with **Gmsh and Siemens NX** (the paper's own statement). | **Only a filtered subset.** The ABC/Onshape, GrabCAD and Siemens NX models are produced with commercial CAD: exclude them. Gmsh-authored ones are acceptable as data. |
| **MAMBO**: https://gitlab.com/franck.ledoux/mambo | STEP models: basic, simple, medium. Designed for hex block-meshing evaluation. | **Apache-2.0** | **Risky.** The STEP headers I sampled say `'Spatial InterOp 3D'` as originating system and authors `'Cubit 15.2'` / `'MGX'`. These are commercial or closed tools. Treat as commercial-CAD-produced unless the owner rules otherwise. |
| **ABC**: Koch et al., CVPR 2019, DOI [10.1109/CVPR.2019.00983](https://doi.org/10.1109/CVPR.2019.00983), arXiv https://arxiv.org/abs/1812.06216, https://deep-geometry.github.io/abc-dataset/ | 1M CAD models (B-rep and meshes). | "Copyright of the CAD models is owned by their creators", under **Onshape Terms of Use**. The models come from Onshape. | **No.** Produced with a commercial CAD product, and the licence is not open. Skip. |
**Recommendation for test data.** Build ModelCraft's own corpus:
**Recommendation for test data.** Build FieldCraft's own corpus:
- **Generated cases.** Parametric primitives plus booleans from our own kernel:
- cubes and cylinders with holes;
- fillets;
+12 -12
View File
@@ -1,11 +1,11 @@
# Shell meshing literature survey for ModelCraft: quad and quad-dominant meshes of curved B-rep faces
# Shell meshing literature survey for FieldCraft: quad and quad-dominant meshes of curved B-rep faces
Compiled 2026-10-13. Scope: all-quad and quad-dominant surface meshes of the curved faces (planes, cylinders,
cones, spheres, tori, NURBS) of SolidCraft parts, meshed in each face's (u,v) parameter space with metric
correction and conforming across shared B-rep edges, for shell analysis (MITC4-class shells now,
continuum shells on swept hexes in M8). This extends `docs/meshing/literature.md` §B7, which compared
paving, Q-Morph and Blossom-Quad for **planar** faces only and chose CDT → greedy recombination →
Catmull–Clark split (`modelcraft-mesh::quad`).
Catmull–Clark split (`fieldcraft-mesh::quad`).
Same format as `docs/meshing/literature.md`: per paper, citation, DOI/URL, method, problem solved,
robustness/limits, complexity, code + licence, verdict. Part P is the opinionated plan.
@@ -126,7 +126,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
**S2.2 Owen and Saigal 2000, Surface mesh sizing control.** **Verdict: build on (size field on faces).**
- **Citation.** IJNME 47(1–3):497–511, 2000. DOI [10.1002/(SICI)1097-0207(20000110/30)47:1/3<497::AID-NME781>3.0.CO;2-H](https://doi.org/10.1002/(SICI)1097-0207(20000110/30)47:1/3%3C497::AID-NME781%3E3.0.CO;2-H). *Read:* metadata.
- **Method.** Automatic sizing on CAD surfaces from curvature and proximity, stored on a background mesh.
- **Use.** The curvature and proximity terms of ModelCraft's surface size field (P3.3).
- **Use.** The curvature and proximity terms of FieldCraft's surface size field (P3.3).
**S2.3 Lo 1989; Lau, Lo, Lee 1997; Lo and Lau 1998: quadrilaterals over curved surfaces.** **Verdict: reference.**
- **Citations.**
@@ -193,7 +193,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
**S3.2 Borouchaki, George, Hecht, Laug, Saltel 1997, Delaunay mesh generation governed by metric specifications.** **Verdict: build on (only if non-conformal parametrizations need an anisotropic Delaunay kernel).**
- **Citation.** Part I: FEAD 25(1–2):61–83, 1997, DOI [10.1016/S0168-874X(96)00057-1](https://doi.org/10.1016/S0168-874X(96)00057-1); Part II: FEAD 25:85–109, DOI [10.1016/S0168-874X(96)00065-0](https://doi.org/10.1016/S0168-874X(96)00065-0). *Read:* metadata.
- **Method.** The Delaunay criterion evaluated in a local metric (anisotropic Bowyer–Watson cavity).
- **Caveat for ModelCraft.** A metric in-circle test is not an exact predicate of the input coordinates; it
- **Caveat for FieldCraft.** A metric in-circle test is not an exact predicate of the input coordinates; it
may only decide *point placement* and *which flip to try*, never validity. Validity stays an exact `orient2d`
sign in (u,v) (see P3.5).
@@ -315,7 +315,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
- **Complexity.** Same as frontal-Delaunay triangulation, O(n log n); "tens of thousands of elements a minute"
(§1) in 2010-era hardware.
- **Why it matters here.** It is a marching front, but one whose collisions cannot fail, and it is a small
change to machinery ModelCraft already has (Bowyer–Watson, constrained recovery, recombination).
change to machinery FieldCraft already has (Bowyer–Watson, constrained recovery, recombination).
**S5.2 Georgiadis, Beaufort, Lambrechts, Remacle 2017, High quality mesh generation using cross and asterisk fields.** **Verdict: reference.**
- **Citation.** arXiv <https://arxiv.org/abs/1706.02236>, 2017. *Read:* abstract.
@@ -346,7 +346,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
slow on faces over 100k vertices; acute corners (< 45°) need artificial singularities; size-map vs
cross-field compatibility "still open".
- **Why it matters here.** Strongest published evidence on CAD B-reps for any automatic all-quad method, and
it uses **the same tri → recombine → split guarantee ModelCraft already ships**, with better point placement
it uses **the same tri → recombine → split guarantee FieldCraft already ships**, with better point placement
in front of it and cleanup behind it. It is the template for P.
- **Data caveat.** Both datasets are excluded for our own tests (see `literature.md` Part C); we cite the numbers only.
@@ -372,7 +372,7 @@ robustness/limits, complexity, code + licence, verdict. Part P is the opinionate
- **Citation.** IJNME 89(9):1102–1119, 2012. DOI [10.1002/nme.3279](https://doi.org/10.1002/nme.3279). *Read:* metadata.
- **Note.** Reberol 2021 replaced Blossom with a greedy, alignment-weighted matching followed by the split, which
removes the "perfect matching may not exist" failure and the cubic-time matching. That supports keeping
ModelCraft's greedy matching.
FieldCraft's greedy matching.
**S6.3 Ramaswami, Ramos, Toussaint 1998, Converting triangulations to quadrangulations.** **Verdict: reference (theory).**
- **Citation.** CGTA 9(4):257–276, 1998. DOI [10.1016/S0925-7721(97)00019-9](https://doi.org/10.1016/S0925-7721(97)00019-9).
@@ -619,14 +619,14 @@ cylinder displacement under the load 1.8248×10⁻⁵ (E = 3×10⁶, P = 1); pin
---
## Part P: Recommended plan for ModelCraft shell meshing (opinionated)
## Part P: Recommended plan for FieldCraft shell meshing (opinionated)
### P1. Position
**I agree with a cross-field-guided advancing front in (u,v) with a metric and topological cleanup, with one
change: the front advances *points over a Delaunay triangulation* (frontal-Delaunay in the cross-field L∞
norm, Remacle 2013), not quads (paving) and not triangle-to-quad transformations (Q-Morph).** All-quad comes
from the recombination + split ModelCraft already ships, and cleanup follows Reberol 2021.
from the recombination + split FieldCraft already ships, and cleanup follows Reberol 2021.
Reasons:
1. **Closure cannot fail.** A frontal-Delaunay front always sits inside a valid constrained triangulation, so
@@ -668,13 +668,13 @@ For each B-rep face set to be shell-meshed (a sheet body, or chosen faces of a s
### P3. Components
**P3.1 Chart abstraction** (`modelcraft-mesh::surface_mesh::chart` or a new `shell` module; trait in `mesh`,
**P3.1 Chart abstraction** (`fieldcraft-mesh::surface_mesh::chart` or a new `shell` module; trait in `mesh`,
implementation in `geometry`, wired in `engine`, so `mesh` does not depend on `geometry`):
`eval(u,v) → [f64;3]`, `derivs(u,v) → (S_u, S_v)` (second derivatives for curvature sizing), `project(p,
hint) → (u,v)`, the face's loops as 3D node chains with their (u,v), periodicity and singular points. Native
charts come from SolidCraft's kernel surfaces (truck's parametric surfaces already have parameter search, used
in 5 SolidCraft kernel files); this needs a new **public** face-surface API in `solidcraft-kernel`, exposed
through `modelcraft-geometry` without leaking SolidCraft types. Handling:
through `fieldcraft-geometry` without leaking SolidCraft types. Handling:
- **Periodic faces** (cylinder, torus, revolved): the seam edge appears twice in the loop; give its nodes
u = 0 on one side and u = period on the other (unwrap by continuity along the loop). The domain becomes simply
connected; seam nodes are the same 3D nodes, so conformity across the seam holds.
@@ -772,7 +772,7 @@ ship.
### P6. Order of work
1. **Chart API** in `solidcraft-kernel` (public face-surface evaluation and parameter search) and
`modelcraft-geometry` (trait implementation, seams, poles). Done when the P5.1 tests pass.
`fieldcraft-geometry` (trait implementation, seams, poles). Done when the P5.1 tests pass.
2. **Port the shipped free mesher to (u,v) + metric**: half-resolution CDT and Ruppert refinement in the
rescaled (u,v) with metric sizing, recombination, split, smoothing with 3D objective. This gives all-quad
conforming meshes on curved faces early, and is the baseline.