1 Introduction

We address the modelling and simulation of multidomain systems with nonsmooth dynamics and deformable solids of particulate nature. This includes mechatronic multibody systems with nonsmooth dynamics, such as vehicles, robots, and processing machinery that handle or operate on soil or bulk materials. Fast multidomain simulation is useful for concept design exploration, development of control strategies, and for interactive real-time simulators, e.g. for operator training, human–machine interaction studies, and hardware-in-the-loop testing.

1.1 Nonsmooth multidomain dynamics

Multidomain system simulation requires integration of multiple heterogeneous subsystems into a single full-system model. Mechatronic systems are typically composed by rigid and flexible multibodies coupled by kinematic constraints for modelling of joints and sets of differential algebraic equation (dae) models for electronics, hydraulics, and powertrain dynamics [1]. If the subsystems are not strongly coupled, the full-system simulation can be realised by means of co-simulation [2]. At coarse timescales, however, the dynamics need to be treated as nonsmooth [3,4,5]. This means that velocities are allowed to be arbitrarily discontinuous and impulses—from impacts, joint limits, and frictional stick–slip transitions—can propagate instantly throughout the system. This enables implicit time integration using large timesteps. To ensure numerical stability and computational efficiency, the full system must be approached with a consistent mathematical framework and adequate numerical solvers. Current techniques for co-simulation do not support this for strongly coupled systems with nonsmooth dynamics.

1.2 Particulate-based solids

The versatile and widely used discrete element method (DEM) [6] for simulating particulate solids have been extended to the framework of nonsmooth dynamics [4, 5, 7, 8]. When the lengthscale of deformations is much larger than the particle size, it is more computationally favourable to model the solid as a continuum with elastoplastic constitutive law [9]. There are several arguments for using a meshfree discretisation [10, 11] over traditional mesh-based methods such as the finite element method (FEM). Meshfree methods allow large deformations and topological changes without need for remeshing [12]. This makes them well suited for fracturing materials and transitions from solid into viscous and free-surface flow, or from continuum to particulate level of detail when using multi-scale methods [13, 14] or model reduction techniques [15].

1.3 Our contribution

The main contribution in this paper, illustrated in Fig. 1, is a particle-based method for modelling and simulation of elastoplastic solids as a multibody system on descriptor form [2] and with nonsmooth dynamics. This enable numerical integration with large timestep size of multidomain systems containing deformable solids, mechatronics, and frictional contacts. The objective is to achieve real-time performance or better.

Fig. 1
figure 1

Illustration of the idea of using particle-based discretisation and compliant deformation constraints to obtain a unified multibody system model for both deformable solids and mechatronic systems

The solid is modelled as a particle system with strain tensor constraints introduced as the stiff limit of energy and dissipation potentials for elastic deformations, with constraint regularisation and stabilisation based on a discrete variational approach [16, 17]. An associative perfectly plastic Drucker–Prager model is employed using an elastic predictor–plastic corrector strategy to detect yielding and compute the plastic flow. In its basic form, this model does not yield in hydrostatic compression in contrast to many real materials. Many soils yield under hydrostatic compression by failure in the microscopic structures whereby air and fluid are released. Therefore, the Drucker–Prager model is extended to a capped version [18] that model also plastic compaction. A meshfree method [10, 11] is chosen in order to handle large deformations and, for future development, support fracturing and transitions to viscous flow or to granular media represented by contacting discrete elements. The displacement gradient and strain tensor is approximated by the method of moving least squares (mls) [19]. A stabilisation constraint is introduced to suppress spurious short wavelength modes associated with the mls approximation [20].

The dynamics of other subsystems and their potentially strong coupling is treated within the same multibody dynamics framework using a variational time integrator [16, 17]. Each timestep involves solving a block-sparse mixed linear complementarity problem (mlcp) that also support modelling of frictional contacts and secondary constraints for joints and motors. The present paper is motivated by the exploration of ground vehicles on deformable terrain [21]. Current solutions enable simulation of complex vehicle models with real-time performance but not with dynamic terrain models firmly based on solid mechanics in three dimensions. Usually, empirical terrain models of Bekker–Wong type are used [22, 23]. On the other hand, there exist many solutions for more accurate offline simulations with fine spatial and temporal resolution for elastoplastic solids coupled with tire models [24, 25]. But few support inclusion of multibody systems and not in real time or faster.

1.4 Notations

Matrices and vectors are represented in bold face in capital and lower case, \(\varvec{A}\) and \(\varvec{x}\), respectively. Latin superscripts indicate the index of a specific body \(i,j, k = 1, \ldots , N\), where N is the total number of bodies in the system. Greek subscripts indicate a specific scalar component of a vector or matrix. The Einstein summation convention is used where repeated indices imply summation over them, e.g. representing matrix–vector multiplication as \(\varvec{A}\varvec{x} = A_{\alpha \beta } x_\beta \). Subscripts xy or z indicate a specific component of a vector or matrix assuming a Cartesian coordinate system. As an example of these notations, the position vector of a body i is denoted \(\varvec{q}^{i}\). The relative position of particle j to i is \(\varvec{q}^{ij} = \varvec{q}^{j} - \varvec{q}^{i}\). The y component of this vector is \(q^{ij}_{y} = q^j_y - q^i_y\). For rigid bodies, the position vector includes also the rotation variables of the body. The system position vector is \(\varvec{q} = \left[ \varvec{q}^1, \varvec{q}^2,\ldots , \varvec{q}^i,\ldots , \varvec{q}^N\right] \). The gradient is denoted \(\nabla _{\varvec{x}} = \frac{\partial }{\partial \varvec{x}}\) and \(\nabla _{\alpha } = \frac{\partial }{\partial x_{\alpha }}\). The dot notation is used for the time derivative \(\dot{} \equiv \tfrac{\text {d}}{\text {d}t}\). The Cauchy stress tensor is represented by \(\varvec{\sigma }_{\textsc {C}}\) and the second Piola Kirchoff stress tensor by \(\varvec{\sigma }\).

2 Discrete multidomain dynamics

This section provides a summary of discrete dynamics and of the numerical integration method that is used.

2.1 Lagrangian formulation

The Lagrangian of a constrained mechanical system with position \(\varvec{q}\) and velocity \(\dot{\varvec{q}}\) is

$$\begin{aligned} \mathcal {L}(\varvec{q},\dot{\varvec{q}},\varvec{\lambda },\bar{\varvec{\lambda }})&= T(\varvec{q},\dot{\varvec{q}}) - U(\varvec{q}) - \mathcal {R}(\varvec{q},\dot{\varvec{q}}) \nonumber \\&\quad + \varvec{\lambda }^{\mathrm{T}} \varvec{g}(\varvec{q},t) + \bar{\varvec{\lambda }}^{\mathrm{T}} \bar{\varvec{g}}(\varvec{q},\dot{\varvec{q}},t), \end{aligned}$$
(1)

where \(T(\varvec{q},\dot{\varvec{q}}) = \tfrac{1}{2}\dot{\varvec{q}}^{\mathrm{T}} \varvec{M}\dot{\varvec{q}}\) is the kinetic energy, \(U(\varvec{q})\) is the potential energy, and \(\mathcal {R}(\varvec{q},\dot{\varvec{q}})\) is the Rayleigh dissipation function. The system state vector \((\varvec{q},\dot{\varvec{q}})\) is constrained by holonomic constraints \(0 = \varvec{g}(\varvec{q})\), with Jacobian \(\varvec{G} = \partial \varvec{g} / \partial \varvec{q}\), and nonholonomic (or nonintegrable kinematic) constraints \(0 = \bar{\varvec{g}}(\varvec{q},\dot{\varvec{q}},t)\). The corresponding Lagrange multipliers are \(\varvec{\lambda }\) and \(\bar{\varvec{\lambda }}\), respectively. We will restrict to Pfaffian nonholonomic constraints, \(0 = \bar{\varvec{g}}(\dot{\varvec{q}},t) \equiv \bar{\varvec{G}} \dot{\varvec{q}} - \varvec{w}(t)\). Nonholonomic constraints can, by definition, not be deduced by differentiation of a holonomic constraint [26].

