2D Elastic Mass Matrix Computation

template<bool UseSIMD, specfem::element::property_tag PropertyTag>
specfem::point::mass_inverse<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, UseSIMD> impl_mass_matrix_component(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, PropertyTag, UseSIMD> &properties)

Compute mass matrix inverse for 2D elastic isotropic P-SV waves.

Implements mass matrix for pressure-shear vertical wave propagation. P-SV waves involve displacement in the x-z plane with coupling between normal and shear motions.

Mass matrix: \( M = \rho \) (for both u_x and u_z components)

Template Parameters:
  • UseSIMD – Enable SIMD vectorization

  • PropertyTag – Property type (isotropic, anisotropic)

Parameters:

properties – Material properties (density)

Returns:

Mass inverse components [ρ, ρ] for [u_x, u_z]

template<bool UseSIMD, specfem::element::property_tag PropertyTag>
specfem::point::mass_inverse<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, UseSIMD> impl_mass_matrix_component(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, PropertyTag, UseSIMD> &properties)

Compute mass matrix inverse for 2D elastic isotropic SH waves.

Implements mass matrix for shear horizontal wave propagation. SH waves involve anti-plane motion (u_y displacement only) perpendicular to the propagation plane.

Mass matrix: \( M = \rho \) (for u_y component only)

Template Parameters:
  • UseSIMD – Enable SIMD vectorization

  • PropertyTag – Property type (isotropic, anisotropic)

Parameters:

properties – Material properties (density)

Returns:

Mass inverse component [ρ] for [u_y]

2D Acoustic Mass Matrix Computation

template<bool UseSIMD>
specfem::point::mass_inverse<specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, UseSIMD> impl_mass_matrix_component(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, specfem::element::property_tag::isotropic, UseSIMD> &properties)

Compute mass matrix inverse for 2D acoustic isotropic media.

Implements mass matrix for acoustic wave propagation in fluids. Acoustic media only support compressional waves (P-waves) with no shear wave propagation, leading to a simplified mass matrix formulation.

Mass matrix: \( M = \frac{1}{\kappa} \)

where \( \kappa \) is the bulk modulus.

Template Parameters:

UseSIMD – Enable SIMD vectorization

Parameters:

properties – Acoustic material properties ( \( \rho^{-1}, \kappa \))

Returns:

Mass inverse component [ \( \kappa^{-1} \)] for pressure wavefield

2D Poroelastic Mass Matrix Computation

template<bool UseSIMD>
specfem::point::mass_inverse<specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, UseSIMD> impl_mass_matrix_component(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::poroelastic, specfem::element::property_tag::isotropic, UseSIMD> &properties)

Compute mass matrix inverse for 2D poroelastic isotropic media.

Implements Biot’s theory mass matrix for fluid-saturated porous media with solid-fluid coupling. Computes effective densities accounting for fluid-solid interactions and tortuosity effects.

Mass matrix equations:

Solid component: \( M_s = \bar{\rho} - \frac{\phi \rho_f}{\alpha} \)

Fluid component: \( M_f = \frac{\rho_f \alpha \bar{\rho} - \phi \rho_f^2}{\phi \bar{\rho}} \)

Physical parameters:

  • \( \bar{\rho} \): Bulk density of saturated medium

  • \( \rho_f \): Fluid density

  • \( \phi \): Porosity

  • \( \alpha \): Tortuosity (pore geometry factor)

Returns 4 components for 2D poroelastic system: [M_s, M_s, M_f, M_f] where M_s and M_f are solid and fluid mass matrix components.

Template Parameters:

UseSIMD – Enable SIMD vectorization

Parameters:

properties – Poroelastic material properties

Returns:

Inverse mass matrix components for explicit time integration

3D Elastic Mass Matrix Computation

template<bool UseSIMD, specfem::element::property_tag PropertyTag>
specfem::point::mass_inverse<specfem::dimension::type::dim3, specfem::element::medium_tag::elastic, UseSIMD> impl_mass_matrix_component(const specfem::point::properties<specfem::dimension::type::dim3, specfem::element::medium_tag::elastic, PropertyTag, UseSIMD> &properties)

Compute mass matrix inverse for 3D elastic isotropic media.

Mass matrix: \( M_{ij} = \rho \delta_{ij} \)

Components: \( [M_x, M_y, M_z] = [\rho, \rho, \rho] \)

Template Parameters:
  • UseSIMD – Enable SIMD vectorization

  • PropertyTag – Property type (isotropic, anisotropic)

Parameters:

properties – Material properties

Returns:

Mass inverse components for \( [u_x, u_y, u_z] \)