2D Elastic Isotropic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::elastic_psv>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D elastic isotropic P-SV media.

Implements force source contribution for P-SV wave propagation in isotropic elastic media. Sources inject body forces that generate both P and S waves with uniform propagation velocities.

Source equations:

  • \( \ddot{u}_x = S_x(t) \cdot L_x(\mathbf{x}) \)

  • \( \ddot{u}_z = S_z(t) \cdot L_z(\mathbf{x}) \)

where:

  • \( S_x(t), S_z(t) \): source time functions (x,z components)

  • \( L_x(\mathbf{x}), L_z(\mathbf{x}) \): Lagrange interpolants

  • \( u_x, u_z \): displacement components in P-SV plane

Parameters:
  • point_source – Source parameters (STF components, interpolants)

  • point_properties – Material properties (unused for force sources)

Returns:

Acceleration contributions [ \(\ddot{u}_x, \ddot{u}_z\)]

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::elastic_sh>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D elastic isotropic SH media.

Implements force source contribution for SH wave propagation in isotropic elastic media. Sources inject anti-plane body forces that generate shear horizontal waves.

Source equation:

  • \( \ddot{u}_y = S_y(t) \cdot L_y(\mathbf{x}) \)

where:

  • \( S_y(t) \): source time function (y component)

  • \( L_y(\mathbf{x}) \): Lagrange interpolant

  • \( u_y \): anti-plane displacement

Parameters:
  • point_source – Source parameters (STF, interpolant)

  • point_properties – Material properties (unused for force sources)

Returns:

Acceleration contribution [ \(\ddot{u}_y\)]

2D Elastic Anisotropic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::elastic_psv>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::anisotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D elastic anisotropic P-SV media.

Implements force source contribution for P-SV wave propagation in anisotropic elastic media. Sources inject body forces that generate both P and S waves with directionally-dependent propagation.

Source equations:

  • \( \ddot{u}_x = S_x(t) \cdot L_x(\mathbf{x}) \)

  • \( \ddot{u}_z = S_z(t) \cdot L_z(\mathbf{x}) \)

where:

  • \( S_x(t), S_z(t) \): source time functions (x,z components)

  • \( L_x(\mathbf{x}), L_z(\mathbf{x}) \): Lagrange interpolants

  • \( u_x, u_z \): displacement components in P-SV plane

Parameters:
  • point_source – Source parameters (STF components, interpolants)

  • point_properties – Material properties (unused for force sources)

Returns:

Acceleration contributions [ \(\ddot{u}_x, \ddot{u}_z\)]

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::elastic_sh>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::anisotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D elastic anisotropic SH media.

Implements force source contribution for SH wave propagation in anisotropic elastic media. Sources inject anti-plane body forces that generate shear horizontal waves.

Source equation:

  • \( \ddot{u}_y = S_y(t) \cdot L_y(\mathbf{x}) \)

where:

  • \( S_y(t) \): source time function (y component)

  • \( L_y(\mathbf{x}) \): Lagrange interpolant

  • \( u_y \): anti-plane displacement

Parameters:
  • point_source – Source parameters (STF, interpolant)

  • point_properties – Material properties (unused for force sources)

Returns:

Acceleration contribution [ \(\ddot{u}_y\)]

2D Elastic Isotropic Cosserat Source Contribution

Warning

doxygengroup: Cannot find group “specfem_medium_dim2_compute_source_contribution_elastic_isotropic_cosserat” in doxygen xml output for project “specfem++” from directory: _build/doxygen/xml

2D Acoustic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::acoustic>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D acoustic isotropic media.

Forward/backward source equation: \( \ddot{\chi} = -\frac{S(t) \cdot L(\mathbf{x})}{\kappa} \)

Negative sign ensures \( +S(t) \) produces \( +p \) (pressure = \(-\ddot{\chi}\)).

Adjoint source equation: \( \ddot{\chi}^\dagger = S^\dagger(t) \cdot L(\mathbf{x}) \)

Adjoint sources are injected with positive sign and without \(\kappa\) scaling (following Peter et al. eq. A-8 / Fortran SPECFEM3D convention): the adjoint source file already incorporates the correct sign and the mass matrix subsequently supplies the \(\kappa\) factor.

