specfem::chunk_edge::intersection_factor

template<specfem::dimension::type DimensionTag, specfem::interface::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag, int NumberElements, int NQuadIntersection, typename MemorySpace = Kokkos::DefaultExecutionSpace::scratch_memory_space, typename MemoryTraits = Kokkos::MemoryTraits<Kokkos::Unmanaged>>
struct intersection_factor

Template accessor for intersection scaling factors.

Provides chunk-based access to geometric scaling factors applied at intersection quadrature points in nonconforming interfaces.

Template Parameters:
  • DimensionTag – Spatial dimension

  • InterfaceTag – Interface medium type

  • BoundaryTag – Boundary condition tag

  • NumberElements – Number of edges in chunk

  • NQuadIntersection – Quadrature points on intersection

  • MemorySpace – Kokkos memory space

  • MemoryTraits – Kokkos memory traits

Dimension-Specific Specializations

2D Specialization

template<specfem::interface::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag, int NumberElements, int NQuadIntersection, typename MemorySpace, typename MemoryTraits>
struct intersection_factor<specfem::dimension::type::dim2, InterfaceTag, BoundaryTag, NumberElements, NQuadIntersection, MemorySpace, MemoryTraits> : public specfem::data_access::Accessor<specfem::data_access::AccessorType::chunk_edge, specfem::data_access::DataClassType::intersection_factor, specfem::dimension::type::dim2, false>

2D specialization of intersection factor accessor

Stores geometric scaling factors for intersection quadrature points.

Public Types

using IntersectionFactorViewType = Kokkos::View<type_real[NumberElements][NQuadIntersection], MemorySpace, MemoryTraits>

View type for storing intersection scaling factors.

Public Functions

template<typename U = IntersectionFactorViewType, typename std::enable_if_t<std::is_convertible<IntersectionFactorViewType, U>::value, int> = 0>
inline intersection_factor(const U &intersection_factor)

Construct from compatible view type.

Template Parameters:

U – Compatible view type

Parameters:

intersection_factor – View containing intersection factor data

intersection_factor() = default

Default constructor.

template<typename MemberType, typename U = IntersectionFactorViewType, typename std::enable_if_t<U::memory_traits::is_unmanaged == true, int> = 0>
inline intersection_factor(const MemberType &team)

Construct from team scratch memory.

Template Parameters:

MemberType – Team member type

Parameters:

team – Team member for scratch allocation

template<typename ...Indices>
inline auto &operator()(Indices... indices) const

Access intersection factor element.

Template Parameters:

IndicesIndex types for multi-dimensional access

Parameters:

indices – Element indices (edge, intersection_quad)

Returns:

Reference to factor value

Public Static Functions

static inline constexpr int shmem_size()

Get shared memory size requirement.

Returns:

Size in bytes needed for scratch memory

Public Static Attributes

static constexpr auto dimension_tag = specfem::dimension::type::dim2

Spatial dimension (2D for this specialization)

static constexpr auto interface_tag = InterfaceTag

Interface medium type tag.

static constexpr auto boundary_tag = BoundaryTag

Boundary condition tag.

static constexpr auto connection_tag = specfem::connections::type::nonconforming

Connection type for nonconforming interfaces.

static constexpr int chunk_size = NumberElements

Number of edges in chunk.

static constexpr int n_quad_intersection = NQuadIntersection

Number of quadrature points on intersection.

Private Members

IntersectionFactorViewType data_

Underlying view storing intersection factor data.