Mondaic

Salvus 0.12.4

Released: 2022-07-28

Minor release that brings in support for using strain and gradient measurements in full-waveform inversion. Furthermore, the ability to read (adjoint) sources in chunks was added to alleviate the memory requirements for simulations with many sources or time steps.

There are a few more small improvements and bug fixes listed below.

Changes

SalvusCompute

Support the partial loading of sources into memory. Can be important for simulations with lots of sources and / or a long duration.

SalvusFlow

New omit_tasks_per_node setting for Slurm sites.

This will cause the ntasks-per-node to be omitted for both the #SBATCH command as well as the call to srun for the rare site where this is necessary.

SalvusProject

Fix a bug in the bandpass processing fragment, which did not recognize frequency inputs in scientific number format.

Here is an example of a data name:

"EXTERNAL_DATA:raw_data | bandpass(1.0e3, 2.0e3) | normalize"
SalvusProject

Enable the use of misfits and adjoint sources based on first spatial derivatives of the wavefield, i.e., strains and gradients.

It is now possible to also pass strain, gradient-of-displacement and gradient-of-phi as valid receiver fields in the misfit configuration and related event data and event misfit objects.

Remember that strain data are not rotated and output is in Cartesian coordinates.

SalvusProject API CHANGE

Rename datasets (and derived channel names) in ASDF output for gradients of the displacement field to comply with the SEED convention.

This is a (small) breaking change that only affects the combination of ASDF files with outputting the gradient of the displacement field.

The names of datasets and channels need to be adjusted as follows:

2D (old): XXX, XXY, XYX, XYY

2D (new): XG0, XG1, XG2, XG3

3D (old): XXX, XXY, XXZ, XYX, XYY, XYZ, XZX, XZY, XZZ

3D (new): XG0, XG1, XG2, XG3, XG4, XG5, XG6, XG7, XG8

Apologies for the inconvenience caused.

SalvusProject

Fix a bug in p.viz.waveforms(), which caused to function to fail with a cryptic error message when data was passed as a string.