2D Elastic Isotropic Stress Computation

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, specfem::element::property_tag::isotropic, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, UseSIMD> &field_derivatives)

Compute stress tensor for 2D elastic isotropic P-SV waves.

Implements constitutive relation for 2D elastic P-SV (pressure-shear vertical) wave propagation in isotropic media. Computes full stress tensor from displacement gradients and Lamé parameters.

Stress components:

  • \( \sigma_{xx} = (\lambda + 2\mu) \frac{\partial u_x}{\partial x} + \lambda \frac{\partial u_z}{\partial z} \)

  • \( \sigma_{zz} = (\lambda + 2\mu) \frac{\partial u_z}{\partial z} + \lambda \frac{\partial u_x}{\partial x} \)

  • \( \sigma_{xz} = \mu \left( \frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x} \right) \)

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Material properties ( \(\lambda\), \(\mu\), \(\rho\))

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_i}{\partial x_j}\))

Returns:

2x2 symmetric stress tensor [ \(\sigma_{xx}\), \(\sigma_{xz}\); \(\sigma_{xz}\), \(\sigma_{zz}\)]

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, specfem::element::property_tag::isotropic, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, UseSIMD> &field_derivatives)

Compute stress tensor for 2D elastic SH waves.

Implements constitutive relation for 2D elastic SH (shear horizontal) wave propagation in isotropic media. Computes shear stress components from displacement gradients and shear modulus.

Stress components:

  • \( \sigma_{xy} = \mu \frac{\partial u_y}{\partial x} \)

  • \( \sigma_{zy} = \mu \frac{\partial u_y}{\partial z} \)

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Material properties ( \(\mu\), \(\rho\))

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_y}{\partial x_j}\))

Returns:

1x2 shear stress tensor [ \(\sigma_{xy}\), \(\sigma_{zy}\)]

2D Elastic Anisotropic Stress Computation

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, specfem::element::property_tag::anisotropic, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, UseSIMD> &field_derivatives)

Compute stress tensor for 2D elastic anisotropic P-SV waves.

Implements constitutive relation for 2D elastic P-SV wave propagation in anisotropic media using full elastic stiffness tensor. Accounts for directionally-dependent wave velocities and coupling between normal and shear components.

Stress components:

  • \(\sigma_{xx} = c_{11}\frac{\partial u_x}{\partial x} + c_{13}\frac{\partial u_z}{\partial z} + c_{15}\left(\frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x}\right)\)

  • \(\sigma_{zz} = c_{13}\frac{\partial u_x}{\partial x} + c_{33}\frac{\partial u_z}{\partial z} + c_{35}\left(\frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x}\right)\)

  • \(\sigma_{xz} = c_{15}\frac{\partial u_x}{\partial x} + c_{35}\frac{\partial u_z}{\partial z} + c_{55}\left(\frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x}\right)\)

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Anisotropic material properties ( \(c_{11}, c_{13}, c_{15}, c_{33}, c_{35}, c_{55}\))

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_i}{\partial x_j}\))

Returns:

2x2 symmetric stress tensor [ \(\sigma_{xx}, \sigma_{xz}; \sigma_{xz}, \sigma_{zz}\)]

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, specfem::element::property_tag::anisotropic, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sh, UseSIMD> &field_derivatives)

Compute stress tensor for 2D elastic anisotropic SH waves.

Implements constitutive relation for 2D elastic SH wave propagation in anisotropic media. For SH waves, only the c55 stiffness component is relevant, simplifying the anisotropic case to isotropic behavior.

Stress components:

  • \(\sigma_{xy} = c_{55} \frac{\partial u_y}{\partial x}\) (stored as T(0,0))

  • \(\sigma_{zy} = c_{55} \frac{\partial u_y}{\partial z}\) (stored as T(0,1))

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Anisotropic material properties (c55 used only)

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_y}{\partial x_j}\))

Returns:

1x2 shear stress tensor [ \(\sigma_{xy}\), \(\sigma_{zy}\)]

2D Elastic Isotropic Cosserat Stress Computation

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv_t, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv_t, specfem::element::property_tag::isotropic_cosserat, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv_t, UseSIMD> &field_derivatives)

Compute stress tensor for 2D elastic isotropic Cosserat media.

Implements constitutive relations for Cosserat (micropolar) elastic media with rotational degrees of freedom. Extends classical elasticity by including couple stresses and asymmetric force stress tensor to capture size effects and microstructural behavior.

Stress components:

  • Classical: \(\sigma_{xx}\), \(\sigma_{zz}\) (normal), \(\sigma_{xz}\), \(\sigma_{zx}\) (shear - asymmetric)

  • Couple stress: \(\sigma_{c,xy}\), \(\sigma_{c,zy}\) (related to rotation gradients)

Material parameters:

  • \(\lambda, \mu\): Classical Lamé parameters

  • \(\nu\): Cosserat coupling parameter (asymmetry)

  • \(\mu_c, \nu_c\): Couple stress parameters (microstructural length scale)

Constitutive relations:

\[\begin{split}\begin{align} \sigma_{xx} &= \lambda(\nabla \cdot \mathbf{u}) + 2\mu \frac{\partial u_x}{\partial x} \\ \sigma_{zz} &= \lambda(\nabla \cdot \mathbf{u}) + 2\mu \frac{\partial u_z}{\partial z} \\ \sigma_{xz} &= \mu\left(\frac{\partial u_z}{\partial x} + \frac{\partial u_x}{\partial z}\right) + \nu\left(\frac{\partial u_z}{\partial x} - \frac{\partial u_x}{\partial z}\right) \\ \sigma_{zx} &= \mu\left(\frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x}\right) + \nu\left(\frac{\partial u_x}{\partial z} - \frac{\partial u_z}{\partial x}\right) \\ \sigma_{c,xy} &= (\mu_c + \nu_c)\frac{\partial \phi}{\partial x} \\ \sigma_{c,zy} &= (\mu_c + \nu_c)\frac{\partial \phi}{\partial z} \end{align}\end{split}\]

