engine: parameter schemas for solve.buckle, buckling steps and imperfections

Fixes the build of develop: #171 crossed with the typed command forms, so BUCKLE lacked its
form. SOLVE_BUCKLE follows SOLVE_FREQUENCY; the step form gains the buckle variant and the
nonlinear step's imperfection group.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-14 13:41:29 -04:00
1 parent 0bb1c2462f
commit 72696614c2
2 files changed
+12

No files matched your search

+11
View File
@@ -439,8 +439,18 @@ const PROCEDURE: Field = variants(
),
flag("line_search", "Line search").def("false"),
json("load_path", "Load path").hint("[[fraction, factor], …]; a ramp when empty"),
group(
"imperfection",
"Imperfection",
&[
reference("step", "Buckling step", C::Step).req(),
int("mode", "Mode", 1, 100_000).req().def("1"),
num("scale", "Largest component", D::Length).req(),
],
),
],
),
variant("buckle", "Buckling", &[int("modes", "Modes", 1, 100_000).req().def("4"), num("shift", "Shift", D::None)]),
variant(
"frequency",
"Frequency",
@@ -803,6 +813,7 @@ pub const SOLVE_FREQUENCY: &[Field] = &[
int("max_iterations", "Max Lanczos vectors", 1, 3000).hint("3000"),
THREADS,
];
pub const SOLVE_BUCKLE: &[Field] = &[STEP, MAX_DOFS, MAX_FACTOR, int("max_iterations", "Max Lanczos vectors", 1, 3000).hint("3000"), THREADS];
pub const SOLVE_EXPLICIT: &[Field] = &[
STEP,
MAX_DOFS,
+1
View File
@@ -64,6 +64,7 @@ pub const BUCKLE: CommandSpec = CommandSpec {
id: "solve.buckle",
label: "Solve Buckling Step",
params: r#"{"step": "Buckle", "max_dofs": 6000000, "max_factor_entries": 400000000, "max_iterations": 3000, "threads": 8} — linear buckling of a buckling step (the only one when `step` is left out): the step's loads as a linear preload, then the lowest load factors λ with (K + λ K_σ) φ = 0 and their mode shapes (largest component 1), or those above the step's shift (whose LDLᵀ factor counts the load factors below it); negative load factors found are reported; the result stays in the session and its modes display like frequency modes; `threads` as for solve.static"#,
form: Some(super::forms::SOLVE_BUCKLE),
kind: CommandKind::Model,
run: run_buckle,
};