1 Introduction

Whenever one wants to simulate many-body behaviour of granular matter, atomistic or continuum models resolving the sub-grain physics are usually an overkill, little instructive and computationally too expensive. Instead, one uses phenomenological grain-based models. In order to render them predictive, they must be underpinned by a scale-bridging scheme to represent the microscopic physics accurately on the grain scale [1]. For the normal force between viscoelastic spherical particles, this has been achieved [2, 3]. The implementation of solid friction, however, is less well understood. It is most commonly modelled by the so called spring-dashpot-slider (SDS). Likewise, rolling and twisting torques in general use the same approach, as, for instance, implemented in the widely utilised simulation software LAMMPS [4].

The prominence of the SDS does not come as a surprise, considering the simplicity of the idea and its ability to predict many observed features of granular matter. The model describes the contact in one of two states: Either the contact is sticking – the contact interaction is modelled as a damped harmonic oscillator (spring-dashpot) – or, if a certain threshold for the force/torque is exceeded, the contact is sliding.

In spite of its wide and largely successful use, the SDS can produce unphysical results under certain conditions, as will be pointed out in the following. This fact has remained essentially unnoticed, but becomes detrimental, e.g., for simulations of granular gases.

To understand the problems of the current version of the SDS, we need to review this model in some detail. We limit the discussion in this paper to contact forces; however, the application of these findings to torques is straight forward [5]. We will start with the sticking state. In the SDS model, the elastic deformation of the material is not spatially resolved, but represented by the displacement vector \(\varvec{\xi }\) of a tangential spring: The reaction force of the viscoelastic material deformation, \(\varvec{F}\), corresponds to the force \(\varvec{F}_\textrm{S}\) of a spring with stiffness k and damping factor \(\gamma \). All vectors are understood to be in the tangential plane of the contact. This implies that the displacement vector must be rotated back into the contact plane every time it is updated (cf. [5]).

Special care is required for the discussion of relative velocities. We must distinguish between the relative velocity of the surface under the assumption that the material is not deforming and the real microscopic slip velocity, which is zero in the sticking state by definition. The former velocity, typically called relative tangential velocity or just relative velocity, \(\varvec{v}\), is currently used in the SDS for the force calculation, i.e.

$$\begin{aligned} \varvec{F}_\textrm{S} := -k \varvec{\xi } - \gamma \varvec{v}. \end{aligned}$$
(1)

As long as the contact is not sliding, the loading velocity \(\dot{\varvec{\xi }}\) is equal to the relative velocity of the two surfaces in contact, yielding the spring’s time evolution

$$\begin{aligned} \dot{\varvec{\xi }} := \frac{\text {d}\varvec{\xi }}{\text {d}t} = \varvec{v}. \end{aligned}$$
(2)

According to the Coulomb friction law, the viscoelastic deformation of the two bodies in contact can only prevent sliding as long as the absolute value of the reaction force \(F = |\varvec{F}|\) does not exceed \(F_\textrm{max} = \mu F_\textrm{n}\), where \(F_\textrm{n}\) denotes the (positive) normal contact force and \(\mu \) the friction coefficient (we do not distinguish between static and dynamic friction coefficients here). Once the contact starts sliding, the absolute value of the tangential contact force is \(F=F_\textrm{max}\). A larger reaction force cannot be transmitted from one side of the contact to the other. This rules out the simultaneous validity of (2) and \(\varvec{F}=\varvec{F}_\textrm{S}\) while sliding.

Therefore, the question arises, how the spring displacement is updated while the contact is sliding. Unfortunately, there exists no satisfying answer in the literature. In most cases, it is either said that the spring displacement is updated according to (2) without specifying a different formula for sliding contacts (e.g., Jiang et al. [6], Marshall [7]), giving up the physical interpretation of the spring force, or the spring displacement update is not mentioned at all. Simply integrating the spring displacement according to (2) without any physical meaning is not convincing, though. Luding [5] and Silbert et al. [8], on the other hand, discard (2) and determine the spring displacement in such a way that \(F_\textrm{S} = F_\textrm{max}\) is satisfied. Silbert et al. propose to truncate the magnitude of the displacement, i.e. \(\xi := |\varvec{\xi }|\); however, by only changing the magnitude of the vector, it is, in general, not possible to satisfy the condition \(F_\textrm{S}=F_\textrm{max}\), e.g. if \(\gamma |\varvec{v}| > F_\textrm{max}\). In contrast, Luding proposes to set the displacement to

