esys.downunder.forwardmodels.acoustic Package¶
Forward model for acoustic wave forms
Classes¶
-
class
esys.downunder.forwardmodels.acoustic.
AcousticWaveForm
(domain, omega, w, data, F, coordinates=None, fixAtBottom=False, tol=1e-10, saveMemory=True, scaleF=True)¶ Bases:
esys.downunder.forwardmodels.base.ForwardModel
Forward Model for acoustic waveform inversion in the frequency domain. It defines a cost function:
Math: defect = 1/2 integrate( ( w * ( a * u - data ) ) ** 2 )
where w are weighting factors, data are the measured data (as a 2-comp vector of real and imaginary part) for real frequency omega, and u is the corresponding result produced by the forward model. u (as a 2-comp vector) is the solution of the complex Helmholtz equation for frequency omega, source F and complex, inverse, squared p-velocity sigma:
Math: -u_{ii} - omega**2 * sigma * u = F
It is assumed that the exact scale of source F is unknown and the scaling factor a of F is calculated by minimizing the defect.
-
__init__
(domain, omega, w, data, F, coordinates=None, fixAtBottom=False, tol=1e-10, saveMemory=True, scaleF=True)¶ initializes a new forward model with acoustic wave form inversion.
Parameters: - domain (
Domain
) – domain of the model - w (
Scalar
) – weighting factors - data (
escript.Data
of shape (2,)) – real and imaginary part of data - F (
escript.Data
of shape (2,)) – real and imaginary part of source given at Dirac points, on surface or at volume. - coordinates (
ReferenceSystem
orSpatialCoordinateTransformation
) – defines coordinate system to be used (not supported yet) - tol (positive
float
) – tolerance of underlying PDE - saveMemory (
bool
) – if true stiffness matrix is deleted after solution of PDE to minimize memory requests. This will require more compute time as the matrix needs to be reallocated. - scaleF (
bool
) – if true source F is scaled to minimize defect. - fixAtBottom (
bool
) – if true pressure is fixed to zero at the bottom of the domain
- domain (
-
getArguments
(sigma)¶ Returns precomputed values shared by
getDefect()
andgetGradient()
.Parameters: sigma ( escript.Data
of shape (2,)) – a suggestion for complex 1/V**2Returns: solution, uTar, uTai, uTu Return type: escript.Data
of shape (2,), 3 xfloat
-
getCoordinateTransformation
()¶ returns the coordinate transformation being used
Return type: CoordinateTransformation
-
getDefect
(sigma, u, uTar, uTai, uTu)¶ Returns the defect value.
Parameters: - sigma (
escript.Data
of shape (2,)) – a suggestion for complex 1/V**2 - u (
escript.Data
of shape (2,)) – a u vector - uTar (
float
) – equalsintegrate( w * (data[0]*u[0]+data[1]*u[1]))
- uTai – equals
integrate( w * (data[1]*u[0]-data[0]*u[1]))
- uTu (
float
) – equalsintegrate( w * (u,u))
Return type: float
- sigma (
-
getDomain
()¶ Returns the domain of the forward model.
Return type: Domain
-
getGradient
(sigma, u, uTar, uTai, uTu)¶ Returns the gradient of the defect with respect to density.
Parameters: - sigma (
escript.Data
of shape (2,)) – a suggestion for complex 1/V**2 - u (
escript.Data
of shape (2,)) – a u vector - uTar (
float
) – equalsintegrate( w * (data[0]*u[0]+data[1]*u[1]))
- uTai – equals
integrate( w * (data[1]*u[0]-data[0]*u[1]))
- uTu (
float
) – equalsintegrate( w * (u,u))
- sigma (
-
getSourceScaling
(u)¶ returns the scaling factor s required to rescale source F to minimize defect
|s * u- data|^2
Parameters: u ( escript.Data
of shape (2,)) – value of pressure solution (real and imaginary part)Return type: complex
-
getSurvey
(index=None)¶ Returns the pair (data, weight)
If argument index is ignored.
-
rescaleWeights
(scale=1.0, sigma_scale=1.0)¶ rescales the weights such that
Math: integrate( ( w omega**2 * sigma_scale * data * ((1/L_j)**2)**-1) +1 )/(data*omega**2 * ((1/L_j)**2)**-1) * sigma_scale )=scale
Parameters: - scale (positive
float
) – scale of data weighting factors - sigma_scale (
Scalar
) – scale of 1/vp**2 velocity.
- scale (positive
-
setUpPDE
()¶ Creates and returns the underlying PDE.
Return type: lpde.LinearPDE
-
-
class
esys.downunder.forwardmodels.acoustic.
ForwardModel
¶ Bases:
object
An abstract forward model that can be plugged into a cost function. Subclasses need to implement
getDefect()
,getGradient()
, and possiblygetArguments()
and ‘getCoordinateTransformation’.-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
getArguments
(x)¶
-
getCoordinateTransformation
()¶
-
getDefect
(x, *args)¶
-
getGradient
(x, *args)¶
-
Functions¶
Others¶
- HAVE_DIRECT