Salvus 0.11.25
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
SEM orders 1-7 are now supported by default for simulation. Adjoint simulations on GPUs are currently limited to order 4.
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.
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.
Reduce the file access of the smoothing algorithms to construct the diffusion models and enable remote diffusion meshes.
Changes to Experimental Features
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..
Add memory_per_rank_in_MB as optional parameter to SiteConfig.
This allows to adjust the memory settings for different machines
during an inversion.
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.
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).