1 Introduction

The description of (finite) rotational motion in three-dimensions is nowadays a classical topic in mechanics. After the pioneering work of Argyris in the early 1980s [1], much has been done in the field over the last three decades—mostly due to the possibilities opened by the evolution of computer hardware and the advancement of computational methods, especially the finite element method. A finite rotation in three dimensions is fully described by a (second-order) rotation tensor. This tensor, being orthogonal, may be represented by or parameterized through fewer independent parameters than its nine total components. Provided that a limitation on the magnitude of the rotations from two consecutive configurations is acceptable (this will be discussed later on in the text), the number of independent parameters may be reduced to three. In such cases, the parameterization is called a vector parameterization. Vector parameterizations are very attractive not only from a computational standpoint, but also because they allow the rotational motion to be described in a similar way as the translational motion.

Many different types of vector parameterizations for the rotation tensor exist. The most commonly known are the parameterizations with (1) Euler angles, (2) the Euler rotation vector and (3) a rescaled rotation vector derived from the Euler rotation vector (or, equivalently, from the unit vector of the rotation axis). The parameterization with Euler angles (see e.g. [2]) is widely used in the quantum mechanics, aeronautics and robotics communities. It defines a finite rotation as the composition of three consecutive rotations about specific (pre-defined, yet moving) axes. Though being consistent and elegant, it possesses many disadvantages: the need for a separate coordinate system to define the rotations; the presence of many trigonometric expressions to handle the summation of rotations in pair-wise fashions; the non-uniqueness of the order of the rotation composition (indeed, there are twelve possible combinations, each one leading to a different expression for the rotation tensor); the need to extract the Euler angles from the rotation tensor (which is not trivial); and the fact that two of the rotation axes may occasionally align with respect to each other, leading to the loss of one degree of freedom. The parameterization with the Euler rotation vector, in turn, is free from most of these disadvantages—except from the presence of a few trigonometric expressions, and the accompanying singularities. A major benefit is that it is based on the true rotation axis instead of three arbitrary axes. One drawback is however observed: the composition of successive rotations (or, equivalently, the update of rotations in a time-stepping dynamics algorithm) requires one to work with the rotation tensor instead of the rotation vector, and this is both computationally expensive and numerically tricky, since extraction of a total rotation vector from a total rotation tensor is necessary in the end. The parameterization with a rescaled rotation vector, in turn, may overcome this downside, as long as a proper rescaling scheme is envisaged. Moreover, it may result in expressions with fewer trigonometric functions, yet preserving the advantage of having the true rotation axis in the description of the rotation.

In this context, the purpose of this work is to adopt a special rescaled vector parameterization to describe the rotational motion of particles within the framework of the discrete element method. It is based on what is usually called the Rodrigues rotation vector (see [36]), from which we call it a Rodrigues parameterization. We show how composition and update of rotations are made extremely simple, with vector operations only. Thereby, and remarkably, no rotation tensor is necessary to describe the time evolution of a particle’s rotation. In an analogy to solid mechanics, the proposed scheme may be seen as an updated Lagrangean description of the motion of the particles, similarly to what is proposed in [7, 8] for the dynamics of rods and shells. One can argue that vector parameterizations for rotations are not adequate since they do not capture how many turns (i.e. rotations of \(2\pi \) magnitude) a given rotational motion has performed relative to the initial configuration. In DEM simulations of particle systems, however, such information is irrelevant: what one is interested in is capturing the rotational motion of the particles from one configuration to the next, such that rolling and spin can be accurately represented. If the rotations between any two successive configurations do not exceed one turn (or fractions of one turn, depending on the rescaling scheme that is adopted), vector parameterizations are therefore appropriate.

We remark that the DEM formulation described in this work is aimed at the simulation of particle systems wherein rotational motion is relevant, either locally or globally. This encompasses (but is not restricted to) granular materials, granular flows and granular compacts. In cases where the particles are small enough so that the effect of their rotations with respect to their center of mass is unimportant to their overall motion, a translation-only model (e.g. [911]) may be more appropriate. For an early history of finite rotations within mechanics, we refer the reader to [1, 4, 6], and references therein. For reviews on discrete element methods and their applications to the modeling of granular media, see e.g. [1214] and [15, 16], respectively.

It is important to mention that different rotation parameterizations other than vector parameterizations are possible—and indeed used in a great number of DEM formulations. The quaternion parameterization seems to be the preferred one in this context. Quaternions were conceived by Hamilton in the mid XIX century in the context of complex numbers and their representation in Euclidean spaces, in an attempt to devise a rule for the multiplication and division of triples, and were immediately found by Cayley to have strong connections with spatial rotations. Their use leads to very simple algebraic manipulations of finite rotations—a paramount advantage over vector parameterizations. They do have, however, disadvantages: (1) quaternions are geometrically meaningless, in the sense that they cannot be visualized in an Euclidean space, as opposed to a rotation vector (though they embed the rotation information); (2) the parameterization employs one extra parameter (i.e. four in total) when compared to vector parameterizations (considering that the number of turns—i.e. rotations of \(2\pi \) magnitude—is not of interest); (3) their four parameters have to obey a constraint equation, namely, the sum of their squares must equal one in order for them to represent a rotation (this is tricky to satisfy in a consistent way in numerical implementations); and (4) the extraction of a quaternion from a rotation tensor requires special techniques. Nevertheless, due to their inherent algebraic simplicity, wherein e.g. successive rotations may be described very straightforwardly, quaternions do comprise a popular choice in many applications. We, alternatively, believe that, to have a parameterization that has geometrical meaning, is as computationally inexpensive as possible, and allows the rotations of the particles to be described in a similar way as their translations, yet at the only price of not capturing the total number of turns relative to the beginning of the motion, the vector parameterizations, especially the Rodrigues parameterization, provide the best compromise.

The paper is organized as follows. In Sect. 2 we recall some fundamental results related to the description of finite rotations in 3D and present our vector parameterization. In Sect. 3 we introduce our DEM formulation with rotational degrees of freedom, including a consistent stick-slip friction model to properly capture inter-particle rolling motion (we adopt here the model recently proposed by [17] for the frictional contact of rolling rods, adapting it to particle contact). In Sect. 4 we present our time integration scheme for the solution of the system’s dynamics, including an algorithmic overview. In Sect. 5 we show examples of numerical simulations to illustrate the validity of our formulation, and in Sect. 6 we derive our conclusions and discuss ideas for future work. Throughout the text, plain italic letters \(\left( {a,b,\ldots ,\alpha ,\beta ,\ldots ,A,B,\ldots } \right) \) denote scalar quantities, boldface lowercase italic letters \(\left( {\varvec{a},\varvec{b},\ldots ,{\varvec{\alpha }} ,{\varvec{\beta }} ,\ldots } \right) \) denote vectors and boldface italic capital letters (A, B,...) denote second-order tensors in a three-dimensional Euclidean space. The (standard) inner product of two vectors is denoted by u \(\cdot \) v, and the norm of a vector by \(\left\| {\varvec{u}} \right\| =\sqrt{{\varvec{u}}\cdot {\varvec{u}}}\).

2 Vector parameterization of the rotations

Let \({\varvec{\theta }} =\theta {\varvec{e}}\) be the classical rotation vector (sometimes also called Euler rotation vector, although Euler never worked with vectors in his derivations) corresponding to an arbitrary finite rotation of magnitude \(\theta \) around the rotation axis e (\(\left\| {\varvec{e}} \right\| =1)\) in the three-dimensional space. A vector u that is rotated by \(\theta \) about e is transformed into v according to v \(=\) Qu, with Q as the rotation tensor. This tensor, when written in terms of \({\varvec{\theta }}\), is given by the well-known Euler–Rodrigues formulaFootnote 1

$$\begin{aligned} {\varvec{Q}}={\varvec{I}}+\frac{\sin \theta }{\theta }{\varvec{\varTheta }} +\frac{1-\cos \theta }{\theta ^{2}}{\varvec{\varTheta }} ^{2}, \end{aligned}$$
(1)

