Abhijit Joshi

ENGINEER. PROGRAMMER. ARTIST.


CUDA

These set of slides summarizes the staggering speed up you can achieve by porting CPU codes to the GPU in graphics and some typical scientific computing applications.

Note that these results were for an Intel Core i7 CPU and a NVIDIA Tesla K20c GPU (5 GB, compute 3.5)

I looked at three applications:

  • calculating the Mandelbrot set (no graphics)
  • Jacobi iteration to solve Laplace's equation
  • 2D lattice Boltzmann simulation

Example codes for some of these applications can be found on my blog and will also appear in some tutorials about CUDA and OpenGL.

The objective of this project was to read in STL geometry files and create a voxelized respesentation of the 3D geometry for use with the lattice Boltzmann code. This was accomplished by developing a parallel C++ code called CARTGEN++.

Several additional features like distance function calculation were also added to steer this towards a stand-alone mesh generation tool for any Cartesian solver.

Click on the link to the left to download a PDF version of my CARTGEN++ talk.

The lattice Boltzmann method (LBM) is an alternative CFD scheme, which is very easy to program and can be efficiently parllelized. This talk summarizes a recent initiative at ORNL to develop a CFD capability to accurately model flow inside complex geometries. Code development was carried out in Fortran-90 with MPI.

Click on the link to the left to download a PDF version of my talk at the American Nuclear Society (ANS) Meeting held in November 2012.

Fluid turbulence is one of the most fascinating areas of physics and over the years, we have incrementally improved our ability to model this behavior. This presentation uses the lattice Boltzmann method (LBM) to model a two-dimensional, high Reynolds number flow inside a lid-driven cavity. The thumbnail on the left shows the effect of Reynolds number on the flow structures inside the cavity.

At Drexel University, we developed one of the first pore-scale models to simulate the working of a vanadium flow battery. Our motivation was to use the exact electrode microstructure (essentially a porous medium) and use the lattice Boltzmann method (LBM) to simulate fluid flow through the electrodes.

Fluid flow was coupled to charge and species transport to develop a first-principles approach for studying the effect of the electrode microstructure on battery performance.

This was an exciting project at SUNY Binghamton and Drexel University, where we simulated the process where a liquid drop containing suspended solid particles landed on a solid substrate and the carrier liquid phase then evaporated, leaving behind a residue of the suspended solids.

For more information, download the complete poster in PDF format.

Fuel cells using hydrogen as fuel is a promising technology for getting clean energy. This project was concerned with improving the efficiency of this energy conversion by looking at the physics of the entire process at the micro-scale.

At the University of Connecticut, we were one of the first groups to develop tools for pore-scale modeling of gas transport inside SOFC electrodes.

Rayleigh-Tomotika Instability

This capillary instability was first studied by Rayleigh in 1879 for a "perfect" (zero-viscosity) incompressible fluid, neglecting the effect of the surrounding fluid. In 1935, Tomotika extended and generalized the results for a real (viscous) fluid, surrounded by another viscous fluid.

In the movie above, a 3D lattice Boltzmann method (LBM) is used to simulate the growth of perturbations in a liquid fiber, surrounded by vapor phase. The Shan and Chen (1993) model is used to simulate multi-phase conditions.

The initial condition is an almost cylindrical fiber with a small sinusoidal perturbation. Interfacial forces cause this perturbation to grow and cause necking and pinching. The final stable configuration is an array of spherical drops, with the same total volume as the original cylindrical fiber, but lower surface area.

The Ghostly Hand

This simulation begins with a STL representation of the (non-deformed) hand. The signed distance function field is then calculated outside and inside the hand surface.

The animation essentially shows the various distance functions (implicit surfaces) beginning with a surface outside the original hand and ending with a surface inside the original hand.

Refer to the presentation below about CARTGEN++ to get more information about signed distance functions and how to calculate them.

2D Vortex Shedding

This is one of the classic examples of external fluid flow around a cylindrical object. The flow (from left to right) becomes unstable after a certain point and the cylinder begins shedding vortices in the wake region.

  • Red = regions where fluid elements are rotating clockwise
  • Blue = regions where fluid elements are rotating anti-clockwise

Refer to the presentation below about PRATHAM to get more information about how this problem was used as one of the validation test cases.

One fine day, a very long time ago, I started reading a book called The Fractal Geometry of Nature by Benoit B. Mandelbrot. As you can imagine, I was obliged to set aside whatever I happened to be doing and get lost in the wonderful world of fractal geometry. Very dangerous, these sort of books. Especially if you are a student working on your Masters thesis.

As I might have remarked somewhere else, QBASIC was my vehicle of choice for spending hours and hours on computer graphics - including all the fractals on this page.

Clouds are not spheres, mountains are not cones, coastlines are not circles, bark is not smooth, nor does lightning travel in a straight line.

- Benoit Mandelbrot, The Fractal Geometry of Nature.

The JavaScript designs on this page are a tribute to Benoit Mandelbrot.

Fractal Tree using JavaScript

Source code

Koch curve using JavaScript

JavaScript animation

2D quadratic Mandelbrot curve using JavaScript

JavaScript animation

Conway's game of life

One of the most famous cellular automata is Conway's game of life. It was invented by the British mathematician John Horton Conway in 1970.

Click on the image to go to the JavaScript animation.

Check out the wiki for additional details.

Langton's Ant

Langton's Ant (wiki) is another simple automaton that exhibits a rather curious and surprising behavior.

After appearing to move around randomly for a little while, the ant ultimately builds a highway and escapes!