Corrosion-induced cracking — a constrained-expansion problem on a 3D lattice

Most durability problems are a constrained-expansion story: something inside wants to grow, the surrounding material resists, and cracks form. Corrosion of a steel bar inside concrete is one of the most studied cases. A 3D lattice slice reproduces the textbook two-phase failure — axisymmetric multi-crack expansion, then a single crack reaching the surface — and the pressure jump that goes with it.

A lot of concrete durability problems boil down to the same picture: something inside the material wants to expand, the surroundings resist the expansion, and once the tensile stresses they generate exceed the strength of the material, cracks form. Corrosion of embedded steel is one well-known case — rust occupies about twice the volume of the steel it replaces, so a thin layer of rust at the bar surface pushes outwards on the cover concrete until it splits. Alkali–silica reaction, freeze–thaw, sulphate attack, even shrinkage of restrained concrete or moisture-driven swelling of timber follow a similar recipe.

The axissymmetric thick-wall cylinder is the textbook solution for a corroding rebar close to the surface of a concrete specimen: an internal pressure on a hollow concrete cylinder, with the cover thickness, the bar radius and the tensile strength setting the capacity. It does a reasonable job of predicting peak pressure but cannot represent the failure once the crack reaches the surface. A lattice model can.

The set-up

A 10 mm-thick slice of a 150 mm diameter concrete cylinder with a single 8 mm steel bar along its axis. A 0.1 mm thick layer at the bar/concrete interface is given a radial eigendisplacement that ramps linearly over the analysis, simulating the slow, steady growth of corrosion products. Concrete is modelled with latticeplastdam (plasticity + damage — plasticity bounds the radial compression around the bar, damage captures tensile cracking) on a random Voronoi lattice with spatially-correlated tensile strength.

The relevant scales:

Two regimes, one pressure jump

The pressure-vs-penetration curve above, the deformed-mesh contour with displacements magnified below.

Early on, several discrete radial cracks initiate around the bar, roughly evenly spaced in the circumferential direction. The inner part of the cylinder expands almost axisymmetrically, the cracks grow together, and the curve rises monotonically as the cracks propagate outward through the cover. Up to this point the response is close to what the thick-wall cylinder model predicts qualitatively, with the peak in the same range as p_ref.

Then one crack reaches the outer surface first. The axisymmetric mode breaks: the outer crack opens preferentially at its mouth, the cylinder deforms asymmetrically, and the internal pressure that the cover can still mobilise drops sharply. This is the jump in the pressure curve — and the moment in the contour when the radial fan of cracks becomes a single wedge opening to the surface.

The axissymmetric thick-wall cylinder model cannot represent this transition. The lattice does it naturally, because each lattice element is either intact, damaging or fully cracked, and breakthrough is just one element-chain reaching the boundary.

Why a lattice for this problem

Three things motivated the lattice choice:

The pressure peak in the animation slightly exceeds p_ref. The example uses a coarse 5 mm lattice spacing — only about 13 elements through the 67 mm wall. Refining the lattice brings the peak closer to p_ref, but at the cost of run time, and the qualitative two-regime behaviour is unchanged.

Further reading

The lattice approach to corrosion-induced cracking is used to study corrosion rate dependence and concrete creep in:

I. Aldellaa, P. Grassl. Rate dependence of corrosion-induced surface cracking in concrete: Lattice modelling and experiments. Frontiers in Materials, vol. 327, 2026. DOI

I. Aldellaa, P. Havlásek, M. Jirásek, P. Grassl. Effect of Creep on Corrosion-Induced Cracking. Engineering Fracture Mechanics, vol. 264, 2022. DOI

Reproduce

git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/lattice-corrosion-3d
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:lattice-corrosion-3d bash -c "bash run.sh && oofem -f oofem.in > std.out && perl pressureExtractor.pl && gnuplot pressure-plot.gp"

The image tag :lattice-corrosion-3d is the exact build used to produce the curve and contour above and is immutable. Use :latest instead to track the current OOFEM build (results may drift slightly as the code evolves).

The example folder is at github.com/githubgrasp/oofem-examples/tree/main/lattice-corrosion-3d; issues and questions go on the issue tracker.

Built with OOFEM.

← All posts