#### 8.1 Two elastic bars

This example is excerpted from [25, 45]. A longitudinal impact of two elastic bars is considered, see Figure 5. The geometry of each bar is given by *L* = 10, *H* = *B* = 1. A linear elastic material (with small strains) is chosen with Young's modulus *E* = 1, Poisson's ratio *ν* = 0, and mass density *ρ* = 1. The impact is full elastic. Before the collision, the velocities are *v*^{(1)} = − *v*^{(2)} = 0.1. The bar tips should remain in contact for *t* < 20.

The asynchronous integrator is used with a time step ratio *β* = 0.5 related to the critical time step. The step size parameter for the collision kicks is given by *α*_{C} = 0.75 with maximum collision step time being the average critical time step. As a reference solution serves velocity Verlet where DCR is applied to the midpoint of each time step (this will improve the accuracy to the original formulation being applied between two time steps). The time series history variables are determined for both at certain points at time. The total simulation time is *T* = 50; the number of save intervals is 5000. When measuring the required CPU time, the evaluation of history variables is turned off, because it may affect the performance.

For both integrators, the same contact detection algorithms are applied. For velocity Verlet, the faster sequential response, see Section 7, is used for a fair comparison. A general contact methodology is applied, that means all bounding faces are subject the collision detection. Although the normal vectors at the corners and edges may not be accurate, the direction of the response is computed nearly accurately: the motion of the two bars is parallel to the longitudinal axis.

The mesh of the first bar consists of 5*n* × *n* × *n* eight-noded brick elements. The mesh size parameter *n* controls the number of elements per side. The element sizes along the *y* and *z* direction are uniform. Along the *x* axis, the position of nodes is chosen to be

- (47)

That means, the smallest elements are located at the contact interface. Along the *x* axis, the element size grows linearly. To enforce a nonconforming mapping at the contact interface, the right bar is discretized by 5(*n* + 1) × (*n* + 1) × (*n* + 1) elements with equivalent node positions, see Figure 6.

The tip displacements for mesh size parameter *n* = 4 are illustrated in Figure 7. The used time steps are *h* = 0.0174 for Verlet and for AVI *h*_{min} = 0.0129, *h*_{max} = 0.0485, *h*_{average} = 0.0264. The tip velocities are presented in Figure 8. To get single quantities for the tip nodes, the values of all nodes located at the tip are averaged. The displacements are in good agreement.

There exist spurious oscillations in the velocities during the persistent impact phase. Such were also reported by others applying explicit collisions [25]. They result from the explicit representation of the discrete potential action *V*_{d}. The oscillations can be reduced by decreasing the time step length. The spurious oscillations are greater if the collisions are applied asynchronously.

The reason for the greater oscillations lies in the asynchronicity of the time stepping scheme. The time steps between two contact kicks and the time steps between two restoring force kicks are not directly related. Furthermore, the used time step between collisions is larger than the one used for the strain energy. The asynchronicity has the interesting effect that a spatial point under consideration may have a discrete velocity that changes rapidly, but these changes are only visible on a micro time scale, for example, between two close system times *θ*_{k} and *θ*_{k + 1} as in Figure 2. The difference between *θ*_{k} and *θ*_{k + 1} is mostly significantly smaller than the actual time step between two collisions *h*_{c}. The velocity vector shown in Figure 8 is computed from the discrete momenta by *v*_{k} = *M*^{ − 1}*j*_{k}. Hence they can be interpreted as – losely spoken – purely ‘numerical’ quantities required to enforce continuity of the piecewise linear trajectory of *q*(*t*), see [30]. A ‘better’ approximation of the tip velocity would be to take an average increment of the displacements over the interval length of a contact time step, that is, *v*_{k} = (*q*(*θ*_{k} + *h*_{c}) − *q*(*θ*_{k})) ∕ *h*_{c}, which reduces the oscillations significantly.

The energy balance is presented in Figure 9. Both algorithms nearly preserve the total energy. There is a very small energy drift in the asynchronous integrator, however, that seems to be subject to the asynchronicity of the strain energy evaluations.

