Preserve empty MITC4 hidden-constraint boundary
This commit is contained in:
@@ -64,16 +64,6 @@ bool Within(const double value, const double scale, const double tolerance) {
|
||||
Status Validate(const Domain& domain, const DofManager& dofs,
|
||||
const DynamicAssembly& assembly, const double length) {
|
||||
const std::size_t count = dofs.FullDofCount();
|
||||
if (assembly.frame.mitc4_drilling &&
|
||||
assembly.frame.mitc4_drilling->mode == Mitc4DrillingMode::kDirectSpring) {
|
||||
if (assembly.hidden_constraint.Size() != assembly.rotations.size())
|
||||
return Failure(domain, "dynamic-invalid-algebra-state",
|
||||
"Canonical hidden values must cover every node.");
|
||||
for (std::size_t i = 0U; i < assembly.hidden_constraint.Size(); ++i)
|
||||
if (!std::isfinite(assembly.hidden_constraint[i]))
|
||||
return Failure(domain, "dynamic-invalid-algebra-state",
|
||||
"Canonical hidden values must remain finite.");
|
||||
}
|
||||
if (!std::isfinite(length) || !(length > 0.0) || count % 6U != 0U ||
|
||||
assembly.rotations.size() != count / 6U) {
|
||||
return Failure(domain, "dynamic-invalid-algebra-state",
|
||||
@@ -559,6 +549,16 @@ Status HiddenEvidence(const Domain& domain, const DynamicAssembly& assembly,
|
||||
const bool require_acceleration) {
|
||||
const bool direct = frame->mitc4_drilling &&
|
||||
frame->mitc4_drilling->mode == Mitc4DrillingMode::kDirectSpring;
|
||||
if (direct) {
|
||||
for (const std::size_t node : nodes) {
|
||||
if (node >= assembly.hidden_constraint.Size())
|
||||
return Failure(domain, "dynamic-invalid-algebra-state",
|
||||
"Canonical hidden values must cover every admissible null node.");
|
||||
if (!std::isfinite(assembly.hidden_constraint[node]))
|
||||
return Failure(domain, "dynamic-invalid-algebra-state",
|
||||
"Canonical hidden values must remain finite.");
|
||||
}
|
||||
}
|
||||
Vector psi{nodes.size()};
|
||||
Vector psi_scale{nodes.size()};
|
||||
Vector velocity_defect{nodes.size()};
|
||||
|
||||
Reference in New Issue
Block a user