Salvus 0.11.23
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
The port number of remote sites in the ~/.ssh/config file is now respected.
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 = trueChanges to Experimental Features
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.
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.
Remove some path dependencies which previously prevented renaming the project.
Various improvements to make 2-D seismological domains more useful.
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.
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.