where \({\varvec{\varTheta }} =\) Skew \(({\varvec{\theta }})\) is the skew-symmetric tensor whose axial vector is \({\varvec{\theta }}\). If we insert the trigonometric identities

$$\begin{aligned}&\sin \theta =2\sin \left( {\theta /2} \right) \cos \left( {\theta /2} \right) \quad \hbox {and} \nonumber \\&1-\cos \theta =2\sin ^{2}\left( {\theta /2} \right) \end{aligned}$$
(2)

into (1), we have

$$\begin{aligned} {\varvec{Q}}={\varvec{I}}+\frac{2\sin \left( {\theta /2} \right) \cos \left( {\theta /2} \right) }{\theta }{\varvec{\varTheta }} +\frac{2\sin ^{2}\left( {\theta /2} \right) }{\theta ^{2}}{\varvec{\varTheta }} ^{2}, \end{aligned}$$
(3)

and by considering that

$$\begin{aligned} \cos ^{2}\left( {\theta /2} \right) =\frac{1}{1+\tan ^{2}\left( {\theta /2} \right) }, \end{aligned}$$
(4)

the following expression is obtained

$$\begin{aligned} {\varvec{Q}}\!=\!{\varvec{I}}\!+\!\frac{2}{1\!+\!\tan ^{2}\left( {\theta /2} \right) }\left[ {\frac{\tan \left( {\theta /2} \right) }{\theta }{\varvec{\varTheta }} \!+\!\frac{\tan ^{2}\left( {\theta /2} \right) }{\theta ^{2}}{\varvec{\varTheta }}^{2}} \right] .\nonumber \\ \end{aligned}$$
(5)

Let us now define a vector \({\varvec{\vartheta }}\) such that

$$\begin{aligned} {\varvec{\vartheta }} =\frac{\tan \left( {\theta /2} \right) }{\theta }{\varvec{\theta }}, \end{aligned}$$
(6)

with \(\left\| {\varvec{\vartheta }} \right\| =\vartheta =\tan \left( {\theta /2} \right) \). This vector is called the Rodrigues rotation vector (see e.g. [36]), and its components are known as the Rodrigues rotation parameters. As it is parallel to \({\varvec{\theta }}\) (and consequently to \({\varvec{e}}\)), it can be understood as a rescaling of the Euler rotation vector. By means of (6), expression (5) may be rewritten as

$$\begin{aligned} {\varvec{Q}}={\varvec{I}}+\frac{2}{1+\vartheta ^{2}}\left[ {\mathrm{Skew}({\varvec{\vartheta }} )+\mathrm{Skew}^{2}({\varvec{\vartheta }})} \right] , \end{aligned}$$
(7)

which is known as the Rodrigues parameterization of the rotation tensor. This parameterization is not global, in the sense that it is not able to represent rotations of magnitude \(\theta =\pm \pi \), since in such case \(\vartheta \rightarrow \pm \infty \). However, two great advantages arise from it: (i) Q becomes free from trigonometric functions (which is good from a computational standpoint), and (ii) the composition of two successive rotations Q \(_1 \) and Q \(_2 \) may be performed through a very simple expression, which is due to Rodrigues ([1, 4]):

$$\begin{aligned} {\varvec{\vartheta }}_{1+2} =\frac{1}{1-{\varvec{\vartheta }}_1 \cdot {\varvec{\vartheta }}_2 }\left( {{\varvec{\vartheta }}_1 +{\varvec{\vartheta }}_2 -{\varvec{\vartheta }}_1 \times {\varvec{\vartheta }}_2 } \right) . \end{aligned}$$
(8)

Here, \({\varvec{\vartheta }}_1 \) and \({\varvec{\vartheta }} _2\) are the Rodrigues rotation vectors of Q \(_1 \) and Q \(_2 \), respectively, and \({\varvec{\vartheta }}_{1+2} \) is the Rodrigues rotation vector of the total rotation Q \(_{1+2} ={\varvec{Q}}_2 {\varvec{Q}}_1\). This is a remarkable result. It boosts up computational efficiency when dealing with successive or accumulated rotations, as is the case e.g. in dynamical systems. Moreover, it circumvents the extraction of \({\varvec{\vartheta }}_{1+2} \) from Q \(_{1+2} \), which is a tricky task and usually involves singularities. Such result is only possible when the rotation is described through \({\varvec{\vartheta }}\) (or multiples of \({\varvec{\vartheta }}\)) instead of \({\varvec{\theta }}\).

Let us now introduce a slightly rescaled Rodrigues rotation vector as below:

$$\begin{aligned} {\varvec{\alpha }} =2{\varvec{\vartheta }} =\frac{\tan \left( {\theta /2} \right) }{\theta /2}{\varvec{\theta }}, \end{aligned}$$
(9)

with \(\left\| {\varvec{\alpha }} \right\| =\alpha =2\tan \left( {\theta /2} \right) \). This rotation vector has been proposed by [7] and [8] in the context of rod and shell nonlinear dynamics. It leads to the following expression for Q:

$$\begin{aligned} {\varvec{Q}}={\varvec{I}}+\frac{4}{1+\alpha ^{2}}\left[ {\mathrm{Skew}({\varvec{\alpha }} )+\frac{1}{2}\mathrm{Skew}^{2}({\varvec{\alpha }} )} \right] , \end{aligned}$$
(10)

and to the following expression for the composition of successive rotations:

$$\begin{aligned} {\varvec{\alpha }}_{1+2} =\frac{4}{4-{\varvec{\alpha }}_1 \cdot {\varvec{\alpha }} _2 }\left( {{\varvec{\alpha }} _1 +{\varvec{\alpha }} _2 -\frac{1}{2}{\varvec{\alpha }} _1 \times {\varvec{\alpha }} _2 } \right) . \end{aligned}$$
(11)

As shown in [7] and [8], vector (9) yields expressions of the angular velocity vector and its spatial derivatives that are more elegant than the corresponding ones obtained with the use of \({\varvec{\theta }}\) or even the use of (6). This is the rotation vector that will be used in this work.

Remark 1

It must be mentioned that families of rotation parameterizations can be constructed through different rescaling schemes of the Euler rotation vector, as proposed e.g. in [18] and [19]. These families include the Rodrigues parameterization as a special case.

Remark 2

It is curious to note that the quaternion formula for composition of rotations, when algebraically expanded, exactly resembles the Rodrigues formula (8), as nicely shown in [4]. Interestingly, Rodrigues derived his expressions three years before Hamilton’s work and five years before Cayley’s connections. He worked independently and did not resort to any type of quaternion entity nor specially devised algebra to attain his results. It might have been a great coincidence that these three prominent scientists were working almost simultaneously on apparently disconnected results.

3 A DEM formulation with vector rotational dofs

We follow a standard DEM approach and treat any collection of particles as a discrete dynamical system in which each particle interacts with the others and the surrounding media via a combination of gravity forces, drag forces, near-field (attractive and repulsive) forces, and contact and friction forces due to touching and collisions. Classical dynamics is adopted to describe the time evolution of the system, the equations of which are solved via a numerical (time-stepping) integration scheme. The particles are allowed to have both translational and rotational motions (in this sense, the model presented in this section may be seen as a generalization of the models presented by [9, 11], wherein rotations and spins were not considered). For the sake of simplicity, but without loss of generality, we consider here only spherical particles.

3.1 Equations of motion

