FEM linear buckling is a common way to estimate how much load a column can take. The number it returns agrees very well with Euler's formula. On a short column, though, that number can be far above the load at which the material yields.
I ran a 10 mm square steel bar through linear buckling in NovaSolver Studio at lengths from 50 to 400 mm, and lined the results up with Euler's formula, a shear-corrected formula, and the Johnson parabola, which accounts for yield.
The problem
- Steel (E = 205 GPa, yield stress 235 MPa), 10 × 10 mm cross-section
- One end fixed, the other free, with 1 kN pushing on the free end
- Lengths L = 50 / 100 / 200 / 400 mm
A fixed-free column has an effective length of 2L.
Hand calculation
import math
E, sy, a = 205e9, 235e6, 0.010 # Pa, Pa, m
A, I = a * a, a**4 / 12
r = math.sqrt(I / A) # radius of gyration, 2.89 mm
Cc = math.sqrt(2 * math.pi**2 * E / sy) # upper slenderness limit for Johnson, 131
kGA = 5 / 6 * E / (2 * 1.3) * A # shear stiffness
for L in (0.05, 0.10, 0.20, 0.40):
lam = 2 * L / r # slenderness ratio
pe = math.pi**2 * E * I / (4 * L**2) # Euler
ps = pe / (1 + pe / kGA) # with shear deformation
pj = A * sy * (1 - sy * lam**2 / (4 * math.pi**2 * E)) if lam < Cc else pe # Johnson
print(f"{L*1000:4.0f} mm λ={lam:5.1f} Euler {pe/1e3:6.1f} shear {ps/1e3:6.1f} Johnson {pj/1e3:5.1f} kN")
# 50 mm λ= 34.6 Euler 168.6 shear 164.4 Johnson 22.7 kN
# 100 mm λ= 69.3 Euler 42.2 shear 41.9 Johnson 20.2 kN
# 200 mm λ=138.6 Euler 10.5 shear 10.5 Johnson 10.5 kN
# 400 mm λ=277.1 Euler 2.6 shear 2.6 Johnson 2.6 kN
The load that yields the whole section is 235 MPa × 100 mm² = 23.5 kN. Euler's load exceeds it when the slenderness ratio is below π√(E/σy) ≈ 93, which for this column means L shorter than about 134 mm. The Johnson parabola replaces Euler below a slenderness of 131, or L shorter than about 189 mm.
Solving it in Studio
Studio speaks MCP, so an AI client can set up the case and run the solve. I used the column buckling template and changed only the length. Here is an excerpt from the 50 mm run, with Studio's replies after each arrow. These runs used a local development build after v0.7.6 (2026-11-08).
create_case column-buckling
update_case geometry.params.length = 50 mm
validate_case
→ GREEN
x1 (Right end (x = L)): 1,000 N toward -x. The face points +X, so the load pushes on it. Mean 10 MPa over 100 mm².
Held: x0 (Left end (x = 0)) = Fixed.
Material: Steel, E 205 GPa, yield 235 MPa.
check_convergence (re-solves on coarse, normal and fine meshes)
get_results
→ ran=yes / converged=yes / does not match reference
Critical buckling load: 164800.0 N
Buckling mode 1: load factor 164.796, critical load 164796 N
Buckling mode 2: load factor 164.813, critical load 164813 N
WARNING: Linear buckling ignores initial imperfections, so for thin shells it overestimates the load the part can really carry.
verify_case
→ Euler critical load, fixed-free column.: computed 1.648e+05 N, reference 1.6861e+05 N, error -2.26% (tolerance 2.0%) -> FAIL
Apply 1 kN and the solver returns the multiple of that load at which the column buckles. A square section bends equally easily in both directions, so modes 1 and 2 form a pair with nearly the same value.
On the three meshes the critical load was 165.05, 164.87 and 164.80 kN, and the estimated discretization error of the fine mesh (GCI) was about 0.04%. The last line of the excerpt is a check against the Euler formula built into the template. At −2.26% against a 2% tolerance it fails, and the reason is explained below.
Comparison
| Length | Studio | Euler | Diff. | With shear | Diff. | Multiple of yield load |
|---|---|---|---|---|---|---|
| 50 mm | 164.8 kN | 168.6 kN | −2.3% | 164.4 kN | +0.2% | 7.0× |
| 100 mm | 42.02 kN | 42.15 kN | −0.3% | 41.88 kN | +0.3% | 1.8× |
| 200 mm | 10.55 kN | 10.54 kN | +0.1% | 10.52 kN | +0.2% | 0.45× |
| 400 mm | 2.638 kN | 2.634 kN | +0.1% | 2.633 kN | +0.2% | 0.11× |
From 100 mm up, Studio and Euler differ by at most about 0.32%. The mesh convergence check passed on all four lengths.
Only the 50 mm column is off by −2.3%, most likely because of shear deformation. Euler's formula counts bending only, but on a column just five times as long as it is wide, shear also contributes and lowers the buckling load. FEM solid elements include that deformation, and the gap to the shear-corrected formula shrinks to about +0.25%.
Yield comes first
Look at the right-hand column of the table. The 50 mm column's buckling load of 164.8 kN corresponds to 1,648 MPa on the section. Steel with a 235 MPa yield stress gives way long before that. Even at 100 mm, the buckling load is 1.8 times the yield load.
Linear buckling assumes the material stays elastic indefinitely and finds the load at which equilibrium becomes unstable. Yield is not part of the calculation, so checking the result against yield is up to you.
For this column, when L is shorter than about 134 mm, the Euler load is above the nominal full-section yield load and the elastic assumption does not hold. Where yield and buckling interact, use the Johnson parabola for a load estimate (22.7 kN at 50 mm, 20.2 kN at 100 mm).
Takeaways
- For a 10 mm square steel column, the linear buckling load and Euler's formula differed by at most about 0.32% from 100 to 400 mm
- At 50 mm the FEM result was 2.3% lower, most likely from shear deformation, and within about 0.25% of the shear-corrected formula
- At 50 mm and 100 mm the buckling load was 7.0 and 1.8 times the yield load, so compare P/A with the yield stress before using a linear buckling number
NovaSolver Studio is free and open source (GPL-3.0). It can be driven from MCP-capable AI apps such as Claude Desktop.
- Overview and download: https://novasolver.jp/studio/
- Source code: https://github.com/novasolver/novasolver-studio


Top comments (0)