Template Parameters:
  • PointSourceType – Point-wise source parameters (carries wavefield tag)

  • PointPropertiesType – Point-wise material properties

Parameters:
  • point_source – Source parameters (STF, interpolant)

  • point_properties – Material properties (κ)

Returns:

Acceleration contribution for acoustic potential

2D Poroelastic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim2>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::poroelastic>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 2D poroelastic isotropic media.

Implements coupled force source contribution for fluid-saturated porous media using Biot’s theory. Sources inject body forces that generate coupled solid-fluid wave propagation.

Source equations:

  • \( \ddot{u}_x = S_{sx}(t) \cdot L_x(\mathbf{x}) \cdot \left(1 - \frac{\phi}{\alpha}\right) \)

  • \( \ddot{u}_z = S_{sz}(t) \cdot L_z(\mathbf{x}) \cdot \left(1 - \frac{\phi}{\alpha}\right) \)

  • \( \ddot{w}_x = S_{fx}(t) \cdot L_x(\mathbf{x}) \cdot \left(1 - \frac{\rho_f}{\bar{\rho}}\right) \)

  • \( \ddot{w}_z = S_{fz}(t) \cdot L_z(\mathbf{x}) \cdot \left(1 - \frac{\rho_f}{\bar{\rho}}\right) \)

where:

  • \( u_x, u_z \): solid displacement components

  • \( w_x, w_z \): fluid relative displacement components

  • \( \phi \): porosity, \( \alpha \): tortuosity

  • \( \rho_f \): fluid density, \( \rho_s \): solid density, \( \bar{\rho} \): bulk density defined as \( \bar{\rho} = \phi \rho_f + (1 - \phi) \rho_s \)

Parameters:
  • point_source – Source parameters (STF components, interpolants)

  • point_properties – Poroelastic material properties

Returns:

Acceleration contributions [ \(\ddot{u}_x, \ddot{u}_z, \ddot{w}_x, \ddot{w}_z\)]

3D Elastic Isotropic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim3>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::elastic>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 3D elastic isotropic media.

Implements force source contribution for 3D elastic wave propagation in isotropic media. Sources inject body forces that generate both P and S waves with uniform propagation in all directions.

Source equations:

  • \( \ddot{u}_x = S_x(t) \cdot L_x(\mathbf{x}) \)

  • \( \ddot{u}_y = S_y(t) \cdot L_y(\mathbf{x}) \)

  • \( \ddot{u}_z = S_z(t) \cdot L_z(\mathbf{x}) \)

Parameters:
  • point_source – Source parameters (STF components, interpolants)

  • point_properties – Material properties (unused for force sources)

Returns:

Acceleration contributions [ \(\ddot{u}_x, \ddot{u}_y, \ddot{u}_z\)]

3D Acoustic Source Contribution

template<typename PointSourceType, typename PointPropertiesType>
auto impl_compute_source_contribution(const std::integral_constant<specfem::element::dimension_tag, specfem::element::dimension_tag::dim3>, const std::integral_constant<specfem::element::medium_tag, specfem::element::medium_tag::acoustic>, const std::integral_constant<specfem::element::property_tag, specfem::element::property_tag::isotropic>, const PointSourceType &point_source, const PointPropertiesType &point_properties)

Compute source contribution for 3D acoustic isotropic media.

Forward/backward source equation: \( \ddot{\chi} = -\frac{S(t) \cdot L(\mathbf{x})}{\kappa} \)

Negative sign ensures \( +S(t) \) produces \( +p \) (pressure = \(-\ddot{\chi}\)).

Adjoint source equation: \( \ddot{\chi}^\dagger = S^\dagger(t) \cdot L(\mathbf{x}) \)

Adjoint sources are injected with positive sign and without \(\kappa\) scaling (following Peter et al. eq. A-8 / Fortran SPECFEM3D convention): the adjoint source file already incorporates the correct sign and the mass matrix subsequently supplies the \(\kappa\) factor.

Template Parameters:
  • PointSourceType – Point-wise source parameters (carries wavefield tag)

  • PointPropertiesType – Point-wise material properties

Parameters:
  • point_source – Source parameters (STF, interpolant)

  • point_properties – Material properties ( \( \kappa \))

Returns:

Acceleration contribution for acoustic potential