Mondaic

Salvus 0.11.25

Released: 2021-02-12

This release comes with several improvements to make inversions run more efficiently. New options to manage checkpoints and to reduce the I/O overhead of smoothing have been added. Furthermore, the mapping function now offers more general parameterizations.

Additionally, some visualization tools have been improved, and a tuning parameter to mesh ocean layers was added.

Finally, Salvus now by default supports GLL orders of 1-7. Additional orders remain available upon request.

Changes

SalvusCompute

SEM orders 1-7 are now supported by default for simulation. Adjoint simulations on GPUs are currently limited to order 4.

SalvusFlow

It is sometimes convenient to visualize source and receiver locations in Paraview. A new function, salvus.flow.utils.simulation_src_rec_to_vtk, has been added to facilitate this. As arguments it takes a simulation.Waveform object, along with a string specifying what type of entity one wants to generate a .vtk file for (i.e. source or receiver). Check the function’s docstring for advice on how to open the resultant file in Paraview.

SalvusMesh

Adding a new parameter to better control the lateral element size in the ocean. This is particularly relevant for local domains with strong bathymetry, where Snel’s law in 1D may break down.

SalvusOpt

Reduce the file access of the smoothing algorithms to construct the diffusion models and enable remote diffusion meshes.

Changes to Experimental Features

SalvusOpt

Add support for flexible parameter mappings and inversion for relative or absolute perturbations:

sn.Mapping(
      scaling="relative_deviation_from_prior",
      inversion_parameters=["VSV", "VSH", "VP", "RHO"],
      map_to_physical_parameters={
          "VPV": "VP",
          "VPH": "VP",
      }
  )

The example above assumes a prior model parameterized as TTI medium. It inverts for four independent parameters that encode relative perturbations from the prior model. The deviations in VPV and VPH are tied to the same inversion variable VP..

SalvusProject

Add memory_per_rank_in_MB as optional parameter to SiteConfig. This allows to adjust the memory settings for different machines during an inversion.

SalvusProject

Improve memory management of checkpoints in SalvusProject.

This gives more flexibility to tune the strategy regarding checkpoints. By default, checkpoints will be stored for every forward run, and automatically removed after (a) gradients for the simulation configuration have been computed and/or (b) the model got rejected by the trust region algorithm.

This behavior can be modified using optional boolean flags store_checkpoints and cleanup_checkpoints in the job_submission settings.

job_submission={
  "forward": ...,
  "preconditioner": ...,
  "store_checkpoints": False,
  "cleanup_checkpoints": False,
}

If the former is False checkpoints will only be stored when gradients are requested. If the latter is False checkpoints will never be deleted automatically.

SalvusProject

The _plot method of an EventData object now takes an additional optional parameter: _exclude_cbar. If set to true, a colorbar won’t be added to the axis if a shotgather plot is requested. This makes it easier to produce shotgathers for multi-component data (i.e. for strain output).