1 Introduction

The driving behavior of passenger vehicles is significantly influenced by the wheel suspension. The wheel suspension guides the wheels relative to the vehicle body and defines their position with respect to the road surface. This in turn affects the occurring tire forces and thereby the vehicle’s motion. In addition to the purely kinematic guidance of the wheel, wheel position changes occur under external loads due to the elastic properties of the suspension. This elasticity is mainly attributed to elastic bushings connecting the different components of a wheel suspension with each other [1]. The design of these elastokinematic properties aims either to compensate the resulting wheel position changes or to convert them into desired wheel position changes to improve the vehicle’s driving behavior [1]. In automotive engineering, a variety of wheel suspension concepts with different topologies has emerged, such as McPherson, double wishbone or multilink suspension [2]. They exhibit different freedom in the design of their kinematics and elastokinematics, but also different complexity, costs, and packaging space requirements. This makes the development process very challenging, as automotive engineers have to deal with different suspension topologies, many design parameters, and also design objectives. Consequently, virtual vehicle dynamics development is becoming increasingly important because it offers the potential for a more targeted, cost-effective, and safer development process. Virtual development processes require multibody simulation models that allow the simulation of different suspension topologies with accurate and meaningful results within short computation times, e.g., to analyze different design variants of a suspension. Moreover, not only objective design targets but also the subjective perception of drivers play a crucial role in the vehicle dynamics design. Hence, conducting test drives on driving simulators is crucial even in the initial phases of development. However, vehicle dynamics models for such real-time applications are usually simplified to meet the required computation times, including the elastokinematic properties of the wheel suspension. In order to increase the validity of driving simulators and their applicability in the development process, real-time capable vehicle dynamics models without such simplifications are desirable.

Real-time multibody simulation of vehicle wheel suspensions with elastic bushings is challenging because of the high stiffness and damping properties of the bushings. Together with the low inertia of the suspension bodies, high-frequency and/or strongly damped motions occur in the suspension system. In contrast, the dynamics of, e.g., the wheel travel motion is comparatively slow. This means that the system features dynamics on different time scales. From a numerical point of view, the system’s equation of motion has a high numerical stiffness, making stable and real-time capable numerical integration challenging. In literature, one can find many approaches for real-time multibody simulation of wheel suspensions with special focus on their elastokinematics. This includes, for example, modeling the wheel suspension as a macro joint [3], quasistatic approximation of the fast motions of the suspension bodies [4], or reducing the numerical stiffness through additional stiffnesses and dampings in series to the bushings [5]. These approaches have in common that the dynamics and/or the elastokinematics of the suspension are modified or simplified. Alternatively, linear-implicit integration methods promise real-time numerical integration of numerically stiff equations of motion without the need for major model simplifications. Typical examples are the linear-implicit Euler method, Rosenbrock–Wanner or W-Methods and the noniterative HHT-\(\alpha \) method [68].

In this contribution, the authors present a multibody model for vehicle wheel suspensions with different topologies. Based on a linear-implicit integration scheme, it allows for real-time simulation without simplifications regarding their elastokinematic properties. With the underlying data model, different suspension topologies can be set up and parametrized. Elastic bushings are modeled as stiff, nonlinear force elements. The underlying numerically stiff equation of motion is integrated with a linear-implicit L-stable real-time integrator with two stages (LSRT2). Through exploiting the suspension topology, the computational effort of the integration is significantly reduced. A calculation procedure is presented for analytical online-linearization of the equation of motion, applicable to arbitrary suspension topologies. The model is implemented in Matlab/Simulink. Using a double wishbone and a multilink suspension as examples, computation times and accuracy of the model are evaluated for dynamic load cases. The paper is structured as follows. In Sect. 2, the multibody systems of the wheel suspensions are introduced, together with the underlying data model and their numerically stiff equation of motion. In Sect. 3, challenges in real-time capable integration are addressed and the linear-implicit integration method LSRT2 is described. Also, modifications for reducing the computational effort of the method are introduced. The calculation procedure for the online-linearization of the equation of motion is explained in Sect. 4. Furthermore, Sect. 5 presents the results in terms of accuracy and computation times. The paper ends with the summary in Sect. 6.

2 Multibody systems of suspension systems

In the following, we consider two different suspension systems. This includes a double wishbone suspension as illustrated in Fig. 1 and a multilink suspension, typically employed at the front and rear of mid-range passenger vehicles. Both suspensions feature extensive elastokinematic properties through the use of elastic bushings.

Fig. 1
figure 1

Components of the double wishbone suspension (Color figure online)

2.1 Suspension topology

The double wishbone suspension features the topology shown in the topology diagram Fig. 2 (left). The wheel is mounted on the wheel mount, which in turn is connected to the vehicle body via the upper wishbone, the track rod, the trailing arm, and the lower wishbone. The spring damper unit consists of the damper tube, the piston rod, and the spring which is divided into an upper and a lower part. It is connected to the vehicle body and the lower wishbone at both respective ends. An anti-roll bar connects the left- and right-hand side of the suspension. It is divided into two rigid bodies with a rotational spring in between. On its end, the anti-roll bar is attached to the damper tube via the anti-roll bar link. The bodies are connected through elastic bushings to design the elastokinematic behavior of the suspension. Furthermore, the force characteristics of the spring damper unit is modeled with point-to-point (P2P) force elements. In addition, bump and rebound stops with highly progressive stiffness limit the wheel travel. All in all, the model consists of 24 bodies and 48 force elements, featuring a total of 144 degrees of freedom. The topology of the multilink suspension, shown in Fig. 2 (right), differs from the double wishbone suspension. Here, the wheel mount is guided through a total of five control arms. These are not directly connected to the vehicle body, but to a subframe mounted on the vehicle body. The spring damper unit with similar structure as in the double wishbone suspension is installed between the wheel mount and the vehicle body. The anti-roll bar is attached to one of the control arms via the anti-roll bar link. In total, the multilink suspension features a slightly higher number of bodies (27) and force elements (63), and has 162 degrees of freedom.

