1 Introduction

Smoothed particle hydrodynamics (SPH) is a meshfree particle-based numerical method that was originally proposed by Lucy [36] and Gingold and Monaghan [21] in a cosmological context more than 40 years ago. The heart of the method is a kernel density estimate, i.e. the density of the material at a certain point is calculated from the number, mass and proximity of nearby particles using a smoothing kernel [34]. The method has a number of attractive features such as the ability to straightforwardly incorporate advection and convection, to naturally trace moving boundaries, to handle large deformation and its comparative ease of implementation [34]. Since its inception, SPH has been applied in a number of fields, including solid mechanics, starting with the work by Libersky and Petschek almost 30 years ago [31, 32].

However, it is well-known that the standard SPH formulation suffers from a number of issues that primarily are related to the stability of the method and the consistency of its underlying kernel and particle approximations. Firstly, the tensile instability, that causes particle clumping, as first observed by Swegle [52]. Secondly, spurious zero-energy modes caused by rank deficiency of the stiffness matrix resulting from the commonly used particle (nodal) integration [13, 14]. Thirdly, lack of linear completeness of the particle approximation for arbitrarily located particles. This issue is aggravated at boundaries, since the supporting domain of the kernel density estimate will be truncated at boundaries [35]. Fourthly, high-frequency pressure oscillations in shock-dominated problems, as a result of the collocation of mass at the particles [39, 40]. These oscillations are particularly evident in the near-compressibility limit.

In the light of the Lax–Richtmyer equivalence theorem, stating that stability and consistency together are equivalent to convergence, these issues would appear to severely limit the practical usefulness of SPH. Fortunately, this is not so, because, there are a number of more or less efficient methods that can be used to resolve them. Whereas spurious zero-energy modes are a generic feature of SPH, the tensile instability is only present when Eulerian kernels are used [2]. It is thus possible to avoid the tensile instability using total [43, 56] or updated [54] Lagrangian formulations. It has also been shown that an artificial stress can counteract the tensile instability for Eulerian kernels, and the resulting algorithm, due to Grey et al. [24], has found widespread use. Drawing on the similarity with the hourglass modes commonly encountered in underintegrated finite elements, Ganzenmuller et al. have devised a promising means to alleviate the spurious zero-energy modes in SPH [16, 18]. Procedures to restore consistency of the SPH approximations have been discussed in [35]. An often used correction was proposed in [5], which also addressed variational aspects of the SPH in order to derive formulations that preserve linear and angular momentum exactly in the absence of external forces and torques [4]. The first-order hyperbolic framework for large strain computational solid dynamics proposed by Bonet and co-workers [3, 20] is also a noteworthy line of developments. This formulation utilises an extended set of strain measures and results in a mixed form that has been implemented using an SPH approach with very good results in the near and truly incompressible limit [28,29,30].

Despite being a particle-based method, SPH has hitherto primarily been used to model continuous matter. For discontinuous matter, such as granular materials, the discrete element method (DEM) is instead commonly used. The DEM was proposed by Cundall and Strack more than 40 years ago [9] and is, like SPH, a Lagrangian particle-based method. However, contrary to SPH, the interparticle forces and torques are generally determined from the (normal and tangential) overlaps between particles, which represent local particle deformations. Hence, the deformation resulting from a certain contact is considered to be local in the sense that it does not affect the overall shape of the particle or the stiffness of any other contact(s) on the same particle. However, more general non-local contact models are emerging [6, 19, 23, 27].

It is interesting to note that the traditional SPH and the DEM thus are complementary in the sense that SPH considers only nonlocal forces and the DEM only local forces. These methods are also strongly related to peridynamics, developed by Stewart Silling at Sandia National Laboratories, which comes in two flavours: bond based [48] and state based [50]. In bond-based peridynamics, particles interact via forces directed along bonds between particles, i.e. via central forces. However, the assumption of central forces leads to severe restrictions of the class of materials that can be modelled using bond-based peridynamics. In particular, the Poisson ratio is always 1/4 for isotropic materials [51]. For this reason, peridynamic states were introduced, which in effect result in a nonlocal coupling between bonds [50]. This means that arbitrary material models can be adapted for use within state-based peridynamics, as for SPH. In fact, it has been pointed out [17] that the commonly used numerical discretisation of state-based peridynamics [50] is equivalent to a total Lagrangian corrected SPH [5].

Acknowledging the complementary nature of SPH and the DEM, the purpose of this work is to take the first steps towards a macroscopically consistent discrete method for granular materials. Specifically, a particle-based method for continua is developed whose SPH-like component is based on the most widely accepted strain definition for granular media, a Delaunay-based strain developed by Bagi [1] and elaborated upon by others [11, 12, 26]. This strain definition is based on a decomposition of space into simplices and thus has much in common with the Delaunay Density Estimator Method proposed by Schaap and Weygaert [45], suggested for use in SPH by Pelupessy [41]. The DEM-like component is based on pairwise interactions between particles and produces a generalisation of the Ganzenmuller [16, 18] hourglass stabilisation procedure to non-central forces. Aiming primarily for a description of solid materials, the energy corresponding to rotation of individual particles is disregarded, as is common practice in SPH. Although the starting points are distinct, it will be seen in the following that the resulting method has strong similarities with the one obtained by nodally integrated finite elements, in particular nodally averaged tetrahedral elements [10, 42].

2 Kinematics

2.1 Basic definitions

We consider a system of discrete particles occupying a connected domain \({\mathcal {D}}\) and let lowercase letters in the beginning of the alphabet (e.g. a, b and c) refer to particles. The reference placement of particle a is \(\varvec{X}_{a}\) and its current position is \(\varvec{x}_{a}\). We assume the existence of particles located on the boundaries (boundary particles), such that the domain \({\mathcal {D}}\) can be decomposed into simplices via a triangulation (in 2D) or a tetrahedralisation (in 3D) in which the particles constitute the vertices; in effect, we thus assume the existence of an underlying triangular or tetrahedral mesh. We will adapt our language to the three-dimensional case but will, for simplicity, provide schematic illustrations in two dimensions, as in Fig. 1. The particles are assumed to interact via nearest-neighbour interactions only, with bonds corresponding to edges of the underlying mesh. The vectors \(\varvec{X}_{ab} = \varvec{X}_b - \varvec{X}_a\) and \(\varvec{x}_{ab} = \varvec{x}_b - \varvec{x}_a\) point from the centre of particle a to the centre of a neighbouring particle b in the reference and current configurations, respectively. These are often referred to as branch vectors in the granular mechanics literature [1, 12].

Fig. 1
figure 1

a Definition of Delaunay clusters based on an underlying tesselation into simplices (triangles in 2D and tetrahedra in 3D). A Delaunay cluster for an internal particle labelled a is shown in red and a cluster for a boundary particle labelled b in blue. b Illustration of the Delaunay cluster volume \(V^{\mathrm {(c)}}_a\) and the particle volume \(V_a\) (color online)

Since distinct simplices are disjoint, the total volume of the domain \({\mathcal {D}}\), denoted \(V_{\mathrm {tot}}\), can be obtained as

$$\begin{aligned} V_{\mathrm {tot}} = {{\,\mathrm{Vol}\,}}{\mathcal {D}} = \sum _{\alpha } {{\,\mathrm{Vol}\,}}{\mathcal {S}}_{\alpha }, \end{aligned}$$
(1)

where the sum extends over all simplices \({\mathcal {S}}_{\alpha }\) in the system. For each particle a, we introduce the Delaunay cluster \({\mathcal {C}}_a\) as the union of all simplices that contain particle a, i.e. [45]

$$\begin{aligned} {\mathcal {C}}_a = \bigcup _{\alpha } {\mathcal {S}}_{\alpha }, \end{aligned}$$
(2)

