Mondaic

Salvus 2025.1.3

Released: 2026-05-01

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

SalvusCompute

Throw a proper exception in the materials implementation in SalvusCompute if an unsupported model order or dimension is used.

SalvusCore

Support for ObsPy >= 1.5 and SQLAlchemy >= 2. Support for lower versions is dropped.

SalvusCore

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.

SalvusFlow API CHANGE

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.

SalvusFlow API CHANGE

Correct the name of the graph_space_optimal_transport_misfit_and_adjoint_source function, which was previously misspelt.

SalvusFlow

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.

SalvusFlow

Fix a bug that would cause the retrieval of seismological data to sporadically fail for data in ASDF format.

SalvusFlow

Fix a bug that would prevent users from directly passing an xarray.DataArray to an EventData object.

SalvusMesh

Fix a bug where layered meshing would fail during the layer realization stage in some edge cases.

SalvusMesh

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.

SalvusMesh

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.

SalvusMesh

Fix interpolation of relative-coordinate parameters onto high-order meshes.

SalvusMesh

Fixed a bug where crossing layers might have been added by the mesh partitioning algorithm.

SalvusMesh

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.

SalvusMesh

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.

SalvusMesh

Fix type hints in the mesh widget, which sometimes caused failures in visualizing the simulation setup.

SalvusOpt

Fix a bug that would prevent running the inversion action smooth_model() with a SpaceDependentSmoothing.

SalvusOpt

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.

SalvusProject API CHANGE

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).

SalvusProject

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.