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