2D Poroelastic Isotropic Damping Computation

template<typename T, typename Tags, std::enable_if_t<Tags::dimension_tag == specfem::element::dimension_tag::dim2 && Tags::medium_tag == specfem::element::medium_tag::poroelastic && Tags::property_tag == specfem::element::property_tag::isotropic, int> = 0>
void impl_compute_damping_force(const T factor, const specfem::point::properties<Tags> &point_properties, const specfem::point::velocity<Tags> &velocity, specfem::point::acceleration<Tags> &acceleration)

Compute viscous damping force for 2D poroelastic isotropic media.

Implements Darcy viscous damping for fluid-solid coupling in porous media. Damping arises from viscous flow resistance through pore networks, proportional to relative fluid-solid velocity and permeability.

Viscous force equations: \( \mathbf{F}_{\mathrm{visc}} = \eta_{\mathrm{f}} \mathbf{K}^{-1} \mathbf{w} \)

where:

  • \( \eta_{\mathrm{f}} \): fluid viscosity

  • \( \mathbf{K}^{-1} \): inverse permeability tensor

  • \( \mathbf{w} \): relative fluid velocity

Acceleration updates: \( \ddot{\mathbf{u}} += \frac{\phi}{\alpha} \mathbf{F}_{\mathrm{visc}} \) (solid coupling) \( \ddot{\mathbf{w}} -= \mathbf{F}_{\mathrm{visc}} \) (fluid damping)

Template Parameters:

T – Scalar type for damping factor

Parameters:
  • factor – Time step scaling factor

  • point_properties – Poroelastic properties ( \(\eta_{\mathrm{f}}, \mathbf{K}^{-1}, \phi, \alpha\))

  • velocity – Velocity field [u_x, u_z, w_x, w_z]

  • acceleration[in, out] – Acceleration field (modified by damping)