To ensure numerical stability, it is common to regularise the constraints. This may be done by treating them as the limit of strong potentials and dissipation functions \(U_{\varepsilon }(\varvec{q}) = \tfrac{1}{2\varepsilon }\varvec{g}^{\mathrm{T}}\varvec{g}\) and \(\mathcal {R}_\gamma (\varvec{q},\dot{\varvec{q}}) = \tfrac{1}{2\gamma }\bar{\varvec{g}}^{\mathrm{T}}\bar{\varvec{g}}\) with \(\varepsilon ,\gamma \rightarrow 0\) [27]. In fact, any stiff force can be transformed into a regularised constraint through a Legendre transform [17]

$$\begin{aligned}&U_{\varepsilon }(\varvec{q}) = \varvec{\lambda }^{\mathrm{T}}\varvec{g} - \tfrac{\varepsilon }{2}\varvec{\lambda }^{\mathrm{T}}\varvec{\lambda }, \end{aligned}$$
(2)
$$\begin{aligned}&\mathcal {R}_\gamma (\varvec{q},\dot{\varvec{q}}) = \bar{\varvec{\lambda }}^{\mathrm{T}}\bar{\varvec{g}} - \tfrac{\gamma }{2}\bar{\varvec{\lambda }}^{\mathrm{T}}\bar{\varvec{\lambda }}. \end{aligned}$$
(3)

The corresponding Euler–Lagrange equations of motion are

$$\begin{aligned}&\varvec{M}\ddot{\varvec{q}} + \dot{\varvec{M}}\dot{\varvec{q}} - \varvec{G}(\varvec{q})^{\mathrm{T}} \varvec{\lambda } - \bar{\varvec{G}}(\varvec{q})^{\mathrm{T}} \bar{\varvec{\lambda }} = \varvec{f}, \end{aligned}$$
(4)
$$\begin{aligned}&\varepsilon \varvec{\lambda } + \varvec{g}(\varvec{q}) = 0, \end{aligned}$$
(5)
$$\begin{aligned}&\gamma \bar{\varvec{\lambda }} + \bar{\varvec{G}}(\varvec{q})\dot{\varvec{q}} = \varvec{w}(t), \end{aligned}$$
(6)

where \(\varvec{f} \equiv -\nabla _{\varvec{q}}U(\varvec{q}) -\nabla _{\dot{\varvec{q}}}\mathcal {R}(\varvec{q}, \dot{\varvec{q}})\) are the explicit forces from nonstiff potentials. This constitutes a system of dae of index 1, which are easier to integrate numerically than the corresponding higher index dae in the absence of regularisation and stabilisation. \(\varepsilon = \gamma = 0\). A term for dissipation of motion orthogonal to the holonomic constraint surface can be added to improve the convergence. Also dissipation can be physically based by introducing it as a Legendre transform of a Rayleigh dissipation function \(\mathcal {R}_\tau (\varvec{q},\dot{\varvec{q}}) = \tfrac{\tau }{2\varepsilon }\dot{\varvec{g}}^{\mathrm{T}}\dot{\varvec{g}} \rightarrow \tau \dot{\varvec{\lambda }}^{\mathrm{T}}\dot{\varvec{g}} - \tfrac{\tau \varepsilon }{2}\dot{\varvec{\lambda }}^{\mathrm{T}}\dot{\varvec{\lambda }}\), with damping parameter \(\tau \). This modifies Eq. (5) to

$$\begin{aligned} \varepsilon \varvec{\lambda } + \varepsilon \tau \dot{\varvec{\lambda }} + \varvec{g}(\varvec{q}) + \tau \varvec{G}\dot{\varvec{q}} = 0. \end{aligned}$$
(7)

The compliance and damping factors \(\varepsilon \), \(\tau \) and \(\gamma \) are not restricted to being scalar or diagonal. In what follows these are assumed to be matrices.

2.2 Time discretisation

Variational integration [28] provides a systematic approach to derive time integration schemes with good properties, e.g. conservation of discrete symplectic forms and discrete momentum maps. Rather than discretising the Euler–Lagrange equations of motion directly, the Lagrangian and principle of least action are defined in time-discrete form. Employing semi-implicit Euler discretisation and linearising the constraint as \(\varvec{g}(\varvec{q} + \Delta \varvec{q}) = \varvec{g}(\varvec{q}) + \varvec{G} \Delta \varvec{q}\) leads to the following stepping scheme [16, 17]

$$\begin{aligned}&\varvec{q}_{n+1} = \varvec{q}_{n} + h \dot{\varvec{q}}_{n+1}, \end{aligned}$$
(8)
$$\begin{aligned}&\begin{bmatrix} \varvec{M}&-\varvec{G}^{\mathrm{T}}&-\bar{\varvec{G}}^{\mathrm{T}}\\ \varvec{G}&\varvec{\varSigma }&0\\ \bar{\varvec{G}}&0&\bar{\varvec{\varSigma }} \end{bmatrix} \begin{bmatrix} \dot{\varvec{q}}_{n+1} \\ \varvec{\lambda } \\ \bar{\varvec{\lambda }} \end{bmatrix} = \begin{bmatrix} \varvec{p}_n \\ \varvec{v}_n \\ \varvec{\omega }_n \end{bmatrix} \end{aligned}$$
(9)

where \(\varvec{p}_n = \varvec{M}\dot{\varvec{q}}_n + h\varvec{f}_n\), \(\varvec{v}_n = -\frac{4}{h}\varUpsilon g + \varUpsilon G\dot{\varvec{q}}_n\) and regularisation and stabilisation matrices \(\varvec{\varSigma } = \text {diag}(4\varepsilon /h^2[1+4\tau /h])\), \(\bar{\varvec{\varSigma }} = \text {diag}(\gamma /h)\) and \(\varvec{\varUpsilon } = \text {diag}([1 + 4 \tau /h]^{-1})\). Equation (9) is a linear system of \(N = \dim (\dot{\varvec{q}}) + \dim (\varvec{g}) + \dim (\bar{\varvec{g}})\) equations. The matrix on the left-hand side is block-sparse, positive definite, and nonsymmetric. The regularisation appearing as the diagonal perturbation matrices \(\varvec{\varSigma }\) and \( \bar{\varvec{\varSigma }}\) is needed for handling otherwise ill-posed or ill-conditioned problems, e.g. systems with constraint degeneracy and large mass ratios. The stabilisation terms \({-}\frac{4}{h}\varUpsilon g + \varUpsilon G\dot{\varvec{q}}_n\) on the right-hand side counteract constraint violations, e.g. sudden and large contact penetrations at impacts or small numerical constraint drift. The presented stepping scheme, referred to as spook, has been proved to be linearly stable [16], and numerical simulations suggest a large domain of nonlinear stability.

The combined effect of the regularisation and stabilisation terms is to bring elastic and viscous properties to motion orthogonal to the constraint surface \(\varvec{g}(\varvec{q}) = 0\), e.g. for modelling elasticity in mechanical joints. The parameters \(\varepsilon \) and \(\gamma \) need not be chosen arbitrarily, as for the conventional approaches to constraint regularisation and stabilisation, but can be based on physics models using parameters that can be derived from first principles, found in the literature or be identified by experiments. This becomes straightforward when the regularisation is introduced by potential energy as quadratic functions in \(\varvec{g}\), i.e. \(U_{\varepsilon }(\varvec{q}) = \tfrac{1}{2}\varvec{g}^{\mathrm{T}}\varvec{\varepsilon }^{-1}\varvec{g}\). This has been exploited in previous work to constraint-based modelling of lumped element beams [29], wires [30], meshfree fluids [31], and granular material [8].

2.3 Nonsmooth dynamics

In discrete time, some dynamics is best treated as nonsmooth [3], meaning that the velocity may change discontinuously in accordance with some impact law, expressed in terms of inequality constraints or complementarity conditions, in addition to the equations of motion. This is an efficient way of modelling dynamical contacts, dry friction, joint limits, electric and hydraulic circuit switching and actuator dynamics in discrete time with large step size. The alternative is to use fine enough temporal resolution where the dynamics appear smooth and may be modelled by daes or ordinary differential equations alone. In general, this is an intractable approach for full-system simulations and interactive applications. The nonsmooth dynamics can be formally treated as differential variational inequalities [32]. The discrete equations of motion (9) can be linearised into a mixed linear complementarity problem (mlcp), when nonsmooth dynamics is included