where the union thus extends over the set of simplices that have particle a as one of its vertices (Fig. 1a). The Delaunay cluster has been referred to as the contiguous Voronoi cell [45] but this denomination is not used here, since the Delaunay cluster represents a set of adjoint Delaunay simplices rather than a Voronoi cell. Since distinct simplices are disjoint, the volume of the Delaunay cluster is obtained as

$$\begin{aligned} {{\,\mathrm{Vol}\,}}{\mathcal {C}}_a = \sum _{\alpha } {{\,\mathrm{Vol}\,}}{\mathcal {S}}_{\alpha }, \end{aligned}$$
(3)

where the sum has the same extent as the union preceding equation. Since each simplex has \(n+1\) nodes (where n is the number of spatial dimensions), each simplex contributes to \(n+1\) Delaunay clusters, implying that

$$\begin{aligned} \sum _a {{\,\mathrm{Vol}\,}}{\mathcal {C}}_a = (n+1) V_{\mathrm {tot}}, \end{aligned}$$
(4)

where the sum extends over all particles in the system. For each particle, we will therefore define two volumes: Firstly the volume \(V^{\mathrm {(c)}}_a = {{\,\mathrm{Vol}\,}}{\mathcal {C}}_a\) and secondly the volume \(V_a = {{\,\mathrm{Vol}\,}}{\mathcal {C}}_a/(n+1)\). We will refer to \(V^{\mathrm {(c)}}_a\) as the Delaunay cluster volume and to \(V_a\) as the particle volume. The difference between \(V^{\mathrm {(c)}}_a\) and \(V_a\) is illustrated in Fig. 1b.

Fig. 2
figure 2

a Definition of referential contact vectors \(\varvec{X}_{ab}/2\) and \(\varvec{X}_{ba}/2\) from branch vectors \(\varvec{X}_{ab} = -\varvec{X}_{ba}=\varvec{X}_b - \varvec{X}_a\), where \(\varvec{X}_{a}\) and \(\varvec{X}_{b}\) are the referential placements of particles a and b. b Definition of the local displacement vector \(\varvec{u}^{\mathrm {loc}}_{ab}\) from the current particle coordinates \(\varvec{x}_{a}\) and \(\varvec{x}_{b}\) and the images \(\varvec{F}_a\varvec{X}_{ab}/2\) and \(\varvec{F}_b\varvec{X}_{ba}/2\) of the referential contact vectors under the affine transformations described by \(\varvec{F}_a\) and \(\varvec{F}_b\) (indicated by dashed lines)

2.2 Strain measures

For each particle a, we define a discrete mean deformation gradient \(\varvec{F}_a\) as the average of the continuum deformation gradient,

$$\begin{aligned} \varvec{F} = \mathchoice{\frac{\partial \varvec{\varphi }}{\partial \varvec{X}}}{\partial \varvec{\varphi }/\partial \varvec{X}}{\partial \varvec{\varphi }/\partial \varvec{X}}{\partial \varvec{\varphi }/\partial \varvec{X}} = {\text {Grad}}\varvec{\varphi }, \end{aligned}$$
(5)

over a suitably selected volume containing particle a. Here \(\varvec{x}=\varvec{\varphi }(\varvec{X},t)\) is a motion, depending on the reference placement \(\varvec{X}\) of a material particle and time t. As noted by Bagi [1], Schaap [45] and He [26], the Delaunay cluster represents a natural choice (at least as long as a total Lagrangian formulation is sought). The details of the derivation are deferred to Sect. 4.

Similarly, we introduce a mean deformation gradient for each particle pair ab as

$$\begin{aligned} \varvec{F}_{ab} = \frac{1}{2}\left( \varvec{F}_a + \varvec{F}_b \right) , \end{aligned}$$
(6)

where an unweighed average is used for simplicity. The mean deformation gradient \(\varvec{F}_{ab}\) maps the referential branch vectors \(\varvec{X}_{ab}\) to \(\varvec{y}_{ab} = \varvec{F}_{ab} \varvec{X}_{ab}\). Note that \(\varvec{y}_{ab} \ne \varvec{x}_{ab}\) in general, because \(\varvec{F}_{ab}\) only accounts for the affine particle deformation. As a measure of non-affine deformation of the bond between particles a and b, we introduce a local displacement vector \(\varvec{u}^{\mathrm {loc}}_{ab}\), defined as

$$\begin{aligned} \varvec{u}^{\mathrm {loc}}_{ab} = \varvec{x}_{ab} - \varvec{y}_{ab} = \varvec{x}_{ab} - \varvec{F}_{ab} \varvec{X}_{ab}. \end{aligned}$$
(7)

A geometric interpretation of the local displacement vector is provided in Fig. 2. It can be compared to the corresponding total displacement vector

$$\begin{aligned} \varvec{u}^{\mathrm {tot}}_{ab} = \varvec{x}_{ab} - \varvec{X}_{ab}. \end{aligned}$$
(8)

It will also be convenient to introduce the unit normal vectors

$$\begin{aligned} \hat{\varvec{n}}_{ab} = \frac{\varvec{x}_{ab}}{\left|\varvec{x}_{ab} \right|} \end{aligned}$$
(9)

so that the (total or local) displacement \(\varvec{u}_{ab}\) can be decomposed into normal and tangential parts,

$$\begin{aligned} \varvec{u}_{ab}^{\mathrm {n}} =\left( \varvec{u}_{ab} \cdot \hat{\varvec{n}}_{ab}\right) \hat{\varvec{n}}_{ab} = \frac{\left( \varvec{u}_{ab} \cdot \varvec{x}_{ab}\right) }{\left|\varvec{x}_{ab} \right|^2}\varvec{x}_{ab} \end{aligned}$$
(10)

and

$$\begin{aligned} \varvec{u}_{ab}^{\mathrm {t}}=\varvec{u}_{ab} - \varvec{u}_{ab}^{\mathrm {n}}, \end{aligned}$$
(11)

respectively.

3 Variational total Lagrangian formulation

In order to derive the equations of motion, we here consider a conservative system, for which the discrete Lagrangian \({\mathcal {L}}\) takes the form (see, e.g. [22])

$$\begin{aligned} {\mathcal {L}} = {\mathcal {T}} - {\mathcal {V}}. \end{aligned}$$
(12)

The total kinetic energy \({\mathcal {T}}\) is expressed as

$$\begin{aligned} {\mathcal {T}} = \frac{1}{2} \sum _a m_a v_a^2 , \end{aligned}$$
(13)

where \(m_a\) and \(v_a = \left|\varvec{v}_a \right|\) are the mass and velocity of particle a, respectively. For simplicity, the energy corresponding to rotation of individual particles is thus disregarded, as is common practice in SPH. The potential energy \({\mathcal {V}}\) is considered to be the sum of three terms:

  1. 1.

    The internal (strain) energy \({\mathcal {V}}^{\mathrm {int}}\) resulting from the global (affine) particle deformation, characterised by the mean deformation gradient \(\varvec{F}_a\). Hence,

    $$\begin{aligned} {\mathcal {V}}^{\mathrm {int}} = \sum _a V_a U_a(\varvec{F}_a) \end{aligned}$$
    (14)

    where \(U_a\) is the internal energy per unit volume in the reference state and \(V_a\) is the initial volume attributed to particle a. This term is commonly included in SPH (but not in the DEM).

  2. 2.

    The internal (strain) energy \({\mathcal {V}}^{\mathrm {cnt}}\) resulting from local (non-affine) deformation at each contact. Noting that both the local displacement vector \(\varvec{u}^{\mathrm {loc}}_{ab}\) and its normal and tangential components can be expressed in terms of \(\varvec{x}_{ab}\) and \(\varvec{y}_{ab}\) [compare Eqs. (7), (10) and (11)], we write

    $$\begin{aligned} {\mathcal {V}}^{\mathrm {cnt}} = \sum _{a<b} U_{ab}(\varvec{x}_{ab},\varvec{y}_{ab}). \end{aligned}$$
    (15)

    Here, \(U_{ab}\) represents the pairwise interaction energy and the sum extends over all pairs of nearest neighbours a and b. This term is typically not included in SPH, but the stabilisation of SPH proposed by Ganzenmuller [17] is of this form, albeit restricted to normal forces. It is also related to the stabilisation of state-based peridynamics models proposed by Littlewood [33] and Silling [49]. The DEM does, on the other hand, rely on pairwise contact forces, but inferred from the total rather than the local displacement [c.f. Eqs. (8) and (7)].

  3. 3.

    The external energy \({\mathcal {V}}^{\mathrm {ext}}\), which for simplicity here is stated for the action of a constant gravitational force \(\varvec{g}\),

    $$\begin{aligned} {\mathcal {V}}^{\mathrm {ext}} = - \sum _a m_a \varvec{x}_a \cdot \varvec{g}. \end{aligned}$$
    (16)

