Boundary-independent fracture in 2D direct tensile lattice models

Cracks lock onto the mesh boundary in standard direct-tensile lattice runs. Letting elements cross the boundary — a periodic mesh — removes the artefact.

Lattice models are popular for modelling fracture. Direct uniaxial tension is one of the simplest test most people start. But it is also a difficult one to get right, because boundaries attract cracks. This post shows what the problem is with a standard lattice, and how the issue can be removed.

The artefact

A 100×100 mm specimen, lattice of Voronoi cells generated from a random point distribution, pulled in tension between two rigid platens (idealised by linking DOFs at the end to a control point). The load–displacement response and the lattice-strain magnitude are shown side by side, frame-by-frame.

The crack does not run through the bulk of the specimen — it locks onto the boundary. The result is not a property of the material, but a discretisation artefact.

The reason is geometric, because of how the lattice is built close to the boundary.

The fix

Let elements cross boundaries and build the mesh so that it is periodic. It starts from a random point distribution generated without reference to the boundaries.

Elements that would otherwise terminate at a face now cross it and connect to their counterparts on the opposite face through an average strain state that is used to control the periodic specimen.

The crack now forms inside the specimen, picking up the heterogeneity of the random node generation rather than the mesh boundary. The peak load is in the same range, but the post-peak softening branch is qualitatively different — it now reflects tortuous bulk fracture, not a crack running along the boundary.

Our periodic mesh approach is not new. We first used it for meso-scale tensile fracture-process-zone 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

What to look at

A few things worth comparing if you re-run this:

The colour in the contour is the magnitude of the lattice strain, √(εₙ² + εₛ² + εₜ²). It is constant within each element but is mapped to nodes for rendering in ParaView. Blue is low, red is high.

Reproduce

git clone https://github.com/githubgrasp/oofem-examples.git
cd oofem-examples/lattice-tensile-periodic-2d
docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:lattice-tensile-periodic-2d bash run-all.sh

The image tag :lattice-tensile-periodic-2d 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.

The example folder is at github.com/githubgrasp/oofem-examples/lattice-tensile-periodic-2d; issues and questions go on the issue tracker. More verification sets to follow.

← All posts