Only 2D?

These tutorials were origianlly created for a 1.5-2 day introduction to Salvus in the course of the MESS workshop. Thus everything can be run on a laptop which means mostly two dimensional problems. Note that everything works almost exactly the same in 3D but the required computational resources are of course greater.

The Salvus tutorials require the installation of the full Salvus suite (follow the installations instructions). Additionally they require:

We will soon offer a VirtualBox or Docker image to make getting started easier.

The repository for the notebooks can be found here - the following shows nicely rendered previews. Please adjust the paths (mainly PARAVIEW_BIN and SALVUS_BIN) to point to the correct binaries on your system. Also make sure to report all encountered problems and inconsistencies on the notebooks' Gitlab page.

Salvus Mesher

Getting a proper mesh is the crucial first step in running a numerical waveform simulation. This part introduces the capabilities of the Salvus mesher. The first four exercises introduce the internal API of the mesher and its capabilities, the last one the high-level interface that most people will want use.

  1. Basic API
  2. Mesh Quality
  3. Vertical Refinement
  4. Yann's Checkerboard
  5. Mesh with Topography

Introduction to Salvus Slides

Salvus from Scratch

This tutorial teaches using Salvus directly from the command line with step-by-step instructions. While most users will end up using higher-level interfaces demonstrated in later tutorials it is pivotal to understand how to directly call Salvus should the need arise. More complicated problems might require this in any case.

Salvus from Scratch (Solution)

Layered Model

This more advanced tutorial teaches the usage of the mesher and Salvus' wave propagation facilities to run simulations through acoustic, elastic, and coupled media emulating a simple oceanic seismic survey.

Layered Media (Solution)

Global Wave Propagation in 2D

salvus_seismo offers a convenient high-level interface to use Salvus for waveform simulations on Earth, other planets, and small sections thereof. It performs the required transformations from spherical coordinates to Salvus' internal cartesian system, generates its command line call, places receivers and sources relative to the used mesh's surface, and has a direct bridge to ObsPy to construct receivers and sources from various data sources like QuakeML or StationXML, or from web services.

Global Wave Propagation in 2D

Regional Wave Propagation in 3D

Very similar to the global 2D example but this time with an actual 3D simulation of a "real" earthquake recorded at existing stations. If you have access to a big cluster you can also run this at much higer frequencies.

Regional Wave Propagation in 3D

Slides for the Wavefield I/O and Sensitivity Kernel Exercises

Wavefield I/O

Running simulations is only so much fun without making use of the results. We believe Salvus to be particularly flexible and powerful in that regard and this tutorial lectures how to store and visualize wavefield data (translational and gradients) for points, surfaces and full volumes.

Wavefield I/O (Solution)

Sensitivity Kernels

Solving the inverse problem demands the calculation of gradients of seismic material models with respect to a chosen measurement. This tutorial demonstrates the calculation of gradients for a simplistic minimum energy misfit functional including visualization and the calculation of adjoint sources and their storage in HDF5/ASDF files.

Kernels (Solution)