Open Collective
Open Collective
Loading

Spectral Element Library in Fortran has been archived.

Spectral Element Library in Fortran has been archived and is no longer active.

Spectral Element Library in Fortran

PROJECT

Develop and maintain a Fortran API for implementing nodal spectral element methods to solve conservation laws in on multi-GPU accelerated platforms.

About


 History & Motivation
The Spectral Element Library in Fortran (SELF) began as a series of homework assignments and projects in a graduate course on spectral element methods in 2013-2014. In its initial form, SELF was specifically built to solve the Shallow Water Equations and the Compressible Navier-Stokes equations.

Over the years, SELF has transformed into a library of Fortran classes and models implemented with these classes. Each class comes complete with type-bound procedures that collectively can perform calculus operations on unstructured iso-parametric grids with spectral accuracy.

Starting in 2016, SELF began to support GPU and multi-GPU accelerated platforms. Initially this hardware support was made possible through MPI+CUDA-Fortran. In the current roadmap, SELF will support both AMD and Nvidia GPU's through MPI+HIPFort in early 2022.

The SELF project aims to provide a Fortran-based API that enables rapid development of PDE and conservation law solvers that are capable of targeting single workstations as well as state-of-the-art supercomputers. By leveraging a pattern driven design based on interpolation and differentiation operations with Lagrange interpolating polynomials and an unstructured mesh description of physical space, SELF provides methods for working with (mathematical) scalars, vectors, and tensors in one, two, and three dimensions. These classes and methods form the foundation for more abstract classes for implementing Discontinuous Galerkin and Continuous Galerkin methods to solve conservation laws. The SELF project's goal is to develop & maintain these core routines as well as a few example applications in order assist students and researchers in the simultaneous adoption of spectral element methods and state-of-the-art HPC hardware for physical modeling.

About the software
SELF is an object-oriented Fortran library that support the implementation of Spectral Element Methods for solving partial differential equations.

The SELF API is designed based on the assumption that SEM developers and researchers need to be able to implement derivatives in 1-D and divergence, gradient, and curl in 2-D and 3-D on scalar, vector, and tensor functions using spectral collocation, continuous galerkin, and discontinuous galerkin spectral element methods. Additionally, as we enter the exascale era, we are currently faced with a zoo of compute hardware that is available. Because of this, SELF routines provide support for GPU acceleration through AMD's HIP and support for multi-core, multi-node, and multi-GPU platforms with MPI.

Our team