Let the system be comprised of \(N_P \) particles, each one with mass \(m_i \), radius \(r_i \) and rotational inertia \(j_i =\frac{2}{5}m_i r_i^2\, (i=1,...,N_P )\). Let us denote the position vector of a particle by x \(_i \), the velocity vector by v \(_i \) and the spin vector by \({\varvec{\omega }}_i \), as depicted in Fig. 1. The rotation vector relative to the beginning of the motion is denoted by \({\varvec{\alpha }}_i \), whereas the incremental rotation vector (i.e. rotation vector relative to two consecutive configurations) by \({\varvec{\alpha }}_i^{{\varDelta }}\). Notice that, though the particles are assumed to be spherical, the description of their rotations is relevant to their motion, since inter-particle friction may induce rolling and thereby any point \(C\) on the particle’s surface (as e.g. the initial contact point of a contacting pair) may displace from one configuration to another—a motion that involves a rotation and needs to be mapped if one is interested in properly capturing stick-slip phenomena. This issue will become clearer in forthcoming equations. In Fig. 1, vector \(\varvec{r}_C\) is the vector that locates point \(C\) with respect to the center of the particle.

Fig. 1
figure 1

Description of a single particle. Point \(C\) is on the particle’s surface and may represent, e.g., the point of contact with another particle or object

Let us denote the total force vector acting on particle \(i\) by f \(_i^{tot} \) and the total moment (with respect to the particle’s center) by \(\varvec{m}_i^{tot} \). According to the Euler’s laws, at every time instant \(t\) the following equations must hold for each particle:

$$\begin{aligned}&m_i \ddot{\varvec{x}}_i =\varvec{f}_i^{tot} , \nonumber \\&j_i \dot{{\varvec{\omega }}}_i =\varvec{m}_i^{tot} , \end{aligned}$$
(12)

where the superposed dot denotes differentiation with respect to time. The total force vector is made up of several force contributions as follows

$$\begin{aligned} \varvec{f}_i^{tot} =m_i \varvec{g}+\varvec{f}_i^{drag} +\varvec{f}_i^{nf} +\varvec{f}_i^{con} +\varvec{f}_i^{fric} , \end{aligned}$$
(13)

in which \(\varvec{g}\) is the gravity acceleration vector, \(\varvec{f}_i^{drag} \) is the drag force vector (it stands for viscous effects of the surrounding media on the motion of the particle), \(\varvec{f}_i^{nf}\) are the forces due to near-field interactions with other particles, \(\varvec{f}_i^{con} \) the forces due to mechanical contacts (or collisions) with other particles and/or obstacles, and \(\varvec{f}_i^{fric} \) the forces due to friction that arise from these contacts or collisions. The total moment vector, in turn, has contributions only from the friction forces, since all other forces are assumed to be central forces (i.e. they act with no eccentricity relatively to the center of the particle), such that

$$\begin{aligned} {\varvec{m}}_i^{tot} ={\varvec{m}}_i^{fric} . \end{aligned}$$
(14)

Each of the force and moment contributions above is described in the subsections that follow.

3.2 Drag force

The drag force is given by

$$\begin{aligned} {\varvec{f}}_i^{drag} =-c_{fluid} ({\varvec{v}}_i -{\varvec{v}}_{fluid}), \end{aligned}$$
(15)

where \(c_{fluid} \) is a damping parameter depending on the viscosity of the surrounding fluid and v \(_{fluid} \) is the (local) velocity of the fluid. This is the simplest possible model to incorporate viscous effects in the motion of the particles, and may be used as long as one is not interested in how the motion of the fluid is affected by the motion of the particles.

3.3 Near-field forces

The forces due to near-field interactions with other particles are given by

$$\begin{aligned} {\varvec{f}}_i^{nf} =\sum _{j=1,j\ne i}^{N_P } {{\varvec{f}}_{ij}^{nf}}, \end{aligned}$$
(16)

where f \(_{ij}^{nf} \) is the near-field force that acts on particle \(i\) due to particle \(j\). This force has the general expression

$$\begin{aligned} {\varvec{f}}_{ij}^{nf} =\left( {\kappa _1 \left\| {{\varvec{x}}_i -{\varvec{x}}_j } \right\| ^{-\lambda _1 }-\kappa _2 \left\| {{\varvec{x}}_i -{\varvec{x}}_j } \right\| ^{-\lambda _2 }} \right) {\varvec{n}}_{ij}, \end{aligned}$$
(17)

in which the \(\kappa \)’s and \(\lambda \)’s are scalar parameters dictating the intensity of the force for the pair \(\{i,j\}\) and n \(_{ij} \) is the unit vector that points from the center of particle \(i\) to the center of particle \(j\), i.e.,

$$\begin{aligned} {\varvec{n}}_{ij} =\frac{{\varvec{x}}_j -{\varvec{x}}_i }{\left\| {{\varvec{x}}_j -{\varvec{x}}_i } \right\| }. \end{aligned}$$
(18)

This vector will be from now on referred to as the pair’s central direction. In Eq. (17), scalars \(\kappa _1 \) and \(\lambda _1 \) are related to the attractive part of the force, whereas \(\kappa _2\) and \(\lambda _2 \) to the repulsive part. This expression can be understood as derived from a generalized Mie’s potential (force potential for atomic and molecular interactions), of which the classical Lennard-Jones potential [20] is a special case. It can be used to model e.g. adhesion or binding effects, van de Waals effects, electrostatic interactions, etc.

3.4 Contact forces

The forces due to contact/collision with other particles are described here with an overlap-based scheme (or, as also usually called, a soft-sphere model). Accordingly, they are a function of the amount of geometrical overlap or penetration (i.e., deformation) between the particles in contact. We follow Hertz’s elastic contact theory (see e.g. [21]) and adopt the following expression for \({\varvec{f}}_i^{con} \):

$$\begin{aligned} {\varvec{f}}_i^{con}= & {} \sum _{j=1}^{N_C } {{\varvec{f}}_{ij}^{con} } ,\quad \hbox {with} \nonumber \\ {\varvec{f}}_{ij}^{con}= & {} \frac{4}{3}\sqrt{r^{{*}}}E^{{*}}\delta _{ij}^{3/2} {\varvec{n}}_{ij} +d^{{*}}\dot{\delta }_{ij} {\varvec{n}}_{ij}, \end{aligned}$$
(19)

where \(N_C \) is the number of particles that are in contact with particle \(i,\, {\varvec{f}}_{ij}^{con} \) is the contact force that acts on particle \(i\) due to particle \(j\),

$$\begin{aligned} r^{{*}}=\frac{r_i r_j }{r_i +r_j }\quad \hbox {and}\quad E^{{*}}=\frac{E_i E_j }{E_j (1-\nu _i^2 )+E_i (1-\nu _j^2 )} \end{aligned}$$
(20)

are the effective radius and the effective elasticity modulus of the contacting pair \(\{i,j\}\) (in which \(E_i ,E_j \) and \(\nu _i ,\nu _j\) are the elasticity modulus and the Poisson coefficient of particles \(i\) and \(j\), respectively),

$$\begin{aligned} \delta _{ij} =\left\| {{\varvec{x}}_i -{\varvec{x}}_j } \right\| -\left( {r_i +r_j } \right) \end{aligned}$$
(21)

is the geometric overlap (or penetration) between the pair in the pair’s central direction, \(\dot{\delta }_{ij} \) is the rate of this penetration, and

$$\begin{aligned} d^{{*}}=2\xi \sqrt{2\sqrt{r^{{*}}}E^{{*}}m^{{*}}}\delta _{ij}^{1/4} \end{aligned}$$
(22)

is a damping constant that is introduced to allow for energy dissipation in the pair’s central direction. This constant is taken here following the ideas of [22], wherein \(\xi \) is the damping rate of the collision (which must be specified) and \(m^{{*}}\) is the effective mass of the contacting pair, i.e.,

$$\begin{aligned} m^{{*}}=\frac{m_i m_j }{m_i +m_j }. \end{aligned}$$
(23)

The value of \(d^{{*}}\) may be related to an equivalent coefficient of restitution \(e\) (a simplified way is through \(\xi =\ln e/(\pi ^{2}+\ln ^{2}e)^{1/2}\), which is derived by assuming constant stiffness and constant damping throughout the collision, leading to a velocity-independent \(e\)—this is arguable but commonly adopted). We refer the interested reader to [16] and [2325] for several possibilities and a thorough discussion on the subject. Figure 2 (top part) provides a schematic illustration of the contact/collision for a contacting pair.