where \(\phi\) is the microrotation field and \(\nabla \cdot \mathbf{u} = \frac{\partial u_x}{\partial x} + \frac{\partial u_z}{\partial z}\).

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Cosserat material properties ( \(\lambda, \mu, \nu, \mu_c, \nu_c\))

  • field_derivatives – Displacement and rotation gradients

Returns:

3x2 extended stress tensor (force + couple stresses)

2D Acoustic Stress Computation

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

Compute stress tensor for 2D acoustic isotropic media.

Implements constitutive relation for 2D acoustic wave propagation in isotropic fluids. Computes stress (pressure) from displacement gradients and bulk modulus, assuming no shear wave propagation.

Stress components:

  • \(\sigma_{xx} = \rho^{-1} \frac{\partial u_x}{\partial x}\)

  • \(\sigma_{zz} = \rho^{-1} \frac{\partial u_z}{\partial z}\)

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Material properties ( \(\rho^{-1}\), \(\kappa\))

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_i}{\partial x_j}\))

Returns:

1x2 stress tensor [ \(\sigma_{xx}\), \(\sigma_{zz}\)]

2D Poroelastic Stress Computation

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

Compute stress tensor for 2D poroelastic isotropic media.

Implements Biot’s constitutive relations for fluid-saturated porous media with solid-fluid coupling. Computes both solid stress tensor and fluid pressure from solid and fluid displacement gradients.

Stress components:

  • Solid stress: \(\sigma_{xx}\), \(\sigma_{zz}\), \(\sigma_{xz}\) (modified by fluid pressure coupling)

  • Fluid pressure: \(\sigma_p\) (coupled to solid deformation)

Key physics:

  • Biot coupling: \(C_{Biot}\) links solid deformation to fluid pressure

  • Fluid modulus: \(M_{Biot}\) governs fluid compressibility

  • Porosity effects: \(\phi/\alpha\) coupling between fluid and solid phases

Constitutive relations:

\[\begin{split}\begin{eqnarray} \sigma_{xx} &=& (\lambda + 2\mu)_G \frac{\partial u_x}{\partial x} + \lambda_G \frac{\partial u_z}{\partial z} + C_{Biot}\left(\frac{\partial w_x}{\partial x} + \frac{\partial w_z}{\partial z}\right) \\ \sigma_{zz} &=& (\lambda + 2\mu)_G \frac{\partial u_z}{\partial z} + \lambda_G \frac{\partial u_x}{\partial x} + C_{Biot}\left(\frac{\partial w_x}{\partial x} + \frac{\partial w_z}{\partial z}\right) \\ \sigma_{xz} &=& \mu_G \left(\frac{\partial u_z}{\partial x} + \frac{\partial u_x}{\partial z}\right) \\ \sigma_p &=& C_{Biot}\left(\frac{\partial u_x}{\partial x} + \frac{\partial u_z}{\partial z}\right) + M_{Biot}\left(\frac{\partial w_x}{\partial x} + \frac{\partial w_z}{\partial z}\right) \end{eqnarray}\end{split}\]

Variables:

  • \(u_x, u_z\): Solid displacements

  • \(w_x, w_z\): Fluid displacements relative to solid

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Poroelastic material properties (Biot parameters)

  • field_derivatives – Solid and fluid displacement gradients

Returns:

4x2 coupled stress tensor (solid + fluid)

3D Elastic Isotropic Stress Computation

template<bool UseSIMD>
specfem::point::stress<specfem::dimension::type::dim3, specfem::element::medium_tag::elastic, UseSIMD> impl_compute_stress(const specfem::point::properties<specfem::dimension::type::dim3, specfem::element::medium_tag::elastic, specfem::element::property_tag::isotropic, UseSIMD> &properties, const specfem::point::field_derivatives<specfem::dimension::type::dim3, specfem::element::medium_tag::elastic, UseSIMD> &field_derivatives)

Compute stress tensor for 3D elastic isotropic media.

Implements constitutive relation for 3D elastic wave propagation in isotropic solids using Hooke’s law. Computes full 3x3 symmetric stress tensor from displacement gradients and Lamé parameters.

Stress components:

  • Normal: \(\sigma_{xx}\), \(\sigma_{yy}\), \(\sigma_{zz}\) (diagonal terms with volumetric coupling)

  • Shear: \(\sigma_{xy}\), \(\sigma_{xz}\), \(\sigma_{yz}\) (off-diagonal terms, symmetric tensor)

Constitutive relations:

  • \(\sigma_{ii} = (\lambda + 2\mu) \frac{\partial u_i}{\partial x_i} + \lambda \left(\frac{\partial u_j}{\partial x_j} + \frac{\partial u_k}{\partial x_k}\right)\)

  • \(\sigma_{ij} = \mu \left(\frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i}\right)\) for \(i \neq j\)

Supports both P and S wave propagation with isotropic velocities: \(V_p = \sqrt{\frac{\lambda + 2\mu}{\rho}}\), \(V_s = \sqrt{\frac{\mu}{\rho}}\).

Template Parameters:

UseSIMD – Enable SIMD vectorization for performance

Parameters:
  • properties – Material properties ( \(\lambda\), \(\mu\), \(\rho\))

  • field_derivatives – Displacement gradients ( \(\frac{\partial u_i}{\partial x_j}\))

Returns:

3x3 symmetric stress tensor