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

\[\bigl(\mathbf{K} + \lambda\, \mathbf{K}_g(\mathbf{u}_0)\bigr)\, \boldsymbol{\phi} = \mathbf{0},\]

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)

ANTYPE, BUCKLE

NASTRAN SOL 105; Abaqus *BUCKLE; LS-DYNA *CONTROL_IMPLICIT_BUCKLE

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:

  1. 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.

  2. Run a frequency-loaded transient : apply the load slowly and watch for runaway displacement as \(P \to P_\text{cr}\). Indirect but indicative.

  3. 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.