specfem::chunk_edge::impl::transfer_function

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

Template accessor for transfer function data at nonconforming interfaces.

Maps edge functions to intersection functions in mortar methods. Supports both self and coupled interface transfer operations.

Template Parameters:
  • DimensionTag – Spatial dimension (dim2, dim3)

  • NumberElements – Number of edges in chunk

  • NQuadIntersection – Quadrature points on intersection

  • NQuadElement – Quadrature points on element edge

  • DataClass – Self or coupled transfer data type

  • InterfaceTag – Interface medium type

  • BoundaryTag – Boundary condition tag

  • MemorySpace – Kokkos memory space

  • MemoryTraits – Kokkos memory traits

Dimension-Specific Implementations

2D Implementation

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

2D specialization of transfer function accessor

Provides chunk-based access to transfer function matrices for mapping edge functions to intersection functions in nonconforming interfaces. Used in mortar methods for coupling elements with different mesh sizes.

Public Types

using TransferViewType = specfem::datatype::VectorChunkEdgeViewType<type_real, specfem::dimension::type::dim2, NumberElements, NQuadElement, NQuadIntersection, false, MemorySpace, MemoryTraits>

Underlying view storing transfer function matrix data.

Public Functions

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

Construct from compatible view type.

Template Parameters:

U – Compatible view type

transfer_function() = default

Default constructor.

template<typename MemberType, typename U = TransferViewType, typename std::enable_if_t<U::memory_traits::is_unmanaged == true, int> = 0>
inline transfer_function(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 transfer function matrix element.

Template Parameters:

IndicesIndex types for multi-dimensional access

Parameters:

indices – Element indices (edge, intersection_quad, edge_quad)

Returns:

Reference to matrix element

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 int chunk_size = NumberElements

Number of edges in chunk.

static constexpr int n_quad_element = NQuadElement

Number of quadrature points on element edge.

static constexpr int n_quad_intersection = NQuadIntersection

Number of quadrature points on intersection.

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.

Private Members

TransferViewType data_

Underlying view storing transfer function matrix data.