Dynamics
Dynamic problems like the response of a multi degree of freedom structure to external forcing and wave propagation in a medium can also be solved using the Solid Mechanics module.
The equation of motion for a typical dynamics problem has the following format:
Here, is the mass matrix, is the damping matrix, is the stiffness matrix and is the vector of external forces acting at the nodes. , and are the vector of displacement, velocity and acceleration at the nodes, respectively.
Time integration
To solve the above equation for , an appropriate time integration scheme needs to be chosen. Newmark (Newmark, 1959) and Hilber-Hughes-Taylor (HHT) (Hughes, 2000) time integration schemes are two of the commonly used methods in dynamics.
Newmark time integration
In Newmark time integration, the acceleration and velocity at are written in terms of the displacement, velocity and acceleration at time and the displacement at using the NewmarkAccelAux and NewmarkVelAux Aux Kernels, respectively.
In the above equations, and are Newmark time integration parameters. Substituting the above two equations into the equation of motion will result in a linear system of equations () from which can be estimated.
For and , the Newmark time integration method is implicit and unconditionally stable. This is the constant average acceleration method with no numerical damping. This is recommended only when a constant timestep is used throughout the simulation. If for some reason, the simulation does not converge and the timestep is halved, this time integration method with no numerical damping can result in high frequency noise.
and results in the linear acceleration method where the acceleration is linearly varying between and .
and is identical to the central difference method.
For in structural dynamics problems, the Newmark method is unconditionally stable irrespective of the time-step . For , the Newmark method is at least second order accurate; it is first order accurate for all other values of .
Hilber-Hughes-Taylor time integration
The HHT time integration scheme is built upon Newmark time integration method. Here, in addition to the Newmark equations, the equation of motion is also altered resulting in:
Here, is the HHT parameter. For , and , the HHT method is at least second-order accurate and unconditionally stable. For non-zero values of , the response at high frequencies (above ) are numerically damped, provided and are defined as above.
More details about the Newmark method and HHT method can be found in these lecture notes.
Rayleigh damping
This is the most common form of structural damping used in dynamic problems. Here, the damping matrix () is assumed to be a linear combination of the mass and stiffness matrices, i.e., . Here, and are the mass and stiffness dependent Rayleigh damping parameters, respectively.
The equation of motion in the presence of Rayleigh damping is:
The degree of damping in the system depends on the coefficients and as follows: (1)
where, is the damping ratio of the system as a function of frequency . For example, the damping ratio as a function of frequency for and is presented in Figure 1. Note that has units of rad/s and used in the figure has units of Hz.

Figure 1: Damping ratio as a function of frequency.
To model a constant damping ratio using Rayleigh damping, the aim is to find and such that the is close to the target damping ratio , which is a constant value, between the frequency range . This can be achieved by minimizing the difference between and for all the frequencies between and , i.e., if
Then, and results in two equations that are linear in and . Solving these two linear equations simultaneously gives:
A similar method can be used to estimate and for non-constant damping ratios.
Implementation and Usage
In the MOOSE framework, the mass and stiffness matrices are not explicitly calculated. Only the residuals are calculated. To get the residual, the equation of motion (with Rayleigh damping and HHT time integration) can be written as:
Here, is the density of the material and is the stress tensor. The weak form of the above equation is used to get the residuals.
The first two terms to the left that contain are calculated in the InertialForce kernel. , , and need to be passed as input to the InertialForce kernel.
The next two terms to the left involving are calculated in DynamicStressDivergenceTensors.
Note that the time derivative of and are approximated as follows:
The input file syntax for calculating the residual due to both the Inertial force and the DynamicStressDivergenceTensors is:
(contrib/moose/modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht.i)Here, ./DynamicSolidMechanics
is the action that calls the DynamicStressDivergenceTensors kernel.
Finally, when using HHT time integration method, external forces like gravity and pressure also require as input.
For dynamic problems, it is recommended to use PresetDisplacement and PresetAcceleration for prescribing the displacement and acceleration at a boundary, respectively.
DynamicStressDivergenceTensors uses the undisplaced mesh by default but kernels such as InertialForce and Gravity, and boundary conditions such as Pressure use the displaced mesh by default. All calculations should be performed either using the undisplaced mesh (recommended for small strain problems) or the displaced mesh (recommended for finite strain problems). Therefore, use_displaced_mesh
parameter should be appropriately set for all the kernels and boundary conditions.
Static Initialization
To initialize the system under a constant initial loading such as gravity, an initial static analysis can be conducted by turning off all the dynamics related Kernels and AuxKernels such as InertialForce, NewmarkVelAux and NewmarkAccelAux for the first time step. To turn off stiffness proportional Rayleigh damping for the first time step static_initialization
flag can be set to true in DynamicSolidMechanics or DynamicStressDivergenceTensors. An example of static initialization can be found in this following test: