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] \)