$$\begin{aligned} \varvec{H}\varvec{z}+\varvec{r}&= \varvec{w}_+ - \varvec{w}_-\nonumber \\ 0 \le \varvec{w}_+&\perp \varvec{z}-\varvec{l} \ge 0\nonumber \\ 0 \le \varvec{w}_-&\perp \varvec{u}-\varvec{z} \ge 0, \end{aligned}$$
(10)

where \(\varvec{H}\varvec{z}\) corresponds to the left-hand side of Eq. (9), \(\varvec{r}\) is the negated right-hand side, and \(\varvec{w}_\pm \) are slack variables. The terms \(\varvec{u}\) and \(\varvec{l}\) correspond to the upper and lower limits on the solution vector \(\varvec{z}\), respectively. The original linear system of equations is recovered by assigning \({\pm }\infty \) to the upper and lower limits, i.e. no limit.

Rigid body contacts are modelled by the Signorini–Coulomb law for unilateral dry frictional contacts [5], denoting the penetration depth by \(\delta \), contact normal and tangent by \(\varvec{n}\) and \(\varvec{t}\). The Signorini–Coulomb law states that if the nonpenetration constraint, \({g}_{\text {n}}\equiv \delta \le 0\), is violated, then the normal contact velocity and constraint force are complementary to ensure separation, \(0 \le {\dot{g}}_{\text {n}} \perp {\lambda }_{\text {n}} \ge 0\), and the tangential friction force that acts to maintain zero slip, \({g}_{\text {t}}\equiv \varvec{t}^{\mathrm{T}} \dot{\varvec{q}} = 0\), is bound by the Coulomb friction cone, \(|{\varvec{\lambda }}_{\text {t}}| \le \mu {\lambda }_{\text {n}}\). The latter may be linearised by approximating the cone with a polyhedral or a box. Impacts are treated post facto in a separate impact stage succeeding the update of velocities and positions. At the impact stage, an impulse transfer is applied enabling discontinuous velocity changes, i.e. from \(\dot{\varvec{q}}^-\) to \(\dot{\varvec{q}}^+\). Newtons’ impact law, \(\varvec{n}^{\mathrm{T}}\dot{\varvec{q}}^{+} = - e \varvec{n}^{\mathrm{T}}\dot{\varvec{q}}^-\), is used with restitution coefficient e in conjunction with preserving all other constraints, \(\varvec{G}\dot{\varvec{q}} = 0\). This amounts to solving the same mlcp (10) but with \(\varvec{p}_{n} = \varvec{M}\dot{\varvec{q}}_{n}\) and \(\varvec{v}_{n} = 0\) on the right-hand side of Eq. (9).

A fixed timestep approach is preferred when aiming for fast full-system simulation with many nonsmooth events per unit time, which is the case with many dynamic contacts. The alternative, using variable timestep and exact event location, makes the numerical integration computationally intractable and may fail by occurrence of Zeno points.

2.4 Heterogeneous multidomain dynamics

In multidomain simulation with strongly coupled subsystems, e.g. an elastoplastic solid and mechatronic system, the dynamics propagate instantly throughout the full system. The nonsmooth multidomain dynamics approach provides a general framework for implicit integration of such systems that enable stable simulation at large timesteps. This avoid the loss in performance and numerical stability associated with explicit co-simulation algorithms. A system composed of two strongly coupled subsystems, A and B, takes the following form

(11)

where \(\varvec{\lambda }_{AB},[\varvec{G}_{{AB}_A},\varvec{G}_{{AB}_B}],\varvec{\varSigma }_{AB}\) are the multiplier, Jacobian, and regularisation of the subsystem coupling constraints. The individual subsystem matrices, \(\varvec{H}_{A}\) and \(\varvec{H}_{B}\), take the generic form of a saddle point matrix as in Eq. (9).

3 Constraint-based meshfree elastoplastic solid

This section describes the elastoplastic model that is assumed, the spatial discretisation method and the compliant deformation constraint.

3.1 Elastoplastic solid

The solid is assumed to sustain geometrically large deformations. The St. Venant–Kirchhoff elasticity model is used in combination with the Drucker–Prager plasticity model [9]. The material strain is expressed by the Green–Lagrange strain tensor

$$\begin{aligned} \epsilon _{\alpha \beta }(\varvec{x}) = \frac{1}{2} \left( \nabla _{\alpha } u_\beta + \nabla _{\beta } u_\alpha + \nabla _{\alpha } u_\gamma \nabla _{\beta } u_\gamma \right) , \end{aligned}$$
(12)

where \(\varvec{u}(\varvec{x})\) is the displacement field mapping a reference coordinate \(\varvec{x}\) to displaced position \(\tilde{\varvec{x}}(\varvec{x}) = \varvec{x} + \varvec{u}(\varvec{x})\). Observe that the Green–Lagrange strain tensor transforms under large rotations and no co-rotation procedure is needed. It is convenient to use the Voigt notation for representing the strain tensor on vector format, \(\varvec{\epsilon } = \left[ \epsilon _{xx}, \epsilon _{yy}, \epsilon _{zz}, 2\epsilon _{yz}, 2\epsilon _{xz}, 2\epsilon _{xy} \right] ^{\mathrm{T}}\), and the second Piola Kirchoff stress tensor \(\varvec{\sigma }= \left[ \sigma _{xx}, \sigma _{yy}, \sigma _{zz}, \sigma _{yz}, \sigma _{xz}, \sigma _{xy} \right] ^{\mathrm{T}}\), related to the Cauchy stress by \(\varvec{\sigma }_{\textsc {C}}= J^{-1}\varvec{F}^{\mathrm{T}} \varvec{\sigma }\varvec{F}\) with displacement gradient \(\varvec{F} = \nabla \varvec{u}\) and \(J = \text {det}\varvec{F}\). The linear constitutive law reads \(\varvec{\sigma }= \varvec{C} \varvec{\epsilon }\), with stiffness matrix

$$\begin{aligned} \varvec{C} = \begin{bmatrix}\lambda + 2\mu&\quad \lambda&\quad \lambda&\quad 0&\quad 0&\quad 0\\ \lambda&\quad \lambda + 2\mu&\quad \lambda&\quad 0&\quad 0&\quad 0\\ \lambda&\quad \lambda&\quad \lambda + 2\mu&\quad 0&\quad 0&\quad 0\\ 0&\quad 0&\quad 0&\quad \mu&\quad 0&\quad 0\\ 0&\quad 0&\quad 0&\quad 0&\quad \mu&\quad 0\\ 0&\quad 0&\quad 0&\quad 0&\quad 0&\quad \mu \end{bmatrix}, \end{aligned}$$
(13)

where \(\lambda \) and \(\mu \) are the first and second Lamé parameters which are related to the Young’s modulus and Poisson’s ratio, E and \(\nu \) by \( \lambda = E\nu /\left( 1+\nu \right) \left( 1{-}2\nu \right) \) and \(\mu = E/2\left( 1+\nu \right) \). The corresponding strain energy density is

$$\begin{aligned} U(\varvec{x}) = \frac{1}{2} \varvec{\epsilon }^{\mathrm{T}} \varvec{C} \varvec{\epsilon } = \lambda ({{\mathrm{tr}}}\varvec{\epsilon })^2 + 2\mu {{\mathrm{tr}}}\left( \varvec{\epsilon }^2\right) . \end{aligned}$$
(14)

