/SELF

Spectral Element Library in Fortran

Primary LanguageFortranBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Spectral Element Libraries in Fortran (SELF)

Copyright 2020-2023 Fluid Numerics LLC

codecov

linux-gnu-cmake

linux-amdflang-cmake

Licensing

SELF is licensed for use under a non-commercial use visible-source license. Fluid Numerics is a small family-owned business and wants to make SELF available to researchers for academic use. Under the license, you can use, modify, and redistribute SELF so long as attribution is given to Fluid Numerics. However, since we are interested in protecting our time-and-effort investment in SELF, sale and commercial-use of SELF is prohibited under the license.

If you are interested in commercial licensure and would like support from Fluid Numerics, reach out to support@fluidnumerics.com

About

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.

Prerequisites

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

Supported Compilers, Operating Systems, and software stacks

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 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 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
AOMP amdflang 6.1.2 Ubuntu 22.04.2 LTS cmake openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 x86_64 - gfx90a (MI210)
AOMP amdflang 6.1.2 Ubuntu 22.04.2 LTS cmake openmpi/5.0.1, feq-parse/2.2.2, hdf5/1.14.3 x86_64
Nvidia-HPC nvfortran 6.1.2 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. 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.

Support

Documentation

If you'd like to contribute, see CONTRIBUTING.md to get started.

If you need help, open an issue