$$\begin{aligned} \varvec{\xi }_\textrm{D} = -\frac{1}{k}\left( F_\textrm{max} \frac{\varvec{F}_\textrm{S}}{F_\textrm{S}} + \gamma \varvec{v} \right) , \end{aligned}$$
(3)

keeping the definition of \(\varvec{F}_\textrm{S}\) as given in (1). We will call this model the discontinuous spring-dashpot-slider (D-SDS), which is the common implementation, used, e.g., in LAMMPS [4].

While the spring displacement \(\varvec{\xi }_\textrm{D}\) indeed satisfies \(F_\textrm{S} = F_\textrm{max}\), there are a couple of problems related to this approach. For the discussion of these problems, we consider a newly formed contact, i.e. a contact that has no finite spring displacement yet, and a large relative velocity so that \(\gamma |\varvec{v}|>F_\textrm{max}\), as an example. This means that the contact must be sliding from the beginning, as the viscous shear stress (represented by the damping force opposing the build-up of elastic deformation) would exceed what a sticking contact could bear. We want to emphasize that this is not a particularly exotic case; it is quite the opposite: Every new contact starts with \(F_\textrm{n} = F_\textrm{max} = 0\) and is, therefore, always sliding, as long as \(v>0\) (cf., e.g., Schwager et al. [9]). Thus, the D-SDS instantly sets the spring displacement of every new contact to \(\varvec{\xi }= -\gamma \varvec{v} / k\).

We have identified three problems with this model, which we briefly address at this point and will return to them later in Section 3. First, as the spring displacement term in (1) must partially compensate the large velocity term (as specified in (3)), it may happen that the spring is loaded in the opposite direction of the velocity, as in our example. However, this goes against the physical interpretation of what this spring should represent. Second, adjusting the spring displacement instantaneously to fulfill (3) does, of course, not correspond to a continuous change in general. This has a negative impact on higher order integration schemes.

And most importantly, instantaneously loading the spring also instantaneously increases the potential energy of the system. This increase is, however, not met with a sufficient reduction of kinetic energy, which means that the total energy of the system spontaneously increases! In this work, we propose a simple model for a continuous spring-dashpot-slider (C-SDS), which fixes all three problems mentioned above.

2 Continuous spring-dashpot-slider (C-SDS) model

In Section 2.1, we derive the C-SDS based on a consequent discrimination between the relative tangential velocity, the loading velocity and the microscopic slip velocity. Then, we discuss three sanity checks to confirm that our model meets the physical expectations in Section 2.2.

2.1 Derivation of the C-SDS

In the sticking state, the only contribution to \(\varvec{v}\) results from the build-up or release of elastic deformation within the adjacent materials. It is represented by the spring loading velocity \(\dot{\varvec{\xi }}\). Both have to be distinguished from a slip velocity \(\varvec{s}\) between the actual surfaces, which must be zero in the sticking state. In the sliding state, \(\varvec{s}\) is non-zero and given by:

$$\begin{aligned} \varvec{s} = \varvec{v} - \dot{\varvec{\xi }}. \end{aligned}$$
(4)

It is this slip velocity which determines the direction of the friction force via

$$\begin{aligned} \varvec{F} = -F_\textrm{max} \frac{\varvec{s}}{s} = -F_\textrm{max} \hat{\varvec{e}}_s, \end{aligned}$$
(5)

as prescribed by the Coulomb friction law. Therefore, the temporal evolution of the spring displacement is given by

$$\begin{aligned} k\varvec{\xi }+ \gamma \dot{\varvec{\xi }} = F_\textrm{max}\hat{\varvec{e}}_s{,} \end{aligned}$$
(6)

where the left-hand side is the viscoelastic response of the material to any applied surface force, which, in the present case, is the Coulomb friction. Inserting (4), we find

$$\begin{aligned} k\varvec{\xi }+ \gamma \varvec{v} = \left( F_\textrm{max} + {\gamma }s\right) \hat{\varvec{e}}_s, \end{aligned}$$
(7)

from which we infer the slip direction as

$$\begin{aligned} \hat{\varvec{e}}_s = \frac{k\varvec{\xi }+ \gamma \varvec{v}}{|k\varvec{\xi }+ \gamma \varvec{v}|}. \end{aligned}$$
(8)

Hence,