Plastic deformation occurs when the stress of a material reaches the critical yield strength, \(\varPhi (\varvec{\sigma }) = 0\). The choice of yield function, \(\varPhi (\varvec{\sigma })\), is based on the type of material being modelled. For simplicity, we restrict ourself to small plastic deformation and use the second Piola Kirchoff stress to evaluate the yield function and plastic increment. The strain tensor is additively decomposed into an elastic and a plastic component, \(\varvec{\epsilon } = \varvec{\epsilon }^{\text {e}} + \varvec{\epsilon }^{\text {p}}\), where the latter store the permanent plastic deformation. In ideal plasticity, the plastic deformation occurs instantly according to a flow rule \(\text {d}\varvec{\epsilon }^{\text {p}} = \text {d}\varvec{\lambda }^{\text {p}} \frac{\partial \varPsi }{\partial \varvec{\sigma }}\), where \(\varPsi (\varvec{\sigma })\) is the plastic potential and \(\varvec{\lambda }^{\text {p}}\) is the plastic multiplier. If \(\varPsi (\varvec{\sigma }) = \varPhi (\varvec{\sigma })\), the model is said to be associative and otherwise nonassociative. The plastic flow lasts as long as the plastic multiplier is positive \(\text {d}\varvec{\lambda }^{\text {p}}>0\), incrementally reducing the stress \(\text {d}\varvec{\sigma }^{\text {p}}\), until it reaches the elastic regime, \(\varPhi (\varvec{\sigma }) < 0\). This constitutes a nonlinear complementarity problem known as Karush–Kuhn–Tucker conditions

$$\begin{aligned} \varPhi \le 0,\;\; \text {d}\varvec{\lambda }^{\text {p}} \ge 0,\;\; \varPhi \ \text {d} \varvec{\lambda }^{\text {p}} = 0. \end{aligned}$$
(15)

The plastic multiplier is computed from the constitutive law, which in the plastic flow phase is \(\text {d}\varvec{\sigma }={\varvec{C}}^{\text {p}} \text {d}\varvec{\epsilon }\), where the elastoplastic tangent stiffness matrix is

$$\begin{aligned} {\varvec{C}}^{\text {p}} = \varvec{C} - \frac{\varvec{C}\frac{\partial \varPsi }{\partial \varvec{\sigma }} \left( \frac{\partial \varPhi }{\partial \varvec{\sigma }}\right) ^{\mathrm{T}}\varvec{C}}{\left( \frac{\partial \varPhi }{\partial \varvec{\sigma }}\right) ^{\mathrm{T}} \varvec{C} \frac{\partial \varPsi }{\partial \varvec{\sigma }}}. \end{aligned}$$
(16)

Predictor–corrector algorithms are conventionally used to integrate the plastic flow. In the absence of plastic hardening or softening, the plastic deformation, plastic multiplier, and total stress can be computed easily using the radial return algorithm [9] summarised in Algorithm 2.

The assumed plasticity model is a capped Drucker–Prager model, following Dolarevic [18], with a compaction variable \(\kappa \). The yield function \(\varPhi \left( \varvec{\sigma },\kappa \right) \) is \(C^1\) continuous consisting of the Drucker–Prager yield surface with a tension and a compression cap function according to

