A solver for large scale DNS simulations
An MPI based, DNS solver was developed in C, with the goal of speed, balanced load, and low memory requirements.
A simulation based on the solver I have developed, with properties,
* Cartesian, uniform mesh
* 16(cores)x54x281x281 = 68 Million cells
* Compressible
* 2nd-order Riemann-solver based
* Round
* Parallel
Two iso-surfaces of vorticity magnitude:
Vorticity magnitude at the z=0 cross-section:
The video above is made by,
- Writing slices of data every 10 time-steps in Legacy VTK format (ASCII), up to the 55740th step. Each time step is 20 nano-seconds, amounting to a total time of 1.1ms!
- Converting the Legacy VTK format files to vtk's new XML structured grid format, using a python-vtk script, for reduced file size and faster processing.
- Reading the XML files, and Painting the vorticity magnitude data based on a color table, rendering, and saving to png images.
- An mencoder script to assemble the image files into a movie, at 45 frames per second.
The simulation was performed on two nodes, each node equipped with two Intel Xeon E5430 quad-core processors, running at 2.66 GHz.
The network connection was Infiniband, and it took a total of 9 days (wall-clock time) for the simulation to complete the 55740, predictor-corrector, time-steps. The memory requirements were about 12GB in single-precision arithmetics (about 200 bytes per cell).