About SELF

SELF is a Fortran-based library that provides data-structure and type-bound routines for implementing Spectral Element Methods in one, two, and three spatial dimensions. Routines are currently available for collocation and discontinuous galerkin formulations on unstructured meshes with isoparametric elements. 

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.


SELF-Fluids leverages SELF to solve the Compressible Navier-Stokes equations on multi-GPU architectures.

The Fluid class employs the Entropy Conserving Nodal Discontinuous Galerkin Spectral Element method for the spatial discretization. Internal element fluxes are calculated using two-point fluxes that result in provably stable spatial discretizations for the compressible Navier-Stokes equations. The inter-element fluxes are numerically estimated using consistent two-point fluxes with upwinding to provide numerical dissipation. Currently, the model is forward-stepped using Williamson's 3rd Order Low-Storage Runge-Kutta time integrator. We are actively developing additional explicit and implicit time-stepping schemes.

SELF-Fluids currently exists on the stale/self-fluids branch of the SELF repository. SELF is actively being tested  and optimized on Nvidia and AMD GPU platforms. We expect SELF-Fluids to be fully functional on CPU-only, GPU, and multi-GPU platforms by December 2023 and available as Docker containers images, Apptainer images, and Google Cloud VM Images.


SELF and SELF-Fluids are open-source solutions; you are free to use them at your own risk without support. We encourage all users to submit issues to the SELF Github repository. Our team will work on issues based on paying customer priority first and free open-source user priority second.

Fluid Numerics also offers support for SELF. This support includes the development of new features, resolution of bugs, user training, and general consulting. Support is offered as a monthly subscription service to reserve time with Fluid Numerics' CFD Research Software Engineers. Contact us for a free initial consultation and quotation.