$$\begin{aligned} \varPhi \left( \varvec{\sigma },\kappa \right) = {\left\{ \begin{array}{ll} \varPhi _{\textsc { T}}\left( I_1,J_2 \right) &{} I_1 \ge I_1^{\textsc { T}} \\ \varPhi _{\textsc { DP}}\left( I_1,J_2 \right) &{} I_1^{\textsc { T}}> I_1 > I_1^{\textsc { C}}\left( \kappa \right) \\ \varPhi _{\textsc { C}}\left( I_1, J_2,\kappa \right) &{} I_1^{\textsc { C}}\left( \kappa \right) \ge I_1 \end{array}\right. }, \end{aligned}$$
(17)

where \(I_1 = {{\mathrm{tr}}}(\varvec{\sigma })\) is the first invariant of the stress tensor and \(J_2 = 0.5{{\mathrm{tr}}}(\bar{\varvec{\sigma }}^2)\) is the second invariant of the deviatoric stress tensor \(\bar{\varvec{\sigma }} = \varvec{\sigma }- \tfrac{1}{3} I_1 \varvec{1}\). The expressions for the tension cap \(\varPhi _{\textsc { T}}\left( I_1,J_2 \right) \) and compression cap \(\varPhi _{\textsc { C}}\left( I_1, J_2,\kappa \right) \) are given in “Appendix”, and the Drucker–Prager surface is defined as

$$\begin{aligned} \varPhi _{\textsc { DP}}\left( I_1,J_2 \right) = \sqrt{J_2 } + \frac{\eta }{3} I_1 - \xi c, \end{aligned}$$
(18)

where \(\phi \) is the internal friction angle and c the cohesion parameter such that \(\eta = 6\sin \phi /\sqrt{3}\left( 3-\sin \phi \right) \) and \(\xi = 6\cos \phi /\sqrt{3}\left( 3-\sin \phi \right) \).

The capped yield surface is illustrated in Fig. 2. The tension cap is fixed and is used to regularise the plastic flow behaviour in the corner region. The compression surface cap, on the other hand, is dynamic, and the maximum hydrostatic pressure, \(\kappa \), is used as the main variable.

Fig. 2
figure 2

Capped Drucker–Prager yield surface. The nonshaded region indicates the elastic domain, which grows under plastic compression

The conventional Drucker–Prager model is a common model for the plastic deformation dynamics of soils, e.g. wet or dry sand. These materials are weak under tensile stress (\(I_1 > 0\)) and become stronger under compression (\(I_1 <0\)) where it may support large shear stresses (\(\sqrt{J_2} \ne 0\)). The capped Drucker–Prager model is a generalisation that includes plastic compaction that occurs in many soils. The compaction mechanism is the failure of individual grains whereby air or water is displaced from the soil. The compaction saturates at a maximum level, where all voids vanish. The compaction dynamics is modelled by a variable cap on compressive side of the Drucker–Prager yield surface, intersecting the hydrostatic axis at \({-}\kappa \). The chosen compaction hardening law is [18]

$$\begin{aligned} \kappa = \kappa _0 + \frac{1}{D}\ln \left( 1+\frac{{{\mathrm{tr}}}({\varvec{\epsilon }}^{\text {p}})}{W}\right) , \end{aligned}$$
(19)

where W is the maximum volume compaction, D is the hardening rate, and \(\kappa _0\) is the initial cap position where compressive failure first occurs. Observe that when the plastic volume compaction \({-}{{\mathrm{tr}}}({\varvec{\epsilon }}^{\text {p}})\) approaches W, the cap variable \(\kappa \) goes to infinity. In this regime, the material no longer compact plastically and behaves like the standard Drucker–Prager model. The elastoplastic material parameters are summarised in Table 1. Expressions for the detailed shape of the compression cap and the derivatives of the yield functions are found in “Appendix”.

Table 1 Elastoplastic model parameters

3.2 Meshfree method

The continuous solid of mass m and reference volume V is discretised into \({N}_{\text {p}}\) particles. The particles have mass \(m^i = m /{N}_{\text {p}}\), volume \(V^i = V /{N}_{\text {p}}\), position \(\varvec{q}^i\), and velocity \(\dot{\varvec{q}}^i\). The particle displacement is \(\varvec{u}^i = \varvec{q}^i - \varvec{x}^i\) with reference position \(\varvec{x}^i\) as illustrated in Fig. 1. A continuous and differentiable displacement field is approximated using the mls method [19, 33]. The displacement gradient field defines the strain tensor field in any point by Eq. (12). The particles can thus be understood as pseudo-particles having both particle and field properties.

The mls approximation of the displacement field is

$$\begin{aligned} u_\alpha (\varvec{x}) = \sum _j^{{N}_{\text {p}}} \varPsi _j(\varvec{x}) u^j_\alpha , \end{aligned}$$
(20)

where the shape function and moment matrix use a quadratic basis

$$\begin{aligned}&\varPsi _j(\varvec{x}) = p_\gamma (\varvec{x}) A_{\gamma \tau }^{-1} (\varvec{x}) p_\tau (\varvec{x}^j) W\left( \varvec{x} - \varvec{x}^j\right) \nonumber ,\\&A_{\gamma \tau } (\varvec{x}) = \sum _j^{{N}_{\text {p}}} W\left( \varvec{x} - \varvec{x}^j\right) p_\gamma ^j p_\tau ^j,\nonumber \\&\varvec{p} (\varvec{x}) = \left[ 1,\ x,\ y,\ z,\ yz,\ xz,\ xy,\ x^2,\ y^2,\ z^2 \right] ^{\mathrm{T}}, \end{aligned}$$
(21)

and weight function \( W(\varvec{x}) = \frac{315}{64\pi l^9} (l^2 - \varvec{x}^{\mathrm{T}}\varvec{x} )^3\) if \(|\varvec{x}|\) is smaller than the influence radius l, and otherwise zero. The base function notation \(\varvec{p}^j = \varvec{p} (\varvec{x}^j)\) is used to simplify the expressions. The gradient of the interpolated displacement field is

$$\begin{aligned} F_{\alpha \beta }(\varvec{x})&\equiv \nabla _\beta u_\alpha (\varvec{x}) = \sum \limits _j^{{N}_{\text {p}}} \nabla _\beta \varPsi _j(\varvec{x}) u^j_\alpha , \end{aligned}$$
(22)
$$\begin{aligned} \nabla _\beta \varPsi _j&= \nabla _{\beta }p_{\gamma } {A}_{\gamma \tau }^{-1} p^j_{\tau }W^j + p_{\gamma }\nabla _\beta {A}_{\gamma \tau }^{-1} p^j_{\tau }W^{j}\nonumber \\&\quad + p_\gamma {A}_{\gamma \tau }^{-1} p^j_{\tau }\nabla _{\beta }W^j, \end{aligned}$$
(23)

with \(W^{j} = W (\varvec{x} - \varvec{x}^j)\), \(\nabla _{\beta }W^{j} = \nabla _{x_\beta }W(\varvec{x} - \varvec{x}^j)\). The strain tensor field, \(\varvec{\epsilon }(\varvec{x})\), can thus be approximated by applying Eqs. (12)–(22). Observe that \(u^j_\alpha \) depends on current particle positions \(\varvec{q}\) while \(\nabla _\beta \varPsi _j(\varvec{x})\) depends only on the reference positions.

3.3 Compliant deformation constraint

The strain energy density, \(U(\varvec{x} ) = \tfrac{1}{2}\varvec{\epsilon }^{\mathrm{T}} \varvec{C} \varvec{\epsilon }\), is transformed into a compliant constraint via a Legendre transform as presented in Sect.2. For each particle i, a deformation constraint is imposed

$$\begin{aligned} 0 = \varvec{g}^i \equiv \begin{bmatrix} \epsilon ^i_{xx}\\ \epsilon ^i_{yy}\\ \epsilon ^i_{zz}\\ \epsilon ^i_{yz} + \epsilon ^i_{zy}\\ \epsilon ^i_{zx} + \epsilon ^i_{xz}\\ \epsilon ^i_{xy} + \epsilon ^i_{yx} \end{bmatrix}, \end{aligned}$$
(24)

with particle strain components \(\epsilon ^i_{\alpha \beta } = \frac{1}{2} (F^i_{\alpha \beta } + F^i_{\beta \alpha } + F^i_{\gamma \alpha } F^i_{\gamma \beta } )\) based on the displacement gradient \(F^i_{\alpha \beta }(\varvec{q}) = \nabla _\beta u_\alpha (\varvec{x}^i,\varvec{q})\), computed by evaluating the field at \(\varvec{x} = \varvec{x}^i\). Note that the particle strain depends on the displacement of all particles within the domain of influence with radius l. The compliance parameter becomes \(\varvec{\varepsilon }^i= (V^i\varvec{C}^i)^{-1}\), which depends on the material parameters, through Eq. (13), and on the spatial resolution through the particle volume factor \(V^i\) that appears when integrating from energy density to particle energy. As expected, softer materials will have larger compliance parameter and thus deform more easily. The Jacobian of the deformation constraint, \(\varvec{G} = \partial \varvec{g} /\partial \varvec{q}\), can be expanded through the chain rule into

$$\begin{aligned} G^{i}_{\alpha \beta }(\varvec{q}) = \frac{\partial g^{i}_{\alpha }}{\partial \epsilon ^i_{\gamma \eta }} \frac{\partial \epsilon ^i_{\gamma \eta }}{\partial F^i_{\tau \kappa }} \frac{\partial F^i_{\tau \kappa }}{\partial q_\beta ^j}. \end{aligned}$$
(25)

The Jacobian for constraint i has block structure \(\varvec{G}^i = [\varvec{G}^{i1},\ldots , \varvec{G}^{ij}, \ldots , \varvec{G}^{i{N}_{\text {p}}}]\), where each block element \(\varvec{G}^{ij}\) has dimension \(6\times 3\). For notational convenience, the constraint vector is split in two parts, one for the diagonal terms of the strain tensor, \({\varvec{g}}_{\text {d}}^i = [\epsilon ^i_{xx},\epsilon ^i_{yy},\epsilon ^i_{zz}]^{\mathrm{T}}\) and one for the off-diagonal terms \({\varvec{g}}_{\text {od}}^i = [\epsilon ^i_{yz} + \epsilon ^i_{zy},\ \epsilon ^i_{zx} + \epsilon ^i_{xz},\ \epsilon ^i_{xy} + \epsilon ^i_{yx}]^{\mathrm{T}}\). The Jacobian blocks \(\varvec{G}^{ij}\) are split correspondingly into two \(3 \times 3\) Jacobian blocks, \(\varvec{G}^{ij} = [{{\varvec{G}}_{\text {d}}^{ij}}^{\mathrm{T}},\ {{\varvec{G}}_{\text {od}}^{ij}}^{\mathrm{T}}]^{\mathrm{T}}\). After some lengthy algebra, the following expressions for the Jacobians are found

$$\begin{aligned} {\varvec{G}}_{\text {d}}^{ij}&= \begin{bmatrix} \left( 1 + F^i_{xx}\right) \varLambda ^{ij}_x&\quad F^i_{yx} \varLambda ^{ij}_x&\quad F^i_{zx} \varLambda ^{ij}_{x}\\ F^i_{xy} \varLambda ^{ij}_y&\quad \left( 1 + F^i_{yy}\right) \varLambda ^{ij}_{y}&\quad F^i_{zy} \varLambda ^{ij}_{y}\\ F^i_{xz} \varLambda ^{ij}_z&\quad F^i_{yz} \varLambda ^{ij}_z&\quad \left( 1 + F^i_{zz}\right) \varLambda ^{ij}_z \end{bmatrix},\end{aligned}$$
(26)
$$\begin{aligned} {\varvec{G}}_{\text {od}}^{ij}&= \begin{bmatrix} F^i_{xy} \varLambda ^{ij}_z + F^i_{xz} \varLambda ^{ij}_y \;&\quad \left( 1 + F^i_{yy}\right) \varLambda ^{ij}_z+ F^i_{yz} \varLambda ^{ij}_y \;&\quad F^i_{zy} \varLambda ^{ij}_z+\left( 1 + F^i_{zz}\right) \varLambda ^{ij}_y\\ F^i_{xz} \varLambda ^{ij}_x + \left( 1 + F^i_{xx}\right) \varLambda ^{ij}_z\;&\quad F^i_{yz} \varLambda ^{ij}_x + F^i_{yx} \varLambda ^{ij}_z \;&\quad \left( 1 + F^i_{zz}\right) \varLambda ^j_x + F^i_{zx}\varLambda ^j_z\\ \left( 1 + F^i_{xx}\right) \varLambda ^{ij}_y + F^i_{xy} \varLambda ^{ij}_x \;&\quad F^i_{yx} \varLambda ^{ij}_y+\left( 1 + F^i_{yy}\right) \varLambda ^{ij}_x \;&\quad F^i_{zx} \varLambda ^{ij}_y + F^i_{zy} \varLambda ^{ij}_x \end{bmatrix}, \end{aligned}$$
(27)

where \(\varLambda ^{ij}_{\beta } = \nabla _\beta \varPsi _j(\varvec{x}^i)\). Observe that only \(F^i_{\alpha \beta }(\varvec{q})\) depends on the current particle positions while \(\varLambda ^{ij}_{\beta }\) depends only on the reference positions and may thus be pre-computed. In the derivation of the Jacobians, the following partial derivatives are used

$$\begin{aligned} \frac{\partial \epsilon ^i_{\gamma \eta }}{\partial F^i_{\tau \kappa }}= & {} \tfrac{1}{2} \left( \delta _{\gamma \tau }^{\eta \kappa } + \delta _{\eta \tau }^{\gamma \kappa } + \delta _{\kappa \gamma } F^i_{\tau \eta } + \delta _{\eta \kappa }F^i_{\tau \gamma }\right) ,\\ \frac{\partial F^i_{\tau \kappa }}{\partial q_\beta ^j}= & {} \delta _{\tau \beta } \nabla _\kappa \varPsi _j\left( \varvec{x}^i\right) , \end{aligned}$$

with Kronecker notation \(\delta _{\gamma \tau }^{\eta \kappa }\equiv \delta _{\gamma \tau }\delta _{\eta \kappa }\).

3.3.1 Stabilisation constraint

The mls approximation has the deficiency of underestimating the strain for deformation modes on short length scales. This makes the method unstable, manifested by spurious short wavelength deformation modes. Following [20, 34], we eliminate this instability and associated discretisation error by adding the following deformation energy

$$\begin{aligned} \tilde{U}^i= \frac{\alpha l^2 V^i}{E}\left[ \left( \varvec{\nabla } \cdot \varvec{\sigma }\right) _{\varvec{x} = \varvec{x}^i} \right] ^2, \end{aligned}$$
(28)

where \(\alpha \) is a dimensionless stabilisation parameter and \(\varvec{f}^i\) are the forces on the pseudo-particle other than elastic ones. The corresponding stabilisation constraint becomes \(\tilde{\varvec{g}}^{i} = (l/E)\left[ \left( \varvec{\nabla } \cdot \varvec{\sigma }\right) _{\varvec{x} = \varvec{x}^i} \right] \) with regularisation \(\tilde{\varepsilon }^i = (\alpha V^i E)^{-1}\) and after a suitable normalisation. The stress divergence is computed using a mls approximation of the stress tensor field \(\varvec{\sigma }(\varvec{x}) = \sum _j^{{N}_{\text {p}}} \varPsi ^j(\varvec{x}) \varvec{C} (\varvec{\epsilon }^j - \varvec{\epsilon }_\text {p}^j)\). The stabilisation constraint becomes

$$\begin{aligned} \tilde{g}^{i}_\alpha = \frac{l}{E}\left[ \sum _j^{{N}_{\text {p}}} \left( \hat{D}_{\alpha \beta }\varPsi ^j\right) _{\varvec{x} = \varvec{x}^i} C_{\beta \tau } \left( \epsilon _\tau ^j - \epsilon _{\text {p}\tau }^j\right) \right] , \end{aligned}$$
(29)

where the stress and strain are represented using Voigt notation such that the divergence operator is

$$\begin{aligned} \hat{\varvec{D}} = \begin{bmatrix} \frac{\partial }{\partial x}&\quad 0&\quad 0&\quad 0&\quad \frac{\partial }{\partial z}&\quad \frac{\partial }{\partial y}\\ 0&\quad \frac{\partial }{\partial y}&\quad 0&\quad \frac{\partial }{\partial z}&\quad 0&\quad \frac{\partial }{\partial x}\\ 0&\quad 0&\quad \frac{\partial }{\partial z}&\quad \frac{\partial }{\partial y}&\quad \frac{\partial }{\partial x}&\quad 0 \end{bmatrix}. \end{aligned}$$
(30)

The Jacobian of the stabilisation constraint becomes

$$\begin{aligned} \tilde{G}^{ik}_{\alpha \sigma } \equiv \frac{\partial \tilde{g}^{i}_\alpha }{\partial q^k_\sigma } = \frac{l}{E} \sum _j^{{N}_{\text {p}}} \left( \hat{D}_{\alpha \beta }\varPsi ^j\right) _{\varvec{x} = \varvec{x}^i} C_{\beta \tau } G^{jk}_{\tau \sigma }, \end{aligned}$$
(31)

where \(G^{jk}_{\tau \sigma } = \partial \epsilon _\tau ^j/\partial q^k_\sigma \) is already derived for the compliant constraint.

3.4 Contacts

Contacts between elastoplastic solids and rigid or static bodies are modelled by assigning a rigid spherical shape of radius l to each pseudo-particle and imposing the Signorini–Coulomb law for unilateral dry frictional contacts [5], as described in Sect. 2.3 and in greater detail in [8]. A contact situation between a solid and three rigid bodies is illustrated in Fig. 3. The contact overlap and normal are indicated as well as the contact point, which is defined at half distance between the overlapping geometries. Contacts between neighbouring pseudo-particles are ignored. Using spherical shapes to approximate the contact boundary of the solid has obvious drawbacks, e.g. perfectly smooth surfaces cannot be represented. This should be considered as an intermediate solution only, practical to implement in prototype code. More sophisticated representations of boundaries and contact detection algorithms for meshfree methods exist [35, 36] and should replace the use of spherical shapes.

Fig. 3
figure 3

Illustration of contact handling

4 Simulation

The implementation details and results from nonsmooth multidomain dynamic simulation including elastoplastic solids is presented in this section. The main simulation algorithm is given in Sect. 4.1. The elastoplastic solid model is implemented in C++ making use of the simulation software library AGX Dynamics [37] for data types, collision detection algorithms, and mlcp solver framework, covered in Sect. 4.2. The elastic and plastic model and implementation is verified by performing load–displacement simulation tests presented in Sect. 4.3. Finally, in Sect. 4.4, the applicability of the approach is demonstrated by multidomain examples including a simple terrain vehicle with tracked bogies driving over a deformable terrain and a simulated cone penetrometer test in soil with embedded rock.

4.1 Main algorithm

Algorithm 1 lists the main steps in running a multidomain dynamics simulation including both elastoplastic solids and contacting rigid multibodies.

figure a

The elastoplastic solid is initialised by defining a solid volume and assigning material parameters. The solid is discretised into \({N}_{\text {p}}\) pseudo-particles according to a given spatial resolution. For simplicity, the particles are positioned in a regular cubic pattern. This defines the reference state with vanishing strain and stress. The elastoplastic constraints are initialised and connectivity data listing the particles involved in each constraint is created. Similarly, rigid bodies and kinematic constraints are defined, for instance, to form an articulated vehicle and powertrain. Each body is assigned a geometric 3D shape. Contact material properties are assigned to each body, including coefficient of restitution, elasticity, and friction. These are used to generate contact constraint data included in the mlcp when triggered by contact detection during simulation. Certain quantities are computed once before time integration and then reused for the sake of optimisation, e.g. the inverse moment matrix \(\varvec{A}^{-1}\) in the mls approximation, \(\nabla _\beta \varPhi \) and \(\varvec{\varLambda }\).

figure b

The simulation is run with a fixed timestep, following the stepper in Sect. 2.2. Each timestep begins with reading input signals, e.g. from operator and control system, and computation of explicit forces. Next, contact detection algorithms produce a set of contacts for intersecting geometries. Each contact position and velocity, penetration depth, normal and tangent is stored. Contacts are classified as either impacting, continuous or separating, depending on the sign of the relative contact velocity. The strain and stress fields are computed as described in Sect. 3.1 using the mls approximation of the displacement field for the spatial discretisation described in Sect. 3.2. The trial stress is tested against one of the three yield surfaces decided by Algorithm 3. If it is outside the elastic domain, the radial return Algorithm 2 computes the plastic deformation that returns the stress to the yield surface with an error threshold \({\varepsilon }_{\text {tol}}\). The compaction variable \(\kappa \) is also updated by this. Constraint violation and Jacobians are computed from elastic strain, contact data, and state of the multibodies. The matrix blocks and limits for the mlcp are computed and fed to the mlcp solver outlined in Sect. 4.2. The main solve is preceded with an impact solve stage, in which impacting contacts are solved using the Newton impulse law \(\varvec{G}_\text {n}\dot{\varvec{q}}^{+} = - e \varvec{G}_\text {n}\dot{\varvec{q}}^{-}\), with coefficient of restitution e, while satisfying all other constraint velocity conditions, \(\varvec{G}\dot{\varvec{q}}^+ = 0\), and complementarity conditions. The main mlcp solve determines the new velocities and constraint forces. After this the positions and orientations are integrated. At the end of each timestep, data of the new state are stored for post-processing and visualisation.

figure c

4.2 Overview of the mlcp solver

The main computational task for each timestep is solving the mlcp in Eq. (10) with saddle point matrix structure given in Eq. (9). Each sub-matrix is block-sparse and the routines for building, storing, and solving are tailored for this and exploit blas3 operations as much as possible to gain computational speed. In order to achieve high performance, e.g. real-time simulation of complex multidomain systems, splitting is applied [38]. Each subproblem can then be treated with different mlcp solvers that best fit the requirements of accuracy, stability, and scalability. For the elastoplastic solid and for jointed rigid multibodies, with relatively few complementarity conditions, a direct mlcp solver is used that is described in Sect. 4.2.2.

4.2.1 Split solve

Assume three sets of constraints, labelled A, B, and AB for two subsystem and their coupling. The linear system (11) is split into two subproblems by duplicating the variables \(\dot{\varvec{q}}\) and \(\varvec{\lambda }_{AB}\) and reordering the augmented system. A stationary iterative update procedure can then be formed based on the four matrix blocks

$$\begin{aligned} \varvec{H}_{AB} \varvec{z}^{k+1}_{AB}&= - \varvec{r}_{AB} + \varvec{G}^{\mathrm{T}}_{B}\varvec{\lambda }^{k}_{B}, \end{aligned}$$
(32)
$$\begin{aligned} \varvec{H}_{BA} \varvec{z}^{k+1}_{BA}&= - \varvec{r}_{BA} + \varvec{G}^{\mathrm{T}}_{BA}\varvec{\lambda }^{k+1}_{A}, \end{aligned}$$
(33)

with

$$\begin{aligned} \varvec{H}_{AB}= & {} \begin{bmatrix} \varvec{M}&\quad -\varvec{G}^{\mathrm{T}}_{A}&\quad -\varvec{G}^{\mathrm{T}}_{AB}\\ \varvec{G}^{\mathrm{T}}_{A}&\quad \varvec{\varSigma }_{A}&\quad 0\\ \varvec{G}^{\mathrm{T}}_{AB}&\quad 0&\quad \varvec{\varSigma }_{AB}\\ \end{bmatrix}, \end{aligned}$$
(34)
$$\begin{aligned} \varvec{z}_{AB}= & {} \begin{bmatrix} \dot{\varvec{q}} \\ \varvec{\lambda }_A \\ \varvec{\lambda }_{AB} \end{bmatrix}\,\ \ \varvec{r}_{AB} = \begin{bmatrix} \dot{\varvec{p}} \\ \varvec{v}_A \\ \varvec{v}_{AB}, \end{bmatrix} \end{aligned}$$
(35)

and the same for \(\varvec{H}_{BA}\), \(\varvec{z}_{BA}\), and \(\varvec{r}_{BA}\) with A and B permuted. The iterative procedure converges if the spectral radius of the augmented system \(\varvec{H}\) fulfils \(\rho ([\varvec{D} + \varvec{L}]^{-1}\varvec{U}) < 1\). The key point is that each subproblem can be approached using different solvers. In the case of a machine interacting with an elastoplastic terrain, the machine and solid terrain constraints, A, are split from the tangential contact forces related to dry friction, B, both systems sharing the normal contact constraints (nonpenetration), AB. The subsystem (32), with the solid, machine, and contact normals is solved first using a direct solver, while the subsystem (33), containing friction constraints, is solved using an iterative projected Gauss–Seidel solver. The split solve may be terminated after the first iteration, accepting potential errors from the friction forces, or continued with a final stage 1 solve. Experiments show that further iterations do not necessarily reduce the errors. For large contact systems (\({>}1000\) contacts), with many complementarity conditions, both normal and friction constraints may be moved to an iterative projected Gauss–Seidel solver [8].

4.2.2 Direct solver

The direct solver is a block pivot method [38] for mlcps based on Newton–Rhapson iterations applied to nonsmooth formulation. The detailed algorithm is an adaptation of Murty’s principal pivoting method, and is found in the reference [39] as Algorithm 21.2. Before the solve step, the matrix \(\varvec{H}\) is factorised by a permuted ldl-factorisation, \(\varvec{H} =\varvec{P}\varvec{L}\varvec{D}\varvec{L}^{\mathrm{T}} \varvec{P}^{\mathrm{T}}\), where the permutation \(\varvec{P}\) is used to minimise fill-ins and may include leaf-swapping to avoid pivoting on \(\varvec{\varSigma }\) since it is often close to zero. The factorisation requires symmetric indefinite matrices, but this is not the case with \(\varvec{H}\) initially as shown in Eq. (11). This is fixed by absorbing a negative sign in the vector \(\varvec{z}\).

4.3 Verification tests

The rotational invariance of the elastic solid model is verified in simulations confirming that the strain invariants are unaffected by rigid rotations of the body.

4.3.1 Elasticity

The validity of the model is confirmed by a number of tests of macroscopic relations between an applied load and the resulting displacement. Uniaxial stretching (u) and hydrostatic compression (c) are investigated, as described in Fig. 4.

Fig. 4
figure 4

Illustration of the verification tests by uniaxial stretch (left) and hydrostatic compression (right) of an elastic cube

In the uniaxial test, the boundary condition in the tensile direction is a plane constraint with free slip in plane. The other boundaries are free. In the hydrostatic compression test, the boundary conditions are dynamically generated unilateral contact constraints. The boundary force is increased linearly with time, by regulating the position of the boundary geometry, while measuring the stress and strain components of Eqs. (36) and (37). All tests are simulated on a uniformly discretised homogeneous isotropic three-dimensional solid with parameters given in Table 2.

Table 2 Elastic verification parameters

The simulation result is compared with exact solutions for from elasticity theory for uniform deformations of St. Venant–Kirchhoff materials. A test cube with initial rest length \(l_0\) and cross-sectional area \(A_0\) is considered. The deformed side length is denoted l, and the stretch ratio in that direction is \(\underline{\lambda } = l/l_0\). The following exact relations can be derived

$$\begin{aligned} {p}_{\text {u}}= & {} \frac{1}{2} {c}_{\text {u}} {\underline{\lambda }}_{\text {u}} \left( {\underline{\lambda }}_{\text {u}}^2 - 1 \right) , \end{aligned}$$
(36)
$$\begin{aligned} {p}_{\text {c}}= & {} \frac{1}{2} {c}_{\text {c}} {\underline{\lambda }}_{\text {c}}\left( {\underline{\lambda }}_{\text {c}}^2 - 1 \right) , \end{aligned}$$
(37)

where \(p = F / A_0\) is the applied boundary pressure, and \({c}_{\text {u}} = E\) and \({c}_{\text {c}} = \frac{E}{(1 - 2\nu )}\) are the Young’s and bulk modulus. The simulation results for \(E = 10^6\) Pa and \(\nu = 0.25\) are presented in Fig. 5. The influence radius was chosen experimentally to be as low as possible, reducing the number of neighbours and the simulation time, while maintaining physically accurate results. The chosen influence radius results in 27 neighbours for any evaluation point that is at least half an influence radius away from the boundary.

The simulation result with stabilisation constraint (\(\alpha = 100\)) agrees very well with the exact solution for large deformations. Without the stabilisation constraint, the simulated stress–strain relation deviates by 5–10% from the theory at large deformations \(|\underline{\lambda } -1| \lesssim 0.15\). The error decrease with finer resolution. Observe that for infinitesimal deformations \(\frac{1}{2}\underline{\lambda } \left( \underline{\lambda }^2 - 1\right) \approx \Delta l/l_0\), Eqs. (36) and (37) approximate to the well-known expressions from Hooke’s law. Increasing the stiffness or resolution further requires a smaller timestep for numerical stability.

Fig. 5
figure 5

Verification test of elastic response to hydrostatic compression (\(\underline{\lambda } < 1\)) and uniaxial stretch (\(\underline{\lambda } > 1\)) with \(E=10^6\) Pa and \(\nu =0.25\). The analytical solution is represented with a solid curve. Simulations are made with (\(\alpha = 100\)) and without (\(\alpha = 0\)) stabilisation constraint and for different discretisations

The strain field under hydrostatic compression is displayed in Fig. 6. With stabilisation constraint, the strain field is nearly uniform through the material. Without the stabilisation constraint, the strain deviates by as much as 40% with the largest deviations at the boundary.

Fig. 6
figure 6

Cross-sectional \({{\mathrm{tr}}}(\epsilon )\) through the elastic test cube with \({N}_{\text {p}}=6^3\) under hydrostatic compression to \(\underline{\lambda } = 0.850\) for which \({{\mathrm{tr}}}(\epsilon ) = 0.139\). a Cross-sectional \({{\mathrm{tr}}}(\epsilon )\) with stabilisation constraint. b Cross-sectional \({{\mathrm{tr}}}(\epsilon )\) with no stabilisation constraint.

Fig. 7
figure 7

Stress evolution during hydrostatic compression and unloading of an elastoplastic solid cube. a Stress and strain. b Mean stress invariants and yield surface

4.3.2 Plasticity

The Drucker–Prager cap model is tested under hydrostatic and triaxial loading and unloading, following the tests made in [18] with \(E = 91\) MPa, \(\nu =0.3\), \(c = 14\) kPa, \(\phi = 22^\circ \), \(W = 0.1\), \(D = 1\) mm\(^2\)/N. Stabilisation constraint is used with \(\alpha = 100\). The hydrostatic test examines the relation between the pressure, \({\sigma }_{\text {h}} = I_1/3\), and the volumetric strain, \({{\mathrm{tr}}}(\epsilon )\), while undergoing plastic deformation on the compression cap. The simulation result is presented in Fig. 7. The result is a permanent deformation of the cube by \({{\mathrm{tr}}}{\epsilon } = 0.1\) compared to \({{\mathrm{tr}}}{\epsilon } = 0.12\) in [18]. The evolution of the stress invariants, \(I_1\) and \(J_2\), in the yield space shows that the deviatoric stress is negligible and stress evolves purely along the hydrostatic axis during loading and unloading.

In the triaxial test, a hydrostatic pressure of \({\sigma }_{\text {h}} = 100\) kPa is first established. The load along the z-axis is then increased up to a level where the material yields while the side wall pressure is kept constant. The material is finally unloaded. The simulated evolution of the deviatoric stress as function of strain is displayed in Fig. 8 for a Drucker–Prager material with and without cap model. The simulated Drucker–Prager material is found to yield at a critical stress of 270 kPa. This is in good agreement with the analytical prediction from Eq. (18). As expected, the yield plateau is lower and less pronounced in the case of the capped Drucker–Prager material, because the stress reaches the compression cap surface before the Drucker–Prager surface. The triaxial test can be used to determine the value of the plastic hardening parameter D, whereas the maximum compaction parameter, W, can be determined from the hydrostatic compression test.

Fig. 8
figure 8

Triaxial test of an elastoplastic solid cube with capped and conventional Drucker–Prager model. a Applied stress over deformation. b Stress evolution for the capped Drucker–Prager model. c Stress evolution for the conventional Drucker–Prager model

4.3.3 Dynamic contacts

Dynamic contact handling is demonstrated by dropping a beam to rest on two thin cylinders and then deforming it by pressing a larger cylinder down on the beam. The result for an elastic and elastoplastic beam is displayed in Fig. 9.

Fig. 9
figure 9

Deformation of an elastic and elastoplastic beam (middle and right from initial state to the left). The colour codes the Frobenius norm of the strain tensor, ranging from 0 (green) to 0.20 (red)

Fig. 10
figure 10

Images from simulation of a tracked bogie (top) and a full terrain vehicle (bottom) passing over a zone with elastoplastic material

4.4 Multidomain demonstration

Two example systems are simulated to demonstrate multidomain capability. The first system is an articulated terrain vehicle with tracked bogies driving over a deformable terrain. Images from simulation of a bogie and of a full vehicle are shown in Fig. 10. Videos from simulations are available as supplementary material at http://umit.cs.umu.se/elastoplastic/. The vehicle weighs 4 tons and consist of roughly 200 rigid bodies including a front and rear chassis, bogie frames, wheels and track elements. These are interconnected with kinematic constraints to model chassis articulation, bogie and wheel axes, and tracks covering the wheeled bogies. The vehicle drivetrain consists of an engine, torque converter, drive shafts, and differentials that distribute the engine power to the front and rear parts and further between left and right bogies to the wheels. The terrain is modelled as a static trimesh and a rectangular ditch with elastoplastic material. The elastoplastic material parameters are set to \(Y=1\) MPa, \(v=0.25\), \(\phi =22^\circ \), \(c = 1\), \(R_C = 4\), \(T=5\) kPa, \(\kappa _0=-0.5\) MPa, \(D=10^{-6}\), \(W = 0.2\), \(\rho =2000\) kg/m\(^3\), which represents a weak and soft forest terrain. The tracked bogie and vehicle create a rutting with permanent deformation and the rut depth can be measured. In the full vehicle simulation, the solid is discretised into \({N}_{\text {p}} = 2100\) pseudo-particles. The coupled system of vehicle and terrain thus have about 20.000 variables. With 10 ms timestep and using a single CPU on a conventional desktop computer, the simulation is of the order 1/100 from real time. It should be emphasised that this is measured on prototype code with no attempt for optimisation and parallelisation. Also, the implementation uses high-fidelity direct solver that delivers higher accuracy than what is typically required in terrain-vehicle simulations.

Fig. 11
figure 11

Image sequence from a simulated cone penetration test on an elastoplastic terrain with an embedded rock

Fig. 12
figure 12

Simulation measurement of a cone penetrometer on elastic and elastoplastic terrain with and without embedded rock. a Homogeneous terrain, b terrain with embedded rock. The \(\times \) indicate the time instances in Fig. 11b–d

The second demonstration example is a dynamic cone penetration test, where a cylindrical weight is dropped repeatedly on a cone measuring the penetration depth. This is a common way of measuring the mechanical properties of terrain. The penetration depth of the cone in simulated for two different cases. The first case is a homogeneous material, and the second is material with an embedded rock, represented by a rigid body, as illustrated by Fig. 11. The colours indicate the magnitude of displacement. The simulated cone penetration is presented in Fig. 12. The resistance is higher in the ground with an embedded rock, before the cone actually comes in contact with the rock.

5 Discussion

A meshfree elastoplastic solid model is made compatible with nonsmooth multidomain dynamics. The solid appears as a particle system in a constrained multibody system, on the same footing as articulated rigid multibodies and power transmission systems. The pseudo-particles carry field variables, e.g. stress and strain tensor fields, approximated using the moving least squares method. The dynamic interaction between the deformable solid, rigid multibodies, and other geometric boundaries is modelled by unilateral contact constraints with dry friction. The full system can be processed using the same numerical integrator and solver framework without introducing additional coupling equations with unknown parameters. Impulsive behaviour can automatically be transmitted instantly through the full and strongly coupled system. This enables fast and stable simulation of complex mechatronic systems interacting with elastoplastic materials. The MLS approximation underestimates the strain for short wavelength deformation modes. A stabilisation constraint is developed to compensate for this and it improves the accuracy and stability significantly. The explicit form of the deformation constraint and its Jacobian is given in Eqs. (24)–(26), and the stabilisation constraint in Eqs. (29)–(31). The Jacobians can be factored to a constant matrix that can be pre-computed, multiplied with current particle displacements.

The verification tests show good agreement with analytical reference solutions for large deformations of elastic and elastoplastic test cubes. The stabilisation constraint is essential for the accuracy and stability. Demonstration is made with a tracked terrain vehicle driving over deformable terrain using the capped Drucker–Prager model and a cone penetrometer test on terrain with and without an embedded rock.

The computational bottleneck of the simulation lies in solving the block-sparse mixed linear complementarity problem (10). With dedicated hardware, parallel factorisation algorithms, and iterative solver for a more approximate solution of the terrain dynamics, the performance can be expected to increase by several orders in magnitude. Exploring this is left for future work. Another area of improvement is to integrate the plastic yield and flow computations with the mixed complementarity problem for the constraint forces and velocity update. This will enable integration with larger timestep for strongly coupled problems than the current predictor–corrector method allow.

The presented method rest on the St. Venant–Kirchhoff elasticity model in combination with the Drucker–Prager plasticity model and the additive decomposition of the elastic and plastic strain. These assumptions are in general only valid under small deformations and alternatives should be considered in future work.