$$\begin{aligned} \dot{\varvec{\xi }} = \frac{1}{\gamma }\left( F_\textrm{max} \frac{k\varvec{\xi }+ \gamma \varvec{v}}{|k\varvec{\xi }+ \gamma \varvec{v} |} - k \varvec{\xi }\right) \end{aligned}$$
(9)

follows for the spring displacement’s time evolution, whenever the contact is sliding. In our model, the C-SDS, (9) functionally replaces (3) in the D-SDS. Note that while sliding, the spring force \(\varvec{F}_\textrm{S}\) is a test force and no longer the actual force that the spring exerts.

Finally, we conclude that

$$\begin{aligned} \dot{\varvec{\xi }} = -\frac{1}{\gamma }\left( \min (F_\textrm{S},F_\textrm{max}) \frac{\varvec{F}_\textrm{S}}{F_\textrm{S}} + k \varvec{\xi }\right) \end{aligned}$$
(10)

is the combined differential equation for sticking and sliding: For \(F_\textrm{S} < F_\textrm{max}\), the right-hand side evaluates to \(\varvec{v}\), and in the other case we recover (9). Therefore, our model is in perfect agreement with the Coulomb friction law, as the only thing that differentiates sticking from sliding is the limitation of the force’s magnitude. This also demonstrates the simplification of the model’s implementation compared to the D-SDS: Instead of two separate treatments for the spring displacement update in the sticking and sliding states, respectively, the C-SDS only requires the limitation of the acting force, which is already required in the SDS in general.

2.2 Sanity checks

At this point, we discuss three important physical results which are guaranteed by the C-SDS.

2.2.1 Energy balance

We show that the C-SDS never generates energy from nothing, in contrast to the D-SDS. The work done by the friction force per unit time (by decelerating the relative velocity) is \(\varvec{F}\cdot \varvec{v}\). Part of it, \(\varvec{F}\cdot \varvec{s}\), is dissipated due to the slip. The rest is used to deform the adjacent viscoelastic material. It consists of the conservative power of changing the potential energy, \(-k\varvec{\xi }\cdot \dot{\varvec{\xi }}\), and the viscous loss, \(-\gamma \dot{\varvec{\xi }}^2\). Energy balance requires

$$\begin{aligned} k \varvec{\xi }\cdot \dot{\varvec{\xi }} + \gamma \dot{\varvec{\xi }}^2 - \varvec{F}\cdot \varvec{s} = -\varvec{F}\cdot \varvec{v}, \end{aligned}$$
(11)

which is obviously fulfilled if one inserts (4) and (9). This equality shows that no energy is created and no energy is lost to anything other than the specified dissipation channels, spring damping and slip dissipation.

2.2.2 Limitation of the loading velocity

While the contact is sliding and the spring is loading, i.e. while \(F_\textrm{S} > F_\textrm{max}\) and \(\varvec{\xi } \cdot \dot{\varvec{\xi }} > 0\) hold, the loading rate \(\dot{\xi }= |\dot{\varvec{\xi }}|\) is always smaller than the relative velocity \(v = |\varvec{v}|\). This is shown in the following. The first two terms on the left-hand side of (11) are positive under the present conditions; hence,

$$\begin{aligned} 0<-\varvec{F}\cdot (\varvec{v}-\varvec{s})=F_\textrm{max}\hat{\varvec{e}}_{s}\cdot (\varvec{v}-\varvec{s}). \end{aligned}$$
(12)

This means that

$$\begin{aligned} v_\Vert := \hat{\varvec{e}}_{s}\cdot \varvec{v}> |\varvec{s}| =: s > 0. \end{aligned}$$
(13)

According to (4), the components of \(\dot{\varvec{\xi }}\) that are parallel and perpendicular to \(\varvec{s}\) are

$$\begin{aligned} \dot{\xi }_\Vert = v_\Vert - s \quad \textrm{and}\quad \dot{\xi }_\perp = v_\perp , \end{aligned}$$
(14)

respectively. Hence, using (13),

$$\begin{aligned} \dot{\xi }=&\sqrt{\dot{\xi }_\Vert ^2 + \dot{\xi }_\perp ^2} \nonumber \\ =&\sqrt{(v_\Vert -s)^2 + v_\perp ^2} \nonumber \\ =&\sqrt{v_\Vert ^2 + v_\perp ^2 - (2v_\Vert -s)s} \le v \end{aligned}$$
(15)

proves our claim.

