Stacey Boundary Condition

template<specfem::dimension::type DimensionTag, bool UseSIMD>
struct boundary<specfem::element::boundary_tag::stacey, DimensionTag, UseSIMD> : public specfem::point::boundary<specfem::element::boundary_tag::acoustic_free_surface, DimensionTag, UseSIMD>

Template specialization for Stacey boundary condition.

Template Parameters:
  • DimensionTag – Dimension of the spectral element where the quadrature point is located

  • UseSIMD – Boolean indicating whether to use SIMD instructions

Subclassed by specfem::point::boundary< specfem::element::boundary_tag::composite_stacey_dirichlet, DimensionTag, UseSIMD >

Private Typedefs

using NormalViewType = specfem::datatype::VectorPointViewType<type_real, num_dimensions, UseSIMD>

View type to store the normal vector to the edge at the quadrature point.

using datatype = typename specfem::datatype::simd<type_real, UseSIMD>::datatype

SIMD data type.

Typedefs

using simd = specfem::datatype::simd<type_real, UseSIMD>

SIMD data type.

Compile-time constants

static constexpr auto boundary_tag = specfem::element::boundary_tag::stacey

Tag indicating Stacey boundary condition.

Constructors

boundary() = default

Default constructor.

boundary(const specfem::point::boundary<specfem::element::boundary_tag::composite_stacey_dirichlet, DimensionTag, UseSIMD> &boundary)

Implicit conversion constructor from composite Stacey Dirichlet boundary.

Parameters:

boundary – Composite Stacey Dirichlet boundary

Public Members

datatype edge_weight = static_cast<type_real>(0.0)

Integration weight associated with the edge at the quadrature point.

NormalViewType edge_normal = {static_cast<type_real>(0.0), static_cast<type_real>(0.0)}

Normal vector to the edge at the quadrature point.

value_type tag

Tag indicating the type of boundary condition at the quadrature point.

Private Types

using value_type = typename specfem::datatype::simd_like<specfem::element::boundary_tag_container, type_real, UseSIMD>::datatype

Datatype for storing values.

Is a scalar if UseSIMD is false, otherwise is a SIMD like vector.

Private Static Attributes

static constexpr int num_dimensions = specfem::dimension::dimension<DimensionTag>::dim

Number of spatial dimensions.