Copyright 2017-2024 Fluid Numerics LLC
SELF is licensed for use under a 3 Clause BSD with attribution license. Fluid Numerics is a small family-owned business. We want to make SELF available to folks who want to build conservation laws that run on a wide range of platforms. Under the license, you can use, modify, and redistribute SELF so long as attribution is given to Fluid Numerics.
Continued support of SELF relies on users and customers. Here's a few ways you can support this project:
- Give this repository a star on Github
- Open an issue if you have a question or want to report a problem. We want to help!
- Subscribe to Fluid Numerics on Youtube
- Sponsor this project on Open Collective
- Work with us
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.
All you need is a Fortran compiler that is compliant with the Fortran 2008 standard and supports C interoperability. You can see which compilers are regularly tested on the Github actions page. Additionally, the table below lists the supported compilers
The following combinations are tested on the main branch of self :
Name | Version | Platform | Build System | Stack | Architecture |
---|---|---|---|---|---|
GNU Fortran gfortran |
13.2.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3, rocm/6.1.0 | x86_64 - gfx90a (MI210) |
GNU Fortran gfortran |
13.2.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 | x86_64 |
GNU Fortran gfortran |
12.3.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 | x86_64 |
GNU Fortran gfortran |
12.3.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.3 (ucx+rocm), feq-parse/2.2.2, hdf5/1.14.3, rocm/6.0.2 | x86_64 - gfx90a (MI210) |
GNU Fortran gfortran |
11.4.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 | x86_64 |
GNU Fortran gfortran |
10.5.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 | x86_64 |
GNU Fortran gfortran |
9.5.0 | Ubuntu 22.04.2 LTS | cmake |
openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 | x86_64 |
"Supported" for us means that we test self
regularly on the platforms listed; self
may work just fine on a different platform. Of course, we want to have self
working on as many platforms as possible; open an issue if you encounter any problems installing or running self
on your own platform.
If you'd like to contribute, see CONTRIBUTING.md to get started.
If you need help, open an issue