Mondaic

Salvus 0.12.6

Released: 2022-09-29

New features introduced with this release include callback functions to implement event-dependent meshes and iteration-dependent event selections for mini-batch inversions. Furthermore, an initial implementation of a new workflow for computing forward simulations, misfits and gradients within a single chain of tasks is introduced.

Additionally, the release contains various minor bug fixes and small improvements listed below.

Changes

SalvusCompute

Allow for an axis-aligned shortcut for absorbing boundary attachment. Useful in cartesian domains, and specified via passing “side_sets_are_axis_aligned” to the simple config AbsorbingBoundary constructor.

SalvusFlow

Use shutil.copyfile() instead of shutil.copy() and shutil.copy2() to avoid problems copying between file systems with and without permission bits.

SalvusFlow

The data selection can now properly deselect data whose processing raises an exception for only a few receivers. This usually only happens with faulty receiver metadata.

SalvusOpt

Add new option use_event_dependent_gradients for the trust-region method. When set to True, only the accumulated gradient for all events is used, and tasks of type TaskMisfitsAndSummedGradient are issued instead of TaskMisfitsAndGradients.

SalvusOpt

Add a new option for discontinuous_model_blocks to the mapping function. When used in combination with a homogeneous scaling, this function allows for the parameterization of piecewise constant models.

SalvusProject

Upgrade to ipywidgets>=8.0.0. The changes are backward compatible with older versions of ipywidgets.

SalvusProject

Add functionality to check the trial model on subsets of events (including none). The list can be adjusted by using the optional argument control_group_events in the constructor of an iteration.

SalvusProject

New optional parameter max_events_per_job_submission for inversion action component to limit the maximum number of events that are simultaneously submitted per job to reduce the memory overhead.

SalvusProject

Add an optional callback function event_batch_selection to the InverseProblemConfiguration, which allows to define an iteration-dependent selection of events and/or control group to check the trial model only for a subset of events.

SalvusProject

Implement gradient mapping for event-dependent meshes to enable their use for inversions.

SalvusProject

Mitigate open nfs file handles when deleting simulation results.

SalvusProject

Integrate using event-dependent meshes with task chains. This also adds a faster way to compute misfits without gradients.

Changes to Experimental Features

SalvusProject

Initial implementation of task chains for solving inverse problems. The job_submission settings can now optionally receive a TaskChainSiteConfig to compute misfits in parallel, and to chain forward and adjoint simulations.

This is an experimental feature which is currently restricted to remote sites which share the same file system and the DataBlockIO backend of events.