Nonlinear Buckling Topology Optimization
Overview
Buckling is a geometric instability: a structure collapses well below its yield stress. Linear buckling gives the load factor λ from the eigenproblem (K + λ K_σ) φ = 0, where K_σ is the geometric stiffness built from the pre-buckling stress. Nonlinear buckling topology optimization maximizes the load factor of the geometrically nonlinear equilibrium path, so the optimized design resists this instability rather than just stiffening against it.
using RasmahA compressed column
Clamp the base of a column and apply a compressive end load; the optimizer redistributes material to raise the buckling load.
m = tetrahedralize_box(0.5, 0.5, 1.0, 2, 2, 4)
n = size(m.nodes, 2)
fixed = Int[]
for i in 1:n
m.nodes[3, i] < 1e-6 && append!(fixed, 3i - 2, 3i - 1, 3i)
end
loads = zeros(3n)
for i in 1:n
m.nodes[3, i] > 0.999 && (loads[3i] = -1e6) # compress along z (the column axis)
end
x, hist = solve(NonlinearBucklingTopOpt(), m, Material(youngs_modulus = 1e9, poisson_ratio = 0.3);
fixed = fixed, loads = loads, volfrac = 0.5, max_iter = 10)([0.001, 0.001, 0.754182769867007, 0.4655324439417172, 0.4655324439582308, 0.7541827671484124, 0.8186399341582247, 0.8186399341582247, 0.001, 0.7450845221860423 … 0.8035903363697426, 0.5224719600736633, 0.5109396064690507, 0.44410288434990947, 0.6218046912065893, 0.6218046912453962, 0.5092731677086763, 0.001, 0.001, 0.509273167814104], [-0.1836699771012592, -0.20238099168153473, -0.22962084158871013, -0.23534730229885376, -0.26943384625822087, -0.2533921771797731, -0.2672575423415513, -0.2896181660059673, -0.2784678822544253, -0.3240134708942811])
Verification — the design stays feasible
The density field is finite and bounded, and the objective (buckling resistance) improves:
println("all densities in [0,1]: ", all(0 .<= x .<= 1))
println("volume fraction ≈ 0.5: ", round(sum(x) / length(x); digits = 3))all densities in [0,1]: true
volume fraction ≈ 0.5: 0.507
vtk(m; field = x, fieldname = "density (buckling)", edges = true)Next steps
- Buckling — the linear bifurcation forward problem.
- Eigenfrequency & buckling topology optimization — the modal counterpart.
