seisflows.workflow.migration
Seismic migration performs a ‘time-reverse migration’, or backprojection. In the terminology of seismic imaging, we are running a forward and adjoint simulation to derive the gradient of the objective function. This workflow sets up the machinery to derive a scaled, smoothed gradient from an initial model
Warning
Misfit kernels require large amounts of disk space for storage. Setting `export_kernel`==True when PAR.NTASK is large and model files are large may lead to large file overhead.
Note
Migration workflow includes an option to mask the gradient. While both masking and preconditioning involve scaling the gradient, they are fundamentally different operations: masking is ad hoc, preconditioning is a change of variables; For more info, see Modrak & Tromp 2016 GJI
Module Contents
Classes
Migration Workflow |
- class seisflows.workflow.migration.Migration(modules=None, path_mask=None, export_gradient=True, export_kernels=False, **kwargs)
Bases:
seisflows.workflow.forward.Forward
Migration Workflow
Run forward and adjoint solver to produce event-dependent misfit kernels. Sum and postprocess kernels to produce gradient. In seismic exploration this is ‘reverse time migration’.
Parameters
- type export_gradient
bool
- param export_gradient
export the gradient after it has been generated in the scratch directory. If False, gradient can be discarded from scratch at any time in the workflow
- type export_kernels
bool
- param export_kernels
export each sources event kernels after they have been generated in the scratch directory. If False, gradient can be discarded from scratch at any time in the workflow
Paths
- type path_mask
str
- param path_mask
optional path to a masking function which is used to mask out or scale parts of the gradient. The user-defined mask must match the file format of the input model (e.g., .bin files).
- property task_list
USER-DEFINED TASK LIST. This property defines a list of class methods that take NO INPUT and have NO RETURN STATEMENTS. This defines your linear workflow, i.e., these tasks are to be run in order from start to finish to complete a workflow.
This excludes ‘check’ (which is run during ‘import_seisflows’) and ‘setup’ which should be run separately
Note
For workflows that require an iterative approach (e.g. inversion), this task list will be looped over, so ensure that any setup and teardown tasks (run once per workflow, not once per iteration) are not included.
- Return type
list
- Returns
list of methods to call in order during a workflow
- __doc__
- run_adjoint_simulations()
Performs adjoint simulations for a single given event. File manipulation to ensure kernels are discoverable by other modules
- postprocess_event_kernels()
Combine/sum NTASK event kernels into a single volumetric kernel and then (optionally) smooth the output misfit kernel by convolving with a 3D Gaussian function with user-defined horizontal and vertical half-widths.
- evaluate_gradient_from_kernels()
Generates the ‘gradient’ from the ‘misfit kernel’. This involves scaling the gradient by the model vector (log dm –> dm) and applying an optional mask function to the gradient.