Mondaic

Salvus 0.11.31

Released: 2021-04-23

This release comes with a new experimental feature for general mesh-to-mesh interpolations, which is very useful to interpolate the same model between to different discretizations.

Additionally, we added a workaround for a bug in parallel HDF5 that sometime occured when reading or writing large datasets.

Changes

SalvusCompute

There still seems to be an issue with parallel HDF5 and writing large amounts of data per rank in HDF5 1.12.0. This patch implements a workaround for execution on a single rank.

SalvusMesh

Generic mesh-to-mesh interpolation is now implemented in 2- and 3-D! This is useful in several situations, such as

  • representing two models on the exact same mesh,
  • increasing the frequency band in an ongoing inversion, and
  • re-meshing a model due to a decrease in minimum velocity,

among others. The primary interpolation function is available in salvus.mesh.tools.transforms. Along with full-mesh interpolations, layer-to-layer discontinuity-preserving interpolations, and “flattened” interpolations handling topographic deformations, are supported. Additional helper functions for re-meshing applications have also been added to salvus.mesh.salvus_mesh_utils. One of theses is a function to extract a conservative 1-D model from an unstructured mesh, which helps to ensure that a new mesh can be generated that respects both the 3-D minimum velocities and existing discontinuities. Another is a function to match up layers between two unstructured meshes in the case that their IDs are different. This is helpful in the case where the interpolation should respect pre-defined discontinuities in the model.

The method currently does not raise if the spatial domains covered by the target mesh is contained in the source mesh. Use this with care.

For additional information, please see our new tutorial on mesh-to-mesh interpolations.