Fig. 2
figure 2

Simplified topology diagrams of the double wishbone (left) and the multilink suspension (right); only the left-hand side of the suspension systems is shown (Color figure online)

2.2 Model elements and data model

The multibody systems of the two suspensions are composed of various types of model elements, defined in the underlying data model. According to Fig. 3, the data model contains all numerical parameters of the model elements. In addition, each model element is assigned a unique index for identification. These indices are used to represent the specific suspension topology in the data model. The first type of model elements are rigid bodies that represent the different components of the suspension. They are parametrized by their mass and inertia tensor and the position of the center of mass in the body coordinate system. Furthermore, the initial pose of the body coordinate system in the global coordinate system is included in the data model. A unique body index is assigned to each body in the suspension for identification. Markers are local coordinate systems on the bodies as shown in Fig. 3. They are used to track the motion of characteristic points and to apply forces and torques onto the bodies, e.g., of attached force elements. Each marker is defined by a unique marker index and uniquely assigned to its corresponding body, whose body index is included in the marker properties. To locate the marker on the body, its pose in the body coordinate system is included in the data model. Bushings are force elements with generally nonlinear stiffness and damping properties in all translational and rotational directions. They are used to model the elastokinematic properties of the suspension, as they allow a certain flexibility in the connection of the suspension components. A bushing is attached to two different markers (cf. Fig. 3) and parametrized through characteristic curves that map the relative motion of the markers to the force and torque output of the bushing. The mathematical formulation of the bushings is based on the equations given in [9], which are extended to include relative motions and torques in rotational direction and nonlinear characteristic curves. In accordance to typical values given in [10], the stiffness values of the bushings are in the order of \(10^{5}..10^{7}~\text{N/m}\) in translational and \(0..10^{5}~\text{Nm/rad}\) in rotational direction, depending on their specific location in the suspension. Bushing force elements are also used to replace kinematic joints by specifying high stiffness values in the directions to be constrained. This is the case, for example, with the translational joints in the spring damper units. Each bushing force element is uniquely identified through its bushing index. Additionally, the indices of its corresponding markers are included in the bushing properties, as shown in Fig. 3. P2P elements are one-dimensional force elements acting in the connection line between the two attached markers. They are used to model the main spring and damper in the spring damper unit as well as bump and rebound stops, parametrized through nonlinear characteristic curves. The use of indices is the same as for bushing force elements. With this data model, arbitrary suspension topologies can be modeled as illustrated in Fig. 3 (right). They are set up by adding further model elements and connecting them to each other using the indices.

Fig. 3
figure 3

Data model for parametrizing a suspension system

2.3 Equation of motion

The position and velocity state of a body \(l\) in the suspension system is described through the body’s generalized coordinates \(\mathbf {r}_{l}\) and velocities \(\mathbf {v}_{l}\) defined as

