Mondaic

Salvus 0.11.23

Released: 2020-12-03

This release adds several quality-of-life improvements for ongoing inversions, as well as a more sophisticated scheme to handle sites where two factor authentication is required. Support for volumetric models in 2-D seismological domains was added, along with a relevant tutorial (“Teleseismic 2D”). Volumetric seismological mantle and crustal models will also now automatically recognize the presence of oceans, and restrict the interpolation of material parameters to the elastic regions. If more control over this process is desired, one can still use the GenericModel constructor.

Changes

SalvusFlow

The port number of remote sites in the ~/.ssh/config file is now respected.

SalvusFlow

Salvus can now perform interactive SSH logins. This is necessary for example for interactive two factor authentication schemes.

Enable it like this in the site configuration:

        [sites.site_name.ssh_settings]
            hostname = "host"
            username = "user"
            interactive_login = true

Changes to Experimental Features

SalvusMesh

Adds functionality to refine, increase tensor order or build meshes in chunks to avoid memory bottlenecks. In particular, this adds two new functions:

Firstly, in salvus.mesh.tools.transforms uniformly_refine_chunkwise() wraps uniformly_refine() working with a subset of elements at a time, writing each of the readily processed chunks to a temporary file and finally merging everything together. This can both be used to refine each element by subdivision into an arbitrary number of elements in each dimension and/or to increase the order of the shape mapping.

Secondly, salvus.mesh.chunked_interface.create_mesh_chunkwise() can be used instead of create_mesh() of SphericalChunk3D, Cartesian3D and Cartesian2D using the same approach as described above to directly create large meshes that would otherwise reach the memory limitations of the machine.

SalvusProject

Enable stopping criteria to limit the maximum number of iterations in an inverse problem. This is mainly useful for automated monolithic inversion workflows.

p.inversions.set_stopping_criteria(
  inverse_problem_configuration="...",
  criteria={
    "max_iterations_global": 10,
    "max_iterations": 5,
  }
)

The criteria can be overwritten anytime to continue with the inversion. global settings apply to the entire inversion tree, the other settings apply to individual branches.

SalvusProject

Remove some path dependencies which previously prevented renaming the project.

SalvusProject

Various improvements to make 2-D seismological domains more useful.

SalvusProject

The interpolation of volumetric models onto seismological meshes was previously only available for 3-D domains. Support is now extended to 2-D domains, with “longitude” and “radius” OR “depth” being required coordinate axes in the parent xarray Dataset. A new tutorial (teleseismic_2d) has been added, fleshing out this feature.

SalvusProject

Add the ability to ignore elements flagged with a certain value during volume model interpolation for seismological models. This is useful, for instance, if one wants to limit interpolation to a specific region (say, the elastic subsurface, and not any water layers). See the description in the seismology GenericModel constructor for more details. Crustal and Mantle models will now ignore fluid elements by default, to ensure that elastic models are not interpolated into oceans. Is this behavior is undesirable, one has more control with the GenericModel interface.