The Euler–Lagrange equations (for particle a) take the form (see, e.g. [22])

$$\begin{aligned} \mathchoice{\frac{\mathrm {d}{}}{\mathrm {d}{t}}}{\mathrm {d}{}/\mathrm {d}{t}}{\mathrm {d}{}/\mathrm {d}{t}}{\mathrm {d}{}/\mathrm {d}{t}}\left( \mathchoice{\frac{\partial \mathcal {L}}{\partial \varvec{v}_a}}{\partial \mathcal {L}/\partial \varvec{v}_a}{\partial \mathcal {L}/\partial \varvec{v}_a}{\partial \mathcal {L}/\partial \varvec{v}_a}\right) - \mathchoice{\frac{\partial \mathcal {L}}{\partial \varvec{x}_a}}{\partial \mathcal {L}/\partial \varvec{x}_a}{\partial \mathcal {L}/\partial \varvec{x}_a}{\partial \mathcal {L}/\partial \varvec{x}_a} = \varvec{0}. \end{aligned}$$
(17)

Hence, introducing the canonical momentum

$$\begin{aligned} \mathchoice{\frac{\partial \mathcal {L}}{\partial \varvec{v}_a}}{\partial \mathcal {L}/\partial \varvec{v}_a}{\partial \mathcal {L}/\partial \varvec{v}_a}{\partial \mathcal {L}/\partial \varvec{v}_a}=\mathchoice{\frac{\partial \mathcal {T}}{\partial \varvec{v}_a}}{\partial \mathcal {T}/\partial \varvec{v}_a}{\partial \mathcal {T}/\partial \varvec{v}_a}{\partial \mathcal {T}/\partial \varvec{v}_a}=m_a \varvec{v}_a, \end{aligned}$$
(18)

together with the internal, contact and external forces,

$$\begin{aligned}&\varvec{f}^{\mathrm {int}}_a = - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {int}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a},\nonumber \\&\varvec{f}^{\mathrm {cnt}}_a = - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {cnt}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a}, \nonumber \\&\varvec{f}^{\mathrm {ext}}_a = - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {ext}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a}, \end{aligned}$$
(19)

one obtains the equations of motion in the familiar form

$$\begin{aligned} m_a \mathchoice{\frac{\mathrm {d}{\varvec{v}_a}}{\mathrm {d}{t}}}{\mathrm {d}{\varvec{v}_a}/\mathrm {d}{t}}{\mathrm {d}{\varvec{v}_a}/\mathrm {d}{t}}{\mathrm {d}{\varvec{v}_a}/\mathrm {d}{t}} = \varvec{f}^{\mathrm {int}}_a + \varvec{f}^{\mathrm {cnt}}_a + \varvec{f}^{\mathrm {ext}}_a . \end{aligned}$$
(20)

The external force \(\varvec{f}^{\mathrm {ext}}_a\) is immediately obtained as

$$\begin{aligned} \varvec{f}^{\mathrm {ext}}_a = - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {ext}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {ext}}/\partial \varvec{x}_a} = m_a \varvec{g}. \end{aligned}$$
(21)

The internal and contact forces (\(\varvec{f}^{\mathrm {int}}_a\) and \(\varvec{f}^{\mathrm {cnt}}_a\), respectively) will be elaborated upon once the mean deformation gradient has been defined.

Fig. 3
figure 3

Definition of the sets of particles a \({\mathcal {P}}_a\) and b \({\mathcal {P}}_{a\beta }\) and of faces c \({\mathcal {F}}_a\) and d \({\mathcal {F}}_{ab}\) described in the text (color online)

4 The mean deformation gradient

