Packing aggregates into a periodic concrete RVE

Ellipsoidal aggregates are placed in a periodic concrete RVE using a trial and error approach.

This post is about our packing tool for generating meso-structures of concrete. It is implemented in the oofem module aggregate available in our githubgrasp fork. We used it already in the post lattice-fibre-3d where we looked at fracture simulations of a periodic RVE with fibres. Here we will have a closer look at the meso-structure generation using ellipsoids to represent aggregates.

Stiff aggregate in a mortar matrix

Many meso-scale simulations of concrete idealise the material structure as stiff aggregates in a mortar matrix with interfacial transition zones between aggregates and matrix. For resolving individual aggregates a packing tool is required to generate size and shape of aggregates and their positions in the domain to be analysed without any overlap. Here we demonstrate how this non-overlap condition is satisfied in the module aggregate.

What the tool does

Aggregate places non-overlapping ellipsoidal aggregates in a periodic box. The size and shape are chosen so that the aggregates follow a Fuller grading curve. The positions of the aggregates are chosen by trial and error. Once all the aggregates are placed the output is used for meshing and simulating the meso-structure with oofem.

The example

We look here at a very small 50 mm cubic RVE, periodic on all three axes. Grading is chosen to be coarse, with dmin = 5 mm, dmax = 20 mm and a target volume fraction of 0.30. With these settings, the aggregates are placed very quickly which is convenient for an illustrative example. With these settings only 29 aggregates are produced. The placing is random based on a deterministic seed, which is chosen here as 8 so that an easy to look at arrangement is generated. With this seed the results are deterministic.

How sizes are chosen

The sieve sizes for the aggregates are fixed up front. The Fuller curve with an exponent 1/2 is used and the cumulative passing fraction is P(d) = sqrt(d/dmax). The aggregate volume is split into octave sieve bands [n, 2n] from coarse to fine. For each band there is a certain volume from which aggregates are sampled which fit between the two sieve sizes. Once there is not enough volume left to create another aggregate, the leftover is carried over to the next band. The volume fraction of 0.3 used here corresponds to the full sieve curve. However, since only a part of the sieve curve is used the modelled volume fraction is only 0.15. The order of placement is with descending volume. However, because of the ellipsoidal shape monotonically descending volume does not agree with monotonically descendent sieve size.

How placement works

For the placement, first an aggregate size and shape is randomly generated that fits the sieve range. Then a trial position and orientation for this aggregate is chosen. If the aggregate overlaps with existing aggregates (red), a new position and orientation is chosen but the size and shape of the aggregate is kept. If no overlap is detected, the position is accepted (green) and the aggregate is placed (grey). If an aggregate crosses a face of the box it reappears on the opposite face (periodic placement).

Reproduce it

The example can be reproduced with a public Docker image without the need to compile the code. The command is docker run --rm -v "$PWD":/work ghcr.io/githubgrasp/oofem-public:latest bash run.sh The output is packing.dat (data) and packing.vtu (ParaView). The file packing.vtu shows the periodic placement.

Where does this method come from?

The module aggregate implements the meso-structure generation of Grassl & Antonelli (2019), in C++. In the paper, the Wang et al. (2001) ellipsoid separation test was used. This test is equivalent to the Alfano-Greer eigenvalue form which is used in the implementation. For the orientation of the aggregates the Shoemake uniform-on-SO(3) is used.

Example folder: https://github.com/githubgrasp/oofem-examples/tree/main/aggregate-packing

Engine: https://github.com/githubgrasp/oofem

Method reference: P. Grassl and A. Antonelli, 3D network modelling of fracture processes in fibre-reinforced geomaterials, Int. J. Solids Struct. 156–157, 234–242, 2019. https://petergrassl.com/publications/graant19

Built with OOFEM.

← All posts