2D Elastic Isotropic Fréchet Derivative Computation

2D Elastic Anisotropic Fréchet Derivative Computation

2D Acoustic Isotropic Fréchet Derivative Computation

template<typename Tags, std::enable_if_t<Tags::medium_tag == specfem::element::medium_tag::acoustic && Tags::property_tag == specfem::element::property_tag::isotropic, int> = 0>
specfem::point::kernels<Tags::dimension_tag, Tags::medium_tag, Tags::property_tag, Tags::using_simd> compute_frechet_derivatives(const specfem::point::properties<Tags> &properties, const specfem::point::velocity<Tags> &adjoint_velocity, const specfem::point::acceleration<Tags> &adjoint_acceleration, const specfem::point::displacement<Tags> &backward_displacement, const specfem::point::field_derivatives<Tags> &adjoint_derivatives, const specfem::point::field_derivatives<Tags> &backward_derivatives, const type_real &dt)

Compute Fréchet derivatives for acoustic isotropic media (2D and 3D).

Compute Fréchet derivatives for 2D poroelastic isotropic media.

Compute Fréchet derivatives for 2D elastic SH isotropic media.

Compute Fréchet derivatives for 2D elastic PSV isotropic media.

Compute Fréchet derivatives for 2D elastic SH anisotropic media.

Compute Fréchet derivatives for 2D elastic PSV anisotropic media.

Calculates sensitivity kernels for density and bulk modulus in acoustic wave propagation. Returns kernels \( K_{rho}\) and \( K_{kappa}\) used in seismic inversion. Applies to both 2D and 3D via a compile-time loop over the number of spatial dimensions.

The kernels are computed using the following equations (Luo et al. 2013, eqs. A-27, A-28):

Density kernel:

\[ \Delta K_{rho} = \sum_{i=1}^{n_{dim}} \frac{\partial u^{\dagger}}{\partial x_i} \frac{\partial u^{b}}{\partial x_i} \frac{1}{\rho} \Delta t \]

Bulk modulus kernel:

\[ \Delta K_{kappa} = \ddot{u}^{\dagger} \cdot u^{b} \frac{1}{\kappa} \Delta t \]

where \(u^{\dagger}\) is the adjoint acoustic potential, \(u^{b}\) is the backward acoustic potential, \(\ddot{u}^{\dagger}\) is the adjoint potential second time derivative, and \(\Delta t\) is the time step.

Calculates sensitivity kernels for anisotropic elastic stiffness parameters in PSV wave propagation. Computes kernels for density and six independent stiffness coefficients (c11, c13, c15, c33, c35, c55) using strain tensor formulation.

Based on Tromp et al. 2005, Equation 15 for anisotropic kernels:

\[ \Delta K_{c_{ijkl}} = -\varepsilon_{ij}^{\dagger} \varepsilon_{kl}^b \, c_{ijkl} \, \Delta t \]
\[ \Delta K_{rho} = -\rho \Delta t \, \ddot{u}^{\dagger} \cdot u^b \]

Placeholder implementation for SH anisotropic kernels. Currently not implemented due to missing stiffness matrix components (c44, c45/c54) in the anisotropic properties structure.

Calculates sensitivity kernels for elastic properties in PSV wave propagation. Based on Tromp et al. 2005, computes kernels for density (ρ), shear modulus (μ), bulk modulus (κ), and derived parameters (ρ’, α, β).

The kernels are computed using deviatoric strain tensor formulations:

\[ \Delta K_{kappa} = -\kappa \Delta t \, \text{div}(u^{\dagger}) \cdot \text{div}(u^b) \]
\[ \Delta K_{mu} = -2\mu \Delta t \left[ \varepsilon^{\dagger} : \varepsilon^b - \frac{1}{3} \Delta K_{kappa} \right] \]
\[ \Delta K_{rho} = -\rho \Delta t \, \ddot{u}^{\dagger} \cdot u^b \]

Calculates sensitivity kernels for SH (shear horizontal) wave propagation using membrane wave assumptions (ux=uz=0, ∂/∂y=0). Only shear modulus and density kernels are non-zero for SH waves.

The kernels use deviatoric strain formulation:

\[ \Delta K_{mu} = -\mu \Delta t \left( \frac{\partial u_y^{\dagger}}{\partial x} \frac{\partial u_y^b}{\partial x} + \frac{\partial u_y^{\dagger}}{\partial z} \frac{\partial u_y^b}{\partial z} \right) \]
\[ \Delta K_{rho} = -\rho \Delta t \, \ddot{u}^{\dagger} \cdot u^b \]

Calculates sensitivity kernels for poroelastic properties based on Biot’s theory. Computes kernels for both solid and fluid phases, including density, elastic moduli, Biot parameters, and wave speed kernels.

Based on Morency et al. 2009 formulation, computes 15 different kernels:

  • Primary kernels: ρₜ, ρf, η, s/m, μfr, B, C, M

  • Wave speed kernels: cpI, cpII, cs, ratio

  • Density normalized kernels: ρb, ρfb, φ

Note

Requires additional stiffness coefficients (c44, c45) for full implementation

Warning

This function currently calls Kokkos::abort() - not implemented

Note

For SH waves: K_{kappa} = 0, K_{alpha} = 0, K_{beta} = 2K_{mu}

Note

For complete technical details and theoretical derivations, please refer to: Morency, C., Luo, Y., & Tromp, J. (2009).

Warning

This implementation has NOT been tested. Please create a GitHub issue if you encounter bugs or unexpected behavior in the kernel computations.

Template Parameters:
  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

  • Tags – Compile-time tag bundle (dimension, medium, property, SIMD)

Parameters:
  • properties – Acoustic material properties (density, bulk modulus)

  • adjoint_velocity – Adjoint velocity field

  • adjoint_acceleration – Adjoint acceleration field

  • backward_displacement – Backward displacement field

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

  • properties – Anisotropic elastic properties (ρ, c11, c13, c15, c33, c35, c55)

  • adjoint_velocity – Adjoint velocity field

  • adjoint_acceleration – Adjoint acceleration field

  • backward_displacement – Backward displacement field

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

  • properties – Anisotropic elastic properties

  • adjoint_velocity – Adjoint velocity field

  • adjoint_acceleration – Adjoint acceleration field

  • backward_displacement – Backward displacement field

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

  • properties – Elastic material properties (ρ, μ, κ)

  • adjoint_velocity – Adjoint velocity field

  • adjoint_acceleration – Adjoint acceleration field

  • backward_displacement – Backward displacement field

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

  • properties – Elastic material properties

  • adjoint_velocity – Adjoint velocity field

  • adjoint_acceleration – Adjoint acceleration field

  • backward_displacement – Backward displacement field

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

  • properties – Poroelastic properties (ρ, μ, φ, η, permeability, Biot coefficients)

  • adjoint_velocity – Adjoint velocity field for solid and fluid phases

  • adjoint_acceleration – Adjoint acceleration field for solid and fluid phases

  • backward_displacement – Backward displacement field for solid and fluid phases

  • adjoint_derivatives – Spatial derivatives of adjoint field

  • backward_derivatives – Spatial derivatives of backward field

  • dt – Time step size

Returns:

Point kernels containing density and bulk modulus sensitivities

Returns:

Point kernels containing density and stiffness parameter sensitivities

Returns:

Zero kernels (not implemented)

Returns:

Point kernels containing all elastic parameter sensitivities

Returns:

Point kernels with SH-specific parameter sensitivities

Returns:

Point kernels containing all 15 poroelastic parameter sensitivities

2D Poroelastic Isotropic Fréchet Derivative Computation