As already mentioned, we define the discrete mean deformation gradient \(\varvec{F}_a\) as the average of the continuum deformation gradient (5) over the corresponding Delaunay cluster. To simplify the ensuing developments, we introduce the following notation, illustrated in Fig. 3: First, for a given particle a, we let \({\mathcal {P}}_a\) denote the set of all particles that form the vertices of the associated Delaunay cluster \({\mathcal {C}}_a\). Hence, for a not on the boundary, \({\mathcal {P}}_a\) corresponds to the set of nearest neighbours of a. For a on the boundary, \({\mathcal {P}}_a\) in addition contains particle a itself. Occasionally, it will be convenient to refer to the proper set of nearest neighbours of a certain particle a, which we denote as \({\mathcal {P}}'_a\). For particle a on the boundary, \({\mathcal {P}}'_a\) thus contains all particles in \({\mathcal {P}}_a\) except particle a itself. For particle a not on the boundary, \({\mathcal {P}}'_a\) and \({\mathcal {P}}_a\) coincide. Second, for a given face \(\beta \) of a Delaunay cluster \({\mathcal {C}}_a\), we let \({\mathcal {P}}_{a\beta }\) denote the set of particles that are located at the vertices of the face. Third, for a given particle a, we let \({\mathcal {F}}_a\) denote the set of all faces of the associated Delaunay cluster \({\mathcal {C}}_a\). Fourth, for a given particle b of a Delaunay cluster \({\mathcal {C}}_a\), we let \({\mathcal {F}}_{ab}\) denote the set of faces of \({\mathcal {C}}_a\) that have particle b as one of its vertices. With this notation in hand, we proceed with the derivation of the mean deformation gradient.

Using Eq. (5) and the divergence theorem, we obtain

$$\begin{aligned} \varvec{F}_a= & {} \frac{1}{V^{\mathrm {(c)}}_a} \int _{{\mathcal {C}}_a} \varvec{F} \, \mathrm {d}{V} = \frac{1}{V^{\mathrm {(c)}}_a} \int _{{\mathcal {C}}_a} {\text {Grad}}\varvec{\varphi }\,\, \mathrm {d}{V}\, \,\nonumber \\= & {} \frac{1}{V^{\mathrm {(c)}}_a} \int _{\partial {\mathcal {C}}_a} \varvec{\varphi } \otimes \hat{\varvec{N}} \, \mathrm {d}{A}, \end{aligned}$$
(22)

where \(\hat{\varvec{N}}\) is the referential unit outward normal to the surface \(\partial {\mathcal {C}}_a\) of \({\mathcal {C}}_a\). We let \(\partial {\mathcal {C}}_{a\beta }\) denote the planar faces that between them form \(\partial {\mathcal {C}}_a\), so that we can write

$$\begin{aligned} \varvec{F}_a = \frac{1}{V^{\mathrm {(c)}}_a} \sum _{\beta \in {\mathcal {F}}_a} \int _{\partial {\mathcal {C}}_{a\beta }} \varvec{\varphi } \otimes \hat{\varvec{N}} \, \mathrm {d}{A}. \end{aligned}$$
(23)

Since \(\hat{\varvec{N}}\) is constant in each of the integrals in Eq. (23), it suffices to integrate \(\varvec{\varphi }\) over the faces \(\partial {\mathcal {C}}_{a\beta }\). Assuming that \(\varvec{\varphi }(\varvec{X},t)\) varies linearly between the values \( \varvec{\varphi }(\varvec{X}_b,t)\) at the vertices, we obtain

$$\begin{aligned} \bar{\varvec{x}}_{a\beta } = \frac{1}{A_{a\beta }}\int _{\partial {\mathcal {C}}_{a\beta }} \varvec{\varphi } \, \mathrm {d}{A} = \frac{1}{n} \sum _{b \in {\mathcal {P}}_{a\beta }} \varvec{\varphi }(\varvec{X}_b,t) = \frac{1}{n} \sum _{b \in {\mathcal {P}}_{a\beta }} \varvec{x}_b, \end{aligned}$$
(24)

where \(A_{a\beta }\) is the area of the face \(\partial {\mathcal {C}}_{a\beta }\). Using Eq. (24) and introducing the referential area vector \(\varvec{A}_{a\beta } = A_{a\beta } \hat{\varvec{N}}_{a\beta }\), Eq. (23) takes the form

$$\begin{aligned} \varvec{F}_a = \frac{1}{V^{\mathrm {(c)}}_a} \sum _{\beta \in {\mathcal {F}}_a} \bar{\varvec{x}}_{a\beta } \otimes \varvec{A}_{a\beta }. \end{aligned}$$
(25)

Substituting Eq. (24) in Eq. (25) and interchanging the order of summations, we obtain

$$\begin{aligned} \varvec{F}_a= & {} \frac{1}{nV^{\mathrm {(c)}}_a} \sum _{\beta \in {\mathcal {F}}_a} \sum _{b \in {\mathcal {P}}_{a\beta }} \varvec{x}_b \otimes \varvec{A}_{a\beta } \nonumber \\= & {} \frac{1}{nV^{\mathrm {(c)}}_a} \sum _{b \in {\mathcal {P}}_a} \sum _{\beta \in {\mathcal {F}}_{ab}} \varvec{x}_b \otimes \varvec{A}_{a\beta }. \end{aligned}$$
(26)

Introduction of the referential vector

$$\begin{aligned} \varvec{B}_{ab} = \frac{1}{n(n+1)} \sum _{\beta \in {\mathcal {F}}_{ab}} \varvec{A}_{a\beta } \end{aligned}$$
(27)

yields the final result

$$\begin{aligned} \varvec{F}_a = \frac{1}{V_a} \sum _{b \in {\mathcal {P}}_a} \varvec{x}_b \otimes \varvec{B}_{ab} \end{aligned}$$
(28)

where we have used the fact that \(V_a = V^{\mathrm {(c)}}_a/(n+1)\). The thus defined vector \(\varvec{B}_{ab}\) has been referred to as the complementary area vector by Bagi [1]. However, we will henceforth refer to \(\varvec{B}_{ab}\) as the gradient vector, because of its strong similarity to the gradient vectors commonly employed in SPH (see below).

The gradient vectors exhibit a number of useful properties, as we next demonstrate. First, summation over the second index yields

$$\begin{aligned} \sum _{b \in {\mathcal {P}}_a} \varvec{B}_{ab}&= \frac{1}{n(n+1)} \sum _{b \in {\mathcal {P}}_a} \sum _{\beta \in {\mathcal {F}}_{ab}} \varvec{A}_{a\beta } \nonumber \\&= \frac{1}{n+1}\sum _{\beta \in {\mathcal {F}}_a} \varvec{A}_{a\beta } = \varvec{0} \end{aligned}$$
(29)

since the sum of outwards directed area vectors over any closed surface vanishes according to the divergence theorem. Similarly, provided that not both particle a and b are on the boundary of the domain \({\mathcal {D}}\),

$$\begin{aligned} \varvec{B}_{ab} + \varvec{B}_{ba} = \frac{1}{n(n+1)} \left( \sum _{\beta \in {\mathcal {F}}_{ab}} \varvec{A}_{a\beta } + \sum _{\alpha \in {\mathcal {F}}_{ba}} \varvec{A}_{b \alpha } \right) = \varvec{0} \end{aligned}$$
(30)

because the parenthesis contains a sum of outwards directed area vectors over a closed surface, which vanishes. Provided that not both particle a and b are on the boundary of the domain \({\mathcal {D}}\), we thus from Eqs. (29) and (30) conclude that the gradient vectors are antisymmetric and that the sum over either index vanishes, i.e. that \(\varvec{B}_{ba} = -\varvec{B}_{ab}\) and that

$$\begin{aligned} \sum _{a \in {\mathcal {P}}_b} \varvec{B}_{ab} = \sum _{b \in {\mathcal {P}}_a} \varvec{B}_{ab} =\varvec{0}. \end{aligned}$$
(31)

Equation (29) enables us to write Eq. (28) in the more symmetric form

$$\begin{aligned} \varvec{F}_a = \frac{1}{V_a} \sum _{b \in {\mathcal {P}}_a} \varvec{x}_{ab} \otimes \varvec{B}_{ab} \end{aligned}$$
(32)

where \(\varvec{x}_{ab} = \varvec{x}_b - \varvec{x}_a\) is the current branch vector for particles a and b. Since the deformation gradient reduces to the identity tensor \(\varvec{I}\) when the reference coordinates are substituted for the current coordinates in either of Eqs. (28) or (32), we immediately obtain the following duality relation

$$\begin{aligned} \frac{1}{V_a}\sum _{b \in {\mathcal {P}}_a} \varvec{X}_b \otimes \varvec{B}_{ab} = \frac{1}{V_a}\sum _{b \in {\mathcal {P}}_a} \varvec{X}_{ab} \otimes \varvec{B}_{ab} = \varvec{I} \end{aligned}$$
(33)

where \(\varvec{X}_{ab} = \varvec{X}_b - \varvec{X}_a\) is the referential branch vector.

Noting that the gradient vectors are referential and hence time independent, one immediately obtains

$$\begin{aligned} \dot{\varvec{F}}_a = \frac{1}{V_a} \sum _{b \in {\mathcal {P}}_a} \dot{\varvec{x}}_b \otimes \varvec{B}_{ab} = \frac{1}{V_a} \sum _{b \in {\mathcal {P}}_a} \varvec{v}_b \otimes \varvec{B}_{ab} \end{aligned}$$
(34)

where the superposed dot denotes the material time derivative and where \(\varvec{v}_b\) is the velocity of particle b. Hence, the velocity gradient \(\varvec{l}_a\) and the rate of deformation tensor \(\varvec{d}_a\) (see, e.g. [25]) can be determined as

$$\begin{aligned} \varvec{l}_a = \dot{\varvec{F}}_a \varvec{F}_a^{-1} \end{aligned}$$
(35)

and

$$\begin{aligned} \varvec{d}_a = \frac{1}{2} \left( \varvec{l}_a + \varvec{l}_a^{\mathrm {T}} \right) , \end{aligned}$$
(36)

respectively. The rate of deformation tensor can be used, e.g. to define viscous stresses.

5 Force evaluation

5.1 Preliminaries

For future reference, we notice that

$$\begin{aligned} \mathchoice{\frac{\partial \varvec{x}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a} = (\delta _{ca}-\delta _{ba}) \varvec{I}, \end{aligned}$$
(37)

where \(\delta _{ca}\) is the Kronecker delta. Using Eqs. (6) and (28) and the antisymmetry of \(\varvec{X}_{bc}\) (i.e. that \(\varvec{X}_{bc}=-\varvec{X}_{cb}\)), we may expand \(\varvec{y}_{bc} = \varvec{F}_{bc} \varvec{X}_{bc}\) as

$$\begin{aligned} \varvec{y}_{bc}&= \frac{1}{2}\left( \varvec{F}_b \varvec{X}_{bc} - \varvec{F}_c \varvec{X}_{cb} \right) \nonumber \\&= \frac{1}{2}\left( \sum _{d \in {\mathcal {P}}_b} H_{bcd} \varvec{x}_d - \sum _{d \in {\mathcal {P}}_c}H_{cbd} \varvec{x}_d \right) \end{aligned}$$
(38)

where

$$\begin{aligned} H_{bcd} = \frac{\varvec{X}_{bc} \cdot \varvec{B}_{bd}}{V_b}. \end{aligned}$$
(39)

Since \(H_{abc}\) is referential and thus independent of \(\varvec{x}_a\), this yields

$$\begin{aligned} \mathchoice{\frac{\partial \varvec{y}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a} = \frac{1}{2} ( H_{bca} - H_{cba} ) \varvec{I}. \end{aligned}$$
(40)

In order to evaluate the derivative of the mean deformation gradient, we resort to an orthonormal Cartesian coordinate system, with components labelled by i, j and k. Since \(\varvec{B}_{bc}\) is referential, we find using Eqs. (28) that

$$\begin{aligned} \mathchoice{\frac{\partial F^b_{jk}}{\partial x^a_i}}{\partial F^b_{jk}/\partial x^a_i}{\partial F^b_{jk}/\partial x^a_i}{\partial F^b_{jk}/\partial x^a_i} = \frac{1}{V_b} \sum _{c} \mathchoice{\frac{\partial x^c_j}{\partial x^a_i}}{\partial x^c_j/\partial x^a_i}{\partial x^c_j/\partial x^a_i}{\partial x^c_j/\partial x^a_i} B^{bc}_k = \frac{1}{V_b} \sum _{c} \delta _{ji} \delta _{ca} B^{bc}_k = \frac{1}{V_b} \delta _{ij} B^{ba}_k \end{aligned}$$
(41)

where the properties of the Kronecker delta have been used.

5.2 Internal force

From Eq. (19) and the chain rule, the internal force is obtained as

$$\begin{aligned} \varvec{f}^{\mathrm {int}}_a= & {} - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {int}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {int}}/\partial \varvec{x}_a} = -\sum _b V_b \mathchoice{\frac{\partial U_b}{\partial \varvec{F}_b}}{\partial U_b/\partial \varvec{F}_b}{\partial U_b/\partial \varvec{F}_b}{\partial U_b/\partial \varvec{F}_b} : \mathchoice{\frac{\partial \varvec{F}_b}{\partial \varvec{x}_a}}{\partial \varvec{F}_b/\partial \varvec{x}_a}{\partial \varvec{F}_b/\partial \varvec{x}_a}{\partial \varvec{F}_b/\partial \varvec{x}_a} \nonumber \\= & {} -\sum _b V_b \varvec{P}_b : \mathchoice{\frac{\partial \varvec{F}_b}{\partial \varvec{x}_a}}{\partial \varvec{F}_b/\partial \varvec{x}_a}{\partial \varvec{F}_b/\partial \varvec{x}_a}{\partial \varvec{F}_b/\partial \varvec{x}_a} \end{aligned}$$
(42)

where the colon indicates double contraction and where

$$\begin{aligned} \varvec{P}_b = \mathchoice{\frac{\partial U_b}{\partial \varvec{F}_b}}{\partial U_b/\partial \varvec{F}_b}{\partial U_b/\partial \varvec{F}_b}{\partial U_b/\partial \varvec{F}_b} \end{aligned}$$
(43)

is the first Piola–Kirchhoff stress tensor for particle b. Using Eq. (41) in Eq. (42), expressed in component form, we obtain

$$\begin{aligned} (f^{\mathrm {int}})^a_i =-\sum _b V_b P^b_{jk} \mathchoice{\frac{\partial F^b_{jk}}{\partial x^a_i}}{\partial F^b_{jk}/\partial x^a_i}{\partial F^b_{jk}/\partial x^a_i}{\partial F^b_{jk}/\partial x^a_i} =-\sum _b P^b_{ik} B^{ba}_k . \end{aligned}$$
(44)

Hence, in direct notation,

$$\begin{aligned} \varvec{f}^{\mathrm {int}}_a = -\sum _{b \in {\mathcal {P}}_a} \varvec{P}_b \varvec{B}_{ba}, \end{aligned}$$
(45)

where we have explicitly indicated that the sum is to be taken over the set of nearest neighbours to particle a (including particle a itself if the particle is located on the boundary).

One can note that the internal forces vanish for a constant stress field provided that the sum of the gradient vectors over the first index vanishes. Hence, fulfilment of Eq. (31) for particles not on the boundary is required for satisfaction of the patch test. This is nothing else than the integration constraint derived by Chen et al. [7] (see also [42]).

Each term can be made antisymmetric as follows:

$$\begin{aligned} \varvec{f}^{\mathrm {int}}_a = \sum _{b \in {\mathcal {P}}_a} \left( \varvec{P}_a \varvec{B}_{ab} - \varvec{P}_b \varvec{B}_{ba} \right) , \end{aligned}$$
(46)

since the sum of the added terms vanishes as a result of Eq. (29). Hence, we may interpret

$$\begin{aligned} \varvec{f}^{\mathrm {int}}_{ab} = \varvec{P}_a \varvec{B}_{ab} - \varvec{P}_b \varvec{B}_{ba}. \end{aligned}$$
(47)

as the contribution to the internal force on particle a due to contact with particle b.

5.3 Contact force

From Eq. (19) and the chain rule, the contact force is obtained as

$$\begin{aligned} \varvec{f}^{\mathrm {cnt}}_a= & {} - \mathchoice{\frac{\partial {\mathcal {V}}^{\mathrm {cnt}}}{\partial \varvec{x}_a}}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a}{\partial {\mathcal {V}}^{\mathrm {cnt}}/\partial \varvec{x}_a} = -\sum _{b<c} \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_a}}{\partial U_{bc}/\partial \varvec{x}_a}{\partial U_{bc}/\partial \varvec{x}_a}{\partial U_{bc}/\partial \varvec{x}_a} \nonumber \\= & {} -\sum _{b<c} \left( \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_{bc}}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}\cdot \mathchoice{\frac{\partial \varvec{x}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a} + \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}\cdot \mathchoice{\frac{\partial \varvec{y}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a} \right) . \end{aligned}$$
(48)

