specfem::medium_container::properties::point_container¶
-
template<specfem::element::dimension_tag DimensionTag, specfem::element::medium_tag MediumTag, specfem::element::property_tag PropertyTag, bool UseSIMD, typename Enable = void>
struct point_container¶ Data container to hold properties of a medium at a quadrature point.
- Template Parameters:
DimensionTag – The dimension of the medium
MediumTag – The type of the medium
PropertyTag – The type of the properties
UseSIMD – Boolean indicating whether to use SIMD intrinsics
Enable – SFINAE enable parameter
Subclassed by specfem::point::impl::properties< DimensionTag, MediumTag, PropertyTag, UseSIMD >
Medium-specific Specializations¶
Acoustic Isotropic¶
-
template<specfem::element::dimension_tag DimensionTag, bool UseSIMD>
struct point_container<DimensionTag, specfem::element::medium_tag::acoustic, specfem::element::property_tag::isotropic, UseSIMD>¶ - #include <properties.hpp>
Data container to hold properties of 2D acoustic media at a quadrature point.
Accessor functions generated by the
POINT_CONTAINERMACROGet the inverse of density \( \frac{1}{\rho} \)
KOKKOS_INLINE_FUNCTION const value_type rho_inverse() const
Get the bulk modulus \( \kappa \)
KOKKOS_INLINE_FUNCTION const value_type kappa() const
Additional accessor functions
Get the inverse of bulk modulus \( \frac{1}{\kappa} \)
KOKKOS_INLINE_FUNCTION const value_type kappa_inverse() const
Get the inverse of the product of density and P-wave velocity \( \frac{1}{\rho v_p} \)
KOKKOS_INLINE_FUNCTION const value_type rho_vpinverse() const
- Template Parameters:
DimensionTag – Dimension tag (should be
dim2ordim3)UseSIMD – Boolean indicating whether to use SIMD intrinsics
Private Types
-
using base_type = PropertyAccessor<DimensionTag, specfem::element::medium_tag::acoustic, specfem::element::property_tag::isotropic, UseSIMD>¶
Base type of the point properties
Elastic Isotropic¶
-
template<specfem::element::dimension_tag DimensionTag, specfem::element::medium_tag MediumTag, bool UseSIMD>
struct point_container<DimensionTag, MediumTag, specfem::element::property_tag::isotropic, UseSIMD, std::enable_if_t<specfem::element::is_elastic<MediumTag>::value>>¶ - #include <properties.hpp>
Data container to hold properties of elastic media at a quadrature point.
Accessor functions generated by the
POINT_CONTAINERMACROGet Kappa \( \kappa \)
KOKKOS_INLINE_FUNCTION const value_type kappa() const
Get shear modulus \( \mu \)
KOKKOS_INLINE_FUNCTION const value_type mu() const
Get density \( \rho \)
KOKKOS_INLINE_FUNCTION const value_type rho() const
Additional accessor functions
Get Lame’s parameter \( \lambda + 2\mu \)
KOKKOS_INLINE_FUNCTION const value_type lambdaplus2mu() const
Compute the product of density and P-wave velocity squared, i.e., \( \rho v_p^2 = \rho (\lambda + 2\mu) \)
KOKKOS_INLINE_FUNCTION const value_type rho_vp() const
Compute the product of density and S-wave velocity squared, i.e., \( \rho v_s^2 = \rho \mu \)
KOKKOS_INLINE_FUNCTION const value_type rho_vs() const
Get Lame’s first parameter \( \lambda \) from \( \lambda + 2\mu \) and \( \mu \)
KOKKOS_INLINE_FUNCTION const value_type lambda() const
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD intrinsics
Private Types
-
using base_type = PropertyAccessor<DimensionTag, MediumTag, specfem::element::property_tag::isotropic, UseSIMD>¶
Base type of the point properties
Elastic Anisotropic¶
-
template<specfem::element::medium_tag MediumTag, bool UseSIMD>
struct point_container<specfem::element::dimension_tag::dim2, MediumTag, specfem::element::property_tag::anisotropic, UseSIMD, std::enable_if_t<specfem::element::is_elastic<MediumTag>::value>>¶ - #include <properties.hpp>
Data container to hold properties of 2D anisotropic elastic media at a quadrature point.
Accessor functions generated by the
POINT_CONTAINERMACROGet stiffness tensor component \( c_{11} \)
KOKKOS_INLINE_FUNCTION const value_type c11() const
Get stiffness tensor component \( c_{13} \)
KOKKOS_INLINE_FUNCTION const value_type c13() const
Get stiffness tensor component \( c_{15} \)
KOKKOS_INLINE_FUNCTION const value_type c15() const
Get stiffness tensor component \( c_{33} \)
KOKKOS_INLINE_FUNCTION const value_type c33() const
Get stiffness tensor component \( c_{35} \)
KOKKOS_INLINE_FUNCTION const value_type c35() const
Get stiffness tensor component \( c_{55} \)
KOKKOS_INLINE_FUNCTION const value_type c55() const
Get stiffness tensor component \( c_{12} \)
KOKKOS_INLINE_FUNCTION const value_type c12() const
Get stiffness tensor component \( c_{23} \)
KOKKOS_INLINE_FUNCTION const value_type c23() const
Get stiffness tensor component \( c_{25} \)
KOKKOS_INLINE_FUNCTION const value_type c25() const
Get the density \( \rho \)
KOKKOS_INLINE_FUNCTION const value_type rho() const
Additional accessor functions
Compute the product of density and P-wave velocity squared, i.e., \( \rho v_p^2 = \rho c_{33} \)
KOKKOS_INLINE_FUNCTION const value_type rho_vp() const
Compute the product of density and S-wave velocity squared, i.e., \( \rho v_s^2 = \rho c_{55} \)
KOKKOS_INLINE_FUNCTION const value_type rho_vs() const
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD intrinsics
Private Types
-
using base_type = PropertyAccessor<specfem::element::dimension_tag::dim2, MediumTag, specfem::element::property_tag::anisotropic, UseSIMD>¶
Base type of the point properties
Elastic Isotropic Cosserat¶
-
template<specfem::element::dimension_tag DimensionTag, specfem::element::medium_tag MediumTag, bool UseSIMD>
struct point_container<DimensionTag, MediumTag, specfem::element::property_tag::isotropic_cosserat, UseSIMD, std::enable_if_t<specfem::element::is_elastic<MediumTag>::value>>¶ - #include <properties.hpp>
Template specialization for 2D elastic isotropic cosserat media.
Parameters:
rho: Density \( \rho \)
kappa: Bulk modulus \( \kappa \)
mu: Shear modulus \( \mu \)
nu: Coupling parameter \( \nu \)
j: Inertia density \( j \)
lambda_c: Cosserat Lame’s first parameter \( \lambda_c \)
mu_c: Cosserat shear modulus \( \mu_c \)
nu_c: Cosserat Coupling parameter \( \nu_c \)
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD
Private Types
-
using base_type = PropertyAccessor<DimensionTag, MediumTag, specfem::element::property_tag::isotropic_cosserat, UseSIMD>¶
Base type of the point properties
Electromagnetic Isotropic¶
-
template<specfem::element::medium_tag MediumTag, bool UseSIMD>
struct point_container<specfem::element::dimension_tag::dim2, MediumTag, specfem::element::property_tag::isotropic, UseSIMD, std::enable_if_t<specfem::element::is_electromagnetic<MediumTag>::value>>¶ - #include <properties.hpp>
Data container to hold properties of 2D electromagnetic media at a quadrature point.
Accessor functions generated by the
POINT_CONTAINERMACROGet the inverse of permeability \( \frac{1}{\mu_0} \)
KOKKOS_INLINE_FUNCTION const value_type mu0_inv() const
Get permittivity tensor component \( \epsilon_{11} \)
KOKKOS_INLINE_FUNCTION const value_type eps11() const
Get permittivity tensor component \( \epsilon_{33} \)
KOKKOS_INLINE_FUNCTION const value_type eps33() const
Get conductivity tensor component \( \sigma_{11} \)
KOKKOS_INLINE_FUNCTION const value_type sig11() const
Get conductivity tensor component \( \sigma_{33} \)
KOKKOS_INLINE_FUNCTION const value_type sig33() const
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD intrinsics
Poroelastic Isotropic¶
-
template<bool UseSIMD>
struct point_container<specfem::element::dimension_tag::dim2, specfem::element::medium_tag::poroelastic, specfem::element::property_tag::isotropic, UseSIMD>¶ - #include <properties.hpp>
Data container to hold properties of 2D poroelastic media at a quadrature point.
Accessor functions generated by the
POINT_CONTAINERMACROGet porosity \( \phi \)
KOKKOS_INLINE_FUNCTION const value_type phi() const
Get solid density \( \rho_s \)
KOKKOS_INLINE_FUNCTION const value_type rho_s() const
Get fluid density \( \rho_f \)
KOKKOS_INLINE_FUNCTION const value_type rho_f() const
Get tortuosity \( \tau \)
KOKKOS_INLINE_FUNCTION const value_type tortuosity() const
Get shear modulus \( \mu_G \)
KOKKOS_INLINE_FUNCTION const value_type mu_G() const
Get Biot’s modulus \( H_Biot \)
KOKKOS_INLINE_FUNCTION const value_type H_Biot() const
Get Biot’s modulus \( C_Biot \)
KOKKOS_INLINE_FUNCTION const value_type C_Biot() const
Get Biot’s modulus \( M_Biot \)
KOKKOS_INLINE_FUNCTION const value_type M_Biot() const
Get permeability tensor component \( k_{xx} \)
KOKKOS_INLINE_FUNCTION const value_type permxx() const
Get permeability tensor component \( k_{xz} \)
KOKKOS_INLINE_FUNCTION const value_type permxz() const
Get permeability tensor component \( k_{zz} \)
KOKKOS_INLINE_FUNCTION const value_type permzz() const
Get fluid viscosity \( \eta_f \)
KOKKOS_INLINE_FUNCTION const value_type eta_f() const
Additional accessor functions
Get Lame’s parameter \( \lambda_G \)
KOKKOS_INLINE_FUNCTION const value_type lambda_G() const
Get Lame’s parameter \( \lambda + 2\mu_G \)
KOKKOS_INLINE_FUNCTION const value_type lambdaplus2mu_G() const
Get the inverse of permeability tensor component \( k_{xx} \)
KOKKOS_INLINE_FUNCTION const value_type inverse_permxx() const
Get the inverse of permeability tensor component \( k_{xz} \)
KOKKOS_INLINE_FUNCTION const value_type inverse_permxz() const
Get the inverse of permeability tensor component \( k_{zz} \)
KOKKOS_INLINE_FUNCTION const value_type inverse_permzz() const
Get the average density \( \rho_{bar} \)
KOKKOS_INLINE_FUNCTION const value_type rho_bar() const
Get the P-wave velocity \( v_{pI} \)
KOKKOS_INLINE_FUNCTION const value_type vpI() const
Get the P-wave velocity \( v_{pII} \)
KOKKOS_INLINE_FUNCTION const value_type vpII() const
Get the S-wave velocity \( v_s \)
KOKKOS_INLINE_FUNCTION const value_type vs() const
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD intrinsics
Private Types
-
using base_type = PropertyAccessor<specfem::element::dimension_tag::dim2, specfem::element::medium_tag::poroelastic, specfem::element::property_tag::isotropic, UseSIMD>¶
Base type of the point properties