GHOST

GHOST (the Geophysical High-Order Suite for Turbulence) is an accurate and highly scalable pseudospectral code that solves a variety of PDEs often encountered in studies of turbulent flows. It is developed in collaboration with Duane Rosenberg and with contributions from many users. The code uses a hybrid parallelization method combining MPI and OpenMP (GHOST also has support for GPUs using CUDA). This allows the code to run efficiently in laptops and small clusters, as well as to scale up to 100,000 CPU cores in production runs in supercomputers. It can also combine CPU and GPU computations when needed. This hybrid parallelization method was recognized by two awards: an NCAR/CISL award to Pablo Mininni and Duane Rosenberg, and the best paper award (technology track) at the TeraGrid 2010 conference.

GHOST can solve PDEs in periodic domains in two and three dimensions, to tackle many problems including:

  • Compressible and incompressible hydrodynamic equations.
  • Compressible and incompressible magnetohydrodynamic (MHD) equations.
  • Hall-MHD equations and other kinetic plasma effects.
  • Rotating flows.
  • Rotating and stratified flows using the Boussinesq approximation.
  • Passive scalars.
  • Superfluids and Bose-Einstein condensates using the Gross-Pitaevskii Equation (GPE).
  • Ginzburg-Landau equations.
  • Integration of many types of particles.
  • Several subgrid scale (SGS) models.

GHOST can integrate trajectories of Lagrangian particles, test particles (charged particles in a conducting fluid or a plasma), and inertial particles. It also includes two types of SGS models: one group of  models derived from regularizations of the primitive equations of motion (Lagrangian Averaged, Clark, and Leray models), and another group of models based on computation of eddy viscosity and eddy noise using the Eddy-Damped Quasi-Normal Markovian approximation.

GHOST scalability using up to 100,000 cores at different spatial resolutions (indicated by the different marks). Time is shown on the left, 1/Time on the right. On both cases, the dashed and solid lines indicate the ideal scaling.
GHOST scalability using up to 100,000 cores at different spatial resolutions (indicated by the different marks). Time is shown on the left, 1/Time is shown on the right. On both cases, the dashed and solid lines indicate the ideal scaling.

GHOST is mostly written in Fortran 90/95, with some C bindings, code in Fortran 2003 for the particles, and code in CUDA for GPUs. To build the main code, without particles and without GPU support, only a C and a Fortran 95 compiler are required. References for GHOST can be found here:

GHOST also includes examples of scripts in Python, Matlab, IDL, and Mathematica, to do post-analysis of the numerical simulations. Moreover, it can be used together with VAPOR (the Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers) to do still frame renderings and animations.  VAPOR provides an interactive environment for 3D visualization of GHOST outputs, allowing powerful analysis of turbulent flows in systems with 3D graphics cards.

GHOST is freely available from GitHub.