Inserting the expressions for \(\mathchoice{\frac{\partial \varvec{x}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}{\partial \varvec{x}_{bc}/\partial \varvec{x}_a}\) and \(\mathchoice{\frac{\partial \varvec{y}_{bc}}{\partial \varvec{x}_a}}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}{\partial \varvec{y}_{bc}/\partial \varvec{x}_a}\) provided by Eqs. (37) and (40), respectively, one obtains

$$\begin{aligned} \varvec{f}^{\mathrm {cnt}}_a = -\sum _{b<c} \left[ (\delta _{ca}-\delta _{ba}) \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_{bc}}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}} + \frac{1}{2} ( H_{bca} - H_{cba} ) \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}} \right] . \end{aligned}$$
(49)

Noting that the derivative \(\mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_{bc}}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}\) and \(\mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}\) and the pre-factors \(\delta _{ca}-\delta _{ba}\) and \(H_{bca} - H_{cba}\) all change sign when b and c are interchanged, the sum over all particle pairs \(b<c\) is converted to a double sum over nearest neighbours b and c. Moreover, exploiting the properties of the Kronecker delta, the final result is obtained as

$$\begin{aligned} \varvec{f}^{\mathrm {cnt}}_a = \sum _{b \in {\mathcal {P}}'_a} \mathchoice{\frac{\partial U_{ab}}{\partial \varvec{x}_{ab}}}{\partial U_{ab}/\partial \varvec{x}_{ab}}{\partial U_{ab}/\partial \varvec{x}_{ab}}{\partial U_{ab}/\partial \varvec{x}_{ab}} - \sum _{b \in {\mathcal {P}}_a} \sum _{c \in {\mathcal {P}}'_b} \tilde{H}_{bca} \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}} , \end{aligned}$$
(50)

