forked from 1b-agent/fieldcraft-upstream
model: ties between surfaces
A tie names a main and a secondary face set and an optional position tolerance; it refers to its sets, round-trips, is bounded in number and checked for solid faces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
a91ac5baf9
commit
8d2fa980a5
4 files changed
+139
-1
No files matched your search
@@ -404,6 +404,22 @@ impl Model {
|
||||
}
|
||||
}
|
||||
|
||||
// Ties: their surfaces are element faces of solids too.
|
||||
for (name, t) in &self.ties {
|
||||
for set in [&t.main, &t.secondary] {
|
||||
let faces = &set_of(set).faces;
|
||||
let solid = |f: &crate::ElementFace| self.elements.get(&f.element).is_some_and(|e| e.kind.dimension() == 3);
|
||||
if faces.is_empty() {
|
||||
d.error(format!("tie `{name}`"), format!("set `{set}` has no element faces (a tie surface is a set of faces)"));
|
||||
} else if !faces.iter().all(solid) {
|
||||
d.error(
|
||||
format!("tie `{name}`"),
|
||||
format!("set `{set}` has faces of elements that are not solids (ties bond the faces of solid elements so far)"),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Nodes with rotational degrees of freedom: those of shells and beams, and reference points
|
||||
// (worked out only when a boundary condition or load needs it).
|
||||
let rotational = std::cell::OnceCell::new();
|
||||
|
||||
Reference in new issue
Block a user