KirchMig.KirchMap — Function.KirchMap{eltype(t)}(t, trav_r, [trav_s]; parallel_threaded_serial="serial")
Construct a Kirchhoff LinearMap object, which can perform Kirchhoff modeling (or more accurately, demigration) as a forward operator and Kirchhoff migration as an adjoint operation.
Parameters
t:(nt,),AbstractVector{<:Real}
Contains time samples which correspond to the data domain. KirchMap(t, trav)*m will create data whose time axis is given by t. Its type defines the type of KirchMap.
trav_r:(nz, [nx, ny, ...], nr),AbstractArray{<:Real, M}
Contains traveltimes between each model parameter and receiver location. The first M-1 dimensions are model dimensions (z, x, y, ...), and the last dimension corresponds to receivers.
trav_s:(nz, [nx, ny, ...], ns),AbstractArray{<:Real, M}, optional
Like trav_r but for sources. If omitted, defaults to trav_r, i.e., sources and receivers are assumed colocated.
parallel_threaded_serial:String
Defines which Kirchhoff methods to use. Can be the default, parallel, which uses Julia's distributed computing to parallelize over receivers; threaded which uses multi-threading to parallelize over receivers; or serial. It is highly recommended to not use the serial version, even when only using a single worker or thread.
Usage
- Forward map
The forward map L multiplies a model vector of size nz × nx × ny × ... to create a data vector of size nr × ns × nt.
- Adjoint map
The adjoint map L' multiplies a data vector of size nr × ns × nt to create a model vector of size nz × nx × ny × ...
Description
The forward map computes the discretized version of the following operation
and the adjoint map computes
In both computations, the differential elements (which only affect amplitude) are neglected.