Add the modelcraft-mesh crate (empty: error type only) (#3)

So the predicates and quality tasks can add modules in parallel without both creating the crate.


Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
authored and GitHub committed 2026-10-13 14:31:15 -04:00
1 parent 4abfa0845b
commit 620ef6bc64
5 files changed
+45 -1

No files matched your search

Generated
+8
View File
@@ -367,6 +367,14 @@ dependencies = [
"thiserror 2.0.21",
]
[[package]]
name = "modelcraft-mesh"
version = "0.1.0"
dependencies = [
"modelcraft-model",
"thiserror 2.0.21",
]
[[package]]
name = "modelcraft-model"
version = "0.1.0"
+1
View File
@@ -14,6 +14,7 @@ repository = "https://github.com/jyviko/modelcraft"
# internal
modelcraft-model = { path = "crates/model" }
modelcraft-geometry = { path = "crates/geometry" }
modelcraft-mesh = { path = "crates/mesh" }
modelcraft-engine = { path = "crates/engine" }
# foundation
+13
View File
@@ -0,0 +1,13 @@
[package]
name = "modelcraft-mesh"
description = "ModelCraft's meshing: robust predicates, surface preparation, tetrahedral and hexahedral meshing, quality metrics"
version.workspace = true
edition.workspace = true
license.workspace = true
[lints]
workspace = true
[dependencies]
modelcraft-model = { workspace = true }
thiserror = { workspace = true }
+22
View File
@@ -0,0 +1,22 @@
//! Meshing: robust geometric predicates, boundary surface preparation, tetrahedral and
//! hexahedral volume meshing, and element quality.
//!
//! Every algorithm here is implemented from the papers cited in its module docs (see
//! `docs/meshing/literature.md`); no GPL-family code is read or used. Meshing decisions use exact
//! predicates, results are deterministic, and every iterative stage is bounded.
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
#![forbid(unsafe_code)]
#[derive(Debug, Clone, PartialEq, thiserror::Error)]
pub enum Error {
#[error("invalid input: {0}")]
Invalid(String),
#[error("limit reached: {0}")]
Limit(String),
#[error("meshing failed: {0}")]
Failed(String),
#[error(transparent)]
Model(#[from] modelcraft_model::Error),
}
pub type Result<T> = std::result::Result<T, Error>;
+1 -1
View File
@@ -20,7 +20,7 @@ crates in strictly lower layers.
|---|---|---|---|
| L0 | `modelcraft-model` | Solver-neutral FE model: nodes, elements by label; materials, sections, sets, BCs, loads and steps as they land. Knows no file format. | started |
| L1 | `modelcraft-geometry` | The only door to SolidCraft: B-rep bodies, measures, tessellation into a face-tagged `SurfaceMesh`. No SolidCraft type in its API. | started |
| L1 | `modelcraft-mesh` | Surface preparation (weld, watertightness, feature edges), robust predicates, Delaunay tetrahedralization and refinement, Voronoi-based optimization, hex meshing, quality metrics. | planned |
| L1 | `modelcraft-mesh` | Surface preparation (weld, watertightness, feature edges), robust predicates, Delaunay tetrahedralization and refinement, Voronoi-based optimization, hex meshing, quality metrics. | started |
| L1 | `modelcraft-solver` | Element formulations, assembly, sparse linear static and modal solution. | planned |
| L1 | `modelcraft-decks` | Abaqus input, Nastran bulk data and LS-DYNA keyword readers and writers, to and from `model`. | planned |
| L1 | `modelcraft-render` | Display data (meshes, contour maps) without a GPU dependency. | planned |