We present an efficient approach for performing smoke simulation on curvilinear grids. Our technique is based on a fast unconditionally-stable advection algorithm and on a new and efficient solution to enforce mass conservation. It uses a staggered-grid variable arrangement, and has linear cost on the number of grid cells. Our method naturally integrates itself with overlapping-grid techniques, lending to an efficient way of producing highly-realistic animations of dynamic scenes. Compared to approaches based on regular grids traditionally used in computer graphics, our method allows for better representation of boundary conditions, with just a small increment in computational cost. Thus, it can be used to evaluate aerodynamic properties, possibly enabling unexplored applications in computer graphics, such as interactive computation of lifting forces on complex objects. We demonstrate the effectiveness of our approach, both in 2-D and 3-D, through a variety of high-quality smoke animations.