solver, model: imperfections from buckling modes in nonlinear steps

NonlinearStatic.imperfection {step, mode, scale}: the buckling step's mode, scaled to a largest
component of `scale`, is added to the node coordinates before the step is solved, with a warning
naming it; Abaqus and LS-DYNA decks refuse it by name. A clamped–free column with its first mode
as imperfection under half its buckling load amplifies it by 1/(1 − α) within 2.8 %.

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:30:59 -04:00
1 parent 788edbbddd
commit 0bb1c2462f
7 files changed
+119 -6

No files matched your search

+7
View File
@@ -193,6 +193,13 @@ buckle from, and with a shift); Nastran SOL 105 and LS-DYNA refuse it by name. V
columns of hex20 (pinned and clamped–free, 0.18 % from Engesser's shear-corrected load) and the
shifted form against the plain one.
**Imperfections.** A nonlinear static step's `"imperfection": {"step": "Buckle", "mode": 1,
"scale": 0.01}` solves that buckling step first and adds its mode, scaled to a largest component
of `scale`, to the node coordinates; the step is solved and reported on that geometry, with a
warning naming the mode. Abaqus and LS-DYNA decks refuse it by name (their imperfection reads a
results file). Verified: a clamped–free column with its first mode as imperfection under half its
buckling load deflects by δ₀ α/(1 − α) (2.8 %).
## Nonlinear static analysis (finite strain)
A step `{"type": "nonlinear_static", …}` (`Procedure::NonlinearStatic`, solved by