1 Introduction

The Discrete Element Method (DEM) has proven to be a very useful tool for the numerical computation of granular flows [1,2,3] (the hereafter termed non-cohesive DEM) with or without coupling with fluids [4, 5] or structures [6]. These computations can include cohesive forces between particles [7] to model moisture, glue or other added features to the standard non-cohesive DEM. Other research lines have focused on the DEM as a method to compute the mechanics of strongly cohesive materials, like rocks, concrete or cement [8,9,10,11,12], and it has been combined with the Finite Element Method (FEM) in order to save computation time [13]. The approach in these cases is usually termed under the name of ‘bonded’ or cohesive DEM. Here the DEM can be understood as a discretization method for the continuum. The main difference between the standard DEM and the ‘bonded’ DEM is the tensile strength of the bonds, which prevents the separation of the particles. Usually, the standard DEM contact laws are recovered when a bond is broken due to excessive separation or force between the particles and then the particles can separate freely or experiment friction. However, while the bond is intact (not broken) the contact is purely elastic in both normal and tangential directions. The developments presented in this work are bounded to situations where all bonds are intact, so the interaction between particles is elastic and the particles can not separate freely or experiment friction with each other.

Fig. 1
figure 1

Schematic definition of local axes at a contact point i between two spheres. a Stress-free position. b Deformed position

The ability of the ‘bonded’ DEM with some breakage criteria to reproduce multi-cracking phenomena in strongly cohesive materials is probably one of the main reasons why the DEM is chosen. However, a moderately deep analysis of the works published usually reveals a lack of accuracy of the DEM results in the elastic regime, together with a strong need for calibrating the DEM parameters. In particular, the Poisson’s ratio and the shear modulus are seldom validated and it is commonly accepted [14] that the Poisson’s ratio has a strong dependency on the packing arrangement and on the ratio \(k_{t}/k_{n}\) [15], where \(k_{n}\) and \(k_{t}\) are the normal and tangential spring stiffness, respectively, in the spring dash-pot model that yields the forces at the contact interface between two spheres. The difficulty of the ‘bonded’ DEM to get accurate results when trying to capture simultaneously the Young’s modulus (E), the Poisson’s ratio (\(\nu \)) and the shear modulus (G) derives from the fact that the bonded DEM works as a system of trusses instead of a massive continuum. Usually, a good calibration of the micro parameters (\(k_{n}\) and \(k_{t}\)) leads to a decent capture of one or two of the elastic macro parameters (E, G and \(\nu \)) for a given packing and usually for a certain, limited, range of values [15]. Due to these limitations, the spring dash-pot model has proven not to be good enough to capture the elastic behavior of a continuum. In this work we propose a way to enrich the spring dash-pot model in such a way that the elastic properties of a continuum can be accurately captured with the DEM. Capturing an accurate elastic response of the continuum is a pre-requisite to capturing the formation of cracks. Note that the approach proposed does not intend to solve granular compacts which might present inner stick-slip phenomena, but is restricted to those continua which can be represented by the theory of linear elasticity.

2 Objectives

The objectives of this work are:

  1. 1.

    Modify the way the forces between pairs of spheres are computed in the DEM so an elastic continuum can be modelled accurately.

  2. 2.

    Provide the necessary equations so that the calibration of the micro parameters for the DEM is not needed for accurately reproducing the elastic behavior of a continuum.

  3. 3.

    Ensure that the DEM solution is independent from the size of the spheres, the granulometry of the material, the coordination number (the average number of particle neighbours) or the type of particle arrangement (cartesian, dense packing, random, etc.).

3 Computation of the elastic forces between particles

3.1 Normal forces

Since the main goal is to reproduce the elasticity of a continuum, the initial step to deduce the inter-particle forces is to analyze in detail the strain-stress constitutive equations:

$$\begin{aligned} \varepsilon _{k}= & {} \frac{\sigma _{k}}{E}-\frac{\nu }{E}(\sigma _{l}+\sigma _{m}) \end{aligned}$$
(1)
$$\begin{aligned} \gamma _{kl}= & {} \frac{\tau _{kl}}{G} \end{aligned}$$
(2)

where EG and \(\nu \) are the Young’s modulus, the shear modulus and the Poisson’s ratio, respectively, and klm are the cyclic permutation of the Cartesian coordinates x, y, z.

