Applications of Parallel High Performance Computing in Car Crash Simulation --------------------------------------------------------------------------- Crash analysis is an important part of automobile design process. While crash test is costly yet never adequate, it often is studied through simulation. Several crash codes have been developed over the years such as LSDYNA using an explicit finite-element model. A typical model consists of irregular grids of nodes constrained by elements. Nodes each have a physical state including position and velocity, which need to be computed in every time step. Each element is parameterized by material and geometric type and constrains a fixed number of nodes to behave as if they are connected by that piece of material. An automobile may be represented by tens of thousands of elements with several times more nodes. Simulation of such a system requires a lot of computation. For example, simulation for several seconds of car crash may take several weeks of workstation time. Crash simulation is an interesting application for parallel high-performance computing. First, it has a great industrial value and potential market. Car companies would pay millions of dollars for fast machines if they can afford the computation required for realistic simulations. Second, crash simulation is a complex process; it is not easy to parallelize, and is hard to scale. For this reason, crash codes such as LSDYNA have been used for long time as benchmarks for measuring the performance of parallel architectures. For example, LSDYNA has versions for all types of architectures, serial, vector, parallel with shared or distributed memory. The performance of the code has been used in industry to justify purchases of new machines. The main reasons that crash simulation is hard to parallelize are the following. First, automobiles are built with wide variety of materials. When a piece of material deforms, the underlying physical model changes. It then requires a different computation to be used to achieve accurate results. For example, initially as metal is stretched it behaves elastically, but at some point it becomes brittle. For efficiency, a typical crash code groups elements by their material types so that instructions can be applied to sets or vectors of elements. The computation is organized as series of vector loops. However, if there is great variation in the sizes and computational requirements of the groups, it may be difficult to distribute and balance the workload on multiprocessors. Second, no matter what strategies are used to distribute the elements or nodes over the processors, the structures will change over time as they deform. In the presence of contact, the deformation alters the structures and their interactions; some new elements or nodes may be introduced while others deleted. The dynamical changes of the structures cause difficulties for maintaining load-balance among processors. Redistribution of elements and nodes or dynamic load balancing may help to improve the performance, but the overhead by doing so can be computationally prohibitive. Third, when crash occurs, there will be many contacts between different pieces of materials or parts. The contact detection and simulation are complicated, often irregular and random, and the computation is hard to organize on parallel multiprocessors to achieve scalability. Usually in realistic crash simulation, more than 20% of computation may involve contact or impact. There are some other issues in parallel crash simulation such as the accuracy and repeatability of the results with varying the number of processors. In any case, parallel crash simulation seems remain one of great challenges for today's parallel high- performance computing. Two relevant web-pages: http://www.gwuva.gwu.edu/ncac http://www.lstc.com References: "Analysis of Material Performance in Automative Applications", Srdan Simunovic, Gustavo Aramayo, and Thomas Zacharia , ORNL Review, Volume 30, Numbers 3 & 4, 1997. "Crash Analysis on the Tera MTA", John Feo, Simon Kahan, and Zhijun Wu, IEEE Journal of Computational Science and Engineering, Oct-Dec, 1998.