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:
Indices – Index 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.
-
using TransferViewType = specfem::datatype::VectorChunkEdgeViewType<type_real, specfem::dimension::type::dim2, NumberElements, NQuadElement, NQuadIntersection, false, MemorySpace, MemoryTraits>¶