Share
 
 

Section 29: Explicit Quasi-Static Analysis

Explicit dynamics algorithms are extremely robust for highly nonlinear simulations—particularly for large deformation contact problems that involve large sliding motions and friction. Also, for extremely nonlinear material behavior such as large plastic deformations. These are simulations that are extremely difficult to obtain in an implicit solver that uses Newton's method to solve the nonlinear equations.

Historically, explicit codes have been used "sneak up" on the quasi-static nonlinear solution by choosing a duration for the loading that is long enough that the dynamic effects are minimum, and an approximate quasi-static solution is obtained. We can quantify this concept of an approximate quasi-static solution by considering the energy balance that occurs in all simulations. For any finite element model, the energy balance can be expressed as follows:

KE + IE + VD = WE

Where KE is the kinetic energy, IE is the internal (strain) energy, VD is the viscous dissipation (damping), and WE is the external work performed by the applied loads in the model. In traditional quasi-static formulations, it is assumed that the velocities are zero and the energy balance becomes:

IE = WE

Simply put, internal energy equals external work. To obtain an approximate quasi-static solution in our explicit dynamics algorithm we seek to make the magnitudes of the kinetic energy and viscous dissipation in the solution small compared to the magnitude of the internal energy and external work. We can do this by picking the duration of the event to be long enough that the kinetic energy is a small fraction of internal energy. This is somewhat subjective and usually the duration is chosen in a trial-and-error process to obtain kinetic energy somewhere in the 1 to 2 percent range of the internal energy. Amazingly, quasi-static solutions can be obtained in remarkably short durations—much faster than we would normally thick of as a static solution. Typically, the duration ends up being in the millisecond range.

Our automatic quasi-static procedure has removed the trial-and-error process from the user and replaced it with an automatic multi-trial algorithm. Our goal is to make the free kinetic energy less than 1% of the internal energy. We define the free kinetic energy as the kinetic energy at all the grid points in the model that do not have prescribed displacement boundary conditions. We choose an initial duration that is typically about a thousand time steps. If displacement control loading is applied, we check to make sure that the speed at which the nodes that are being prescribed does not exceed 5% of the minimum wave speed of any of the materials in the model. If it does, we choose a duration that uses more than 1000 times steps to make the motion occur at 5% of the wave speed. Therefore, you may see some initial trials that take many more time steps. Nevertheless, the initial trial is just that, a guess for a duration that we run to compute an initial energy balance. Figure 1 shows a time history plot of a typical energy balance that might be obtained in the first trial.

Figure 1: Typical energy balance history plot for first trial

Once the first trial is complete, we apply a proprietary algorithm that looks at the energy balance throughout the total duration of the first trial, comparing the internal energy and kinetic energy. Based upon this algorithm, we compute an appropriate multiplier of the trial duration to repeat the simulation. This multiplier is always larger than 1.0 and is usually in the range of 5 to 20. The trial solution is discarded and the second trial is run with the new longer duration.

Figure 2 shows a typical energy balance history plot for the second trial, where we see that the free kinetic energy is minimized compared to the first trial. Again, we apply our proprietary algorithm to analyze the new energy balance in this trial to compute a multiplier.

Figure 2: Typical energy balance history plot for second trial

If the multiplier is less than 1.0, we are done—we have achieved our approximate quasi-static solution. If not, we compute a new duration from the multiplier times our previous duration and repeat the process by throwing away trial number 2 and performing trial number 3. The algorithm will try up to 4 trials. If we have not converged within 4 trials a quasi-static solution is probably not achievable. A very large number of models converge within 2 trials. Many take 3 trials. And it is rare to take 4. Those models that do not converge in 4 trials typically are buckling during the large deformation motion—basically they are unstable.

In a quasi-static analysis, the concept of time is dimensionless. Time is simply a pseudo-time that measures the application of the transient loads and/or prescribed boundary conditions. The solution obtained will show the evolution of the nonlinear solution through the process of applying the loads in this pseudo-time frame. The quasi-static procedure will find the smallest possible duration that will give the approximate quasi-static load using the iterative process described above.

