Linear buckling analysis#
Note
Linear buckling is planned but not yet shipped in femorph-solver as of v0.18.x. This page documents the intended API + theory so users coming from MAPDL or NASTRAN can plan their migration; the actual solver path will land in a future release. Track progress on the roadmap.
When to use (when shipped)#
Linear buckling answers “at what load multiplier does the structure first lose stability?”. Use it when:
You’re sizing a slender column / shell against Euler-type bifurcation buckling.
You need a conservative collapse-load estimate before committing to non-linear post-buckling analysis.
Industry codes (Eurocode 3, AISC 360) ask for the classical-buckling check as an intermediate step.
For pre-stressed modal analysis (a different but related eigenproblem) use the future pre-stressed Modal analysis (free vibration) path. For non-linear post-buckling, you’ll need the geometric- non-linearity solver — also planned.
Boundary conditions and loads#
Reference static load — the load case that produces the pre-stress field. Run it through Linear static analysis first; the recovered displacements feed into the geometric-stiffness assembly.
Dirichlet constraints — same as Linear static analysis.
The math (one paragraph)#
Linear buckling solves the eigenvalue problem
where \(\mathbf{K}_g(\mathbf{u}_0)\) is the geometric stiffness assembled from the pre-stress field \(\mathbf{u}_0\) recovered by the reference static solve. The smallest positive eigenvalue \(\lambda_1\) is the load multiplier at the first bifurcation; the buckling load is \(\lambda_1 \times\) the reference load.
Roadmap status#
Geometric-stiffness kernel for HEX8: planned for the next major release.
Model.buckling_solve()API: planned alongside geometric-stiffness kernel.Pre-stressed modal (the related but different eigenproblem on \((\mathbf{K} + \mathbf{K}_g)\)): planned in the same release.
Cross-vendor naming#
femorph-solver |
ANSYS Mechanical APDL |
Cross-vendor equivalents |
|---|---|---|
linear buckling (planned) |
|
NASTRAN |
See Cross-vendor terminology Rosetta for the full Rosetta.
In the meantime#
If you have a buckling-sensitive design today and need a femorph-solver-based check before the linear-buckling solver ships, the workarounds are:
Run a linear static + slenderness check by hand: recover \(\sigma_\text{cr}^\text{Euler} = \pi^{2}\, E\, I / (K\, L)^{2}\) from the geometry and compare against the recovered \(\sigma\). Conservative but immediate.
Run a frequency-loaded transient : apply the load slowly and watch for runaway displacement as \(P \to P_\text{cr}\). Indirect but indicative.
Round-trip through MAPDL via the CDB / RST path: run the buckling solve in MAPDL, read the buckling-mode eigenvectors back in, post-process the mode shapes in femorph-solver. The MAPDL interop reader handles the CDB; the RST reader handles the result.