Numerical simulations, like human beings, tend to course-correct at the onset of sickness. Contrary to this reactive approach, a more preventive approach for healthy numerical simulations is developed by Paanduv Applications.
Numerical simulations represent a heterogeneous, often interlinked, mix of algorithms for iteratively solving physics equations. Depending on the industry application, these algorithms may become increasingly complex, rendering the overall numerical simulation unstable, inaccurate, and just outright unhealthy. One such industry application is Additive Manufacturing (AM) or 3D Printing. The sheer amount of physical processes that happen at the smallest scales during the AM processes is astounding.
Tracking of multiple phases, phase changes, momentum conservation, mass conservation, thermodynamic effects, laser dynamics, optical effects of the laser, powder particle dynamics, and some! Sure, the algorithms exist to perform detailed numerical simulations of these phenomena, but the onus of the health of the simulations falls entirely on a handful of representative mathematical numbers - Courant number being the most important one.
Courant number is the ratio of the distance covered in a given timestep in a particular cell (mesh element) to the size of that cell. If the distance covered in a timestep is more than the actual size of the cell ie C > 1.0, the simulation may become unstable. In the case of AM simulations, a bad Courant number manifests itself in symptoms such as unusually high velocities at the melting front, incorrect vapor plume formation, unreal melt pool spattering, extremely high values of temperatures, and eventually inaccurate defects prediction. On a bad day, the simulation may just crash abruptly.
Reactive and preventive approaches for calculating the timestep
The standard, reactive, approach to recover from a bad Courant number situation is dynamically adjusting the timestep based on how bad the situation is. In this approach, the solver automatically reduces the timestep to limit the Courant number, after the Courant number goes bad. But what I have seen with AM numerical simulations, is that this recovery is either painfully slow or the immediate damage to the simulation is too large to control. As long as the simulation does not recover from a bad Courant number event, the velocities, pressure, phase fractions, temperatures, and defects keep getting inaccurately calculated.
The reactive approach causes Courant numbers to exceed 1.0.
Another approach, preventive that is, is inspired by preventive healthcare for human beings. In this approach, timesteps are adjusted preemptively based on the future occurrence of bad Courant number events. In AM simulations, these events occur during conditions of temperature increase, the first instance of melting, and the first instance of vaporization. The timesteps are adjusted aggressively based on how close the simulation is to one or more of these conditions. The timestep recovers its original value after the simulation has surpassed these conditions.
The preventive approach causes the Courant number to stay under 1.0. Compared to the reactive approach the number of iterations has reduced to less than half for the same problem.
We have implemented the preventive approach in our AM PravaH software. To our excitement, we are seeing an almost 100% rate of healthy (stable and converging) simulations compared to the reactive approach. Additionally, we are seeing up to a 60% decrease in simulation runtimes (performance) because of the significant reduction in the number of iterations.
The new preventive approach for running healthy numerical simulations for the AM industry will be rolled out with the upcoming version of AM PravaH.
The author of this article is Adwaith Gupta, CEO of Paanduv Applications and Lead Developer of AM PravaH simulation software.