Salvus 0.11.31
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
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.
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.