2.2.3 Sticking condition

In addition to \(F_\textrm{S} \le F_\textrm{max}\), there is another condition that must be met for a sticking contact: The slip velocity \(\varvec{s}\) has to be zero. In the C-SDS model, these two conditions automatically coincide, as we will discuss now. According to (1), (6) and (4), the test force is \(\varvec{F}_\textrm{S}=\varvec{F}-\gamma \varvec{s}\) which is valid both in the sticking state (\(\varvec{s}=0\)) and in the sliding state (\(\varvec{s} \ne 0\)). The transition from sticking to sliding happens, as soon as the absolute value of the test force becomes larger than \(F_\textrm{max}\). At this moment, a non-zero slip velocity \(\varvec{s}\) occurs:

$$\begin{aligned} \varvec{s} = -\frac{1}{\gamma } \left( \varvec{F}_\textrm{S} + F_\textrm{max} \hat{\varvec{e}}_s \right) , \end{aligned}$$
(16)

where (5) has been used. As the test force and the slip are antiparallel to each other, (8), this equation implies

$$\begin{aligned} F_\textrm{S} = \gamma s + F_\textrm{max}, \end{aligned}$$
(17)

which instantly shows that

$$\begin{aligned} F_\textrm{S}> F_\textrm{max}\Leftrightarrow s > 0. \end{aligned}$$

In particular, we find that the absolute value of the test force drops to the maximum force if the slip velocity vanishes, i.e. \(F_\textrm{S} \rightarrow F_\textrm{max}\) if \(s \rightarrow 0\). Therefore, the contact starts sticking again as soon as \(F_\textrm{S} = F_\textrm{max}\). Thus, with our model, it is sufficient to check the absolute value of the test force to know if a contact sticks or slides.

3 Numerical comparison

In this section, we present the results of the application of our model to a simple test case and compare them to the results produced by the D-SDS. Furthermore, we discuss the problems connected to the latter approach.

3.1 Simulated system

For simplicity, we restricted the test to a one dimensional problem; we simulated two planar surfaces, experiencing a constant normal force \(F_\textrm{n}\) and a finite tangential force F due to a finite relative tangential velocity. Note that for the remainder of this section, all vectors have been replaced by signed numbers, e.g. the tangential force F, the spring displacement \(\xi \) and the relative velocity v are the one dimensional pendants to the vectors \(\varvec{F}\), \(\varvec{\xi }\) and \(\varvec{v}\). The damping coefficient is \(\gamma =2\) in the natural units (n. u.) obtained from reduced mass m, spring stiffness k and critical force \(F_\textrm{max}\). For the chosen \(v(0)=4\), the contact is sliding instantly.

At time \(t=0\), the system starts with a zero spring displacement \(\xi \). The time evolution is calculated by the Euler integration scheme, using time steps of \(\varDelta t\in \{10^{-1},10^{-3}\}\).

Fig. 1
figure 1

Shown is the time evolution of the spring displacement \(\xi \), relative velocity v and contact force F (all tangential) for the D-SDS and the C-SDS. For the latter, the results for \(\varDelta t=10^{-3}\) are omitted, because they are virtually indistinguishable

3.2 Comparison of Dynamics

The time evolution of the spring displacement, the relative velocity and the tangential force are depicted in Fig. 1. We notice significant differences between both models. Let us discuss the D-SDS first. Its most startling feature is the rapid oscillation between sticking (\(F_\textrm{S}=F>-1\)) and sliding (\(F_\textrm{S}\) truncated to \(F=-1\)) in the beginning. The rather large \(\varDelta t=0.1\) was chosen for visibility purposes, because the amplitude of the oscillation in F is proportional to \(\varDelta t\), while its frequency starts of proportional to \(1/\varDelta t\). This shows that this “stick-slip” is not of physical origin.

The explanation for this artefact is rather the following: Let us denote the velocity and spring displacement in the i-th time step as \(v_i\) and \(\xi _i\), respectively. Furthermore, let us assume that \(v_i > 0\) and \(|F_\textrm{S}|(\xi _i, v_i) > F_\textrm{max}\) hold. This means that the contact is sliding; therefore, as the force \(F = {{\,\textrm{sign}\,}}\left( F_\textrm{S}(\xi _i, v_i) \right) F_\textrm{max}\) and the velocity \(v_i\) have opposite signs, \(0< v_{i+1} < v_i\) holds. Additionally, we know that the spring displacement for the next step \(\xi _{i+1}\) is given by (3) for the D-SDS,

