specfem::chunk_edge::NonconformingAccessorPack

template<typename ...Accessors>
struct NonconformingAccessorPack : public specfem::data_access::Accessor<specfem::datatype::AccessorType::chunk_edge, specfem::data_access::DataClassType::nonconforming_interface, specfem::element::dimension_tag::dim2, false>, public specfem::chunk_edge::Accessors

Variadic template for packing multiple nonconforming interface accessors.

Combines multiple accessor types (transfer functions, intersection factors, normals) into a single accessor for coordinated access to nonconforming interface data.

Template Parameters:

Accessors – Variadic list of accessor types to pack together

Public Types

using packed_accessors = std::tuple<Accessors...>

Tuple type containing all packed accessors.

Public Functions

NonconformingAccessorPack() = default

Default constructor.

inline NonconformingAccessorPack(const Accessors&... accessors)

Construct from accessor instances.

Parameters:

accessors – Individual accessor instances to pack

template<typename ...Indices>
type_real operator()(Indices... indices) const = delete

Deleted function call operator (use accessor-specific access)

template<typename MemberType>
inline NonconformingAccessorPack(const MemberType &team)

Construct from team scratch memory.

Template Parameters:

MemberType – Team member type

Parameters:

team – Team member for scratch allocation

Public Static Functions

static inline constexpr int shmem_size()

Get total shared memory size requirement.

Returns:

Sum of memory requirements for all packed accessors

Public Static Attributes

static constexpr auto dimension_tag = std::tuple_element_t<0, std::tuple<Accessors...>>::dimension_tag

Spatial dimension inherited from first accessor.

static constexpr auto interface_tag = std::tuple_element_t<0, std::tuple<Accessors...>>::interface_tag

Interface medium type inherited from first accessor.

static constexpr auto boundary_tag = std::tuple_element_t<0, std::tuple<Accessors...>>::boundary_tag

Boundary condition tag inherited from first accessor.

static constexpr auto flux_scheme_tag = std::tuple_element_t<0, std::tuple<Accessors...>>::flux_scheme_tag

Flux scheme tag inherited from first accessor.

static constexpr size_t n_accessors = sizeof...(Accessors)

Number of packed accessor types.

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

Connection type for nonconforming interfaces.

static constexpr auto data_class = specfem::data_access::DataClassType::nonconforming_interface

Data class type for nonconforming interface data.

specfem::chunk_edge::coupling_terms_pack

template<specfem::element::dimension_tag DimensionTag, specfem::element_coupling::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag, specfem::element_coupling::flux_scheme_tag FluxSchemeTag, int NumberElements, int NQuadIntersection, int NQuadElement>
using specfem::chunk_edge::coupling_terms_pack = NonconformingAccessorPack<transfer_function_coupled<DimensionTag, InterfaceTag, BoundaryTag, FluxSchemeTag, NumberElements, NQuadIntersection, NQuadElement>, intersection_normal<DimensionTag, InterfaceTag, BoundaryTag, FluxSchemeTag, NumberElements, NQuadIntersection>>

Type alias for coupling terms accessor pack.

Combines transfer function and intersection normal accessors for computing coupling terms in nonconforming interface methods.

specfem::chunk_edge::integral_data_pack

template<specfem::element::dimension_tag DimensionTag, specfem::element_coupling::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag, specfem::element_coupling::flux_scheme_tag FluxSchemeTag, int NumberElements, int NQuadIntersection>
using specfem::chunk_edge::integral_data_pack = NonconformingAccessorPack<intersection_factor<DimensionTag, InterfaceTag, BoundaryTag, FluxSchemeTag, NumberElements, NQuadIntersection>>

Type alias for integral data accessor pack.

Provides access to intersection scaling factors for numerical integration at nonconforming interfaces.