Scientific Computing Template Library
SCTL is a header-only C++ library providing various functionalities for scientific computing. This documentation outlines these functionalities and provides a guide to getting started.
The only requirement to use SCTL is a working C++11 compliant compiler with OpenMP 4.0 support. It has been tested with GCC-9 and newer.
To get started, download the latest version of SCTL from the SCTL GitHub.
git clone https://github.com/dmalhotra/SCTL.git
Since SCTL is a header-only library, it does not require compilation or installation. Simply include the sctl.hpp
header file in your C++ project and start using the provided classes and functions.
#include <sctl.hpp>
Ensure the compiler can locate the header file by providing the path to SCTL_ROOT/include
using the flag -I ${SCTL_ROOT}/include
.
The following libraries can be optionally used when available. If not available, SCTL uses its own implementation which may be slower.
SCTL_HAVE_BLAS
.SCTL_HAVE_LAPACK
.SCTL_HAVE_LIBMVEC
.SCTL_HAVE_SVML
.SCTL_HAVE_MPI
(see Comm).SCTL_HAVE_FFTW
, single precision by defining SCTL_HAVE_FFTWF
, or long double precision by defining SCTL_HAVE_FFTWL
(see FFT).SCTL_HAVE_PVFMM
(requires MPI, see ParticleFMM).To enable support for any of these libraries, define the corresponding flag during compilation. For example, to enable MPI support, use -DSCTL_HAVE_MPI
.
The following compiler flags can be used to enable or disable specific features in SCTL:
-DSCTL_MEMDEBUG
: Enable memory debugging (iterator.hpp, static-array.hpp).-DSCTL_GLOBAL_MEM_BUFF=<size in MB>
: Use a global memory buffer for allocations.-DSCTL_PROFILE
: Enable profiling.-DSCTL_VERBOSE=<level>
: Enable verbose profiling output.-DSCTL_SIG_HANDLER
: Enable stack trace.-DSCTL_QUAD_T
: Enable support for quad-precision type.The following list outlines the primary features and capabilities provided by the library, along with references to detailed tutorials and documentation for each component:
Basic Data Structures:
Fundamental classes for storing and manipulating data.
Numerical Solvers and Algorithms:
Methods for solving equations, performing interpolations, numerical integration, and partitioning data.
Spectral Methods:
Methods for spectral representations and transformations.
Boundary Integral Methods:
Techniques for solving partial differential equations using boundary integral representations.
High Performance Computing (HPC):
Tools for parallel and distributed computing.
Utilities:
Miscellaneous utilities for data handling, debugging, and visualization.
Legacy (Unmaintained):
Older functionalities that are no longer actively maintained.