Steel fibres bridging a crack in a 3D periodic lattice
What does 1% of steel fibres actually buy you? Run the same concrete cube twice — same lattice, same random strength field, same crack — once plain and once with fibres. The plain matrix softens toward zero; the fibres crossing the crack hold a bridging plateau. A periodic cell keeps both the crack and the fibre placement free of boundary artefacts.
Moderatte amount of steel fibres do not stop concrete from cracking. They change what happens after it cracks. Once a crack opens, the fibres crossing it are pulled on, their bond to the surrounding matrix transfers load across the gap, and the specimen keeps carrying a residual stress instead of falling apart. That bridging stress is the quantity fibre-reinforced concrete is designed around.
This post isolates that effect on a 3D lattice. A small concrete cube is
pulled in uniaxial tension and solved twice on the identical matrix —
same lattice geometry, same random tensile-strength field, bit-for-bit
identical — with the only difference being whether Vf = 1% of straight
steel fibres is present. Same crack, with and without bridging.
Keeping the boundary out of it
A direct tensile test is one of the first things people try with a lattice model, and one of the easiest to get wrong, because boundaries attract cracks. In a standard mesh the crack locks onto the specimen boundary and the softening branch you measure is a discretisation artefact, not a material property. The 2D periodic tensile example shows the problem and the fix side by side: let elements cross the boundary and build the mesh so it is periodic, and the crack moves back into the bulk where it belongs, following the heterogeneity of the random node generation rather than the mesher.
This cube uses the same idea in 3D. The lattice is generated from a random point distribution without reference to the faces, elements that would terminate at a face cross it and connect to their counterparts on the opposite face, and the cube is driven through an average strain state imposed on a control point. The crack is free to find the weakest plane through the bulk.
The periodicity does a second job here that it does not have to do in the plain-matrix case: it keeps the fibre placement free of boundary effects too. The fibres are placed in a periodic box — a fibre running out through one face re-enters through the opposite one — so the fibre distribution near the faces is statistically the same as in the interior. Without that, fibres would thin out or pile up at the boundaries and bias exactly the crack-bridging behaviour we are trying to measure.
How the fibres are built into the lattice
The pipeline follows the lattice-with-fibres approach of the 2019 paper below, with every step run from the toolchain that ships with the example:
- Placement. The
aggregatepacker drops the fibres into the cube as a periodic, deterministic set of segments (here ~140 fibres, 15 mm long, 0.4 mm diameter, for 1% by volume). - Discretisation. The
converterlays each fibre onto the matrix Voronoi as a chain of axial lattice segments, and — this is the part that makes the bridging physical — connects every fibre node to the nearest matrix nodes through link elements. A link element is the fibre-to-matrix bond: it carries the slip and the transverse interaction between a fibre and the concrete it physically passes through, with a bond strength capping how much load a fibre can pick up over a given embedded length. This is what lets a crossing fibre pull out rather than yield, and it is why the residual stress is a bond property, not a fibre yield stress. Here, the fibres are modelled elastic. - Periodic link elements. A fibre that crosses a face has nodes whose bond partners sit on the opposite side of the cell. These bonds get a periodic extension of the link element, so a crossing fibre is bonded to the matrix the same way an interior fibre is, with the periodic shift applied to the matrix side. Getting this right matters: if the periodic bond is too stiff, a crossing fibre cannot pull out and reports a non-physical stress; with the bond scaled correctly, crossing and interior fibres bridge identically.
The result is a three-material lattice: a damaging concrete matrix, linear-elastic steel fibres, and a slip-based bond between them.
What the two runs show
The contours below put the two cracked cubes side by side — left with fibres, right plain. The matrix damages and localises into the same crack plane in both: the fibres have a very small effect before the crack happens. On the left you can see the fibre network threaded through the matrix, with the fibres that happen to cross the crack plane being the ones that do the work.
The load–displacement curves tell the quantitative story. Both rise to the same matrix cracking peak and soften. The plain matrix softens toward zero as the single crack opens — there is nothing left to carry load across it. The fibre case softens to a bridging plateau instead: the fibres crossing the crack hold a residual stress that the bond transfers back into the matrix.
A note on the absolute numbers: the peak reads higher than the matrix tensile strength. This is a coarse-lattice artefact — the mesh over-stiffens the response, and the periodic cell carries lattice cross-section on both sides of each boundary, so the effective load-bearing area exceeds the nominal face area. Both runs share the same factor, so the comparison — bridging versus plain — is unaffected. Refining the lattice reduces the offset.
Reproduce
git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/lattice-fibre-3d
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:lattice-fibre-3d bash run-all.sh
The image tag :lattice-fibre-3d is the exact one used to produce the
curves and contours above and is immutable. Use :latest instead if you
would rather run the current OOFEM build — results may drift slightly as
the code evolves.
This runs both subdirectories on the identical matrix, extracts the macroscopic strain–stress data for each, and writes the combined comparison. The only difference between the two inputs is one line — the fibre placement file — so the matrix, the random strength field and the crack are shared by construction.
The example folder is at github.com/githubgrasp/oofem-examples/lattice-fibre-3d; issues and questions go on the issue tracker.
Further reading
The periodic-cell fracture approach was first used for meso-scale tensile simulations in:
P. Grassl and M. Jirásek. Meso-scale approach to modelling the fracture process zone of concrete subjected to uniaxial tension. International Journal of Solids and Structures, vol. 47, issues 7–8, pp. 957–968, 2010. DOI
and then later extended to 3D in:
I. Athanasiadis, S. Wheeler and P. Grassl. Hydro-mechanical network modelling of particulate composites. International Journal of Solids and Structures, vol. 130-131, pp. 49-60, 2018. DOI
The lattice-with-fibres model — fibre segments bonded to the matrix through link elements — is developed in:
P. Grassl, A. Antonelli. 3D network modelling of fracture processes in fibre-reinforced geomaterials. International Journal of Solids and Structures, vol. 156–157, pp. 234–242, 2019. DOI
Built with OOFEM.