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