where \(\tilde{H}_{bca} = H_{bca}/2\) has been introduced for convenience. Here we have written \({\mathcal {P}}'_a\) and \( {\mathcal {P}}'_b\) to indicate the proper set of nearest neighbours of a and b, respectively.

6 Constitutive equations

6.1 Material model

We assume a neo-Hookean material model with strain energy

$$\begin{aligned} U^{\mathrm {int}}_b = \frac{\lambda }{2} \left( \ln J_b \right) ^2 - \mu \ln J_b + \frac{\mu }{2} \left( {{\,\mathrm{tr}\,}}\varvec{C}_b - 3 \right) \end{aligned}$$
(51)

where \(\varvec{C}_b = \varvec{F}_b^{\mathrm {T}}\varvec{F}_b\) is the mean right Cauchy–Green deformation tensor for particle b and \(J_b = \det \varvec{F_b} = \left( \det \varvec{C}_b\right) ^{1/2}\). Using standard solid mechanics results (see, e.g. [25]) one obtains the second Piola–Kirchhoff stress tensor \(\varvec{S}_b\) as

$$\begin{aligned} \varvec{S}_b = 2\mathchoice{\frac{\partial U^{\mathrm {int}}_b}{\partial \varvec{C}_b}}{\partial U^{\mathrm {int}}_b/\partial \varvec{C}_b}{\partial U^{\mathrm {int}}_b/\partial \varvec{C}_b}{\partial U^{\mathrm {int}}_b/\partial \varvec{C}_b} = \left( \lambda \ln J_b - \mu \right) \varvec{C}_b^{-\mathrm {T}} + \mu \varvec{I} \end{aligned}$$
(52)

where \(\varvec{C}_b^{-\mathrm {T}}\) is the transpose of the inverse right Cauchy–Green deformation tensor and \(\varvec{I}\) is the second-order identity tensor. Moreover, the first Piola–Kirchhoff stress tensor \(\varvec{P}_b\) is obtained as

$$\begin{aligned} \varvec{P}_b = \varvec{F}_b\varvec{S}_b = \left( \lambda \ln J_b - \mu \right) \varvec{F}_b^{-\mathrm {T}} + \mu \varvec{F}_b . \end{aligned}$$
(53)

The first Piola–Kirchhoff stress is used to calculate the internal force via Eq. (45). The Lamé parameters may be expressed as

$$\begin{aligned} \lambda = \frac{\nu E}{(1+\nu )(1-2\nu )} ~~\text {and} ~~ \mu = \frac{E}{2(1+\nu )} \end{aligned}$$
(54)

where E is Young’s modulus and \(\nu \) Poisson’s ratio. We also note that the longitudinal (primary) and the transverse (secondary) wave speeds are obtained as

$$\begin{aligned} c_{\mathrm {p}}= \sqrt{\frac{\lambda + 2\mu }{\rho }} ~~\text {and} ~~ c_{\mathrm {s}}= \sqrt{\frac{\mu }{\rho }}, \end{aligned}$$
(55)

respectively.

6.2 Contact model

We will here assume a linearly elastic contact model with normal and tangential stiffness \(K^{\mathrm {n}}_{ab}=K^{\mathrm {n}}_{ba}\) and \(K^{\mathrm {t}}_{ab}=K^{\mathrm {t}}_{ba}\) for contact between the nearest neighbours a and b. Hence the contact energy is written

$$\begin{aligned} U_{ab}= & {} \frac{1}{2} K^{\mathrm {n}}_{ab}\left|\varvec{u}^{\mathrm {loc,n}}_{ab} \right|^2 + \frac{1}{2} K^{\mathrm {t}}_{ab} \left|\varvec{u}^{\mathrm {loc,t}}_{ab} \right|^2 \end{aligned}$$
(56)

Using Eqs. (10) and (11), we thus obtain

$$\begin{aligned} \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_{bc}}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}&= K^{\mathrm {n}}_{bc} \varvec{u}^{\mathrm {loc,n}}_{bc} + K^{\mathrm {t}}_{bc} \varvec{u}^{\mathrm {loc,t}}_{bc} \nonumber \\&\quad + \left( K^{\mathrm {n}}_{bc} - K^{\mathrm {t}}_{bc} \right) \frac{\left( \varvec{u}^{\mathrm {loc}}_{bc}\cdot \varvec{x}_{bc}\right) }{\left|\varvec{x}_{bc} \right|^2} \varvec{u}^{\mathrm {loc,t}}_{bc} \end{aligned}$$
(57)

and

$$\begin{aligned} \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}} =- \left( K^{\mathrm {n}}_{bc} \varvec{u}^{\mathrm {loc,n}}_{bc} + K^{\mathrm {t}}_{bc} \varvec{u}^{\mathrm {loc,t}}_{bc} \right) . \end{aligned}$$
(58)

In the special case that the normal and tangential contact stiffness coincide, i.e. when \(K^{\mathrm {n}}_{ab} = K^{\mathrm {t}}_{ab} = K_{ab}\), the above equations reduce to

$$\begin{aligned} U_{ab}&= \frac{1}{2} K_{ab} \left|\varvec{u}^{\mathrm {loc}}_{ab} \right|^2 , \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{x}_{bc}}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}}{\partial U_{bc}/\partial \varvec{x}_{bc}} = K_{bc} \varvec{u}^{\mathrm {loc}}_{bc}\nonumber \\&\quad \text {and}\quad \mathchoice{\frac{\partial U_{bc}}{\partial \varvec{y}_{bc}}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}}{\partial U_{bc}/\partial \varvec{y}_{bc}} = -K_{bc}\varvec{u}^{\mathrm {loc}}_{bc}. \end{aligned}$$
(59)

In this work, the normal and tangential contact stiffness are expressed as

$$\begin{aligned} K^{\mathrm {n}}_{bc} = \xi _{\mathrm {n}} \frac{E A_{bc}}{L_{bc}}~~\text {and}~~ K^{\mathrm {t}}_{bc} = \xi _{\mathrm {t}} \frac{G A_{bc}}{L_{bc}} \end{aligned}$$
(60)

where E is Young’s modulus and \(G=\mu \) is the shear modulus. Two geometric quantities are included, namely \(A_{bc} =4 \times (\left|\varvec{B}_{bc} \right|+\left|\varvec{B}_{cb} \right|)/2\), which is an estimate of the area of the interface between particle b and c [cf. Eq. (27)] and \(L_{bc} = \left|\varvec{X}_{bc} \right|\), which is the initial distance between particle b and c. Finally, \(\xi _{\mathrm {n}}\) and \(\xi _{\mathrm {t}}\) are non-dimensional parameters.

6.3 Artificial viscosity

An artificial viscosity can be used to reduce oscillations in shock-dominated problems [39, 40]. We here use a viscous (Cauchy) stress of the form [37]

$$\begin{aligned} \varvec{\sigma }^{\mathrm {visc}} = \rho \left( c_1 c_{\mathrm {p}} h + c_2 h^2 \left|{{\,\mathrm{tr}\,}}\varvec{d} \right| \right) \varvec{d} \end{aligned}$$
(61)