The CPU times are presented in Figure 10. It illustrates the total CPU time and the time that was spent by the contact algorithm. The latter is measured as the difference of the total CPU times of two simulations, one with and one without contact. Obviously, the numerical cost grows significantly slower in the asynchronous case.

#### 8.2 Elastic block sliding on rigid obstacle

This example serves to test Coulomb friction and nodal restraints. A block with dimensions 1 × 1 × 1 is sliding on a rigid plane subject to gravitation. The block is discretized by 3 × 3 × 3 eight-noded brick elements. The obstacle is discretized by 5 × 5 × 1 elements and has the dimension 5 × 2 × 0.2. All nodes of the basement are fixed through nodal restraint conditions. A St. Venant material is used (linear elastic with finite strains) with Young's modulus *E* = 100, Poisson's ratio *ν* = 0.2, and mass density *ρ* = 1. The body is subject to a constant vertical body force *F* = 1. The initial horizontal velocity is *v*_{x} = 1. The Coulomb parameter of friction is *μ* = 0.5. The total simulation time is *T* = 3. The time step ratio related to the critical time step is *β* = 0.5. The step size parameter for the collision kicks is given by *α*_{C} = 0.5 with maximum collision step time being the average time step.

Figure 11 illustrates the geometry at the beginning and at the end of the simulation. Figure 12 presents the horizontal displacements and velocities at the block's bottom. A single value of the displacements is obtained by averaging the nodal values at the bottom surface. The results are in good agreement with the analytical solution of a rigid block: the displacements describe a parabola with end displacement *u*_{x} = 1, whereas the velocity decreases linearly until time *t* = 2. Figure 13 presents the energy balance. The energy dissipated by the friction grows until almost no energy is left in the system. The total energy is nearly preserved by the algorithm.

#### 8.4 Block assembly

This example illustrates the asynchronous collision procedure applied to a rather complex problem. An assembly of 18 cubes is hit by another moving cube. The geometry of the initial frame is presented in Figure 16. All cubes are of dimension 1 × 1 × 1. The hitting cube is rotated around its center by the axis and the angle *π* ∕ 4. Its center is defined by ( − 0.5, − 0.5,2), whereby the origin (0,0,0) is defined in one of the bottom corners of the block assembly. Every cube is discretized by either first-order tetrahedra or first-order hexahedra on a regular grid, each cube with different element sizes. Stabilized nodal integration is used to integrate the strain energy. A St. Venant material is used (linear elastic with finite strains) with Young's modulus *E* = 1000, Poisson's ratio *ν* = 0.3, and mass density *ρ* = 1. The initial velocity of the hitting cube is 2 in *x* and *y* direction.

When analyzing the geometries at discrete times, small interpenetrations can be observed. These have three reasons:

The *spatial density* of the integration points in the contact search is too small. During the first impact between the hitting cube and the block assembly, one cube is strongly deformed at its corner, the other in the center of its face. Some interpenetration can not be detected, because subsequent collisions between contactor edges and target elements are not found by the contact search. To improve the accuracy, one needs to add more integration points to the contactor surface or apply additional search strategies for edges and faces, see for example [25]. The search strategy presented therein can be easily incorporated by adding additional collision kicks by using the alternative contact detection.

*Cumulative effects*. The algorithm tries to prevent collisions by changing the velocity. The momentum change is applied at times, where already a collision was detected. Even if a correct velocity change was computed, subsequent events may increase the interpenetration until the next collision response takes place. A predictor–corrector algorithm could improve this, but is not efficient in explicit analysis, in particular in asynchronous simulation. In [25] the velocity change was combined with a non-symplectic coordinate change that tries to eliminate existing penetrations. Such a strategy, however, greatly increases the algorithmic complexity in asynchronous integration.

*Too large collision time steps*. One reason for the superiority of asynchronous collisions with respect to CPU time is that less contact detections take place. In this example, 24884 spatial integration points for the strain energy and 3752 spatial integration points for the contact integral are used. During the simulation, 238,944,839 strain energy kicks and 7,837,942 collision kicks were performed. This is equivalent to average time steps of 0.416 × 10^{ − 3} for the strain energy and 1.915 × 10^{ − 3} for the collision detection.