Fig. 2
figure 2

Contact/collision between two particles

3.5 Friction forces

The forces due to friction (which arise from the contacts/collisions) are given by

$$\begin{aligned} {\varvec{f}}_i^{fric} =\sum _{j=1}^{N_C } {{\varvec{f}}_{ij}^{fric} } , \end{aligned}$$
(24)

where f \(_{ij}^{fric} \) is the friction force that acts on particle \(i\) due to particle \(j\). This force is applied at the contact point \(C\) on the surface of particle \(i\) (see Fig. 2, bottom part), and is modeled here by assuming that sliding and rolling may occur between the contacting pair (whether it is pure sliding, sliding with rolling or pure rolling depends on the characteristics of the pair). To describe such phenomena, we devise a scheme that is based on the one recently proposed by Neto et al. in [17] for the contact of rolling rods, with some minor modifications. Accordingly, first we assume that, consistent with stick-slip friction modelsFootnote 2, the contact is such that sticking is to occur between the contact points of the contacting pair. The friction force that causes such sticking, however, cannot be applied all at once when the contact begins, as this would imply a strong discontinuity in the force field that would in turn spoil (or at least introduce severe difficulties in) the solution of the system’s dynamics. Instead, it must be applied gradually and continuously from zero, following some regularization scheme (this is a requirement of any macroscopic contact model, such as overlap-based models, wherein only a resultant force enter the formulation; for this reason, these models are commonly referred to as smoothed or approximate friction models). Here we adopt a penalty formulation, for which a tangential spring of stiffness \(k_t \) is activated at the contact point as soon as the contact begins. This spring has zero initial elongation, but as the contact proceeds it elongates \({\varvec{s}}\) due to the tangential relative sliding at the contact point (it would be more appropriate to write \({\varvec{s}}_{ij} \) instead of \({\varvec{s}}\), as the elongation is a pair-wise quantity, but here we will omit the subscript for the ease of notation). The friction force is then assumed to be proportional to \({\varvec{s}}\). A complete algebraic description of the model is provided in what follows.

Fig. 3
figure 3

Single particle under friction and the tangent contact plane. Point \(P\) is the projection of the previous location of point \(C\) (i.e. location of \(C\) at configuration \(\mathcal{S})\) on plane \(\pi \)