The user specifies a duration for the simulation and provides amplitude curves that describe the transient load and/or prescribed displacement boundary conditions over the time duration. The duration is simply pseudo-time. It can be from zero to one or zero to a millisecond, or zero to one thousand.

The duration of the simulation and the time duration of the amplitude curves must coincide. The quasi-static procedure is going to evaluate the amplitude functions as it performs the simulation. Remember, we are going take your supplied duration and scale it into an internal duration that will be just long enough to make the kinetic energy in the problem minimal.

You must specify the number of steps to take in your solution. The default number of steps is one with is appropriate for a loading that is monotonic. Typically, you would prescribe the loads and boundary conditions with a linear ramp from zero to one as shown in Figure 3.

Figure 3: Monotonic linear ramp amplitude

The quasi-static procedure evaluates the amplitude at the beginning and end of each step and computes the difference, Δ, in the value at the beginning and end of the step. This is the load or displacement increment that will be applied during the step. We do not actually apply the load using your linear ramp amplitude function. Instead, we automatically construct an "S-shaped" amplitude in the form shown in Figure 4 and use the Δ value as the scale factor.

Figure 4: Construction internal of S-shaped amplitude curve

As shown, the amplitude has a zero slope at the start of the duration and a zero slope at the end of the duration. We make the last 10% of the duration constant. This internal amplitude curve has the duration built into it of the internal trial duration we are using. The shape of the S-curve is designed to minimize dynamic effects. Suppose we were to prescribed boundary conditions with the actual linear ramp starting from zero in the usual way, the velocity of the prescribed boundary condition nodes would be a constant value which puts an impulse on the model at time zero. The S-shaped amplitude shown in Figure 4 alleviates this problem. If you have loading that is not monotonic, you will need to specify that the simulation is to be performed in multiple steps. Consider the simple non-monotonic load/unload case shown in Figure 5.

Figure 5: Non-monotonic load/unload amplitude broken into 2 steps

In this case we want to load the model up to some prescribed value and then unload it back to zero. This simulation should use 2 steps. The first step will evaluate the user-supplied amplitude at time zero and the time that is one half the user-supplied duration to compute the change in amplitude, Δ1 = +1. It will then perform the quasi-static algorithm introducing the S-shaped internal amplitude function to compute quasi-static response. This may take up to 4 trials as described above. Once the first step is complete, the change in displacement from the end of the first trial to the end of the second trial is computed, Δ2 = –1.

The incremental displacements in the second step are added to the total displacements (from the first step) to give the total displacements. Note that in multi-step solutions, all steps but the first will use a trial duration in the first trial that was the final duration from the previous trial. This is because the previous trial will have already found a suitable duration that gives approximate quasi-static results.

The choice of how many steps to use for a simulation has a profound effect on the computation time it takes to complete the simulation. Each step will go through the trial algorithm to seek a quasi-static solution. In general, the computational time it takes to compute step 1 will be about the same as it takes to compute step 2. In the load/unload example shown in Figure 5, breaking the simulation into 4 steps would add nothing to the solution except to make the run take twice as long. A careful assessment of the number of steps to use is important to the accuracy of the solution. Consider the previous example of a load/unload problem with the linear up/down ramp shown in Figure 5.

If the user selects 3 steps for this simulation as shown in Figure 6, the peak displacement will be completely missed. In the first step, the user amplitude will be evaluated at the 1/3 point in the duration to achieve a displacement increment Δ1 = 0.667.

Figure 6: Non-monotonic load/unload amplitude broken into 3 steps

In the second step, the user amplitude will be evaluated at the 2/3 point in the duration to achieve a displacement increment Δ2 = 0. Clearly, that step does nothing but compute a zero response and totally misses the peak displacement. The final step would evaluate the duration at the end and achieve a displacement increment Δ3 = –0.667. This would remove the load. This solution would take 50% longer to obtain and would have missed the peak displacement!

The solution we obtain in each step is a transient solution in pseudo-time. Since the results are typically highly nonlinear and path dependent, we provide results at a specified number of points during the pseudo-time of each step. The default number of results per step is 10. You can change this value to a larger or smaller number. Note that the results can be somewhat voluminous and using a large number of results per step can result in extremely large files.

Was this information helpful?