specfem::data_access::AccessorType¶
-
enum class specfem::data_access::AccessorType¶
Data access patterns for spectral element simulations.
Values:
-
enumerator point¶
Single quadrature point access.
-
enumerator element¶
Full element access.
-
enumerator chunk_element¶
Chunked element access for vectorization.
-
enumerator chunk_edge¶
Chunked edge access for interfaces.
-
enumerator point¶
specfem::data_access::Accessor¶
-
template<specfem::data_access::AccessorType AccessorType, specfem::data_access::DataClassType DataClass, specfem::dimension::type DimensionTag, bool UseSIMD>
struct Accessor¶ Type-safe data accessor for simulation components.
Provides specialized access patterns for different data types and computational contexts. Enables efficient data loading/storing with proper indexing and vectorization support.
- Template Parameters:
AccessorType – Access pattern (point/element/chunk)
DataClass – Type of data (properties/fields/indices)
DimensionTag – Spatial dimension (2D/3D)
UseSIMD – Enable SIMD vectorization
Specializations¶
-
template<specfem::data_access::DataClassType DataClass, specfem::dimension::type DimensionTag, bool UseSIMD>
struct Accessor<specfem::data_access::AccessorType::point, DataClass, DimensionTag, UseSIMD>¶ Point-wise accessor for single quadrature point operations.
Provides SIMD-optimized data access for individual quadrature point computations. Uses specialized view types for efficient point-wise data operations with configurable vectorization.
- Template Parameters:
DataClass – Type of point data (properties, fields, etc.)
DimensionTag – Spatial dimension (2D/3D)
UseSIMD – Enable SIMD vectorization
Subclassed by specfem::point::impl::field< DimensionTag, MediumTag, specfem::data_access::DataClassType::velocity, UseSIMD >, specfem::point::impl::field< DimensionTag, MediumTag, specfem::data_access::DataClassType::mass_matrix, UseSIMD >, specfem::point::impl::field< DimensionTag, MediumTag, specfem::data_access::DataClassType::displacement, UseSIMD >, specfem::point::impl::field< DimensionTag, MediumTag, specfem::data_access::DataClassType::acceleration, UseSIMD >, specfem::point::impl::field< DimensionTag, MediumTag, DataClass, UseSIMD >
Public Types
-
template<typename T>
using simd = specfem::datatype::simd<T, UseSIMD>¶ Datatype used to store data with optional SIMD vectorization.
- Template Parameters:
T – Base data type
-
template<typename T>
using scalar_type = typename simd<T>::datatype¶ Scalar field storage for single point.
- Template Parameters:
T – Base data type
-
template<typename T, int dimension>
using vector_type = typename specfem::datatype::VectorPointViewType<T, dimension, UseSIMD>¶ Vector field storage for single point.
- Template Parameters:
T – Base data type
dimension – Vector dimension (2D/3D)
-
template<typename T, int components, int dimension>
using tensor_type = typename specfem::datatype::TensorPointViewType<T, components, dimension, UseSIMD>¶ Tensor field storage for single point.
- Template Parameters:
T – Base data type
components – Number of tensor components
dimension – Spatial dimension
Public Static Attributes
-
static constexpr auto accessor_type = specfem::data_access::AccessorType::point¶
Accessor pattern identifier.
-
static constexpr auto dimension_tag = DimensionTag¶
Spatial dimension.
-
template<specfem::data_access::DataClassType DataClass, specfem::dimension::type DimensionTag, bool UseSIMD>
struct Accessor<specfem::data_access::AccessorType::chunk_edge, DataClass, DimensionTag, UseSIMD>¶ Chunk-based edge accessor for vectorized interface operations.
Provides SIMD-optimized data access for edge/interface computations. Uses scratch memory for efficient chunked processing of edge data with configurable vectorization.
- Template Parameters:
DataClass – Type of edge data (intersection factors, normals, etc.)
DimensionTag – Spatial dimension (2D/3D)
UseSIMD – Enable SIMD vectorization
Subclassed by specfem::chunk_edge::impl::field< ChunkSize, NGLL, DimensionTag, MediumTag, specfem::data_access::DataClassType::acceleration, UseSIMD >, specfem::chunk_edge::impl::field< ChunkSize, NGLL, DimensionTag, MediumTag, specfem::data_access::DataClassType::displacement, UseSIMD >, specfem::chunk_edge::impl::field< ChunkSize, NGLL, DimensionTag, MediumTag, specfem::data_access::DataClassType::velocity, UseSIMD >, specfem::chunk_edge::impl::field< ChunkSize, NGLL, DimensionTag, MediumTag, DataClass, UseSIMD >
Public Types
-
template<typename T>
using simd = specfem::datatype::simd<T, UseSIMD>¶ Datatype used to store data with optional SIMD vectorization.
- Template Parameters:
T – Base data type
-
template<typename T, int nelements, int ngll>
using scalar_type = Kokkos::View<typename simd<T>::datatype[nelements][ngll], Kokkos::DefaultExecutionSpace::scratch_memory_space, Kokkos::MemoryTraits<Kokkos::Unmanaged>>¶ Scalar field storage for chunked edge elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element
-
template<typename T, int nelements, int ngll, int components>
using vector_type = Kokkos::View<typename simd<T>::datatype[nelements][ngll][components], Kokkos::DefaultExecutionSpace::scratch_memory_space, Kokkos::MemoryTraits<Kokkos::Unmanaged>>¶ Vector field storage for chunked edge elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element
components – Number of vector components
-
template<typename T, int nelements, int ngll, int components, int dimension>
using tensor_type = Kokkos::View<typename simd<T>::datatype[nelements][ngll][components][dimension], Kokkos::DefaultExecutionSpace::scratch_memory_space, Kokkos::MemoryTraits<Kokkos::Unmanaged>>¶ Tensor field storage for chunked edge elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element
components – Number of tensor components
dimension – Spatial dimension
Public Static Attributes
-
static constexpr auto accessor_type = specfem::data_access::AccessorType::chunk_edge¶
Accessor pattern identifier.
-
static constexpr auto dimension_tag = DimensionTag¶
Spatial dimension.
-
template<specfem::data_access::DataClassType DataClass, specfem::dimension::type DimensionTag, bool UseSIMD>
struct Accessor<specfem::data_access::AccessorType::chunk_element, DataClass, DimensionTag, UseSIMD>¶ Chunk-based element accessor for vectorized domain operations.
Provides SIMD-optimized data access for element-wise computations. Uses specialized view types for efficient chunked processing of element data with configurable vectorization.
- Template Parameters:
DataClass – Type of element data (properties, fields, etc.)
DimensionTag – Spatial dimension (2D/3D)
UseSIMD – Enable SIMD vectorization
Subclassed by specfem::chunk_element::impl::field< ChunkSize, NGLL, DimensionTag, MediumTag, DataClass, UseSIMD >
Public Types
-
template<typename T>
using simd = specfem::datatype::simd<T, UseSIMD>¶ Datatype used to store data with optional SIMD vectorization.
- Template Parameters:
T – Base data type
-
template<typename T, int nelements, int ngll>
using scalar_type = specfem::datatype::ScalarChunkElementViewType<T, DimensionTag, nelements, ngll, UseSIMD>¶ Scalar field storage for chunked elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element dimension
-
template<typename T, int nelements, int ngll, int components>
using vector_type = specfem::datatype::VectorChunkElementViewType<T, DimensionTag, nelements, ngll, components, UseSIMD>¶ Vector field storage for chunked elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element dimension
components – Number of vector components
-
template<typename T, int nelements, int ngll, int components, int dimension>
using tensor_type = specfem::datatype::TensorChunkElementViewType<T, DimensionTag, nelements, ngll, components, dimension, UseSIMD>¶ Tensor field storage for chunked elements.
- Template Parameters:
T – Base data type
nelements – Number of elements in the chunk
ngll – Number of GLL points per element dimension
components – Number of tensor components
dimension – Spatial dimension
Public Static Attributes
-
static constexpr auto accessor_type = specfem::data_access::AccessorType::chunk_element¶
Accessor pattern identifier.
-
static constexpr auto dimension_tag = DimensionTag¶
Spatial dimension.