specfem::chunk_element::stress_integrand

template<int NumberElements, int NGLL, specfem::dimension::type DimensionTag, specfem::element::medium_tag MediumTag, typename MemorySpace, typename MemoryTraits, bool UseSIMD>
struct stress_integrand

Struct to hold the stress integrand at every quadrature point within a chunk of elements.

For elastic domains the stress integrand is given by: \( F_{ik} = \sum_{j=1}^{n} T_{ij} \partial_j \xi_{k} \) where \( T \) is the stress tensor. Equation (35) & (36) from Komatitsch and Tromp 2002 I. - Validation

For acoustic domains the stress integrand is given by: \( F_{ik} = \rho^{-1} \partial_i \xi_{k} \partial_k \chi_{k} \). Equation (44) & (45) from Komatitsch and Tromp 2002 I. - Validation

Template Parameters:
  • NumberElements – Number of elements in the chunk.

  • NGLL – Number of Gauss-Lobatto-Legendre points.

  • DimensionTag – Dimension type for elements within the chunk.

  • MediumTag – Medium tag for elements within the chunk.

  • MemorySpace – Memory space for data storage.

  • MemoryTraits – Memory traits for data storage.

  • UseSIMD – Flag to indicate if SIMD should be used.

Typedefs

using simd = specfem::datatype::simd<type_real, UseSIMD>

SIMD type.

using ViewType = specfem::datatype::TensorChunkElementViewType<type_real, DimensionTag, NumberElements, NGLL, components, num_dimensions, UseSIMD, MemorySpace, MemoryTraits>

Underlying view used to store data.

Compile-time constants

static constexpr int num_elements = NumberElements

Number of elements in the chunk.

static constexpr auto dimension = DimensionTag

Dimension type for elements.

Constructors

stress_integrand() = default

Default constructor.

inline stress_integrand(const ViewType &F)

Constructor that initializes the stress integrand with a given view.

Parameters:

F – Stress integrand view.

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

Constructor that initializes the stress integrand within Scratch Memory.

Template Parameters:

MemberType – Kokos team member type.

Parameters:

team – Kokkos team member.

Public Members

ViewType F

Stress integrand.

Public Static Functions

static inline constexpr int shmem_size()

Get the amount memory in bytes required for shared memory.

Returns:

int Amount of shared memory required

Private Static Attributes

static constexpr int num_dimensions = specfem::element::attributes<DimensionTag, MediumTag>::dimension

dimensions.

Number of

static constexpr int components = specfem::element::attributes<DimensionTag, MediumTag>::components

Number of components.