Sub-indices klm denote generally the Cartesian axes. Without lack of generality it can be assumed that Eqs. (1) and (2) also hold if we choose \(k=z'\), \(l=x'\) and \(m=y'\), where the primes denote the local axes at a contact point between two particles (Fig. 1a). \(z'\) is the direction that joins the centers of both spheres, defining the direction of the normal contact. \(x'\) and \(y'\) are two any directions orthogonal to each other and to \(z'\), defining a plane that contains the tangent forces. For simplicity we will assume in this work that the DEM particles are spherical. However, the method can be easily generalized to any particle shape.

In order to get the normal force between two spheres contacting at a point i, we can isolate \(\sigma _{z'}\) from Eq. (1) to get:

$$\begin{aligned} \sigma _{z'i}=E\varepsilon _{z'i}+\nu (\sigma _{x'i}+ \sigma _{y'i}) \end{aligned}$$
(3)

where subindex i refers to the ith contact point.

The next step is to substitute \(\sigma _{z'i}\) and \(\varepsilon _{z'i}\) in Eq. (3) in terms of the interface forces and elongations. Namely,

$$\begin{aligned} \frac{F_{z'_{i}}}{A_{i}}=E\frac{\delta _{z'i}}{L_{0i}}+ \nu (\sigma _{x'i}+\sigma _{y'i}) \end{aligned}$$
(4)

where \(F_{z'_{i}}\) is the force between the two particles in the normal direction \(z'\) (defined by the vector that joins the particle centers), \(A_{i}\) is the contact area at the ith contact interface between the two particles (see Sect. 3.3 for details on the value of \(A_{i}\), which is not based in the Hertzian Contact Theory), \(L_{0i}\) is the distance between the centers of the particles at the stress-free position and \(\delta _{z'i}\) is the overlap between the particles, which can be computed as (Eq. 5):

$$\begin{aligned} \delta _{z'i}=R_{1}+R_{2}-L_{i} \end{aligned}$$
(5)

where \(R_{1}\) and \(R_{2}\) are the radii of both particles and \(L_{i}\) is the distance between their centers (Fig. 1b). The overlap in Eq. (4) can also be referred to a stress-free relative position with an initial overlap between spheres, or with an initial gap (negative overlap), but this is a subject out of the scope of the present paper. A brief description of these initial overlaps between particles can be found in Sect. 3.3.

From Eq. (4) we can deduce

$$\begin{aligned} F_{z'_{i}}=A_{i}E\frac{\delta _{z'i}}{L_{0i}}+A_{i} \nu (\sigma _{x'i}+\sigma _{y'i}) \end{aligned}$$
(6)

Equation (6) yields a new expression for the normal contact force which includes an extra second term that brings in the usually missing, but necessary, effect of the particle confinement. Eq. (6) can be rewritten as

$$\begin{aligned} F_{z'_{i}}=k_{ni}\delta _{z'i}+A_{i}\nu (\sigma _{x'i}+\sigma _{y'i}) \end{aligned}$$
(7)

where \(k_{ni}\) is a normal stiffness parameter associated to each pair of particles given by

$$\begin{aligned} k_{ni}=\frac{A_{i}E}{L_{0i}} \end{aligned}$$
(8)

In Eq. (6) \(\sigma _{x'i}\) and \(\sigma _{y'i}\) are the axial stresses at the contact point in the two orthogonal directions to the normal one. They can be obtained by projecting the stress tensor into those two directions with the associated unit vectors \(\hat{\varvec{e}}_{x'}\) and \(\hat{\varvec{e}}_{y'}\) as

$$\begin{aligned} \sigma _{x'i}= & {} \left( \varvec{\sigma }_i\hat{\varvec{e}}_{x'i} \right) ^{T}\hat{\varvec{e}}_{x'i} \end{aligned}$$
(9)
$$\begin{aligned} \sigma _{y'i}= & {} \left( \varvec{\sigma }_i\hat{\varvec{e}}_{y'i} \right) ^{T}\hat{\varvec{e}}_{y'i} \end{aligned}$$
(10)

where \(\varvec{\sigma }_i\) is the stress tensor at the ith contact point. This tensor can be obtained as the average of the stress tensors for the two interacting particles at the ith contact point: \(\varvec{\sigma }_{i}=\) \(\frac{\varvec{\sigma _{{\textit{sphere}},0}}\,+\,\varvec{\sigma _{{\textit{sphere}},i}}}{2}\), where \(\varvec{\sigma _{{\textit{sphere}},0}}\) is the stress tensor computed in the center of the central sphere and \(\varvec{\sigma _{{\textit{sphere}},i}}\) is the stress tensor computed in the center of the ith neighbour sphere. This tensor is typically computed for post-processing the DEM results [16, 17] as

$$\begin{aligned} \varvec{\sigma _{ sphere,0 }}=\frac{1}{V}\sum _{i=1}^{n_{c}} {\displaystyle \varvec{l_{i}}\otimes \varvec{F_{i}}} \end{aligned}$$
(11)

written for the central particle, but easily extendable to the neighbour spheres. In Eq. 11, \(n_{c}\) is the number of contacts of the central particle, \(\varvec{l}_{i}\) is the vector connecting the center of the particle to the ith contact point, \(\varvec{F_{i}}\) is the force vector at the ith contact point (including normal and tangential components) and V is the volume used to average the stresses. One option is to take \(V=V_{{\textit{sphere}}}\), where \(V_{{\textit{sphere}}}\) is the volume of the sphere. A better estimation can be obtained using all the contact areas of the particle with the neighbours as

$$\begin{aligned} V=\sum _{i=1}^{n_{c}}\frac{1}{3}A_{i}||\varvec{l_{i}} || \end{aligned}$$
(12)

where \(A_{1},A_{2},\ldots ,A_{n}\) are the areas of the contact interfaces.

The stress tensor \(\varvec{\sigma }\) can be used in an explicit dynamic solution scheme for the DEM by recovering its expression computed at previous time step. For implicit DEM schemes \(\varvec{\sigma }\) has to be computed iteratively within the current time step to get an updated value.

The computation of the contact interface areas \(A_{i}\) is described in Sect. 3.3.

Remark

Equation (7) is similar to the typical equation for the normal spring force, adding a new term (\(A_{i}\nu (\sigma _{x'i}+\sigma _{y'i})\)) that accounts for the contribution of the Poisson’s effect.

3.2 Tangential forces

From Eq. (2) we can isolate the tangential stresses \(\tau _{kl}\) as

$$\begin{aligned} \tau _{kl}=G\gamma _{kl} \end{aligned}$$
(13)

or

$$\begin{aligned} \tau _{kl}=G\left( \frac{\partial u_{k}}{\partial x_{l}}+\frac{\partial u_{l}}{\partial x_{k}}\right) \end{aligned}$$
(14)

where \(u_{k}\) is the displacement along the kth direction.

Again we can assume that directions k and l are not necessarily oriented with the Cartesian axes. Using the local axes at the contact point (Fig. 1a) we obtain:

$$\begin{aligned} \begin{aligned} \displaystyle \tau _{z'x'}&=G\left( \frac{\partial u_{x'}}{\partial x_{z\text {'}}}+\frac{\partial u_{z'}}{\partial x_{x'}}\right) \\ \displaystyle \tau _{z'y'}&=G\left( \frac{\partial u_{y'}}{\partial x_{z\text {'}}}+\frac{\partial u_{z'}}{\partial x_{y'}}\right) \end{aligned} \end{aligned}$$
(15)

In Eq. (15) the terms \(\frac{\partial u_{x'}}{\partial x_{z\text {'}}}\) and \(\frac{\partial u_{y'}}{\partial x_{z\text {'}}}\) can be approximated by \(\frac{\delta _{x'i}}{L_{i}}\) and \(\frac{\delta _{y'i}}{L_{i}}\), respectively, where \(\delta _{x'i}\) and \(\delta _{y'i}\) are the accumulated relative displacements of the contact point between two particles in the \(x'\) and \(y'\) directions, respectively, and \(L_{i}\) is the distance between the centers of the spheres (different from \(L_{0i}\), see Fig. 1b). Note that \(\delta _{x'i}\) and \(\delta _{y'i}\) are the lengths of the curves described by the relative tangential displacements over time (see Fig. 1b). Usually, these relative displacements are calculated by a cumulative sum over the time steps, considering at each time step the relative displacements of the centers of the contacting spheres plus the relative displacement at the contact point due to the rotation of the spheres (Eqs. 16 and 17):

$$\begin{aligned} \delta _{x'i}= & {} \delta _{x'i}^{t-\Delta {t}}+\delta _{x'i}^{\Delta {t}} \end{aligned}$$
(16)
$$\begin{aligned} \delta _{y'i}= & {} \delta _{y'i}^{t-\Delta {t}}+\delta _{y'i}^{\Delta {t}} \end{aligned}$$
(17)

where the superindex \(t-\Delta {t}\) denotes values at the previous time step and the superindex \(\Delta {t}\) denotes the increment in the value during the last time step. \(\delta _{x'i}^{\Delta {t}}\) and \(\delta _{y'i}^{\Delta {t}}\) can be computed by projecting the total relative displacement at the contact point (\(\varvec{\delta }_i^{\Delta {t}}\)) projected over the axes \(x'\) and \(y'\), represented by the unit vectors \(\varvec{e}_{x'i}\) and \(\varvec{e}_{y'i}\):

$$\begin{aligned} \delta _{x'i}^{\Delta {t}}= & {} \varvec{\delta }_i^{\Delta {t}} \cdot \varvec{e}_{x'i} \end{aligned}$$
(18)
$$\begin{aligned} \delta _{y'i}^{\Delta {t}}= & {} \varvec{\delta }_i^{\Delta {t}}\cdot \varvec{e}_{y'i} \end{aligned}$$
(19)

\(\varvec{\delta }_i^{\Delta {t}}\) is computed as follows:

$$\begin{aligned} \varvec{\delta }_i^{\Delta {t}}=\varvec{\delta }^{\Delta {t}}- \varvec{\delta }_{i,center}^{\Delta {t}}+\varvec{\Theta }^{\Delta {t}} \times \varvec{R}_0^i-\varvec{\Theta }_i^{\Delta {t}} \times \varvec{R}_i^0 \end{aligned}$$
(20)

where \(\varvec{\delta }^{\Delta {t}}\) is the displacement of the center of the reference sphere during the last time step, \(\varvec{\delta }_{i,center}^{\Delta {t}}\) is the displacement of the center of the ith neighbour sphere during the last time step, \(\varvec{R}_0^i\) is the vector going from the center of the reference sphere to the ith contact point, \(\varvec{R}_i^0\) is the vector going from the center of the ith neighbour sphere to the same contact point, \(\varvec{\Theta }^{\Delta {t}}\) is the vector defining the angle rotated by the reference sphere during the last time step and \(\varvec{\Theta }_i^{\Delta {t}}\) is the angle rotated by the ith neighbour.

The tangential forces at the contact point i, \(F_{x'_{i}}\) and \(F_{y'_{i}}\), can be expressed as:

$$\begin{aligned} \begin{aligned} \displaystyle F_{x'_{i}}&=A_{i}G\left( \frac{\delta _{x'i}}{L_{i}} +\frac{\partial u_{z'}}{\partial x_{x'}}\right) =k_{ti}\delta _{x'i} +A_{i}G\frac{\partial u_{z'}}{\partial x_{x'}}\\ \displaystyle F_{y'_{i}}&=A_{i}G\left( \frac{\delta _{y'i}}{L_{i}} +\frac{\partial u_{z'}}{\partial x_{y'}}\right) =k_{ti}\delta _{y'i} +A_{i}G\frac{\partial u_{z'}}{\partial x_{y'}} \end{aligned} \end{aligned}$$
(21)

with \(k_{t_{i}}\) being a tangential stiffness parameter associated to the ith contact point between each pair of spherical particles, whose value is

$$\begin{aligned} k_{ti}=\frac{A_{i}G}{L_{i}} \end{aligned}$$
(22)

The terms \(\frac{\partial u_{z'}}{\partial x_{x'}}\) and \(\frac{\partial u_{z'}}{\partial x_{y'}}\) in Eq. (15) cannot be obtained with the information provided by the pair of particles in contact. They can be deduced, however, from the information contained in the stress tensor, which is fed by information from all the surrounding particles. Using Eq. (14), and choosing the local axes at the contact point, we can write:

$$\begin{aligned} \begin{aligned} \displaystyle \left( \frac{\partial u_{z'}}{\partial x_{x'}}\right) _{i,step}&=\left( \frac{\tau _{z'x',i}}{G}-\frac{\delta _{x'i}}{L_{i}}\right) _{step}\\ \displaystyle \left( \frac{\partial u_{z'}}{\partial x_{y'}}\right) _{i,step}&=\left( \frac{\tau _{z'y',i}}{G}-\frac{\delta _{y'i}}{L_{i}}\right) _{step} \end{aligned} \end{aligned}$$
(23)

Sub-index step in Eq. (23) denotes the time step at which the different terms are approximated. For explicit dynamic solution schemes, step refers to the previous step. For implicit schemes, step refers to the current time step and the term is updated iteratively. Note that both \(\tau _{z'x',i}\) and \(\tau _{z'y',i}\) depend on both \(F_{x'_{i}}\) and \(F_{y'_{i}}\) through Eq. 11, so their value has to be used either from the previous time step or the previous iteration, otherwise, the forces would never be updated according to the relative displacements.

The tangential forces can be finally written as

$$\begin{aligned} \begin{aligned} \displaystyle F_{x'_{i}}&=k_{ti}\delta _{x'i}+A_{i}G\left( \frac{\tau _{z'x',i}}{G} -\frac{\delta _{x'i}}{L_{i}}\right) _{step}\\ \displaystyle F_{y'_{i}}&=k_{ti}\delta _{y'i}+A_{i}G\left( \frac{\tau _{z'y',i}}{G} -\frac{\delta _{y'i}}{L_{i}}\right) _{step} \end{aligned} \end{aligned}$$
(24)

where \(\tau _{z'x',i}\) and \(\tau _{z'y',i}\) are the tangential components of the stress tensor in local coordinates, \(\varvec{\sigma }'_{i}\). Note that the sub-index step here avoids the substitution of \(A_{i}G\left( \frac{\delta _{x'i}}{L_{i}}\right) _{step}\) by \(k_{ti}\delta _{x'i}\), which would cancel terms and make the expression independent from the relative displacements between the particles.

Fig. 2
figure 2

Scheme of overlapping contact areas (left) and gaps between contact areas (right)

The tensor \(\varvec{\sigma }'_{i}\) is computed by rotating the averaged stress tensor at the ith contact point, \(\varvec{\sigma }_{i}\) (in global coordinates), as:

$$\begin{aligned} \left[ \begin{array}{ccc} \sigma _{x'x',i} &{} \tau _{x'y',i} &{} \tau _{x'z',i}\\ \tau _{y'x',i} &{} \sigma _{y'y',i} &{} \tau _{y'z',i}\\ \tau _{z'x',i} &{} \tau _{z'y',i} &{} \sigma _{z'z',i} \end{array}\right] =\varvec{R}_{i}^{T}\left[ \begin{array}{ccc} \sigma _{xx,i} &{} \tau _{xy,i} &{} \tau _{xz,i}\\ \tau _{yx,i} &{} \sigma _{yy,i} &{} \tau _{yz,i}\\ \tau _{zx,i} &{} \tau _{zy,i} &{} \sigma _{zz,i} \end{array}\right] \varvec{R}_{i} \end{aligned}$$
(25)

which can be also written as:

$$\begin{aligned} \varvec{\sigma }'_{i}=\varvec{R}_{i}^{T}\varvec{\sigma }_{i} \varvec{R}_{i} \end{aligned}$$
(26)

where \(\varvec{R}_{i}\) is the rotation matrix between the Cartesian and the local axes of contact i.

Remark

Note that Eq. (26) is an extension of the usual expression for the tangential forces in the DEM by adding an extra term that accounts for the surroundings of the bond.

3.3 The contact area between two spheres

In Sects. 3.1 and 3.2, the contact interface area \(A_i\) is an important value that affects the contact force and, hence, the global response of the modelled material in terms of apparent (macro) Young’s modulus and Poisson’s ratio values. Some authors [8, 15] have provided estimations of \(A_{i}\) for linear elastic contact laws taking into account the radii of the contacting spheres. Some typical options are:

  • A is taken as the area associated to the minimum radius between two particles: \(2R_{min}\) in 2D or \(\pi R_{min}^{2}\) in 3D.

  • A is taken as the area associated to an average radius between two particles: \(2R_{av}\) in 2D or \(\pi R_{av}^{2}\) in 3D (with \(R_{av}=\frac{R_{1}+R_{2}}{R_{1}R_{2}}\), for example).

For this work, this last estimation is used (Eq. 27), i.e.

$$\begin{aligned} A_{i}=\pi \left( \frac{R_{0}+R_{i}}{R_{0}R_{i}}\right) ^{2} \end{aligned}$$
(27)

Most of these estimations, including the one in Eq. 27, do not take into account that too big values of \(A_{i}\) introduce an overlap between contacts, or that too small values of A represent gaps between contacts. Figure 2 shows a scheme of both cases. The presence of overlaps or gaps, for a certain estimation of \(A_i\), strongly depends on the type of packing and the particle size distribution.

In this work we propose a way to calculate the contact areas \(A_{i}\) which is based on the concept of Weighted Voronoi Diagram (WVD) (Power Diagram type [18]). A Voronoi Diagram defines the polyhedra around each particle which contains all the points in the space that are closer to that particle center than to another’s. The WVD gives more volume to those particles with bigger radii and less volume to the smaller ones. In a WVD the faces of each polyhedron coincide with our concept of ‘contact areas’. These faces are polygons that have no overlaps, do not present gaps and can be used for the DEM in order to simulate a continuum. However, building the WVD is computationally expensive, and this goes against the necessary need of performance for the DEM. In this Section we give a useful alternative for the approximate computation of the contact area.

Given a set of areas \(A_{1},A_{2},\ldots ,A_{n}\) for the n contacting neighbours of a particle, and assuming that these areas take into account the different element sizes, the sum of \(\sum _{i=1}^{n}A_{i}=A_{{\textit{total,sum}}}\) should be equal to the sum of the faces areas of the polyhedron given by the WVD (\(A_{{\textit{total,exact}}}\)). This polyhedron is unknown (unless the WVD is generated) but an approximation to its total surface can be roughly estimated by assuming that it is a polyhedron circumscribed to the sphere. So, \(A_{{\textit{total,estimation}}}\) must be bigger than the sphere’s surface, i.e.

$$\begin{aligned} A_{{\textit{total,estimation}}}\ge 4\pi R^{2}=A_{{\textit{sphere}}} \end{aligned}$$
(28)

Using the critical case \(A_{{\textit{total,estimation}}}=4\pi R^{2}\) the contact interface areas can be corrected as:

$$\begin{aligned} A_{i}^{*}=A_{i}\frac{A_{{\textit{total,estimation}}}}{A_{{\textit{total,sum}}}}=A_{i}\frac{4\pi R^{2}}{A_{total,sum}} \end{aligned}$$
(29)

These corrected areas are typically too small and the response of the material is usually softer than desired. A better estimation for the surface of the polyhedron can be obtained as:

$$\begin{aligned} A_{{\textit{polyhedron}}}=\alpha A_{{\textit{sphere}}} \end{aligned}$$
(30)

where \(\alpha \) depends on the number of faces of the polyhedron (number of neighbours of the sphere) and the dispersion in areas of those faces. For regular polyhedra, \(\alpha \) is known and the values can be seen in Table 1.

Table 1 Value of \(\alpha =\frac{A_{{\textit{polyhedron}}}}{A_{{\textit{sphere}}}}\) for regular polyhedra tangent to a sphere for different numbers of faces
Fig. 3
figure 3

2D scheme of overlapping (left) and separated (right) particles

If the number of faces does not allow the formation of a regular polyhedron, \(\alpha \) is interpolated from Table 1.

Finally,

$$\begin{aligned} A_{i}^{*}=\alpha 4\pi {R}^{2}\frac{A_{i}}{A_{{\textit{total,sum}}}} \end{aligned}$$
(31)

The new contact area \(A_{i}^{*}\) replaces \(A_{i}\) in the corresponding equations of Sects. 3.1 and 3.2.

In Eq. (31) it is assumed that all the faces of the polyhedron have the same area. The possible dispersion of sizes in the faces of the polyhedron, due to the presence of neighbour particles of different sizes, is not taken into account, not even in the cases with 4,6,8,12 or 20 faces. Extra adjustments can be introduced by using more correction coefficients.

3.3.1 Further corrections for the contact areas

In the practical use of the DEM for modelling continua, it is very common to find packings of spheres where two particles present an initial overlap. In order to start the computation with null forces, the overlap between those two particles is neglected and remembered thoughout the whole computation. The same operation can be done between two particles which are close to contact, by means of a negative overlap. In the last case, if the particles approach each other, a repulsion force appears, even before reaching the tangency. Both for positive and negative overlapping, Eq. (5) for \(\delta _{z'i}\) can be extended as follows (Eq. 32):

$$\begin{aligned} \delta _{z'i}=R_{1}+R_{2}-L_{i}-\delta _{z'i,0} \end{aligned}$$
(32)

where \(\delta _{z'i,0}\) is the overlap with the ith neighbour at the beginning of the computation. This value must be remembered by the particle during the whole calculation, for all its neighbours.

The utility of considering as neighbours some non-overlapping spheres is the increase of the number of neighbours in all directions, bringing a denser network of bonds, a more homogeneous distribution of forces and absence of voids (side without any bond). Equation (31) yields accurate results as long as the spheres are tangent. However, in the cases where the spheres are not perfectly tangent and they present gaps or overlaps further corrections of the contact areas must be made (Fig. 3).

In these cases the virtual polyhedron would not be tangent to the sphere, and the radius used for calculating \(A_{sphere}\) should no longer be the actual radius of the sphere, R. Instead, it can be replaced by

$$\begin{aligned} R^{*}=\frac{\sum _{i=1}^{n_{c}}\left( R-\frac{\delta _{z'i}}{2}\right) }{n_{c}} \end{aligned}$$
(33)

with \(\delta _{z'i}\) being the overlap of the sphere with the ith neighbour (a negative value means a gap between spheres). The value of \(R^{*}\) replaces R in Eq. (31).

Remark

All the corrections proposed in this Section would not be necessary if the WVD is used to determine the contact areas. The decision of not using the WVD is purely related to the time consumption when building it.

Fig. 4
figure 4

Fine cartesian packing of 132,651 spheres

Fig. 5
figure 5

Fine staggered packing of 33,201 spheres. Global view (left) and detail (right)

4 Results

4.1 Validation methodology

Several numerical tests were carried out in order to validate this theoretical framework. These simulations were addressed to find out the ability of the method for capturing the elastic behavior of a given specimen using the explicit version of the DEM. The sample studied was a cubic volume of side 0.5 m. The specimen was tested for a Young’s modulus of \(E=1.0e9\) Pa and two different Poisson’s ratio values of \(\nu =0.2\) and \(\nu =0.35\). All computations with the DEM using \(\nu \ge 0.5\) were unstable and the sample exploded.

The elastic response of the sample was obtained via a uniaxial compression test by imposing constant and confronting velocities in the Z axis to the spheres at the top and bottom of the specimen, while allowing the free movement in the XY plane. The velocities imposed were of 0.0005 m/s for a total time of 0.01 s. The time step used for all the computations was 5e-7 s.

Three packing typologies were tested: cartesian packing, staggered packing and random packing. The average coordination number of the cartesian packing was 6, while for the staggered and the random was 13 and 11 respectively. The porosity of the cartesian packing was 0.476, for the staggered packing was 0.117 and for the random packing was 0.25. The initial overlapping between spheres explains the reduced porosity value for the staggered packing (porosity is measured as the sum of the individual volumes of the spheres over the volume of the sample). More details on the studied geometries are given next:

  1. 1.

    Two cartesian packings were prepared with different particle sizes. The coarse packing had 50,653 spheres of 1.4 cm of diameter. The fine cartesian packing had 13,2651 spheres of 1 cm of diameter (Fig. 4). For this configuration, all contacts are either vertical (aligned with Z) or horizontal (aligned with X or Y). The average coordination number for both packings was 6.

  2. 2.

    Two staggered packings were prepared with different particle sizes. The coarse packing had 17,261 spheres of 2.5 cm of diameter. The fine staggered packing had 33,201 spheres of 2 cm of diameter (Fig. 5). This configuration, also called ‘body centered cube’ presents a bigger density of contacts, and still can be considered ‘structured’, as the same cell is replicated in the XY and Z directions. The average coordination number for both packings was 13.

  3. 3.

    Two random packings were generated using Gaussian distributions of the diameters. The first one was generated with 11,511 spheres of an average diameter of 2 cm (Fig. 6), the standard deviation was 0.1 and the diameters were trunkated between 2.6 and 1.4 cm. The second packing was generated with 30,213 spheres of an average diameter of 1.5 cm, the standard deviation was 0.1 and the diameters were trunkated between 1.0 and 2.0 cm. The neighbour search tolerance in both samples was adjusted to achieve an average coordination number of 11, with null initial forces.

Fig. 6
figure 6

Random packing of 30,213 spheres

Fig. 7
figure 7

Scheme of the projections of a line before (left) and after (right) deformation

4.2 Measurement of the macro values of E and \(\nu \) for the samples

The macro Young’s modulus (\(E_{macro}\)) was computed as the quotient between the stress at the moving boundaries (top layer and bottom layer) over the total vertical strain of the specimen. The stress at the boundaries was calculated as the sum of the reaction forces over the spheres of the top layer divided by the section area of the specimen

$$\begin{aligned} E_{{\textit{macro}}}=\frac{\sigma _{{\textit{computed}}}}{\varepsilon _{z}}= \frac{\sum _{j=1}^{n_{s}}F_{{\textit{react,j}}}}{\varepsilon _{z}A_{{\textit{specimen}}}} \end{aligned}$$
(34)

where \(n_{s}\) is the number of spheres of the top layer, \(F_{{\textit{react,j}}}\) is the reaction force on the ith sphere, \(A_{{\textit{specimen}}}\) is the cross section of the sample and \(\varepsilon _{z}\) is the vertical strain of the specimen (enforced in the form of imposed displacements).

Fig. 8
figure 8

Dynamic measurement of the Young’s modulus (left) and the Poisson’s ratio (right) during the computation

Table 2 Effect of the particle size on the results with the improved DEM

The macro Poisson’s ratio \(\nu _{macro}\) for the sample was computed as the quotient of the horizontal strain over the vertical strain. Both strains were measured at the longest diagonal in the cube, defined by the straight line connecting the centers of the two most distant spheres in the sample. An alternative to this measurement is to compute the average value of \(\nu \) for all the bonds connecting the centers of every pair of spheres in contact within the specimen. In both cases, the expression used to compute the macro Poisson’s ratio between any two centers of spheres C1 and C2 in the sample was

$$\begin{aligned} \nu _{macro}=-\frac{\varepsilon _{xy}}{\varepsilon _{z}}= -\frac{1-\frac{d_{{\textit{xy,initial}}}}{d_{{\textit{xy,final}}}}}{1-\frac{d_{z,{\textit{initial}}}}{d_{{\textit{z,final}}}}} \end{aligned}$$
(35)

where \(\varepsilon _{xy}\) is the horizontal strain of the measured line, \(d_{xy}\) is the length of the projection of the line to the XY plane, \(d_{z}\) is the length of the projection of the line to the Z axis and the subindices initial and final denote if the measure is taken before or after the deformation, respectively (Fig. 7). The Young’s modulus and the Poisson’s ratio were measured at every time step. It was noticed that, being a dynamic computation, some elastic waves were generated in the sample until the intentionally added damping dissipated them and the measurements reached steady values. Those values are the ones considered as the result of the computations. The coefficient of restitution (COR) used for damping the waves was 0.2, with the implementation for the linear spring published in [19], both in normal and tangential directions. Figure 8 shows the evolution of the measured Young’s modulus and the Poisson’s ratio during the computation and how they reach a steady value.

4.3 Analysis of the results

The results shown in this Section did not require any calibration effort and were obtained in a single run with the specified input parameters. Table 2 summarizes the results discussed below.

4.3.1 Cartesian packing

A very good result was obtained for the Young’s modulus value. It was prescribed to a value of \(E=1.0e9\) Pa and the error of the computed value was of −2.8% for a coarse packing (\(\nu =0.2\)) and −0.6% with a fine packing for \(\nu =0.2\). For \(\nu =0.35\), the errors in the computation of E were of −3.6 and −0.6% for the coarse and the fine packings respectively. On the other hand, the errors when computing the macro Poisson’s ratios corresponding to a prescribed value of \(\nu =0.2\) were −4.6% (coarse packing) and 1.45% (fine packing), while for \(\nu =0.35\) the errors were 0.0% (coarse packing) and 0.22% (fine packing). For this particular case, the procedure of computing the Poisson’s ratio averaged over all the contacts makes no sense, as the bonds between spheres experience no rotation, so no measure of the macro Poisson’s ratio is possible for a single bond. The deformation of the maximum diagonal in the sample was used to measure the macro Poisson’s ratio. Figure 9 shows the deformation of the cartesian packing with a scaling factor of 3.0e4.

Fig. 9
figure 9

Deformed sample for a cartesian packing. Displacement amplified by a factor of 3.0e4

Fig. 10
figure 10

Deformed sample for a staggered packing. Displacement amplified by a factor of 3.0e4

Fig. 11
figure 11

Poisson’s ratio values for an input value of \(\nu =0.2\)

4.3.2 Staggered packing

A very good result was obtained for the Young’s modulus value. It was prescribed to a value of \(E=1.0e9\) Pa and the error of the computed value was of −1.7% for a coarse packing (\(\nu =0.2\)) and 0.7% with a fine packing for \(\nu =0.2\). For \(\nu =0.35\), the errors in the computation of E were of −1.4 and 0.7% for the coarse and the fine packings respectively. On the other hand, the errors in computing the macro Poisson’s ratios corresponding to a prescribed value of \(\nu =0.2\) were 0.5% (coarse packing) and +0.4% (fine packing), while for \(\nu =0.35\) the errors were −3.4% for the coarse packing and −2.9% for the finer.

In this case the Poisson’s ratio was measured as the averaged value over all the bonds. This procedure was chosen to avoid the effect of the small expansions that can be observed at the top and bottom of the specimen. These expansions can be explained as a result of a lower stiffness of the spheres at the outer layers due to a drastic decrease in the number of neighbours with respect to the interior of the specimen. In fact, when measuring the Poisson ratio using the deformation of the maximum diagonal, the errors corresponding to a prescribed value of \(\nu =0.2\) were 11.4% (coarse packing) and 5.8 % (fine packing), while for \(\nu =0.35\) the errors were 3.8% for the coarse packing and 3.9% for the finer. Figure 10 shows the deformed configuration of the sample using a scaling factor of 3.0e4. Finally, Fig. 11 shows the Poisson’s ratio field. It can be clearly observed that the field in the interior of the sample is very uniform with an average value of around \(\nu =0.2\), this being the exact Poisson’s ratio specified for this case.

Fig. 12
figure 12

Deformed sample for a random packing. No expansions at the top and bottom layers were observed. Displacement amplified by a factor of 3.0e4

Table 3 Effect of adding the extra terms in the normal and tangential contact forces (fine packings)

4.3.3 Random packing

Again, a very good value of the Young’s modulus was obtained. It was prescribed to a value of \(E=1.0e9\) Pa and the error of the computed Poisson ratio was of −1.2% for a coarse packing (\(\nu =0.2\)) and of −0.2% using a fine packing for both \(\nu =0.2\) and \(\nu =0.35\). On the other hand, the error in computing the macro Poisson’s ratios corresponding to a prescribed value of \(\nu =0.2\) was of −3.0% for both packings, while for \(\nu =0.35\) the errors were of −5.1 and −3.5% for coarse and fine packings respectively (Fig. 12). In this case, using the deformation of the maximum diagonal for measuring the Poisson seemed more natural and was used, since no local expansions at the top and bottom of the specimen were observed. However, for the sake of completeness, the value averaged for all the bonds is also given for all cases: the errors corresponding to a prescribed value of \(\nu =0.2\) were 5.4% for the coarse packing and 1.9% for the fine packing, while for \(\nu =0.35\) the errors were 3.6% for the coarse packing and 4.6% for the finer one.

4.4 Comparison of the results obtained with the non-enriched DEM contact law

The previous numerical experiments were run using the terms that add the Poisson’s effect (Sect. 3.1) and an extra tangential force (Sect. 3.2). In this Section we will show that not adding those contributions leads to poor estimations of the macro Poisson’s effect and macro Young’s modulus. In this case, only the fine packings are compared. Tables 3 and 4 summarize the results discussed in the next Subsections. The term ‘improved DEM’ stands for the formulation presented in this work for computing the contact forces, while ‘standard DEM’ denotes results without the extra terms for the force-displacement relationship presented in Sects. 3.1 and 3.2.

Table 4 Effect of adding the extra terms in the normal and tangential contact forces (fine packings)

4.4.1 Cartesian packing

For the cartesian packing, the Young’s modulus is captured very well in both cases. The non-enriched bonded DEM contact law (using as contact areas the ones established in Sect. 3.3) presents an error of −0.6%, exactly equal to the DEM with the extra terms provided in this paper. However, big differences exist when comparing the error of the measured Poisson’s ratio. An error of −100% is computed for the non-enriched bonded DEM (for both \(\nu =0.2\) and \(\nu =0.35\)) while for the improved version of the bonded DEM, errors of +1.45 and +0.22% for \(\nu =0.2\) and \(\nu =0.35\) respectively are found. This is a logical and expected result taking into account the non-existence of forces in the XY plane (the only ones that would cause strains in that direction) in a cartesian specimen subjected to stresses in the Z axis.

4.4.2 Staggered packing

The measured Young’s modulus for the ‘standard DEM’ presents errors of −20.8 and −23.0% versus the prescribed value (\(E=1.0e9\)) for \(\nu =0.2\) and \(\nu =0.35\) respectively. These errors are notably decreased in the ‘improved DEM’, with values of +0.7% in both cases. The measured Poisson’s ratio for the ‘standard DEM’ presents errors of −43.0 and −64.0% for \(\nu =0.2\) and \(\nu =0.35\) respectively. These errors are again notably decreased in the ‘improved DEM’, with values of +0.4 and −2.9% in this case. The bigger errors in the Young’s modulus for the ‘standard DEM’ have their source in the inclined bonds present in the staggered packing, where part of the vertical force comes from the tangential contact forces between particles, which have smaller stiffness than the normal forces. For the ‘standard DEM’ the inclined bonds are also a source of horizontal forces that can make the sample expand from a macro point of view. However, the source of this expansion is geometrical and strongly dependent on the inclination of the bonds. In the ‘improved DEM’ the added extra terms correct a major part of these errors.

4.4.3 Random packing

The computed Young’s modulus for the ‘standard DEM’ presents errors of −22.0 and −28.0% versus the prescribed value (\(E=1.0e9\)) for \(\nu =0.2\) and \(\nu =0.35\), respectively. These errors are notably decreased in the ‘improved DEM’, with values of −0.2% for both values of \(\nu \). The computed Poisson’s ratio for the ‘standard DEM’ presents errors of −29.0 and −62.0% for \(\nu =0.2\) and \(\nu =0.35\) respectively. These errors decreased in the ‘improved DEM’, with values of −3.0 and −3.5%. The random packing presents similar results to the staggered packing in all aspects. The main difference is a bigger error in the estimation of the Poisson’s ratio of the ‘improved DEM’. However, the heterogeneity in the coordination number and the presence of voids (absence of neighbours on one side of the particle) can explain this increase in the error.

5 Conclusions

A modification of the contact laws between particles has been proposed in order to improve the elastic behaviour of a packing of spheres when trying to model a continuum with the DEM.

The newly added terms in Eqs. (7) and (24) complete the conventional forces of the cohesive (‘bonded’) DEM traditionally used to model materials like rocks or cement. These terms notably improve the elastic response of the material modelled with the DEM versus the conventional approach and avoid the need of any calibration process if the contact areas are calculated using the methodology explained in Sect. 3.3.

The modified contact laws here proposed yielded similar good results for different types of packings (cartesian, staggered and random packings were tested), different coordination numbers and different combinations of elastic constants.