# examples.seismic.tti package¶

## examples.seismic.tti.operators module¶

examples.seismic.tti.operators.ForwardOperator(model, source, receiver, space_order=4, save=False, kernel='centered', **kwargs)[source]

Constructor method for the forward modelling operator in an acoustic media

Parameters: model – Model object containing the physical parameters src – None ot IShot() (not currently supported properly) data – IShot() object containing the acquisition geometry and field data time_order: Time discretization order spc_order: Space discretization order
examples.seismic.tti.operators.Gxx_centered_2d(field, costheta, sintheta, space_order)[source]

2D rotated second order derivative in the direction x. As the Laplacian is rotation invariant, it is computed as the conventional Laplacian minus the second order rotated second order derivative in the direction z Gxx = field.laplace - Gzz :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: Sum of the 3D rotated second order derivative in the direction x

examples.seismic.tti.operators.Gxx_shifted(field, costheta, sintheta, cosphi, sinphi, space_order)[source]

3D rotated second order derivative in the direction x as an average of two non-centered rotated second order derivative in the direction x :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: rotated second order derivative wrt x

examples.seismic.tti.operators.Gxx_shifted_2d(field, costheta, sintheta, space_order)[source]

2D rotated second order derivative in the direction x as an average of two non-centered rotated second order derivative in the direction x :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param space_order: discretization order :return: rotated second order derivative wrt x

examples.seismic.tti.operators.Gxxyy_centered(field, costheta, sintheta, cosphi, sinphi, space_order)[source]

Sum of the 3D rotated second order derivative in the direction x and y. As the Laplacian is rotation invariant, it is computed as the conventional Laplacian minus the second order rotated second order derivative in the direction z Gxx + Gyy = field.laplace - Gzz :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: Sum of the 3D rotated second order derivative in the direction x and y

examples.seismic.tti.operators.Gyy_shifted(field, cosphi, sinphi, space_order)[source]

3D rotated second order derivative in the direction y as an average of two non-centered rotated second order derivative in the direction y :param field: symbolic data whose derivative we are computing :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: rotated second order derivative wrt y

examples.seismic.tti.operators.Gzz_centered(field, costheta, sintheta, cosphi, sinphi, space_order)[source]

3D rotated second order derivative in the direction z :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: rotated second order derivative wrt z

examples.seismic.tti.operators.Gzz_centered_2d(field, costheta, sintheta, space_order)[source]

2D rotated second order derivative in the direction z :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param space_order: discretization order :return: rotated second order derivative wrt z

examples.seismic.tti.operators.Gzz_shifted(field, costheta, sintheta, cosphi, sinphi, space_order)[source]

3D rotated second order derivative in the direction z as an average of two non-centered rotated second order derivative in the direction z :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt angle :param sintheta: sine of the tilt angle :param cosphi: cosine of the azymuth angle :param sinphi: sine of the azymuth angle :param space_order: discretization order :return: rotated second order derivative wrt z

examples.seismic.tti.operators.Gzz_shifted_2d(field, costheta, sintheta, space_order)[source]

2D rotated second order derivative in the direction z as an average of two non-centered rotated second order derivative in the direction z :param field: symbolic data whose derivative we are computing :param costheta: cosine of the tilt :param sintheta: sine of the tilt :param space_order: discretization order :return: rotated second order derivative wrt z

examples.seismic.tti.operators.kernel_centered_2d(model, u, v, space_order)[source]

TTI finite difference kernel. The equation we solve is:

u.dt2 = (1+2 *epsilon) (Gxx(u)) + sqrt(1+ 2*delta) Gzz(v) v.dt2 = sqrt(1+ 2*delta) (Gxx(u)) + Gzz(v)

where epsilon and delta are the thomsen parameters. This function computes H0 = Gxx(u) + Gyy(u) Hz = Gzz(v)

Parameters: u – first TTI field v – second TTI field space_order – discretization order u and v component of the rotated Laplacian in 2D
examples.seismic.tti.operators.kernel_centered_3d(model, u, v, space_order)[source]

TTI finite difference kernel. The equation we solve is:

u.dt2 = (1+2 *epsilon) (Gxx(u)+Gyy(u)) + sqrt(1+ 2*delta) Gzz(v) v.dt2 = sqrt(1+ 2*delta) (Gxx(u)+Gyy(u)) + Gzz(v)

where epsilon and delta are the thomsen parameters. This function computes H0 = Gxx(u) + Gyy(u) Hz = Gzz(v)

Parameters: u – first TTI field v – second TTI field u and v component of the rotated Laplacian in 2D
examples.seismic.tti.operators.kernel_shifted_2d(model, u, v, space_order)[source]

