Salvus 2025.1.3
This is bug fix release for the 2025 version of Salvus.
If you can upgrade to numpy>=2.2.X, we recommend directly updating to
2026.5.0.
For the full list of changes, please refer to the detailed changelog below.
Changes
Throw a proper exception in the materials implementation in SalvusCompute if an unsupported model order or dimension is used.
Support for ObsPy >= 1.5 and SQLAlchemy >= 2. Support for lower versions is dropped.
Add experimental and deprecated warnings to Salvus, such that users can identify changing parts of the API more easily. The experimental and deprecated functions emit warnings (typically once per Python process) when such functions are used.
Update the processing that is applied to seismological data when interpolating the data to the time axis of the synthetic data. This should reduce undesired processing artifacts.
Correct the name of the
graph_space_optimal_transport_misfit_and_adjoint_source function, which was
previously misspelt.
Fix a bug that was causing the validation for EventMisfit to fail when used
initialized in combination with the cross_correlation_no_observed_data misfit
function.
Fix a bug that would cause the retrieval of seismological data to sporadically fail for data in ASDF format.
Fix a bug that would prevent users from directly passing an xarray.DataArray
to an EventData object.
Fix a bug where layered meshing would fail during the layer realization stage in some edge cases.
Fix a bug that would result in a failure of the layered mesher when realizing layered models with layers that lie outside the domain bounds.
Fix a bug that would cause side sets to not be attached when importing certain
types of Exodus meshes. Previously it was assumed the side set node ordering
for QUAD elements should be applied in 2D. However, this did not consider
differences in side set mappings when the mesh consisted of (3D) SHELL
elements instead of (2D) QUADS. A check is now performed in order to ensure
that this mapping is consistent.
Fix interpolation of relative-coordinate parameters onto high-order meshes.
Fixed a bug where crossing layers might have been added by the mesh partitioning algorithm.
Fix a bug where the block elemental field was sometimes incorrectly propagated into the central cylinder in smoothiesem meshes. Additionally, add the “z_node_1D” element nodal field to smoothiesem meshes to enhance backwards compatibility.
Fix a wrapper for estimating the time step based on the legacy function
UnstructuredMesh.compute_dt(). Note, however, that this function is
deprecated, and it is highly recommended to use the more accurate
UnstructuredMesh.compute_time_step() instead, which was introduced in
2025.1.2.
Fix type hints in the mesh widget, which sometimes caused failures in visualizing the simulation setup.
Fix a bug that would prevent running the inversion action smooth_model()
with a SpaceDependentSmoothing.
Fix a logic error when reaching a user-defined maximum number of trial model rejections in an inversion. If this happens in any but the first iteration, it is treated as a converge criterion and the inversion will stop.
Add an experimental data processing validation action. This can be useful to identify potential issues with seismological data, which is typically heterogeneous (data from different networks and stations with varying recording settings).
Fix a bug that occurred when meshing Cartesian domains with oceans in SalvusProject. In certain cases, the insertion of a doubling layer within the ocean itself led to issues in mesh construction, which was apparent when running the Marmousi tutorial at certain frequencies. A more sophisticated test is now performed which dynamically adapts the ocean-bottom coarsening strategy in these domains.