$$\begin{aligned} \xi _{i+1} = - \frac{1}{k}\left( \gamma v_i - F_\textrm{max} \right) . \end{aligned}$$
(18)

Using these updated quantities to calculate the spring force for the next time step, we find

$$\begin{aligned} |F_\textrm{S}|(\xi _{i+1}, v_{i+1}) = F_\textrm{max} - \gamma (v_{i} - v_{i+1}) < F_\textrm{max}; \end{aligned}$$
(19)

hence the contact immediately stops sliding (we can obviously assume that \(v_i - v_{i+1}\) is small).

Because the time evolution of the spring displacement is now governed by (2) again, and because the spring displacement and velocity have opposite signs, the spring will be relaxed for the next time step. Thus, as long as the velocity is still large enough, the new spring displacement \(\xi _{i+2}\) is not able to compensate the velocity term in the spring force so that the contact starts sliding again. For

$$\begin{aligned} v < \frac{\gamma F_\textrm{max}}{mk}, \end{aligned}$$
(20)

this is no longer possible, as the force can only decrease.

Note that the oscillation of \(\xi \) visible in Fig. 1 does not simply originate from integrating F twice with respect to time. Rather, it is the cause of the oscillation in F due to the instantaneous setting of \(\xi \). Moreover, this instantaneous setting of a degree of freedom is in conflict with the general spirit of integration schemes for differential equations (cf. Appendix A).

In contrast to the points made above, the simulation using the C-SDS shows exactly the behaviour we expect: For the whole time that the contact is sliding, the spring displacement increases continuously with the correct sign, while the relative velocity is damped. Then, as soon as the resulting spring force becomes smaller than the critical force, the system smoothly transitions into the sticking state.

Fig. 2
figure 2

Comparing the time evolution of the kinetic energy difference \(\varDelta E_\textrm{kin}=E_\textrm{kin}^\mathrm {(D)} - E_\textrm{kin}^\mathrm {(C)}\) between D-SDS and C-SDS reveals that a significant amount of the energy which is created by the former ends up as kinetic energy. The step size is \(\varDelta t = 0.1\) for both

3.3 Comparison of the kinetic energies

In Fig. 2, we compare the time evolution of the kinetic energy difference between the D-SDS and our C-SDS. This comparison illustrates the most serious problem with the former: A significant part of the energy created by the instantaneous loading of the spring is converted to kinetic energy. In fact, the amount of created energy scales quadratically in the initial relative velocity – the spring displacement, (3), enters linearly in the relative velocity –, making this problem especially dramatic in high velocity collisions.

The energy oscillations result directly from the oscillations of the spring displacement, shown in Fig. 1. We want to add that even an implicit implementation of the D-SDS, i.e. setting the spring displacement such that the force’s magnitude in the following time step is equal to \(F_\textrm{max}\), would only remedy the observed oscillations but not the energy creation nor the physical interpretation.

4 Summary

We have shown that the SDS, which is a paramount tool for simulations of granular matter in many fields of research, had to be revisited in order to avoid unphysical results. Especially, its most detailed and most widely used realisation, the D-SDS [5], can result in problematic behaviour – most importantly in the creation of energy. We recall that this occurs whenever the contact starts to slide before the spring is fully loaded. Moreover, only for contacts that form without a relative tangential velocity, \(v = 0\), no energy is created. This is because the normal contact force and, thus, the critical force \(F_\textrm{max}\) is zero at the moment when the two surfaces come into contact. Therefore, in the case of particle collisions, e.g. in a granular gas, the D-SDS creates, depending on the granular temperature, significant amounts of energy for all but central collisions – which are statistically negligible for most systems. Thus, measured cooling rates, as an example, will have a temperature dependent error, underestimating the correct value for the chosen damping parameters.

The C-SDS, proposed in this work, is a simple rework of the D-SDS for sliding contacts which needs no additional parameters, makes no assumptions that are not already part of the SDS for sticking contacts or the Coulomb friction law. We have shown analytically that it fixes all the afore mentioned problems of the D-SDS, and have provided the case of two sliding plates as a numerical example (cf. Figs. 1 and 2). Moreover, the implementation of the C-SDS is simpler than that of the D-SDS: The spring displacement integration scheme does not need to distinguish between the two states, no sticking/sliding-flag is needed.