where \(c_1\) and \(c_2\) are two non-dimensional constants, \(c_{\mathrm {p}}\) the longitudinal wave speed and h is a characteristic size, here taken as the minimum length of the referential branch vectors. The viscous stress is incorporated as an addition to the elastic first Piola-Kirchhoff stress, obtained as (see, e.g. [25])

$$\begin{aligned} \varvec{P}^{\mathrm {visc}} = J \varvec{\sigma }^{\mathrm {visc}} \varvec{F}^{-\mathrm {T}} = \rho J \left( c_1 c_{\mathrm {p}} h + c_2 h^2 \left|{{\,\mathrm{tr}\,}}\varvec{d} \right| \right) \varvec{d} \, \varvec{F}^{-\mathrm {T}}. \end{aligned}$$
(62)

This type of dissipation can also be added constitutively, i.e. be considered to be part of the material rather than algorithmic behaviour [44]. When artificial viscosity is included, the sum of the elastic and viscous first Piola–Kirchhoff stress, Eqs. (53) and (62), is used to calculate the internal force via Eq. (45).

7 Implementation details

Based on the initial particle arrangement, a Delaunay tetrahedralisation was obtained using Tetgen, developed and maintained by Si [47]. As is commonly done in SPH [38], a standard leapfrog scheme was used to integrate the equations of motion in time. When damping was applied, the velocity was calculated as described in [15].

8 Numerical tests and examples

As described in Sect. 2.1, it is assumed that the computational domain can be decomposed into simplices with particles as vertices but the particle placement is otherwise arbitrary. In practice, however, it is preferable to avoid very short inter-particle distances, since the stable time step is proportional to the minimum particle separation when a Courant–Friedrichs–Lewy condition is used [8]. In all numerical tests and examples, the initial particle positions were based on a regular cubic lattice. In most of the examples, randomness was introduced by perturbing the particles in all directions, while respecting the location of faces and edges, by an amount not exceeding 25% of the regular particle spacing in each direction. The constitutive equations summarised in Sect. 6 were used throughout.

Fig. 4
figure 4

Setup for the patch test. Particles are displayed as red spheres and bonds as black lines (color online)

Table 1 Results obtained from the patch test

8.1 Patch test

The patch test in the forms described by Taylor et al. [53] was utilised to assess the basic characteristics of the proposed method. As illustrated in Fig. 4, an irregular arrangement of \(4 \times 4 \times 4\) particles was used to represent a cubic specimen with a \(10 \,{\hbox {mm}}\) side. For clarity, the particles are in this example displayed as red spheres and the bonds or contacts between them as black solid lines. The material parameters are \(E ={7.0}{\hbox {GPa}}\), \(\nu = 0.25\) and \(\rho = {1.0 \times 10^{3}}\,{\hbox {kg}/\hbox {m}^3}\) and the contact parameters as set to unity (i.e. \(\xi _{\mathrm {n}}=\xi _{\mathrm {t}}=1\)). Following [55], the displacement field is postulated as

$$\begin{aligned} \varvec{u} = u_0 \begin{pmatrix} 2X_1 + X_2 + X_3 \\ X_1 + 2X_2 + X_3 \\ X_1 + X_2 + 2X_3 \\ \end{pmatrix} \end{aligned}$$
(63)

where \(u_0 = {5\times 10^{-4}}\). In test A, the displacement is prescribed for all particles and force equilibrium is tested for internal particles. In test B, the displacement is prescribed for all boundary particles, and the displacement error is determined for internal particles. In test C, a minimal number of essential boundary conditions needed to avoid rigid body translation or rotation are enforced and the traction corresponding to the displacement field (63) is prescribed on all boundaries. Specifically, all displacement components were prescribed on one corner particle and the vertical displacement was prescribed on two additional corner particles. Since an explicit solver was used, the displacements and/or loads were applied gradually during 5 ms for tests B and C and damping was used to obtain a static solution. The results obtained are summarised in Table 1. The magnitude of the error is somewhat larger in test A than in tests B and C, because a minute error in displacement is translated into a significantly larger error in force as a result of the relatively high Young’s modulus. Nevertheless, all three forms of the patch test are passed. This result is anticipated, since the gradient vectors fulfill the integration constraint [7, 42] expressed by Eq. (31).

Fig. 5
figure 5

Normalised displacement error (in the \(L_2\) norm) versus mean particle spacing for the swinging-cube test

Fig. 6
figure 6

Location and shape of free bending and rotating beam at the indicated times (color online)

8.2 Swinging cube

The purpose of this test is to assess the convergence of the proposed method in a dynamic three-dimensional setting. A cube with side-length \(L = 1\, {\hbox {m}}\) is considered, occupying the referential domain \(0 \le X_1,X_2,X_3 \le 1\, {\hbox {m}}\). Zero normal displacement is enforced for \(X_1 = X_2 = X_3 =0\) (symmetric boundary conditions) whereas zero tangential displacement is enforced for \(X_1 = X_2 = X_3 =1\) (anti-symmetric boundary conditions). The following analytic solution for the displacement field \(\varvec{u}\) is valid [3, 46]

$$\begin{aligned} \varvec{u} = \cos ( \omega t ) \begin{bmatrix} U_1\sin ( k X_1 ) \cos ( k X_2 ) \cos ( k X_3 ) \\ U_2\cos ( k X_1 ) \sin ( k X_2 ) \cos ( k X_3 ) \\ U_3\cos ( k X_1 ) \cos ( k X_2 ) \sin ( k X_3 ) \end{bmatrix} \end{aligned}$$
(64)

provided that the magnitude of the oscillation is sufficiently small and that the amplitude coefficients fulfill the auxiliary condition \(U_1 + U_2 + U_3=0\). Here, \(\omega = \sqrt{3}\pi c_{\mathrm {s}}/(2L)\) and \(k = \pi /(2L)\). Specifically, we let \(U_1 = U_2 = {5.0\times 10^{-4}}\,{\hbox {m}}\) and \(U_3 = -{1.0\times 10^{-3}}\,{\hbox {m}}\) and prescribe the initial displacement (and velocity) according to Eq. (64). As previously done [3], the error of the numerical solution after \({2\times 10^{-3}}\,{\hbox {s}}\) was benchmarked against the analytical result. The material parameters are \(E = 17.0 \, {\hbox {MPa}}\), \(\nu = 0.3\) and \(\rho = {1.1\times 10^{3}}\,{\hbox {kg}/\hbox {m}^3}\) and the contact parameters are set to unity (\(\xi _{\mathrm {n}}=\xi _{\mathrm {t}}=1\)). Figure 5 displays the normalised displacement error, measured in the \(L_2\) norm, as a function of the mean particle spacing. The displacement is seen to exhibit a quadratic convergence towards the correct solution. This result is anticipated for a linearly consistent method, since the truncation error then will be of second order.

Fig. 7
figure 7

a Components of linear and angular momentum (denoted by \(p_1\), \(p_2\), \(p_3\) and \(\ell _1\), \(\ell _2\), \(\ell _3\), respectively) and b magnitude of change in each momentum component from its initial value (color online)

Fig. 8
figure 8

Coordinates of the top right free corner of an oscillating cantilever beam as a function of time for four different mean particle densities (color online)

Fig. 9
figure 9

Deformed shape of a cantilever beam after \(0.5\,{\hbox {s}}\) for four different particle densities: a \(2/{\hbox {m}}\), b \(4/{\hbox {m}}\), c \(8/{\hbox {m}}\) and d \(16/{\hbox {m}}\) (color online)

8.3 Bending and rotation of free beam

The purpose of this test is to assess the momentum-preservation properties of the proposed method. A beam of length \(6\, {\hbox {m}}\), with a square cross section (side length \(1\,{\hbox {m}}\)) is considered, occupying the referential domain \(-\,0.5 \,{\hbox {m}} \le X_1,X_2 \le 0.5\) m and \(0 \le X_3 \le 6\) m. The beam is free, i.e. no tractions or displacements are prescribed. The initial velocity is

