Buckling of a strut, elastic and elasto-plastic, with a rigid-body lattice
A slender strut is compressed until it buckles. Elastic, the load rises above the critical load as the strut deflects. Elasto-plastic, a plastic hinge forms and the load drops. Both come from the same large-rotation lattice element, checked against the exact solution of a perfect strut.
Last post large-rotation cantilever was about elastic bending with large rotations only. This one adds two things on top of the same large-rotation kinematics: the coupling of axial force and bending, and the formation of plastic hinges. The test problem is the classic one, a slender pinned imperfect strut compressed. The result is compared to the exact solution of the perfect strut.
A perfect strut stays straight until the axial load reaches the Euler critical
load Pcr = pi^2 EI / L^2, then buckles. In the post-buckling branch the load keeps rising slowly above Pcr as the lateral deflection
grows. That branch is computed independently in MATLAB and used here as the
reference (the continuous line in the load-rotation plot). The lattice model of the imperfect strut carries a small half-sine imperfection
of amplitude about L/100.
Elastic buckling
At the critical load the strut deflects sideways by a large amount, and the load keeps increasing beyond the critical load as it does. The imperfection means the critical load is reached later, at a larger lateral deflection, but the response then converges onto the perfect solution.
Elasto-plastic buckling
Now every element is given the same elasto-plastic frame material. The large lateral deflection reached before the critical load drives the bending moment up to the yield surface, a plastic hinge forms, and the load drops. Even though every element is free to yield, the plastic rotation localises into a single element: the midspan element yields first, the structure softens, and the load drop unloads all the others elastically.
Load against rotation
The continuous line is the theoretical solution of the perfect strut; the markers are the discrete lattice results. The elastic strut (blue) climbs past the critical load and lands on the elastica; the elasto-plastic strut (red) peaks well below it and then softens as the hinge sheds load.
Reproduce
git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/lattice-buckling/elastic
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:lattice-buckling bash run.sh
cd ../plastic
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:lattice-buckling bash run.sh
Each case is a 12-node strut written out in full, so there is no mesh to
generate. run.sh runs the analysis and post-processes it into the
load-rotation history (ld.dat), which is what the plot above is built from.
The example folder is at github.com/githubgrasp/oofem-examples/lattice-buckling.
Further reading
The large-rotation lattice element used here, a rigid-body–spring frame element extended to arbitrarily large rotations with coupled axial–bending plasticity, with this buckling strut among the benchmarks it is verified against, is developed in:
G. Abdelrhim and P. Grassl. A 3D frame element for large rotations based on the rigid-body–spring concept for analysing the failure of structures. International Journal of Solids and Structures, vol. 327, 113812, 2026. Abdelrhim and Grassl (2026)
Built with OOFEM.