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_CONTAINER MACRO

  • Get 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 dim2 or dim3)

  • UseSIMD – Boolean indicating whether to use SIMD intrinsics

Public Types

using value_type = typename base_type::value_type

Type of the properties.

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_CONTAINER MACRO

  • Get 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

Public Types

using value_type = typename base_type::value_type

Type of the properties.

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_CONTAINER MACRO

  • Get 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

Public Types

using value_type = typename base_type::value_type

Type of the properties.

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

Public Types

using value_type = typename base_type::value_type

Type of the properties.

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_CONTAINER MACRO

  • Get 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_CONTAINER MACRO

  • Get 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

Public Types

using value_type = typename base_type::value_type

Type of the properties.

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