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

+2 -2
View File
@@ -1,7 +1,7 @@
//! The Jacobian determinant of a solid element as an exact polynomial, its certified sign and
//! the element's exact volume.
//!
//! The geometry map of every solid element ModelCraft knows is a polynomial on its reference
//! The geometry map of every solid element FieldCraft knows is a polynomial on its reference
//! domain, so its Jacobian determinant is one too: constant for tet4, cubic for tet10, degree
//! (2, 2) on triangle × segment for wedge6, degree (2, 2, 2) for hex8 and (5, 5, 5) for hex20. It
//! is built here in Bernstein form ([`super::bernstein`]) and its sign is settled by bounds and
@@ -22,7 +22,7 @@
//! - hex8/hex20: face 1-2-3-4, then 5-6-7-8 above it; mid-side nodes 9–12 on the edges of 1-2-3-4,
//! 13–16 on those of 5-6-7-8, 17–20 on edges 1-5, 2-6, 3-7, 4-8.
use modelcraft_model::ElementKind;
use fieldcraft_model::ElementKind;
use super::bernstein::{Bernstein, Factor};
use crate::{Error, Result};
+2 -2
View File
@@ -11,7 +11,7 @@
//! - Hexahedron, wedge and quadrilateral shape: Knupp, *Algebraic mesh quality metrics*, SIAM J.
//! Sci. Comput. 23(1):193–218, 2001.
//!
//! Inputs are hostile: coordinates must be finite and within [`modelcraft_model::MAX_COORD`],
//! Inputs are hostile: coordinates must be finite and within [`fieldcraft_model::MAX_COORD`],
//! and every metric has a defined value on degenerate and inverted elements.
//!
//! Linear tetrahedra take their validity from the exact `orient3d` ([`crate::predicates`]); the
@@ -23,7 +23,7 @@ pub mod jacobian;
mod report;
pub(crate) mod shape;
use modelcraft_model::{ElementKind, check_coordinates};
use fieldcraft_model::{ElementKind, check_coordinates};
pub use jacobian::{JacobianCheck, Validity};
pub use report::{
+3 -3
View File
@@ -2,7 +2,7 @@
use std::collections::{BTreeMap, BTreeSet};
use modelcraft_model::{Element, ElementKind, Model, check_coordinates};
use fieldcraft_model::{Element, ElementKind, Model, check_coordinates};
use super::{ElementQuality, JacobianCheck, Metric, Validity, element_quality, element_validity, is_measured};
use crate::{Error, Result};
@@ -49,7 +49,7 @@ fn coordinates(model: &Model, label: u32, element: &Element) -> Result<Vec<[f64;
.nodes
.iter()
.map(|n| {
model.node(*n).map(|node| node.xyz).ok_or_else(|| Error::Model(modelcraft_model::Error::NotFound(format!("element {label}: node {n}"))))
model.node(*n).map(|node| node.xyz).ok_or_else(|| Error::Model(fieldcraft_model::Error::NotFound(format!("element {label}: node {n}"))))
})
.collect()
}
@@ -62,7 +62,7 @@ fn selection<'a>(model: &'a Model, labels: Option<&[u32]>) -> Result<Vec<(u32, &
.iter()
.collect::<BTreeSet<_>>()
.into_iter()
.map(|l| model.element(*l).map(|e| (*l, e)).ok_or_else(|| Error::Model(modelcraft_model::Error::NotFound(format!("element {l}")))))
.map(|l| model.element(*l).map(|e| (*l, e)).ok_or_else(|| Error::Model(fieldcraft_model::Error::NotFound(format!("element {l}")))))
.collect(),
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
//! Analytic tests: every expected value is closed-form.
use modelcraft_model::{ElementKind, Model};
use fieldcraft_model::{ElementKind, Model};
use super::*;