**CS384G Final Project**

**Explosion Simulation**

Zaiwei Zhang

zaiweizhang@utexas.edu

Explosions are common scenes in the world human created. They are widely used in movies and television shows, and lots of video games require explosion scenes. The exact definition of an explosion varies in different context, but generally an explosion is defined as a sudden release of energy that creates an outward-propagating pressure front, or blast waves. The blast wave moves at supersonic speeds, and its only visible manifestation is a subtle refraction of light, which is only noticeable in extremely large explosions. Thus, in this project, I only focused on making secondary effects, including fireballs and flying dust. These effects are quite noticeable in regular explosions.

I used the system presented by Feldman, O'Brien, and Arikan[1] to model the behavior of suspended particle explosion. A suspended particle explosion occurs when a highly flammable particle such as gunpowder or coal is dispersed over a volume of air and then ignited. The paper first slightly modified the fluid dynamics proposed by Stam[2] and Fedkiw[3] to compute the motion of air and hot gases around the explosion. I model fuel and combustion products as they are advected by the fluid. The paper also presents a simple but effective process governed by the particle and fluid systems.

As mentioned before, my system basically contains one fluid dynamic simulation system and a particle system for explosion simulation.

For the gas model, I used the system presented in [2][3], and basically, the model treats the gases as an imcompressible, inviscid fluid that fills a rectilinear three-dimensional grid. The model determines the motion of the fluid to satisfy the requirements that momentum and mass be conserved. Momentum conservation is enforced by the Euler equations:

where u is the fluid velocity, d is density (a constant value), p is pressure, f is any external forces acting on the fluid, and the overdot on u denotes differentiation with respect to time. I use the following equation to determine the fluid pressure for each grid cell:

where \phi is zero everywhere except where some process is generating additional fluid or causing the existing fluid to expand by heating it. The temperature field is determined by the following equation:

where T denotes the fluid temperature, Ta is the ambient temperature, Tmax is the maximum temperature in the environment, and H is the heat energy transferred into the system. The first term models the advection of the fluid, the second term is related to the cooling system of the particles, the third term is a diffusion term which is used to approximate the radiative and diffusive transfer, and the final term is for the heat energy transferred in.

The external forces for the fluid system include thermal buoyancy, vorticity confinement, and interactions with the particles. The second force is used to increase the vorticity of the flow, which keeps the smoke alive over time. The thermal buoyancy is proportional to the temperature field. For the forces added to the field, the field is advected by itself and the field diffuses due to viscous friction within the fluid. The fluid solver uses the Stable Fluids technique[2] with an iterative relaxation scheme.

In the particle system, it contains certain number of fuel particles, which moves around based on the forces from the fluid. Their temperature will be updated based on the temperature field of the fluid system, and the particles will be assigned to three states based on their temperature, which are regular state, burning state and soot state. In the burning state, the particles' mass will be burned at a constant rate, and it will inject heat and pressure back into the fluid system. Once the particles' mass has been burned out, they will be in soot state. In addition, each particle is assigned with position, velocity, mass, temperature, thermal mass, and the state information. Each particle's behavior follows the rules:

where x is the location of a particle, f are external forces, TP is the particle temperature, H is the heat energy transferred in by combustion, and Cm is a thermal constant. The forces on particles mainly generated by the fluid system, and the drag forces can be calculated with the following equation:

where the first term is a constant, r is the radius and the bar on u means the interpolated velocity at the particle location. The opposite force will be applied to the fluid cell containing the particle if the particle is not massless. If the particle is massless, fluid velocity will be unaffected. The following equation shows the thermal transfer between the particles and the fluid:

where the first term is a constant, and the bar over T means the interpolated temperature the at the particle position. Also, the burning particles generate heat in the following equation:

where bh is a constant term, and z is the burning rate. The particle mass will also decrease in rate z.

To begin the explosion, a small number of particles is assigned with extremely high temperature and some pressure. Once those particles start to burn, they will release heat and increase the pressure. It will be quickly spread to nearby particles, and ignites them. The fireball will appear once all particles start to burn.

For rendering, I just used dots to render all the particles. As mentioned before, there are three states for each particle. For regular particles, I will just white dots. For burning particles, the redness of the dots is proportional to the temperature of the particle. For soot particles, they will be colored as grey first and slowly fade away.

I created a 3D explosion simulator, and the following image series showed the explosion sequences:

My simulation software works reasonably well, and I used 1000000 particles. It takes around 10 minutes to finish a 5-second video. More demo videos can be found in here.

The performance of the explosion system can be improved from many aspects. For rendering, I should use texture mapping on the particles to increase the reality of the explosion. For the dynamic simulation, I can add collision detection in case the fluid system encounter walls and objects with complex geometries. Also, I can add trees and simulate the tree deformation with fires on them.

[1] Feldman, B. E., O'Brien, J. F., Arikan, O., "**Animating Suspended Particle Explosions**." *The Proceedings of ACM SIGGRAPH 2003*, San Diego, California, July, pp. 708-715

[2] Stam, J., "**Stable Fluids**." In SIGGRAPH 99 Conference Proceedings, Annual Conference Series, August 1999, 121-128.

[3] Fedkiw, R., Stam, J. and Jensen, H.W. "**Visual Simulation of Smoke**.", SIGGRAPH 2001, 23-30 (2001).