Spectral Element Libraries in Fortran (SELF)
Understanding the theory behind Spectral Element Methods (SEMs) and implementing them can be challenging; to many, they have a steeper learning curve than the older and more widely used finite difference and finite volume methods. "Implementing Spectral Methods for Partial Differential Equations" by David Kopriva in 2009 aims to reduce that learning curve by providing a practical guide for implementing SEMs.
The SELF libraries are a collection of Fortran modules that implement many of the routines and data-structures found in Kopriva's book, in addition to other useful tools (e.g. spectral filters, unstructured mesh storage ).The modules can be pieced together to form PDE solvers. A few template solvers are provided for solving hyperbolic conservation laws with the Discontinuous Galerkin SEM, and elliptic and parabolic PDEs with the Continuous Galerkin SEM. These libraries have been in production for the last two years and continually see upgrades to improve efficiency, readability, portability, and reusability. Routines are parallelized with OpenMP, OpenACC, OpenMPI, and hybrid OpenACC-OpenMPI. Currently, a CUDA implementation is in production (during "afterwork" hours) to fine-tune the GPU accelerated code.
The most recent version of the software can be obtained from the SELF github repository.Read more