SPECFEM++ - A modular and portable spectral-element code for seismic wave propagation

License

Community Project

SPECFEM++ is a community project. We welcome contributions from everyone. Please see contribution section for more details.

Under Development

The package is currently under development and is not yet ready for production use. We are working towards making the package more complete. Please report any bugs you find or request features that you would like to see in the package.

Monthly Developer Meetings

We host a monthly developer meeting on the first Wednesday of every month at 12:00 PM Eastern Time. Please join us if you are interested in contributing to the project or would like to learn more about the project. Please see this page for more details.

SPECFEM++ is a complete re-write of SPECFEM suite of packages (SPECFEM2D, SPECFEM3D, SPECFEM3D_GLOBE) using C++. Compared to the earlier version, SPECFEM++ code base provides:

  1. a robust and flexible code structure,

  2. modularity that allows for easy addition of new features,

  3. portability that allows the code to run on a variety of architectures (CPU, NVIDIA GPUs, Intel GPUs, AMD GPUs etc.), and

  4. a user-friendly build infrastructure that allows the code to be easily compiled and run on a variety of platforms.

Download the code

The code is available on GitHub.

Current capabilities

Table below shows various features available and tested in this package on various architectures:

Feature Support Matrix

Feature

CPU (serial)

CPU (OpenMP)

CUDA

HIP

2-D Physics (Forward / Misfit Kernels)

Acoustic Isotropic

✔ / ✔

✔ / ✔

✔ / ✔

✔* / ✔*

Elastic Isotropic P-SV

✔ / ✔

✔ / ✔

✔ / ✔

✔* / ✔*

Elastic Isotropic SH

✔ / ✔*

✔ / ✔*

✔ / ✔*

✔* / ✔*

Elastic Anisotropic P-SV

✔ / ✔

✔ / ✔

✔ / ✔

✔* / ✔*

Elastic Anisotropic SH

✔ / ✘

✔ / ✘

✔ / ✘

✔* / ✘

Poroelastic Isotropic (P-SV only)

✔ / ✘

✔ / ✘

✔ / ✘

✔* / ✘

Elastic Isotropic Cosserat P-SV **

✔ / ✘

✔ / ✘

✔ / ✘

✔* / ✘

2-D Medium Coupling

Acoustic-Elastic coupling

✔*

Acoustic-Poroelastic coupling

Elastic-Poroelastic coupling

Boundary Conditions (BC)

Absorbing BC (Stacey)

✔*

Free Surface BC

✔*

Simulation Setup

Forward Simulations

✔*

Adjoint Simulations

✔*

Time Schemes

Newmark

✔*

Seismograms

Displacement

✔*

Velocity

✔*

Acceleration

✔*

Seismogram Formats

ASCII

✔*

* Not tested. This, in general means that the feature is not tested in continuous integration if the entire column has a star, and if the row has a star, it means that the feature is not tested/does not match the Fortran version of specfem2d. In the former case, see HIP column, and for the latter case, see the Poroelastic Isotropic row.

** Not peer reviewed yet.

Note

While we work towards building this package and making the code/documentation more complete, please refer relevant SPECFEM package documentations for technical details on SPECFEM theory.

Getting Started

User Documentation

Contribution

Community

Benchmarks

API Documentation