Skip to content

Salvus is a suite of software performing full waveform modelling and inversion, which aims to fuse the flexibility of research codes with the performance of production-grade software. It employs the spectral element method and works in 2D and 3D on tetrahedral, hexahedral, quadrilateral, and triangular meshes.

A particular focus of our efforts is directed at usability and the proper solution of the inverse problem.

Dear all,

A quick update from our side. The developers of Salvus have, for now, discontinued support for the open-source repositories. While we all enjoyed writing Salvus over the course of our PhDs, the realities of post-graduate life and the scale to which the project has grown make it clear that to ensure its continued development and maintenance requires a different approach. Along these lines, we are in the process of founding a startup company, Mondaic AG, with the goal of supporting Salvus full time.

A consequence of this decision is that, where appropriate, we will be asking for license fees to help pay for development costs. Additionally, in order to generate value for the company and raise some external funding, software features developed within Mondaic will be released in binary form.

A package like Salvus requires a dedicated team of full-time developers to maintain. We understand that this way of proceeding is a novel approach for both the community and ourselves, so please feel free to email at the address below to communicate any questions, concerns, or (perhaps) advice. We hope that our experiment here works, and we can continue to provide high-quality packages for waveform-based modelling and inversion for the next (two? three?) decades.

For more information or a request to stay up to date: [email protected]


Mike, Christian, Martin, and Lion


A lot of effort goes into writing Salvus so please consider citing us. We are currently preparing a proper paper - if you want to cite us right now, please use this:

  author  = {Michael Afanasiev and Christian Boehm and Martin van Driel and Lion Krischer and Max Rietmann and Dave A. May and Matthew G. Knepley and Andreas Fichtner},
  journal = {Geophysical Journal International},
  note    = {submitted, manuscript ID GJI-S-17-1139.R1},
  title   = {{Modular and flexible spectral-element waveform modeling in two and three dimensions}},
  year    = {2018}

Publications using Salvus

Here is an (incomplete) list of other people's work using Salvus.

Learn It

Our tutorials will remain our main documentation for the foreseeable future so have a look. If you end up doing something new with Salvus, consider writing a small tutorial and sending it to us?


  • salvus_wave:

    The heart and soul of Salvus, our sun and stars - the actual massively parallel numerical solver and waveform propagator written in modern C++ and making use of PETSc.

  • salvus_mesher:

    Next generation mesh building software for conforming (and non-conforming) 2D (tris, quads) and 3D (tets, hexes) meshes. Includes the capability to fully automatically generate full planetary (or sections thereof) meshes including doubling/tripling layers and internal as well as surface topographies. Written in Python.

  • salvus_seismo:

    Interfaces and utilities to ease the use of Salvus for seismologists of all specializations.

  • salvus_examples:

    This is our main documentation for now. Head over to the Tutorials section to get a good view of it.

  • pyexodus []:

    "Pure" Python open-source library for reading and writing exodus files. Neatly side-steps the netCDF as well as the C and Python exodus libraries and is also a lot faster than the existing Python exodus bindings.

  • salvus_model:

    Upcoming toolbox to easily modify elastic parameters on existing Exodus meshes.

  • salvus_opt:

    Will be read soon and include state of the art optimization algorithms tuned to the wave propagation inversion problem.

  • salvus_flow:

    Remote execution and workflow management for Salvus.

Current Status

Feature Status Percent Done Tested and Validated
Elastic wave propagation check 100 % check
Arbitrary high order spectral elements check 100 % check
2D and 3D wave propagation check 100 % check
Quad and hex elements check 100 % check
Triangle and tet elements check 100 % check
Fluid-solid coupling check 100 % check
Attenuation check 100 % check
Full Anisotropy check 100 % check
Cowling Approximation (Gravity) check 90 % loop
Adjoint Calculations check 100 % check
Ocean Loading clear 40 % clear
Absorbing boundaries check 100 % check
Automated mesher check 100 % check
Non-linear optimization toolbox loop 100 % clear
Automated inversion workflow loop 90 % clear
GPU support loop 30 % clear
Comprehensive documentation loop 50 % clear
Python interface loop 80 % loop
ASDF output check 100 % check