geodynamics / Rayleigh

Rayleigh: Pseudo-spectral MHD
GNU General Public License v3.0
59 stars 49 forks source link

Rayleigh - dynamo in spherical geometry

License GPL3: DOI github-docker

Rayleigh is a 3-D convection code designed for the study of dynamo behavior in spherical geometry. It evolves the incompressible and anelastic MHD equations in spherical geometry using a pseudo-spectral approach. Rayleigh employs spherical harmonics in the horizontal direction and Chebyshev polynomials in the radial direction. The code has undergone extensive accuracy testing using the Christensen et al. (2001) Boussinesq benchmarks and the Jones et al. (2011) anelastic benchmarks. Rayleigh has been developed with NSF support through the Computational Infrastructure for Geodynamics (CIG).

Contributing to Rayleigh

Rayleigh is a community project that lives by the participation of its members -- i.e., including you! It is our goal to build an inclusive and participatory community so we are happy that you are interested in participating! We have collected a set of guidelines and advice on how to get involved in the community and keep them in the CONTRIBUTING.md file in Rayleigh's repository.

Parallelization

The pseudo-spectral nature of Rayleigh means that its parallelization necessarily relies heavily on global communication patterns. That said, Rayleigh's parallelization is based around a 2-D domain decomposition and large-message-size all-to-alls. These features allow the code to overcome many of the obstacles that traditionally limit the scalability of spectral methods. The end result is a pseudo-spectral code optimized for petascale machines. Rayleigh's pure-MPI mode has demonstrated highly efficient strong scaling on 131,000 cores of the Mira Blue Gene/Q supercomputer for problems with approximately 2048^3 grid points (2048 spherical harmonics). Performance numbers from Mira are shown below. A summary of Rayleigh's performance and how it compares against other popular dynamo codes (albeit at smaller process counts) may be found in the recent performance benchmark results of Matsui et al. (2016).

Getting Started

The following documents form the Rayleigh documentation.

Document Description
INSTALL in-depth installation instructions
https://rayleigh-documentation.readthedocs.io/en/latest/ A combined online documentation
https://rayleigh-documentation.readthedocs.io/en/latest/doc/source/diagnostic_codes/qcodes.html Online tables of Rayleigh output menu codes

More information

Authors

Rayleigh was originally written by Nicholas Featherstone with NSF support through CIG. Please see the ACKNOWLEDGE and CITATION for information on how to properly acknowledge and cite the code.

License

Rayleigh is released under the GPL v3 or newer license.