Let \(\mathcal{S}\) and \({\mathcal{S}}'\) be two successive configurations during the contact phase (which may correspond, e.g., to time instants \(t\) and \(t+{\varDelta } t\), respectively), between which stick is to occur. Let \(C\) and \({C}'\) be the points of particle \(i\) that are in contact with particle \(j\) at these configurations, respectively, as depicted in Fig. 3. Let \(\pi \) be the tangent contact plane at \({\mathcal{S}}'\) (i.e. the plane that is normal to n \(_{ij} \) at \({\mathcal{S}}')\), with base vectors t \(_1 \) and t \(_2 \), and let \(P\) be the projection on plane \(\pi \) of the previous location of point \(C\) (\(P\) is not the projection of the current position of \(C\) on \(\pi \), but instead the projection of its previous position, i.e., of its position at configuration \(\mathcal{S})\). Notice that, in the special case where particle \(i\) is contacting a fixed wall placed at \(\pi \) (instead of particle \(j\)), \(P\) turns to be the point on which \(C\) has touched the wall at configuration \(\mathcal{S}\). Next, let \({\varDelta } {\varvec{x}}_i \) be the distance traveled by the center of particle \(i\) between \(\mathcal{S}\) and \({\mathcal{S}}'\), i.e.,

$$\begin{aligned} {\varDelta } {\varvec{x}}_i ={\varvec{x}}_i ({\mathcal{S}}')-{\varvec{x}}_i (\mathcal{S}) . \end{aligned}$$
(25)

Let the vectors that connect the center of particle \(i\) to \(C\) and \({C}'\) be \({\varvec{r}}_C \) and \({\varvec{r}}_{{C}'} \), respectively (with r \(_{{C}'} =r_i\) n \(_{ij}\)), and let \(\theta _{\varDelta } \) be the magnitude of the rotation that the particle undergoes from \(\mathcal{S}\) to \({\mathcal{S}}'\), with corresponding incremental Rodrigues rotation magnitude \(\alpha _i^{\varDelta } \) such that \(\alpha _i^{\varDelta } =2\tan \left( {{\theta _{\varDelta } }/2} \right) \). Ignoring any local deformations at the contact point, we may relate r \(_C \) and r \(_{{C}'} \) by means of

$$\begin{aligned} {\varvec{r}}_C ={\varvec{Q}}_{\varDelta } {\varvec{r}}_{{C}'} , \end{aligned}$$
(26)

where Q \(_{\varDelta } \) is the rotation tensor associated to the incremental rotation vector \(\alpha _i^{\varDelta } \), i.e.,

$$\begin{aligned} {\varvec{Q}}_{\varDelta } ={\varvec{I}}+\frac{4}{1+(\alpha _i^{\varDelta } )^{2}}\left[ {\mathrm{Skew}({\varvec{\alpha }}_i^{\varDelta } )+\frac{1}{2}\mathrm{Skew}^{2}({\varvec{\alpha }} _i^{\varDelta } )} \right] . \end{aligned}$$
(27)

The curve that connects \(C\) to \({C}'\) on the surface of the particle, represented with a dashed line in Fig. 3, is the amount of rolling experienced by the particle between \(\mathcal{S}\) and \({\mathcal{S}}'\). It may be satisfactorily approximated by vector \({\varDelta } \varvec{r}\) (see Fig. 3), provided that \({\varDelta } t\) is smallFootnote 3. This vector, in turn, is given by

$$\begin{aligned} {\varDelta } \varvec{r}= & {} \varvec{r}_{{C}'} -\varvec{r}_C =\varvec{r}_{{C}'} -\varvec{Q}_{\varDelta } \varvec{r}_{{C}'}\nonumber \\= & {} \left( {\varvec{I}-\varvec{Q}_{\varDelta } } \right) {\varvec{r}}_{{C}'} =r_i \left( {\varvec{I}-\varvec{Q}_{\varDelta } } \right) \varvec{n}_{ij}. \end{aligned}$$
(28)

The incremental elongation endured by the tangential spring between \(\mathcal{S}\) and \({\mathcal{S}}'\), which we denote by \({\varDelta }\) s, is the amount of sliding that occurs at the contact point between these two configurations. This, in turn, is the difference between the distance traveled by the center of the particle in the tangential direction and the amount of rolling experienced by the particle in the tangential direction. Rolling does not induce any elongation on the spring, as it implies a situation at the contact point for which there is no relative motion in the tangential direction, and thereby must be subtracted from the distance traveled by the center of the particle. This way, and using the notation \(\left. {(\cdot )} \right| _\pi \) to designate the projection of \((\cdot )\) on plane \(\pi \), we have:

$$\begin{aligned} {\varDelta } {\varvec{s}} \!= & {} \!\left. {{\varDelta } {\varvec{x}}_i } \right| _\pi -\left. {{\varDelta } {\varvec{r}}} \right| _\pi \nonumber \\ \!= & {} \!\left[ {\left( {{\varDelta } {\varvec{x}}_i \cdot {\varvec{t}}_1 } \right) {\varvec{t}}_1 \!+\!\left( {{\varDelta } {\varvec{x}}_i \cdot {\varvec{t}}_2 } \right) {\varvec{t}}_2 } \right] \!-\!\left[ {\left( {{\varDelta } {\varvec{r}}\cdot {\varvec{t}}_1 } \right) {\varvec{t}}_1 \!+\!\left( {{\varDelta } {\varvec{r}}\cdot {\varvec{t}}_2 } \right) {\varvec{t}}_2 } \right] \nonumber \\ \!= & {} \!\left[ {\left( {{\varDelta } {\varvec{x}}_i -{\varDelta } {\varvec{r}}} \right) \cdot {\varvec{t}}_1 } \right] {\varvec{t}}_1 +\left[ {\left( {{\varDelta } {\varvec{x}}_i -{\varDelta } {\varvec{r}}} \right) \cdot {\varvec{t}}_2 } \right] {\varvec{t}}_2. \end{aligned}$$
(29)

Once \({\varDelta }\) s is computed, the total elongation of the spring relative to the beginning of the contact is given by

$$\begin{aligned} {\varvec{s}}={\varvec{s}}_{acc} +{\varDelta } {\varvec{s}}, \end{aligned}$$
(30)

where \({\varvec{s}}_{acc} \) is the accumulated elongation until then for the pair \(\left\{ {i,j} \right\} \), which must be stored. Having (30), the friction force is obtained via

$$\begin{aligned} {\varvec{f}}_{ij}^{fric} =k_t {\varvec{s}}, \end{aligned}$$
(31)

and this value is checked against the static friction limit, i.e., we test if

$$\begin{aligned} \left\| {{\varvec{f}}_{ij}^{fric} } \right\| \le \mu _s \left\| {{\varvec{f}}_{ij}^{con} } \right\| , \end{aligned}$$
(32)

wherein \(\mu _s \) is the coefficient of static friction for the contacting pair. If (32) is not verified, the initial assumption of sticking between \(\mathcal{S}\) and \({\mathcal{S}}'\) does not hold and, instead, continuous slip is to be observed, with the friction force turning out to be

$$\begin{aligned} {\varvec{f}}_{ij}^{fric} =\mu _d \left\| {{\varvec{f}}_{ij}^{con} } \right\| {\varvec{\tau }} _{ij}, \end{aligned}$$
(33)

where \(\mu _d \) is the coefficient of dynamic friction for the contacting pair and

$$\begin{aligned} \varvec{\tau }_{ij} =\frac{{\varvec{s}}}{\left\| {\varvec{s}} \right\| }, \end{aligned}$$
(34)

with s obtained from (30). Notice that Eq. (34) implies that, although the total elongation obtained through (30) is no longer valid when slip occurs, it can still be used to compute the direction of the friction. In other words, although the friction is now a continuous slip, its direction is the same as if sticking were to occur. In this case, however, (30) leads to a friction force that exceeds the static friction limit and thereby a correction or “return” scheme is necessary. Here we do

$$\begin{aligned} {\varvec{s}}_{corr} =\frac{1}{k_t }\left( {\left\| {k_t {\varvec{s}}} \right\| -\mu _d \left\| {{\varvec{f}}_{ij}^{con} } \right\| } \right) {\varvec{\tau }} _{ij}, \end{aligned}$$
(35)

with which the total elongation now reads

$$\begin{aligned} {\varvec{s}}=\left( {\varvec{s}}_{acc} +{{\varDelta }} {\varvec{s}} \right) -{\varvec{s}}_{corr}. \end{aligned}$$
(36)

This scheme resembles a return mapping scheme as observed e.g. in evolution laws of plastic deformations, wherein whenever the yield stress is exceeded by a trial stress state a return or correction is invoked to bound it to the yield stress. In this sense, a similar idea (although in a different framework) has been proposed by [26].

In this work, we adopt the following value for \(k_t \), which is based on Mindlin’s theory for tangential contact forces (see e.g. [27]):

$$\begin{aligned} k_t =8{G}^{{*}}\sqrt{{r}^{{*}}}\delta _{ij}^{1/2}, \end{aligned}$$
(37)

where

$$\begin{aligned} G^{{*}}=\frac{G_i G_j }{G_i +G_j } \end{aligned}$$
(38)

is the effective shear modulus of the contacting pair, in which \(G_i\) and \(G_j \) are the shear modulus of particles \(i\) and \(j\), respectively.

3.6 Friction moment

The moment generated by the friction forces on particle \(i\) (relatively to the center of the particle) is given by

$$\begin{aligned} {\varvec{m}}_i^{fric} =\sum _{j=1}^{N_C } {{\varvec{r}}_C \times {\varvec{f}}_{ij}^{fric} } , \end{aligned}$$
(39)

where we recall that r \(_C \) is the vector that connects the center of particle to the contacting point with particle \(j\) (see Fig. 2, bottom part).

Remark 3

It is worth mentioning that the scheme proposed in [17] is described therein in a different way. Besides, the friction force adopted there amounts to the use of a constant penalty parameter, whose value in turn needs to be carefully selected according to the problem at hand. Here, in contrast, we adopt a nonlinear spring force model with stiffness given by (37), which has dependency on the amount of normal overlap or penetration between the contacting pair. This eliminates the need for choosing appropriate (problem-dependent) numerical parameters.

Remark 4

The effect of Magnus forces on the motion of the particles are assumed to be negligible in this work, although they could have been easily incorporated. In such case, one extra term f \(_i^{mag} =S{\varvec{\omega }} _i \times {\varvec{v}}_i \) (\(S=\) given constant) would have to be added to Eq. (13). Magnus forces arise whenever a particle has non-zero spin and non-zero translational velocity, as an effect of the unequal drag forces that are experienced by the surface of the particle (the relative velocity between the particle surface and the surrounding fluid is not uniform throughout the particle surface due to the contribution of the particle’s spin).

4 Time integration scheme

Our scheme for solution of the system’s dynamics starts by performing time integration of Eq. (12) between time instants \(t\) and \(t+{\varDelta } t\), which furnishes

$$\begin{aligned} {\varvec{v}}_i (t+{\varDelta } t)= & {} {\varvec{v}}_i (t)+\frac{1}{m_i }\int _t^{t+{\varDelta } t} {{\varvec{f}}_i^{tot} dt}, \nonumber \\ {\varvec{\omega }} _i (t+{\varDelta } t)= & {} {\varvec{\omega }}_i (t)+\frac{1}{j_i }\int _t^{t+{\varDelta } t} {{\varvec{m}}_i^{tot} dt}. \end{aligned}$$
(40)

The integrals on the right-hand side of (40) are then approximated by using a generalized trapezoidal rule:

$$\begin{aligned}&\int _t^{t+{\varDelta } t} {{\varvec{f}}_i^{tot} dt} \approx \left[ {\phi {\varvec{f}}_i^{tot} (t+{\varDelta } t)+(1-\phi ){\varvec{f}}_i^{tot} (t)} \right] {\varDelta } t, \nonumber \\&\int _t^{t+{\varDelta } t} {{\varvec{m}}_i^{tot} dt} \approx \left[ {\phi {\varvec{m}}_i^{tot} (t+{\varDelta } t)+(1-\phi ){\varvec{m}}_i^{tot} (t)} \right] {\varDelta } t,\nonumber \\ \end{aligned}$$
(41)

in which \(0\le \phi \le 1\). When \(\phi =0\), the integration amounts to an (explicit) forward Euler scheme; when \(\phi =1\), to an (implicit) backward Euler one; and when \(\phi =0.5\), to an (implicit) classical trapezoidal rule. By inserting (41) into (40), we have

$$\begin{aligned} {\varvec{v}}_i (t\!+\!{\varDelta } t)= & {} {\varvec{v}}_i (t)\!+\!\frac{{\varDelta } t}{m_i }\left[ {\phi {\varvec{f}}_i^{tot} (t\!+\!{\varDelta } t)\!+\!(1-\phi ){\varvec{f}}_i^{tot} (t)} \right] , \nonumber \\ {\varvec{\omega }}_i (t\!+\!{\varDelta } t)= & {} {\varvec{\omega }} _i (t)\!+\!\frac{{\varDelta } t}{j_i }\left[ {\phi {\varvec{m}}_i^{tot} (t\!+\!{\varDelta } t)\!+\!(1-\phi ){\varvec{m}}_i^{tot} (t)} \right] .\nonumber \\ \end{aligned}$$
(42)

On the other hand, by time integration of the velocity and incremental rotation vectors between \(t\) and \(t+{\varDelta } t\) we have

$$\begin{aligned}&{\varvec{x}}_i (t+{\varDelta } t)={\varvec{x}}_i (t)+\int _t^{t+{\varDelta } t} {{\varvec{v}}_i dt}, \nonumber \\&{\varvec{\alpha }} _i^{\varDelta } (t+{\varDelta } t)=\int _t^{t+{\varDelta } t} {{\varvec{\omega }} _i dt}. \end{aligned}$$
(43)

The generalized trapezoidal rule is then invoked again to approximate the integrals on the right-hand side of (43), rendering

$$\begin{aligned}&\int _t^{t+{\varDelta } t} {{\varvec{v}}_i dt} \approx \left[ {\phi {\varvec{v}}_i (t+{\varDelta } t)+(1-\phi ){\varvec{v}}_i (t)} \right] {\varDelta } t, \nonumber \\&\int _t^{t+{\varDelta } t} {{\varvec{\omega }} _i dt} \approx \left[ {\phi {\varvec{\omega }} _i (t+{\varDelta } t)+(1-\phi ){\varvec{\omega }} _i (t)} \right] {\varDelta } t. \end{aligned}$$
(44)

By introducing (44) into (43), we arrive at

$$\begin{aligned}&{\varvec{x}}_i (t+{\varDelta } t)={\varvec{x}}_i (t)+\left[ {\phi {\varvec{v}}_i (t+{\varDelta } t)+(1-\phi ){\varvec{v}}_i (t)} \right] {\varDelta } t, \nonumber \\&{\varvec{\alpha }}_i^{\varDelta } (t+{\varDelta } t)=\left[ {\phi {\varvec{\omega }}_i (t+{\varDelta } t)+(1-\phi ){\varvec{\omega }}_i (t)} \right] {\varDelta } t. \end{aligned}$$
(45)

Expressions (42) and (45) constitute a set of equations for \(i=1,...,N_P \) particles, with which the velocity, spin, position and incremental rotation vectors of each particle at \(t+{\varDelta } t\) may be computed once v \(_i (t),\, {\varvec{\omega }} _i (t)\) and x \(_i (t)\) are known. This computation, however, cannot be performed directly, since (42) requires the evaluation of \({\varvec{f}}_i^{tot} (t+{\varDelta } t)\) and \(\,{\varvec{m}}_i^{tot} (t+{\varDelta } t)\), which in turn are functions of all unknown position, velocity, spin and incremental rotation vectors at \(t+{\varDelta } t\), i.e.,

$$\begin{aligned} {\varvec{f}}_i^{tot} (t+{\varDelta } t)= & {} \hat{{{\varvec{f}}}}_i^{tot}\left( {\varvec{x}}_j (t+{\varDelta } t),{\varvec{v}}_j (t+{\varDelta } t),\right. \nonumber \\&\left. {\varvec{\omega }} _j (t+{\varDelta } t),{\varvec{\alpha }} _j^{\varDelta } (t+{\varDelta } t) \right) , \nonumber \\ {\varvec{m}}_i^{tot} (t+{\varDelta } t)= & {} \hat{{{\varvec{m}}}}_i^{tot} \left( {\mathbf {x}}_j (t+{\varDelta } t),{\varvec{v}}_j (t+{\varDelta } t),\right. \nonumber \\&\left. {\varvec{\omega }} _j (t+{\varDelta } t),{\varvec{\alpha }} _j^{\varDelta } (t+{\varDelta } t) \right) , \end{aligned}$$
(46)

wherein \(j=1,2,...,N_P \) (the notation with a superposed hat above has been introduced to indicate that the quantity is a function of the arguments inside the parentheses). This means that all equations are strongly coupled and a recursive solution strategy is thereby necessary. We adopt here a fixed-point iterative scheme, following the ideas that have been proposed by [2830] for irrotational particles (i.e. particles without rotational DOFs). The main steps are as summarized in Algorithm 1 below. The scheme is relatively easy to be implemented and it is noteworthy that no system matrix is required.

Finally, after convergence, the total rotation vector of the particles is updated by means of the Rodrigues expression (see Eq. (11))

$$\begin{aligned}&{\varvec{\alpha }} _i (t+{\varDelta } t)=\frac{4}{4-{\varvec{\alpha }} _i (t)\cdot {\varvec{\alpha }} _i^{\varDelta } (t+{\varDelta } t)}\nonumber \\&\quad \left( {{\varvec{\alpha }} _i (t)+{\varvec{\alpha }} _i^{\varDelta } (t+{\varDelta } t)-\frac{1}{2}{\varvec{\alpha }} _i (t)\times {\varvec{\alpha }} _i^{\varDelta } (t+{\varDelta } t)} \right) . \end{aligned}$$
(47)
figure a

Remark 5

According to what is described in Algorithm 1, one may find that velocities, spins, positions and incremental rotations of all particles are updated only after one complete loop of step (3). This would correspond to a Jacobi-type of scheme and is presented like so only for the sake of algebraic simplicity. What we actually do in step (3) is: for each particle \(i\), we compute f \(_i^{tot,K+1} (t+{\varDelta } t)\) and m \(_i^{tot,K+1} (t+{\varDelta } t)\) using the velocities, spins, positions and incremental rotations of the particles that have just been updated within the current loop, that is, using v \(_j^{K+1} (t+{\varDelta } t)\), \(\varvec{\omega }_j^{K+1} (t+{\varDelta } t)\), x \(_j^{K+1} (t+{\varDelta } t)\) and \(\varvec{\alpha }_j^{{\varDelta } ,K+1} (t+{\varDelta } t)\), \(j=1,2,...,i-1\). For \(j\ge i\), the values of the previous iteration, i.e., v \(_j^K (t+{\varDelta } t)\), \(\varvec{\omega }_j^K (t+{\varDelta } t)\), x \(_j^K (t+{\varDelta } t)\) and \(\varvec{\alpha }_j^{{\varDelta } ,K} (t+{\varDelta } t)\), are used. This resembles a Gauss-Seidel scheme, which, as it is well known, converges at a faster rate than the Jacobi method (if the Jacobi method converges) or diverges at a faster rate (if the Jacobi method diverges).

Remark 6

The error measures in step (4) of the algorithm are taken as normalized (nondimensional) measures, and are given by

$$\begin{aligned}&err({\varvec{a}})=\frac{\sum _{i=1}^{N_p } {\left\| {{\varvec{a}}_i^{K+1} (t+{\varDelta } t)-{\varvec{a}}_i^K (t+{\varDelta } t)} \right\| } }{\sum _{i=1}^{N_p } {\left\| {{\varvec{a}}_i^{K+1} (t+{\varDelta } t)-{\varvec{a}}_i (t)} \right\| } },\nonumber \\&\quad {\varvec{a}}={\varvec{x}},{\varvec{v}},{\varvec{\omega }} \;\hbox {and}\;{\varvec{\alpha }}^{{\varDelta }}. \end{aligned}$$
(48)

In cases where the denominator in (48) vanishes or approaches zero, we use

$$\begin{aligned} err({\varvec{a}})= & {} \frac{\sum _{i=1}^{N_p } {\left\| {{\varvec{a}}_i^{K+1} (t+{\varDelta } t)-{\varvec{a}}_i^K (t+{\varDelta } t)} \right\| } }{\sum _{i=1}^{N_p } {\left\| {{\varvec{a}}_i^{K+1} (t+{\varDelta } t)} \right\| } },\nonumber \\ {\varvec{a}}= & {} {\mathbf {x}},{\varvec{v}},{\varvec{\omega }} \;\hbox {and/or}\;{\varvec{\alpha }}^{{\varDelta }} \end{aligned}$$
(49)

instead.

5 Numerical examples

In this section, we provide examples of numerical simulations to validate our DEM formulation with vector rotational DOFs and stick-slip friction. The examples are intentionally very simple, with the aim that the physics of the problems be made easily evident and the responses anticipated for validation purposes. We adopt \(\phi =0.5\) in the time integration scheme throughout, meaning that an implicit classical trapezoidal rule is utilized in all cases. Selection of the time step size is made according to the duration of a typical contact/collision for the problem at hand. We use the following criterion:

$$\begin{aligned} { collision}\,{ duration}\cong & {} 2.87\left[ {\frac{(m^{{*}})^{2}}{r^{{*}}(E^{{*}})^{2}v_{rel} }} \right] ^{1/5}\nonumber \\\Rightarrow & {} {\varDelta } t\le \frac{{ collision}\,{ duration}}{20}, \end{aligned}$$
(50)

where \(v_{rel} \) is the relative velocity of a typical contacting pair in the pair’s central direction immediately before the contact/collision is initiated. This is based on Hertz’s formula for the duration of elastic collisions [27] and ensures that at least twenty time steps are used for a typical contact/collision. According to our experience, this is the minimum number of steps needed to accurately integrate contact/collisions that are described by Hertzian forces. The following data are common for all examples:

  • Gravity force magnitude: \(g=9.81\, \hbox {m/s}^{2}\);

  • Near-field forces parameters: \({\varvec{f}}_i^{nf} ={\varvec{o}}\) (\(\kappa _1 =\kappa _2 =\lambda _1 =\lambda _2 =0)\);

  • Convergence tolerance within time-step iterations: \({ TOL}=10^{-4}\).

In what follows, no attempts are made to compare computational performance of our scheme with that of conventional rotation parameterizations. This is because we do not have quaternions nor Euler angles implemented in our code. Two things, however, may be anticipated on this regard: (i) for dense multi-particle systems, computational performance will be nearly the same for all types of parameterizations, for in these systems efficiency is mainly governed by the contact detection stage, not by the calculations at the level of the particles (i.e., not by the computation of particle forces, moments and time-update of degrees of freedom); (ii) for systems of few particles, wherein contact is not a bottleneck, the proposed parameterization will be more efficient as the update of rotations is simpler (it merely uses Eq. (47), to which few arithmetic operations are required), not involving the computation of (and further operations on) a matrix, as needed e.g. for quaternions and Euler angles.

5.1 Dynamics of a spinning particle over a flat surface

This example is taken from reference [17] wherein a spinning tubular beam is analyzed. Here we adapt it to the case of a particle. Accordingly, a spherical particle of radius \(r=0.2\) m and mass \(m=1000\) kg is released onto a flat rigid surface with initial translational velocity \({\varvec{v}}(0)=(2.355,0,0)\) m/s and initial spin \({\varvec{\omega }} (0)=(0,0,-127.03)\) rad/s, as shown in Fig. 4. As gravity acts in the negative-y direction, the particle and the surface experience frictional contact, which is defined by \(\mu _s =\mu _d =\mu =0.25\). The initial conditions are such that in the beginning of the motion the particle undergoes sliding with rolling in the positive-x direction. Due to the sign and magnitude of the spin, the friction force at the beginning also points to this direction, and thereby accelerates the particle. At the same time, this force diminishes the particle spin since it generates an opposing moment with respect to the center of the particle. Eventually, when the spin has been sufficiently reduced, the point of contact \(C\) of the particle “sticks” to the surface (in the sense that it becomes the instantaneous center of zero velocity, which may be interpreted as an instantaneous sticking of \(C\) and the surface—but not of the particle as a whole and the surface) and pure rolling is initiated. One can understand the dynamics of the problem also by looking at the x-velocity at the contact point over time. At \(t=0\), one has \(v_{C,x} =2.355+(-127.03)(0.2)=-23.051\) m/s. Since the friction force is opposed to the direction of this velocity, the magnitude of \(v_{C,x} \) will decrease progressively until it reaches zero. When this happens, there ceases to be relative motion between \(C\) and the flat surface, meaning that sliding no longer occurs and the particle starts to experience pure rolling. Integration of the equations of motion during the sliding with rolling stage provides an analytical solution as follows:

$$\begin{aligned}&{\varvec{v}}(t)\!=\!\left( {v(t),0,0} \right) ,\quad \hbox {with}\quad v(t)\!=\!v(0)\!+\!\mu gt\!=\!2.355\!+\!2.453t, \nonumber \\&{\varvec{\omega }}(t)=\left( {0,0,{\varvec{\omega }}(t)} \right) ,\quad \hbox {with}\quad {\varvec{\omega }}(t)={\varvec{\omega }}(0)\nonumber \\&\qquad + \,\frac{5\mu g}{2r}t=-127.03+30.656t. \end{aligned}$$
(51)

This result is valid for \(t\le t_{roll} \), with \(t_{roll} \) as the time instant wherein pure rolling is initiated. From (51), it follows that for the x-velocity of point \(C\) we have

$$\begin{aligned} v_{C,x} (t)= & {} v(t)+{\varvec{\omega }}(t)r=(2.355+2.453t)\nonumber \\&+\,(-127.03+30.656t)(0.2) \nonumber \\= & {} -23.051+8.584t, \end{aligned}$$
(52)

and from this we find that pure rolling happens for

$$\begin{aligned} -23.051+8.584t=0\Rightarrow t=t_{roll} \cong 2.69\;\hbox {s}. \end{aligned}$$
(53)

After \(t_{roll} \), the particle remains in uniform motion with constant translational velocity \(v_{roll} \) and constant spin \(\omega _{roll} \), the values of which can be obtained by doing \(t=2.69\) s in equation (51):

$$\begin{aligned} v(2.69)= & {} v_{roll} \cong 8.95\;\hbox {m/s}, \nonumber \\ {\varvec{\omega }}(2.69)= & {} {\varvec{\omega }}_{roll} \cong -44.57\;\hbox {rad/s}. \end{aligned}$$
(54)

The results obtained with our simulation are depicted in Fig. 5. Therein, time histories of the particle’s x-displacement, total rotation about z axis, x-velocity and z-spin are shown (notice here that, since the problem is plane and the axis of rotation is fixed, the incremental rotations may be summed up as scalars to render the total rotation). They are found to be nearly indistinguishable from the analytical solution. One can see that sliding with rolling as well as the transition to pure rolling is accurately represented. Also, the obtained values \(t_{roll} =2.69\) s, \(v_{roll} =8.94\) m/s and \(\omega _{roll} =-44.71\) rad/s are in excellent agreement with (53) and (54). The time step size adopted here is \({\varDelta } t=10^{-4}\) s (for which the typical number of iterations per time step is three). Other properties were \(E=10^{10}\, \hbox {N/m}^{2},\, \nu =0.25\) and \(\xi =0\).

5.2 Collision of three particles rolling over a flat surface

Three identical particles of radius \(r=0.2\, \hbox {m}\), mass \(m=1000\) kg and elastic properties \(E=10^{10}\, \hbox {N/m}^{2}\) and \(\nu =0.25\) are placed on a flat rigid surface in a triangular equilateral formation, as shown in Fig. 6 (the surface is parallel to the x-y plane). They have non-zero initial velocity and spin, the values of which being such that they experience pure rolling towards the center of the triangle until they collide (there is friction with the surface, but no sliding occurs at this stage and the particles approach each other by rolling with constant velocity and constant spin). Gravity acts in the negative-z direction. Upon collision, the motion of the particles is reversed (in both velocity and spin) and they head back towards their initial positions. This returning motion is to occur at a lower energy level as compared to the approaching stage, for the collision causes the particles to slide over the surface for a short moment and thereby dissipates energy (the almost instantaneous reversal of the particles’ velocity is not accompanied by an almost instantaneous reversal of their spin, thus generating sliding). The collision is assumed to be perfectly elastic \((\xi =0)\), so that in the hypothetical absence of friction the magnitude of the velocities would be exactly preserved. Friction with the surface is defined by \(\mu _s =\mu _d =0.5\). The results obtained with our simulation are depicted in Fig. 7, wherein time-histories of the velocity, spin and total rotation (relatively to the rotation axis, which is fixed for each particle) for particle 1 are shown. Collision happens at \(t\cong 0.46\hbox {s}\) and lasts for approximately \(0.0047\hbox {s}\). Immediately after it is finished, i.e. at \(t\cong 0.46+0.0047=0.4647\hbox {s}\), one can see from the graphs that the velocity is reversed with virtually exact energy conservation. Reversal of the particle’s spin, on the contrary, takes a longer time, since it requires the friction force with the surface to act for a longer while. In effect, when the collision begins, the particle immediately leaves the pure rolling state and starts to slide (to be precise, it enters a sliding with rolling state). The friction force of this sliding generates a moment that is opposed to the particle’s spin, thereby reducing the magnitude of the spin progressively. At \(t\cong 0.62\) s, the spin changes sign and its magnitude starts to increase, until the contact point of the particle with the surface “sticks” to the surface (in the same sense as in the previous example) and the particle attains pure rolling again. This happens at \(t\cong 0.69\hbox {s}\). At the same time, during this sliding with rolling phase, energy is dissipated and the magnitude of the particle’s velocity is decreased, as it can be observed in the graphs for \(0.4647\le t\le 0.69\hbox {s}\). From \(t\cong 0.69\hbox {s}\) on, when pure rolling is resumed, the particle travels back in the direction of the initial position with constant velocity and constant spin, as one can see in the graphs. Identical results were obtained for particles 2 and 3. The particles pass back at their initial positions at \(t\cong 1.39\hbox {s}\). The time step used here is \({\varDelta } t=10^{-4}\hbox {s}\) (for which the typical number of iterations per time step is three).

Fig. 4
figure 4

Example 5.1. Problem definition

Fig. 5
figure 5

Example 5.1. Time histories of the particle’s displacement, rotation, velocity and spin. Numerical results are in solid line and analytical solution in solid markers. Total simulation time is 5.0 s

Fig. 6
figure 6

Example 5.2. Problem definition (top view). The flat surface is in the xy plane

Fig. 7
figure 7

Simulation results for example 5.2. Time histories of velocity, spin and total rotation of particle 1. Total simulation time is 2.0 s

5.3 Disposal of particles into a container

In this example, we analyze the disposal of particles into a container with the aim to assess the influence of rotational motion in the topology of the final configuration of the system. In order to facilitate visualization, the problem is defined in a two-dimensional setting, as if it were a “slice” of a 3D problem. The container has one of its faces inclined, as shown in Fig. 8, and the particles are dropped over this face from the bottom of a long vessel of dimensions \(0.75\times 20\, \hbox {m}\). The particles are initially at rest inside the vessel (they are placed randomly therein via a standard random sequence addition algorithm, with a packing density of 0.5). Gravity acts in the negative-y direction, triggering the particles to fall downwards. There is friction between the particles and the container’s faces, defined by \(\mu _s =\mu _d =0.25\), and between the particles and themselves, defined by \(\mu _s =\mu _d =0.1\). To avoid excessive bouncing upon particle-container and particle-particle collisions, we assume \(\xi =0.9\), i.e., all collisions are nearly critically damped (this can be expected, e.g., for most granular materials). A drag force of the type of Eq. (15), with parameters \(c_{fluid} =0.005\, \hbox {N}\cdot \hbox {s/m}\) and \({\varvec{v}}_{fluid} ={\varvec{o}}\), is present. The particles are identical with radius \(r=0.1\) m, mass density \(\rho =2500\, \hbox {kg/m}^{3}\) (which implies \(m=10.47\) kg) and elastic properties \(E=10^{8}\, \hbox {N/m}^{2}\) and \(\nu =0.25\). The total number of particles is \(N_P =230\) (a small number is considered since here we are interested only in a general, qualitative assessment of the system’s dynamics). Figure 9 depicts snapshots of the system’s configurations at selected time instants, as obtained with our simulation. One can see how the particles advance towards a static equilibrium position, which is attained at around \(t\cong 4.0\hbox {s}\). Time history of the system’s kinetic energies, computed as the sum of all particles’ kinetic energies, is plotted in Fig. 10. For comparison, we also analyzed the problem without rotational degrees of freedom. The corresponding results are depicted in Fig. 11 (for the same time instants of the previous simulation) and in Fig. 12. The relevance of rotational motion in the spatial arrangement of the particles is clearly seen. A more ordered final configuration, resembling the hexagonal lattice of the highest density pack for two dimensions, is attained when rotations are considered (apart from perturbations near the bottom and right faces of the container, as expected). Similar conclusions have also been drawn in [31] when dealing with particle packing problems, for both two- and three-dimensional situations. Interestingly, by looking at the energy graphs in Fig. 10, one can see that, though influential, the rotational energy is only a fraction of the translational one at all times. It starts to pick up at \(t\cong 0.5\hbox {s}\), which is the instant at which the first particles hit the inclined face of the container, and plays a role until the system attains static equilibrium. Another interesting observation comes from Fig. 12, where it can be seen that the slight increase in the translational energy that occurs in the first simulation from approximately \(t\cong 2.6\hbox {s}\) to \(t\cong 3.4\hbox {s}\) (i.e., immediately before the system settles down) does not happen in the second simulation. This increase is explained by the free fall of the particles that have accumulated on (and eventually rolled and climbed up) the right face of the container—a phenomenon that is experienced only by the particles that are allowed to rotate upon frictional forces. Snapshots at \(t=2.25\hbox {s}\) up to \(t=2.75\hbox {s}\) in Fig. 9 illustrate this motion. As a final comment, it is worth mentioning that the computational times are roughly the same for the two simulations. This is because computational efficiency in dense multi-particle systems is governed mainly by the contact search, and the presence or absence of rotations does not affect the occurrence of contacts to a significant extent in these types of systems. Altogether, these aspects highlight the importance of having rotational degrees of freedom in such types of problems. Indeed, the proper modeling of granular materials wherein friction and rolling are present is the major motivation for the formulation proposed in this paper.

Fig. 8
figure 8

Example 5.3. Problem definition

Fig. 9
figure 9

Simulation results for example 5.3. Snapshots of selected configurations

Fig. 10
figure 10

Example 5.3. Time histories of system’s translational (top) and rotational (bottom) kinetic energies. SI units

Fig. 11
figure 11

Simulation results for example 5.3. Snapshots obtained in the simulation without rotational DOFs

Fig. 12
figure 12

Example 5.3. Time history of system’s translational kinetic energy without rotational DOFs (solid blue line). Dashed brown line is the corresponding energy with consideration of rotational DOFs, repeated here for comparison purposes. SI units.

6 Conclusions

The main purpose of this work was to present a vector parameterization of rotations that can be used within DEM formulations to the modeling of particle systems wherein rotational motion is relevant. We wanted the rotations to be described in a similar way as the translations, i.e., in a vector-like way, and to this end we adopted the so-called Rodrigues parameterization of finite rotations. No fictitious entities such as quaternions or complicated structures such as Euler angles were used. Having rotational degrees of freedom is an important feature in the modeling of a variety of particle systems, such as (but not restricted to) systems of non-spherical particles, systems containing rigid clusters of particles, and any system of grains whenever rolling induced by friction may be relevant. In this latter sense, a consistent frictional contact model accounting for sliding and rolling was adopted. The approach relies on the mapping of the rotation of the contact points of the contacting pairs, following the ideas of [17] with some slight modifications. As it has been shown from simple numerical examples, the model proved to properly describe rotational motion and rolling induced by friction. One interesting conclusion is that the consideration of rotational degrees of freedom seems to improve the ordering of the particles’ arrangement in static equilibrium configurations of piles of particles, as observed in example 5.3. We believe that simple vector descriptions of rotations may be very useful for DEM models of particle systems.