$$\begin{aligned} &\mathbf {r}_{l} = \begin{pmatrix} {}^{0}x_{l} & {}^{0}y_{l} & {}^{0}z_{l} & \alpha _{z,l} & \alpha _{y',l} & \alpha _{x'',l} \end{pmatrix} ^{T} , \end{aligned}$$
(1a)
$$\begin{aligned} &\mathbf {v}_{l} = \begin{pmatrix} {}^{0}v_{x,l} & {}^{0}v_{y,l} & {}^{0}v_{z,l} & {}^{B}\omega _{x,l} & {}^{B} \omega _{y,l} & {}^{B}\omega _{z,l} \end{pmatrix} ^{T} \:. \end{aligned}$$
(1b)

Here, \({}^{0}x_{l}\), \({}^{0}y_{l}\), \({}^{0}z_{l}\) and \({}^{0}v_{x,l}\), \({}^{0}v_{y,l}\), \({}^{0}v_{z,l}\) are translational displacements and velocities of the body coordinate system in the global coordinate system. The rotation of the body is described through Cardan angles \(\alpha _{z,l}\), \(\alpha _{y',l}\) and \(\alpha _{x'',l}\) with a yaw–pitch–roll current frame rotation sequence and the angular velocities \({}^{B}\omega _{x,l}\), \({}^{B}\omega _{y,l}\), \({}^{B}\omega _{z,l}\) in the body coordinate system. Singularities typical for Cardan angles are avoided by defining the body coordinate system in such a way that there are no large rotations around the critical axis. Accordingly, the equation of motion of a single body is formulated as

$$\begin{aligned} \dot{\mathbf {r}}_{l}&=\mathbf {K}_{l}(\mathbf {r}_{l}) \mathbf {v}_{l}, \end{aligned}$$
(2a)
$$\begin{aligned} \mathbf {M}_{l}\dot{\mathbf {v}}_{l}&=\mathbf {h}_{l}(\mathbf {r},\mathbf {v},\mathbf {u}) =\mathbf {h}_{ \mathrm{s},l}(\mathbf {r},\mathbf {v}) - \mathbf {h}_{\mathrm{\omega},l}(\mathbf {r}_{l}, \mathbf {v}_{l}) + \mathbf {h}_{\mathrm{g},l}(\mathbf {r}_{l}) + \mathbf {h}_{\mathrm{u},l}( \mathbf {r}_{l},\mathbf {v}_{l},\mathbf {u}), \end{aligned}$$
(2b)

with the initial conditions \(\mathbf {r}_{l,0}\) and \(\mathbf {v}_{l,0}\) at time \(t=t_{0}\). The kinematics matrix \(\mathbf {K}_{l}(\mathbf {r}_{l})\) describes the linear transformation of the generalized velocities to the time derivatives of the generalized coordinates; \(\mathbf {M}_{l}\) is the constant mass matrix of the body. The vector of generalized forces \(\mathbf {h}_{l}\) consists of the body surface forces \(\mathbf {h}_{\mathrm{s},l}\), gyroscopic forces \(\mathbf {h}_{\mathrm{\omega},l}\), gravitational forces \(\mathbf {h}_{\mathrm{g},l}\), and input forces \(\mathbf {h}_{\mathrm{u},l}\) depending on external inputs to the suspension such as wheel forces, denoted by the input vector \(\mathbf {u}\). The body surface forces arise from the bushing and P2P force elements. As these elements always connect the body to other bodies in the suspension, their force do not only depend on the generalized coordinates \(\mathbf {r}_{l}\) and velocities \(\mathbf {v}_{l}\) of body \(l\), but also on the values of the other bodies. Hence, \(\mathbf {h}_{\mathrm{s},l}\) is a function of the generalized coordinates \(\mathbf {r}\) and velocities \(\mathbf {v}\) of the overall system. They are composed of the generalized vectors of the individual bodies as

$$ \renewcommand{\arraystretch}{1} \textstyle\begin{array}{r} \mathbf {r} = \begin{pmatrix} \mathbf {r}_{1}^{T} & \mathbf {r}_{2}^{T} & \ldots & \mathbf {r}_{m}^{T} \end{pmatrix} ^{T} \:,\:\:\:\: \mathbf {v} = \begin{pmatrix} \mathbf {v}_{1}^{T} & \mathbf {v}_{2}^{T} & \ldots & \mathbf {v}_{m}^{T} \end{pmatrix} ^{T} \:, \end{array} $$
(3)

where \(m\) represents the total number of bodies. Thus, the equation of motion of the overall system is

$$\begin{aligned} \dot{\mathbf {r}}&=\mathbf {K}(\mathbf {r}) \mathbf {v}, \end{aligned}$$
(4a)
$$\begin{aligned} \mathbf {M}\dot{\mathbf {v}}&=\mathbf {h}(\mathbf {r},\mathbf {v},\mathbf {u}), \end{aligned}$$
(4b)

with the mass matrix

$$ \renewcommand{\arraystretch}{1} \textstyle\begin{array}{r} \mathbf {M} = \mathrm{diag}(\mathbf {M}_{1}, \mathbf {M}_{2}, \ldots , \mathbf {M}_{m}) \:,\:\:\:\: \end{array} $$
(5)

the kinematics matrix

$$ \renewcommand{\arraystretch}{1} \textstyle\begin{array}{r} \mathbf {K} = \mathrm{diag}(\mathbf {K}_{1}, \mathbf {K}_{2}, \ldots , \mathbf {K}_{m}) \end{array}\displaystyle ,$$
(6)

and the composed vector of generalized forces

$$ \renewcommand{\arraystretch}{1} \textstyle\begin{array}{r} \mathbf {h} = \begin{pmatrix} \mathbf {h}_{1}^{T} & \mathbf {h}_{2}^{T} & \ldots & \mathbf {h}_{m}^{T} \end{pmatrix} ^{T} \:. \end{array} $$
(7)

The equation of motion is a nonlinear ordinary differential equation featuring a high numerical stiffness because of the high stiffness and damping properties of the bushings. Numerical stiffness can be quantified through the ratio \(\max _{{i},{j}}({|\lambda _{{i}}|}/{|\lambda _{{j}}|})\) of the eigenvalues \(\lambda \) of the linearized equation of motion. A system is considered to be numerically stiff if the real parts of all eigenvalues are negative and the ratio \(\max _{{i},{j}}({|\lambda _{{i}}|}/{|\lambda _{{j}}|})\) is much higher than one [11]. For the considered suspension systems, the ratio is higher than \(10^{5}\), indicating a very high numerical stiffness.

3 Linear-implicit integration of the equation of motion

Numerically stiff multibody systems are challenging in terms of real-time numerical integration. In real-time applications like driving simulators, where model outputs must be provided at a fixed, predefined output rate, calculations must be executed in each time step within the specified step size while ensuring numerical stability during the whole simulation. On the one hand, implicit integration methods enable stable integration of numerically stiff differential equations. However, they may require the iterative solution of nonlinear equation systems, resulting in high computational effort that can even vary depending on the model’s state and excitation. Consequently, numerical integration cannot be guaranteed to be completed in all integration steps within the step size specified by the real-time application. On the other hand, explicit integration methods maintain a constant, a priori known computational effort per integration step, making them a popular choice for real-time applications. However, they usually have poor stability properties so that integration of numerically stiff differential equations may be unstable. In contrast, linear-implicit integration methods are a suitable approach for stable and real-time capable integration of numerically stiff multibody systems [6]. They are based on implicit integration methods but the equation of motion is integrated in a linearized form. Thus, the nonlinear equation systems to be solved in implicit integration methods are transformed to linear equation systems. Using direct solution methods, these equation systems are solved with less computational effort which is even the same in each integration step. Linear-implicit integration methods are therefore well suited for real-time applications.

3.1 Integration method LSRT2

Several linear-implicit integration methods can be found in literature, some of which have been compared by the authors in previous studies for the simulation of the double wishbone suspension [12]. The L-stable real-time integrator with two stages LSRT2 was found to be a good compromise between real-time capability and accuracy. It was originally proposed for real-time dynamic testing of substructures subjected to dynamic loadings [13]. Based on Rosenbrock schemes, which are a linear-implicit version of Runge–Kutta methods [8], LSRT2 is a single-step integration method with \(s=2\) stages and high numerical damping [13]. In this section, the method will be adapted for real-time capable time integration of the suspension systems considered here. For this, the equation of motion (4a)–(4b) is linearized according to

$$\begin{aligned} \dot{\mathbf {r}}&\approx \mathbf {K}_{\mathrm{lin}} \mathbf {v}, \end{aligned}$$
(8a)
$$\begin{aligned} \mathbf {M} \dot{\mathbf {v}}&\approx \:\mathbf {h}_{\mathrm{lin}} + \mathbf {J}_{ \mathrm{r,lin}} (\mathbf {r} - \mathbf {r}_{\mathrm{lin}}) + \mathbf {J}_{ \mathrm{v,lin}} (\mathbf {v} - \mathbf {v}_{\mathrm{lin}}) + \mathbf {J}_{ \mathrm{u,lin}} (\mathbf {u} - \mathbf {u}_{\mathrm{lin}}), \end{aligned}$$
(8b)

with \(\mathbf {K}_{\mathrm{lin}} = \mathbf {K}(\mathbf {r}_{\mathrm{lin}})\), \(\mathbf {h}_{\mathrm{lin}}=\mathbf {h}(\mathbf {r}_{\mathrm{lin}},\mathbf {v}_{ \mathrm{lin}},\mathbf {u}_{\mathrm{lin}})\) and the Jacobians

$$ \mathbf {J}_{\mathrm{r,lin}} = \frac{\partial \mathbf {h}}{\partial \mathbf {r}} \:, \:\:\:\: \mathbf {J}_{\mathrm{v,lin}} = \frac{\partial \mathbf {h}}{\partial \mathbf {v}} \:,\:\:\:\: \mathbf {J}_{ \mathrm{u,lin}} = \frac{\partial \mathbf {h}}{\partial \mathbf {u}} $$
(9)

in the linearization state \(\mathbf {r}_{\mathrm{lin}}\), \(\mathbf {v}_{\mathrm{lin}}\), and \(\mathbf {u}_{\mathrm{lin}}\). Based on the known generalized coordinates \(\mathbf {r}^{k}\) and velocities \(\mathbf {v}^{k}\) in time step \(k\), the values in the next time step \(k+1\) are calculated according to

$$\begin{aligned} \mathbf {r}^{k+1} &= \mathbf {r}^{k} + \Delta t \sum _{i=1}^{s} (b_{i} \Delta \mathbf {r}^{k,i}) , \end{aligned}$$
(10a)
$$\begin{aligned} \mathbf {v}^{k+1} &= \mathbf {v}^{k} + \Delta t \sum _{i=1}^{s} (b_{i} \Delta \mathbf {v}^{k,i}), \end{aligned}$$
(10b)

with the constant integration stepsize \(\Delta t = t_{k+1} - t_{k}\). For calculating \(\Delta \mathbf {v}^{k,i}\) in the stage \(i\), the following linear equation system has to be solved:

$$ \renewcommand{\arraystretch}{1} \begin{aligned} &\left [\mathbf {M} - \Delta t \gamma _{ii} \mathbf {J}_{ \mathrm{v,lin}} - (\Delta t \gamma _{ii})^{2} \mathbf {J}_{\mathrm{r,lin}} \mathbf {K}_{\mathrm{lin}} \right ] \Delta \mathbf {v}^{k,i} \\ &= \mathbf {h}(\mathbf {\tilde{r}}^{k,i}, \mathbf {\tilde{v}}^{k,i}, \mathbf {\tilde{u}}^{k,i}) + \Delta t \gamma _{ii} \mathbf {J}_{\mathrm{u,lin}} \Delta \mathbf {u}^{k,i} \\ &\quad + \Delta t \begin{pmatrix} \mathbf {J}_{\mathrm{r,lin}} & \mathbf {J}_{\mathrm{v,lin}} & \mathbf {J}_{ \mathrm{u,lin}} \end{pmatrix} \sum _{j=1}^{i-1} \left (\gamma _{ij} \begin{pmatrix} (\Delta \mathbf {r}^{k,j})^{T} & (\Delta \mathbf {v}^{k,j})^{T} & (\Delta \mathbf {u}^{k,j})^{T} \end{pmatrix}^{T} \right ) \\ &\quad + \Delta t \gamma _{ii} \mathbf {J}_{\mathrm{r,lin}} \mathbf {K}_{ \mathrm{lin}} \left [\mathbf {\tilde{v}}^{k,i} + \Delta t \sum _{j=1}^{i-1} \left (\gamma _{ij} \Delta \mathbf {v}^{k,j}\right )\right ] \: . \end{aligned} $$
(11)

Here, \(\Delta \mathbf {u}^{k,j}\) is defined as

$$ \Delta \mathbf {u}^{k,j} = \frac{1}{\Delta t} (\mathbf {u}^{k+1,j} - \mathbf {u}^{k}) \: . $$
(12)

Afterwards, \(\Delta \mathbf {r}^{k,i}\) is calculated according to

$$ \Delta \mathbf {r}^{k,i} = \mathbf {K}_{\mathrm{lin}} \left [\mathbf {\tilde{v}}^{k,i} + \Delta t \sum _{j=1}^{i} (\gamma _{ij} \Delta \mathbf {v}^{k,j}) \right ] \: . $$
(13)

The stage vectors \(\mathbf {\tilde{r}}^{k,i}\), \(\mathbf {\tilde{v}}^{k,i}\), and \(\mathbf {\tilde{u}}^{k,i}\) are defined as

$$\begin{aligned} \mathbf {\tilde{r}}^{k,i} &= \mathbf {r}^{k} + \Delta t \sum _{j=1}^{i-1} (a_{ij} \Delta \mathbf {r}^{k,j}) , \end{aligned}$$
(14a)
$$\begin{aligned} \mathbf {\tilde{v}}^{k,i} &= \mathbf {v}^{k} + \Delta t \sum _{j=1}^{i-1} (a_{ij} \Delta \mathbf {v}^{k,j}) , \end{aligned}$$
(14b)
$$\begin{aligned} \mathbf {\tilde{u}}^{k,i} &= \mathbf {u}(t^{k} + c_{i} \Delta t) \:. \end{aligned}$$
(14c)

The parameters of the method \(s\), \(b_{i}\), \(c_{i}\), \(a_{ij}\), and \(\gamma _{ij}\) are given in Table 1. To reduce the computational effort of the method, the above equations are composed and simplified. Here, it is exploited that the stage vectors \(\mathbf {\tilde{r}}^{k,i}\), \(\mathbf {\tilde{v}}^{k,i}\), and \(\mathbf {\tilde{u}}^{k,i}\) do not need to be explicitly calculated, and the vector \(\mathbf {h}(\mathbf {\tilde{r}}^{k,i}, \mathbf {\tilde{v}}^{k,i}, \mathbf {\tilde{u}}^{k,i})\) is approximated linearly similar to the right-hand side of equation (8b). With that, the linear equation system (11) simplifies to

$$ \begin{aligned} &\left [\mathbf {M} - \Delta t \gamma _{ii} \mathbf {J}_{ \mathrm{v,lin}} - (\Delta t \gamma _{ii})^{2} \mathbf {J}_{\mathrm{r,lin}} \mathbf {K}_{\mathrm{lin}} \right ] \Delta \mathbf {v}^{k,i} \\ &= \mathbf {h}_{\mathrm{lin}} + \mathbf {J}_{\mathrm{r,lin}}(\bar{\mathbf {r}}^{k,i} - \mathbf {r}_{\mathrm{lin}} + \Delta t \gamma _{ii} \mathbf {K}_{\mathrm{lin}} \bar{\mathbf {v}}^{k,i}) \\ &\quad +\mathbf {J}_{\mathrm{v,lin}}(\bar{\mathbf {v}}^{k,i} - \mathbf {v}_{ \mathrm{lin}}) + \mathbf {J}_{\mathrm{u,lin}}(\bar{\mathbf {u}}^{k,i} - \mathbf {u}_{ \mathrm{lin}}), \end{aligned} $$
(15)

with the vectors

$$\begin{aligned} \bar{\mathbf {r}}^{k,i} &= \mathbf {r}^{k} + \Delta t \sum _{j=1}^{i-1} ((a_{ij} + \gamma _{ij})\Delta \mathbf {r}^{k,j}), \end{aligned}$$
(16a)
$$\begin{aligned} \bar{\mathbf {v}}^{k,i} &= \mathbf {v}^{k} + \Delta t \sum _{j=1}^{i-1} ((a_{ij} + \gamma _{ij})\Delta \mathbf {v}^{k,j}), \end{aligned}$$
(16b)
$$\begin{aligned} \bar{\mathbf {u}}^{k,i} &= \mathbf {u}(t^{k} + c_{i} \Delta t) + \Delta t \sum _{j=1}^{i} (\gamma _{ij}\Delta \mathbf {u}^{k,j}) \:. \end{aligned}$$
(16c)

Similarly, (13) simplifies to

$$ \Delta \mathbf {r}^{k,i} = \mathbf {K}_{\mathrm{lin}} \left [\bar{\mathbf {v}}^{k,i} + \Delta t \gamma _{ii} \Delta \mathbf {v}^{k,i} \right ] \: . $$
(17)

These simplifications reduce the number of required matrix vector multiplications with the Jacobians, thus decreasing the computational effort.

Table 1 Parameters of the method LSRT2 [13]

3.2 Exploiting the suspension topology in linear-implicit integration

In each stage \(i=1,\dots ,s\) of an integration step, a linear equation system

$$ \mathbf {A}\mathbf {x}=\mathbf {b} $$
(18)

with the coefficient matrix

$$ \mathbf {A} = \left [\mathbf {M} - \Delta t \gamma _{ii} \mathbf {J}_{\mathrm{v,lin}} - (\Delta t \gamma _{ii})^{2} \mathbf {J}_{\mathrm{r,lin}} \mathbf {K}_{ \mathrm{lin}} \right ] $$
(19)

must be solved, cf. (15). The solution is done by means of LU decomposition and forward/backward substitution. With \(\gamma _{11} = \gamma _{22}\), the coefficient matrix remains constant for all stages of an integration step. In addition to that, the coefficient matrix only changes when the Jacobians \(\mathbf {J}_{\mathrm{r,lin}}\) and \(\mathbf {J}_{\mathrm{v,lin}}\), as well as the kinematics matrix \(\mathbf {K}_{\mathrm{lin}}\), are updated. Hence, LU decomposition must be performed only after an update of the linearization.

By exploiting the topology of a specific suspension, the computational effort for solving the linear equation system can be reduced without sacrificing the accuracy of the solution. As the coefficient matrix is a function of the mass matrix, the kinematics matrix and the Jacobians of the suspension system, its structure is strongly connected to the suspension topology. The coefficient matrices for the double wishbone and the multilink suspension are block matrices with the colored blocks as shown in Fig. 4. The colors of the main-diagonal blocks refer to the colors in the topology diagrams in Fig. 2. The bodies that connect the left and right sides of the suspensions are colored blue. These are the anti-roll bar and, in the case of the multilink suspension, also the subframe. The subsystem wheel, wheel mount and control arms is colored in red and the spring damper subsystem is colored in yellow. The nonzero elements outside the matrix diagonal result from the connections between these subsystems. In the double wishbone suspension, the anti-roll bar is connected to the spring damper unit on both sides. The subsystem wheel, wheel mount and control arms is also connected to the spring damper unit, but not to the anti-roll bar. Accordingly, there are only nonzero blocks on the main and on the lower and upper diagonal of the block matrix. The same applies for the multilink suspension.

Fig. 4
figure 4

Structure of the coefficient matrix (19) for the double wishbone (left) and multilink suspension (right) (Color figure online)

This matrix structure can be utilized to solve the linear equation system (18) more efficiently. To this end, the system is written with the coefficient matrix in block matrix form:

$$ \renewcommand{\arraystretch}{1} \begin{pmatrix} \mathbf {A}_{11} & \mathbf {A}_{12} & \mathbf {0} & \mathbf {0} & \mathbf {0} \\ \mathbf {A}_{21} & \mathbf {A}_{22} & \mathbf {A}_{23} & \mathbf {0} & \mathbf {0} \\ \mathbf {0} & \mathbf {A}_{32} & \mathbf {A}_{33} & \mathbf {A}_{34} & \mathbf {0} \\ \mathbf {0} & \mathbf {0} & \mathbf {A}_{43} & \mathbf {A}_{44} & \mathbf {A}_{45} \\ \mathbf {0} & \mathbf {0} & \mathbf {0} & \mathbf {A}_{54} & \mathbf {A}_{55} \end{pmatrix} \begin{pmatrix} \mathbf {x}_{1} \\ \mathbf {x}_{2} \\ \mathbf {x}_{3} \\ \mathbf {x}_{4} \\ \mathbf {x}_{5} \end{pmatrix} = \begin{pmatrix} \mathbf {b}_{1} \\ \mathbf {b}_{2} \\ \mathbf {b}_{3} \\ \mathbf {b}_{4} \\ \mathbf {b}_{5} \end{pmatrix} \: . $$
(20)

This linear equation system is then divided into several smaller systems that are solved subsequently. Firstly, the linear equation system

$$ \mathbf {\tilde{A}}_{33}\mathbf {x}_{3} = \mathbf {\tilde{b}}_{3} $$
(21)

based on the coefficient matrices

$$\begin{aligned} &\mathbf {\tilde{A}}_{33} = \mathbf {A}_{33} - \mathbf {A}_{32} \mathbf {\tilde{A}}_{22}^{-1} \mathbf {A}_{23} - \mathbf {A}_{34} \mathbf {\tilde{A}}_{44}^{-1} \mathbf {A}_{43} , \end{aligned}$$
(22a)
$$\begin{aligned} &\mathbf {\tilde{A}}_{22} = \mathbf {A}_{22} - \mathbf {A}_{21} \mathbf {A}_{11}^{-1} \mathbf {A}_{12} , \end{aligned}$$
(22b)
$$\begin{aligned} &\mathbf {\tilde{A}}_{44} = \mathbf {A}_{44} - \mathbf {A}_{45} \mathbf {A}_{55}^{-1} \mathbf {A}_{54} , \end{aligned}$$
(22c)

and the right-hand side vectors

$$\begin{aligned} &\mathbf {\tilde{b}}_{3} = \mathbf {b}_{3} - \mathbf {A}_{32} \mathbf {\tilde{A}}_{22}^{-1} \mathbf {\tilde{b}}_{2} - \mathbf {A}_{34} \mathbf {\tilde{A}}_{44}^{-1} \mathbf {\tilde{b}}_{4} , \end{aligned}$$
(23a)
$$\begin{aligned} &\mathbf {\tilde{b}}_{2} = \mathbf {b}_{2} - \mathbf {A}_{21} \mathbf {A}_{11}^{-1} \mathbf {b}_{1} , \end{aligned}$$
(23b)
$$\begin{aligned} &\mathbf {\tilde{b}}_{4} = \mathbf {b}_{4} - \mathbf {A}_{45} \mathbf {A}_{55}^{-1} \mathbf {b}_{5}, \end{aligned}$$
(23c)

is solved. Afterwards, the equation systems

A ˜ 22 x 2 = b ˜ 2 A 23 x 3 , A ˜ 44 x 4 = b ˜ 4 A 43 x 3 ,
(24a)
A 11 x 1 = b 1 A 12 x 2 , A 55 x 5 = b 5 A 54 x 4
(24b)

are solved. Savings of computation time result from the fact that several small linear equation systems are solved instead of one large equation system, requiring less computational effort for LU decomposition and forward/backward substitution. Furthermore, only the nonzero elements in the matrices \(\mathbf {A}_{ij}\) (\(i\neq j\)) are considered in the calculations of equations (22a)–(22c)–(24a)–(24b). It should be noted that the partitioning of the coefficient matrix according to Fig. 4 may not be the best in terms of computational efficiency. However, it is closely related to the suspension topology and therefore straightforward to formulate.

4 Online-linearization of the equation of motion

For time integration with the LSRT2 integration method, the equation of motion has to be linearized in a certain linearization state \(\mathbf {r}_{\mathrm{lin}}\), \(\mathbf {v}_{\mathrm{lin}}\), \(\mathbf {u}_{\mathrm{lin}}\) to provide the generalized forces \(\mathbf {h}_{\mathrm{lin}}\), the Jacobians \(\mathbf {J}_{\mathrm{r,lin}}\), \(\mathbf {J}_{\mathrm{v,lin}}\), \(\mathbf {J}_{\mathrm{u,lin}}\), and the kinematics matrix \(\mathbf {K}_{\mathrm{lin}}\). There are several possible choices for the linearization state, which affect computational effort and accuracy of the method. Linearization could be performed only once at the beginning of the simulation in the initial configuration. However, as the suspension systems considered here are strongly nonlinear, the linearization has to be updated online during the simulation. The update is possible in each integration step or only after a few integration steps with a fixed linearization step size \(\Delta t_{\mathrm{int}}\) that is an integer multiple of the integration step size \(\Delta t\). Since both the integration and linearization step size influence accuracy and computational effort, a suitable choice must be made as shown in Sect. 5.

To meet the real-time requirements of an online-linearization, the equation of motion is linearized analytically. Furthermore, a calculation procedure suitable for any arbitrary suspension topology, as for example the double wishbone and the multilink suspension, is desired. Therefore, the generalized forces \(\mathbf {h}_{\mathrm{lin}}\), the Jacobians \(\mathbf {J}_{\mathrm{r,lin}}\), \(\mathbf {J}_{\mathrm{v,lin}}\), \(\mathbf {J}_{\mathrm{u,lin}}\), and the kinematics matrix \(\mathbf {K}_{\mathrm{lin}}\) are calculated following a procedure based on the data model (cf. Sect. 2.2) as shown in Fig. 5. The procedure starts with the calculation of the body kinematics. The kinematics of each body \(l\) is calculated separately based on its generalized coordinates \(\mathbf {r}_{l}\) and velocities \(\mathbf {v}_{l}\), which are extracted from the generalized coordinates \(\mathbf {r}_{\mathrm{lin}}\) and velocities \(\mathbf {v}_{\mathrm{lin}}\) of the overall system. With that, all kinematic variables together with their partial derivatives required for the subsequent calculation steps are calculated. Additionally, the kinematics matrix \(\mathbf {K}_{\mathrm{lin}}\) of the overall system is composed. In the next step, the marker kinematics is calculated. To calculate the kinematics of a specific marker, it is necessary to know the kinematic variables of the body associated with it. These variables are accessed through the body index that is stored in the marker properties. Again, not only the kinematic variables of the markers, but also their partial derivatives are calculated, for each marker separately. These values serve as input for the next calculation step, in which the force elements (bushings, P2P) are calculated. The kinematic variables of the markers to which a force element is attached are read based on their indices stored in the force element properties. Then, the relative motion of the markers is calculated and the forces and torques of the force element are determined based on its characteristic curves. Again, the required partial derivatives are calculated. This procedure is repeated for all force elements. In the next step, the generalized surface forces \(\mathbf {h}_{\mathrm{s},l}\) are computed for each individual body sequentially, considering all force elements that are attached to the body. These force elements, as well as kinematic variables of the markers and the body, are accessed through the indices stored in the data model. Also, the derivatives of the body surface forces are computed by combining the previously calculated partial derivatives using the chain rule. Furthermore, the vector of generalized forces \(\mathbf {h}_{\mathrm{lin}}\) and the Jacobians \(\mathbf {J}_{\mathrm{r,lin}}\) and \(\mathbf {J}_{\mathrm{v,lin}}\) are initialized and filled with the corresponding values of the body surface forces. In the next calculation steps, the body gyroscopic forces \(\mathbf {h}_{\mathrm{\omega},l}\) and gravitational forces \(\mathbf {h}_{\mathrm{g},l}\) are calculated based on the corresponding body kinematics. Their quantities and derivatives are added to the generalized forces and Jacobians of the overall system. The last step of the linearization procedure is the calculation of the body input forces \(\mathbf {h}_{\mathrm{u},l}\) based on the inputs \(\mathbf {u}_{\mathrm{lin}}\). They are added to the generalized forces of the overall system. Moreover, the Jacobian \(\mathbf {J}_{\mathrm{u,lin}}\) is set up. This procedure based on the data model allows for linearizing arbitrary suspension systems as their topology is automatically considered through the indices stored in the data model. Additionally, analytical calculation enables updating the linearization online during real-time simulation.

Fig. 5
figure 5

Procedure for analytical online-linearization of the equation of motion

5 Results

In this section, the results in terms of accuracy for dynamic load cases and the required computation times are presented.

5.1 Simulation of dynamic load cases

To demonstrate the accuracy of the model and the integration method, dynamic load cases were performed with both suspension systems. The first load case (LC1) is a force step input of the longitudinal wheel force according to

$$ \renewcommand{\arraystretch}{1} F_{x}(t) = \left \{ \textstyle\begin{array}{l@{\quad}l} 0~\text{N}, & t < 5.0~\text{s}, \\ -2500~\text{N}, & t \geq 5.0~\text{s},\end{array}\displaystyle \right . \: $$
(25)

where the positive direction points in driving direction. The second load case (LC2) is a force frequency sweep of the longitudinal wheel force according to

$$ \renewcommand{\arraystretch}{1} F_{x}(t) = \left \{ \textstyle\begin{array}{l@{\quad}l} -2500~\text{N}, & t < 5.0~\text{s}, \\ -2500~\text{N} + 500~\text{N} \cdot \sin(\frac{2\pi}{\text{s}^{2}} (t - 5.0~\text{s})^{2} ), & 5.0 \leq t \leq 20.0~\text{s},\end{array}\displaystyle \right . $$
(26)

with a maximum frequency of \(30~\text{Hz}\). The upward vertical wheel force is \(F_{z}=5000~\text{N}\) in both load cases. All wheel forces are applied on both wheels at the respective wheel center. Integration was performed with the LSRT2 method with different integration step sizes \(\Delta t\) and linearization step sizes \(\Delta t_{\mathrm{lin}}\) to evaluate their influence on the simulation results. The results were compared to reference results. To this end, the double wishbone suspension system was also implemented in the commercial multibody software Simpack and reference simulations were performed with the Simpack solver SODASRT 2, which is an implicit multistep solver suitable for stiff differential equations [14]. For the multilink suspension, reference results were obtained in Matlab/Simulink. The Matlab/Simulink solver ode23tb was used as reference for LC1. ode23tb is an implicit solver for stiff differential equations based on a Runge–Kutta formula with a trapezoidal rule step as first stage and a backward differentiation as second stage [15]. For LC2, the LSRT2 method was used with a small step size of \(10^{-3}~\text{ms}\). The reference simulations in Simpack, as well as in Matlab/Simulink, required computation times far from real-time, but serve as a reference for evaluating the LSRT2 method due to their accuracy. For all simulations, the normalized root mean square error to the reference results was calculated according to

$$ e_{\mathrm{y}} =\frac{1}{\bar{y}_{\mathrm{ref}}} \sqrt{\left ( \frac{\sum _{i=1}^{n}(y_{i}-y_{i,\mathrm{ref}})^{2}}{n} \right )} \:, $$
(27)

where \(y_{i}\) and \(y_{i,\mathrm{ref}}\) are the value of the signal to be evaluated and the reference signal at sample \(i\), respectively, and \(\bar{y}_{\mathrm{ref}}\) is the mean value of the reference signal; \(n\) refers to the total number of samples, with all signals resampled to a sampling time of \(1.0~\text{ms}\).

Figure 6 shows the time plots of the longitudinal wheel displacement and the force of a bushing for LC1. After the wheel force step, weakly damped oscillations of the longitudinal wheel displacement and the bushing force occur. According to the elastokinematic properties of the suspensions, the wheel displacement tends towards a static equilibrium with a displacement of a few millimeters. Comparing the simulations with different integration step sizes, stable simulation is possible with step size \(\Delta t=5.0~\text{ms}\), but with high deviations from the reference results, which are clearly visible in the time plots. In contrast, the deviations obtained with smaller step sizes are almost within the line width. The results for LC2 are shown in Fig. 7. The plots show the envelopes of the oscillations that result from the force frequency sweep excitation. Similarly to LC1, high deviations occur for high step sizes. The amplitude gain at approximately \(t = 15~\text{s}\) cannot be reproduced accurately with step sizes \(\Delta t=5.0~\text{ms}\) and \(\Delta t=2.0~\text{ms}\). For smaller step sizes, the deviations are again within the line width. A more detailed view on the accuracy for both load cases is given in Figs. 8 and 9. Through reducing the integration step size and updating the linearization before each integration step (\(\Delta t = \Delta t_{\mathrm{lin}}\)), the deviation from the reference results is reduced with a convergence to a remaining deviation. Results with an error in the range of \(1\%\) can already be obtained with a step size of \(\Delta t=1.0~\text{ms}\). In contrast, reducing the integration step size while keeping the linearization step size constant does not significantly reduce the error. This indicates the high nonlinearity of the considered suspension systems, which requires frequent updating of the linearization during simulation.

Fig. 6
figure 6

Longitudinal wheel displacement and bushing force of the double wishbone and multilink suspension obtained with LSRT2 with different integration step sizes \(\Delta t\) (update of the linearization before each integration step, \(\Delta t = \Delta t_{\mathrm{lin}}\)) for LC1 (Color figure online)

Fig. 7
figure 7

Envelope of longitudinal wheel displacement and bushing force of the double wishbone and multilink suspension obtained with LSRT2 with different integration step sizes \(\Delta t\) (update of the linearization before each integration step, \(\Delta t = \Delta t_{\mathrm{lin}}\)) for LC2 (Color figure online)

Fig. 8
figure 8

Error values of the wheel displacement \(e_{\mathrm{x}}\) and the bushing force \(e_{\mathrm{f}}\) for LC1 (Color figure online)

Fig. 9
figure 9

Error values of the wheel displacement \(e_{\mathrm{x}}\) and the bushing force \(e_{\mathrm{f}}\) for LC2 (Color figure online)

5.2 Computation times

To evaluate the required computation times, the Matlab/Simulink model was compiled with the Simulink Coder and C code was generated [16]. The Intel oneAPI Library containing implementations of Basic Linear Algebra Subprograms (BLAS) was incorporated in the compilation process [17]. Thus, Simulink Coder generates BLAS calls to accelerate linear algebra operations. The generated code was executed on a standard desktop computer with an Intel Core i7-3770 CPU at \(3.4~\text{GHz}\). The obtained real-time factors, defined as the ratio of the required computation time to the specified duration of a simulation, are shown in Table 2 for integration step size \(\Delta t=1.0~\text{ms}\) (linearization before each integration step, i.e., \(\Delta t = \Delta t_{\mathrm{lin}}\)). It can be seen that all real-time factors are less than one, which means that all simulations are real-time capable. The real-time factors of the multilink suspension are higher than those of the double wishbone suspension because of its higher number of model elements and degrees of freedom. By exploiting the suspension topology, computation times can be reduced by up to almost \(12\%\). This results in real-time factors of 0.494 and 0.676 for the double wishbone and the multilink suspension, respectively, which are well below one. Considering the error of about \(1\%\) obtained with the integration step size \(\Delta t=1.0~\text{ms}\), it can be concluded that simulation results with very good accuracy can be provided in real-time for the considered suspension systems.

Table 2 Obtained real-time factors with integration step size \(\Delta t=1.0~\text{ms}\) (with and without exploiting the suspension topology according to Sect. 3.2)

6 Conclusion

This contribution demonstrates the real-time capable simulation of numerically stiff multibody systems, focusing on vehicle wheel suspensions. Here, high numerical stiffness results from elastic bushings connecting the suspension bodies. Real-time capable simulation without model simplifications is achieved using the linear-implicit integration method LSRT2, transforming the nonlinear equation system to be solved for implicit integration into a linear equation system. It is shown how the suspension topology can be exploited to reduce the computational effort for solving the linear equation system. With the underlying data model, wheel suspensions with arbitrary topologies can be parameterized. Furthermore, an analytical online-linearization procedure allows to linearize the equation of motion of arbitrary suspension systems during real-time simulation. This requires that the derivatives of the different model elements in the suspensions can be derived analytically. The applicability of the model is demonstrated using two suspensions systems with different topologies, a double wishbone and a multilink suspension. With real-time factors of 0.494 and 0.676, both suspension systems can be simulated in real-time with very high accuracy (error of only about \(1\%\)) for the considered dynamic load cases. For application in human/hardware-in-the-loop applications such as driving simulators, the suspension systems have to be integrated into a full vehicle model. Assuming that a vehicle consists of different subsystems that can be simulated in parallel, real-time capability is also expected for such a full vehicle model.