$$\begin{aligned} \varvec{v} = v_0 \begin{pmatrix} 1+\left( \frac{X_3}{L}\right) ^2 \\ 0 \\ 0 \end{pmatrix}, \end{aligned}$$
(65)

where \(v_0 = {10}\,{\hbox {m}/\hbox {s}}\) (the superposed constant velocity is used to more clearly display the location of the beam at various times). The material parameters are \(E = 1.0 \, {\hbox {MPa}}\), \(\nu = 0.3\) and \(\rho = {1.1\times 10^{3}}\,{\hbox {kg}/\hbox {m}^3}\) and the contact parameters as set to unity (\(\xi _{\mathrm {n}}=\xi _{\mathrm {t}}=1\)). The nonzero linear and angular momentum components (with respect to the origin) can readily be calculated analytically as \(p_1 = {8.8\times 10^{4}}\,{\hbox {kg~m}/\hbox {s}}\) and \(\ell _2 = {2.97\times 10^{5}} \,{\hbox {kg~m}^2/\hbox {s}}\). The location and shape of the beam at certain instants of time are displayed in Fig. 6. Since the Young’s modulus is relatively small, the beam is seen to undergo a pronounced bending in addition to translational and rotational motion. In Fig. 7a, the linear and angular momentum components are shown as a function of time. As a result of collocation of mass, the numerically computed momentum components differed slightly from their analytical counterparts (e.g. \(p_1 \approx {8.802\times 10^{3}}\,{\hbox {kg~m}/\hbox {s}}\) and \(\ell _2 \approx {2.972\times 10^{5}} \,{\hbox {kg~m}^2/\hbox {s}}\) initially), but this difference is too small to be noticeable in the figure. In Fig. 7b, the magnitude of the change in each momentum component from its initial value is displayed on a logarithmic scale. The magnitude of the change is \(\lesssim {1\times 10^{-9}} \,{\hbox {kg~m}^2/\hbox {s}}\) for \(\ell _2\), \(\lesssim {1\times 10^{-10}}\,{\hbox {kg~m}/\hbox {s}}\) for \(p_1\) and one to two orders of magnitude smaller for the remaining components. Hence, both the linear and angular momentum can for all practical purposes be considered to be conserved. This result is anticipated, since the equations of motion have been derived from a discrete Lagrangian.

Fig. 10
figure 10

Deformed shape of a rectangular block at maximum punch displacement for four different particle densities: a \(3/{\hbox {mm}}\), b \(6/\hbox {mm}\), c \(9/\hbox {mm}\) and d \(12/\hbox {mm}\) (color online)

8.4 Large-amplitude vibrations of cantilever beam

In this example, a cantilever beam of length \(6\,{\hbox {m}}\) with a square cross section (side length \(1\,{\hbox {m}}\)) is considered, occupying the referential domain \(-\,0.5 \,{\hbox {m}} \le X_2,X_3 \le 0.5\, {\hbox {m}}\) and \(0 \le X_1 \le 6\,{\hbox {m}}\). The beam is clamped at \(X_1 =0\) (i.e. zero displacement is prescribed) and all other boundaries are free. The initial velocity of the beam increases with increasing distance from the clamped end, according to

$$\begin{aligned} \varvec{v} = v_0 \begin{pmatrix} 0 \\ 0 \\ \frac{X_1}{L} \end{pmatrix}, \end{aligned}$$
(66)

with \(v_0 = {10}\,{\hbox {m}/\hbox {s}}\), so that the beam undergoes large-amplitude oscillations in the \(X_1-X_3\) plane. The material parameters are \(E = 17.0\) MPa, \(\nu = 0.3\) and \(\rho = {1.1\times 10^{3}}\,{\hbox {kg}/\hbox {m}^3}\) and the contact parameters are set to unity (\(\xi _{\mathrm {n}}=\xi _{\mathrm {t}}=1\)). Figure 8 displays the coordinates of the top right corner of the free end as a function of time for four different particle densities (\(2/{\hbox {m}}\), \(4/{\hbox {m}}\), \(8/{\hbox {m}}\) and \(16/{\hbox {m}}\)). The period of oscillation is somewhat too small for the lowest particle density, indicating a too stiff response, but the results are similar for the remaining particle densities. The deformed shape of the beam after \({0.5}\,{\hbox {s}}\), which corresponds the maximal deflection (see Fig. 8), is provided in Fig. 9. The results are virtually identical for particle densities \(\ge 4/{\hbox {m}}\) but the deflection is somewhat smaller for the lowest particle density (\(2/{\hbox {m}}\)) and the stress is less uniform in this case.

Fig. 11
figure 11

Vertical force vs. punch displacement for four different particle densities

8.5 Punch problem

In this example, the central part of a rectangular block with dimensions \(2 \times 2 \times 1 \, {\hbox {mm}}\) (length \(\times \) width \(\times \) height) is compressed by a square punch with \(2/3 \, {\hbox {mm}}\) side length. Compression is done under displacement control at a rate of \(0.1 \, {\hbox {mm/s}}\) for \(5 \, {\hbox {s}}\), resulting in a maximal punch displacement of \(0.5 \,{\hbox {mm}}\). The bottom face of the block is kept fixed. The material parameters are \(E = 240 \,{\hbox {MPa}}\), \(\nu = 0.4\) and \(\rho = {1.0\times {10}^3}\,{\hbox {kg/m}}^{3}\) and the contact parameters are set to unity (\(\xi _{\mathrm {n}}=\xi _{\mathrm {t}}=1\)). No damping was used. Considering the symmetry of the problem, only one quarter is considered, occupying the referential domain \(0 \le X_1,X_2,X_3 \le 1\, {\hbox {mm}}\). Zero normal displacement is enforced for \(X_1 = X_2=0\) (symmetric boundary conditions). A regular particle arrangement was used in order to be able to clearly see any tendency for hourglassing. The deformed shape at maximal punch displacement for four different particle densities (\(3/{\hbox {mm}}\), \(6/{\hbox {mm}}\), \(9/{\hbox {mm}}\) and \(12/{\hbox {mm}}\)) are displayed in Fig. 10. The overall shape of the block is similar in all cases, but the significant deformation in the vicinity of the punch boundary cannot be resolved unless a relatively high particle density is used. No tendency for hourglassing can be seen, indicating that the contact forces provided sufficient stabilisation in this case. The total vertical (punch) force is displayed as a function of punch displacement in Fig. 11. Consistent with the qualitative observations made above, the results obtained indicate that a relatively large particle density (at least \(10/{\hbox {mm}}\)) is required to obtain an adequate solution.

9 Conclusions

The most widely accepted Delaunay-based strain definition for granular media has been translated into a particle-based method for simulation of the mechanics of continua. The structure of the method resembles the one obtained from smoothed particle hydrodynamics or peridynamics. The determination of the deformation gradient is based on an underlying tetrahedral mesh, resulting in a formulation that is linearly consistent and satisfies the patch test. Only nearest-neighbour interactions are considered, which considerably simplifies the implementation of boundaries. The interactions between particles are assumed to have two components: The first component originates from the mean stress that results from the affine (global) particle deformation (as per the standard smoothed-particle hydrodynamics). The second part emerges from non-affine (local) deformation of the contact between any two particles (in a similar manner as for the discrete element method). The particle interactions are derived from a discrete Lagrangian, thus ensuring that linear and angular momentum are conserved in the absence of external forces or torques. The performance of the method has been demonstrated in a number of numerical examples. This work can be considered a first step towards the development of a macroscopically consistent discrete method for granular materials.