specfem::point::nonconforming_interface

template<typename ...Accessors>
struct NonconformingAccessorPack : public specfem::data_access::Accessor<specfem::data_access::AccessorType::point, specfem::data_access::DataClassType::nonconforming_interface, specfem::dimension::type::dim2, false>, public specfem::point::Accessors

Packs multiple accessors for non-conforming interfaces.

This struct aggregates multiple accessors (e.g., transfer functions) into a single object that satisfies the accessor interface.

Template Parameters:

Accessors – Variadic list of accessor types.

Public Types

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

Tuple type of packed accessors.

Public Functions

NonconformingAccessorPack() = default

Default constructor.

inline NonconformingAccessorPack(const Accessors&... accessors)

Constructor with accessors.

Parameters:

accessors – The accessors to pack.

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

Deleted operator() to prevent direct access.

Public Static Attributes

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

Interface type tag derived from the first accessor.

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

Boundary condition tag derived from the first accessor.

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

Number of packed accessors.

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

Connection type tag (nonconforming).

static constexpr auto dimension_tag = accessor_base::dimension_tag

Dimension tag.

static constexpr auto data_class = accessor_base::data_class

Data class type.

static constexpr auto accessor_type = accessor_base::accessor_type

Accessor type.

static constexpr bool using_simd = accessor_base::using_simd

SIMD usage flag.

Type Aliases

template<int NQuadIntersection, specfem::dimension::type DimensionTag, specfem::interface::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag>
using specfem::point::transfer_function_self = impl::nonconforming_transfer_function<NQuadIntersection, DimensionTag, specfem::data_access::DataClassType::transfer_function_self, InterfaceTag, BoundaryTag>

Type alias for self-side transfer function.

template<int NQuadIntersection, specfem::dimension::type DimensionTag, specfem::interface::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag>
using specfem::point::transfer_function_coupled = impl::nonconforming_transfer_function<NQuadIntersection, DimensionTag, specfem::data_access::DataClassType::transfer_function_coupled, InterfaceTag, BoundaryTag>

Type alias for coupled-side transfer function.

template<int NQuadIntersection, specfem::dimension::type DimensionTag, specfem::interface::interface_tag InterfaceTag, specfem::element::boundary_tag BoundaryTag>
using specfem::point::transfer_function_pack = NonconformingAccessorPack<transfer_function_coupled<NQuadIntersection, DimensionTag, InterfaceTag, BoundaryTag>>

Type alias for a pack containing the coupled transfer function.

Implementation Details