TTI finite difference kernel. The equation we solve is:

u.dt2 = (1+2 *epsilon) (Gxx(u)) + sqrt(1+ 2*delta) Gzz(v) v.dt2 = sqrt(1+ 2*delta) (Gxx(u)) + Gzz(v)

where epsilon and delta are the thomsen parameters. This function computes H0 = Gxx(u) + Gyy(u) Hz = Gzz(v)

Parameters: u – first TTI field v – second TTI field space_order – discretization order u and v component of the rotated Laplacian in 2D
examples.seismic.tti.operators.kernel_shifted_3d(model, u, v, space_order)[source]

TTI finite difference kernel. The equation we solve is:

u.dt2 = (1+2 *epsilon) (Gxx(u)+Gyy(u)) + sqrt(1+ 2*delta) Gzz(v) v.dt2 = sqrt(1+ 2*delta) (Gxx(u)+Gyy(u)) + Gzz(v)

where epsilon and delta are the thomsen parameters. This function computes H0 = Gxx(u) + Gyy(u) Hz = Gzz(v)

Parameters: u – first TTI field v – second TTI field space_order – discretization order u and v component of the rotated Laplacian in 3D
examples.seismic.tti.operators.kernel_staggered_2d(model, u, v, space_order)[source]

TTI finite difference. The equation solved is: vx.dt = - u.dx vz.dt = - v.dx m * v.dt = - sqrt(1 + 2 delta) vx.dx - vz.dz + Fh m * u.dt = - (1 + 2 epsilon) vx.dx - sqrt(1 + 2 delta) vz.dz + Fv

examples.seismic.tti.operators.kernel_staggered_3d(model, u, v, space_order)[source]

TTI finite difference. The equation solved is: vx.dt = - u.dx vy.dt = - u.dx vz.dt = - v.dx m * v.dt = - sqrt(1 + 2 delta) (vx.dx + vy.dy) - vz.dz + Fh m * u.dt = - (1 + 2 epsilon) (vx.dx + vy.dy) - sqrt(1 + 2 delta) vz.dz + Fv

examples.seismic.tti.operators.particle_velocity_fields(model, space_order)[source]

Initialize partcle vleocity fields for staggered tti

examples.seismic.tti.operators.second_order_stencil(model, u, v, H0, Hz)[source]

Creates the stencil corresponding to the second order TTI wave equation u.dt2 = (epsilon * H0 + delta * Hz) - damp * u.dt v.dt2 = (delta * H0 + Hz) - damp * v.dt

## examples.seismic.tti.tti_example module¶

examples.seismic.tti.tti_example.run(shape=(50, 50, 50), spacing=(20.0, 20.0, 20.0), tn=250.0, autotune=False, time_order=2, space_order=4, nbpml=10, kernel='centered', **kwargs)[source]
examples.seismic.tti.tti_example.tti_setup(shape=(50, 50, 50), spacing=(20.0, 20.0, 20.0), tn=250.0, space_order=4, nbpml=10, preset='layers-tti', **kwargs)[source]

## examples.seismic.tti.wavesolver module¶

class examples.seismic.tti.wavesolver.AnisotropicWaveSolver(model, source, receiver, space_order=2, **kwargs)[source]

Bases: object

Solver object that provides operators for seismic inversion problems and encapsulates the time and space discretization for a given problem setup.

Parameters: model – Physical model with domain parameters source – Sparse point symbol providing the injected wave receiver – Sparse point symbol describing an array of receivers time_order – Order of the time-stepping scheme (default: 2) space_order – Order of the spatial stencil discretisation (default: 4)

Note: space_order must always be greater than time_order

forward(src=None, rec=None, u=None, v=None, m=None, epsilon=None, delta=None, theta=None, phi=None, save=False, kernel='centered', **kwargs)[source]

Forward modelling function that creates the necessary data objects for running a forward modelling operator.

Parameters: src – Symbol with time series data for the injected source term rec – Symbol to store interpolated receiver data (u+v) u – (Optional) Symbol to store the computed wavefield first component v – (Optional) Symbol to store the computed wavefield second component m – (Optional) Symbol for the time-constant square slowness epsilon – (Optional) Symbol for the time-constant first Thomsen parameter delta – (Optional) Symbol for the time-constant second Thomsen parameter theta – (Optional) Symbol for the time-constant Dip angle (radians) phi – (Optional) Symbol for the time-constant Azimuth angle (radians) save – Option to store the entire (unrolled) wavefield kernel – type of discretization, centered or shifted Receiver, wavefield and performance summary
op_fwd(kernel='shifted', save=False)[source]

Cached operator for forward runs with buffered wavefield