specfem::assembly::fields_impl::field_impl¶
-
template<specfem::element::dimension_tag DimensionTag, specfem::element::medium_tag MediumTag>
class field_impl : public specfem::assembly::fields_impl::base_field<DimensionTag, MediumTag, specfem::data_access::DataClassType::displacement>, public specfem::assembly::fields_impl::base_field<DimensionTag, MediumTag, specfem::data_access::DataClassType::velocity>, public specfem::assembly::fields_impl::base_field<DimensionTag, MediumTag, specfem::data_access::DataClassType::acceleration>, public specfem::assembly::fields_impl::base_field<DimensionTag, MediumTag, specfem::data_access::DataClassType::mass_matrix>¶ Complete field implementation for spectral element wave simulations.
This class provides a unified interface to all field components required for spectral element wave propagation simulations.
Field components by medium type:
Elastic media: displacement (u), velocity ( \(\dot{u}\)), acceleration ( \(\ddot{u}\))
Acoustic media: potential ( \(\phi\)), velocity potential ( \(\dot{\phi}\)), acceleration potential ( \(\ddot{\phi}\))
Poroelastic media: solid and fluid displacements, velocities, accelerations
- Template Parameters:
DimensionTag – Spatial dimension (2D or 3D)
MediumTag – Physical medium type (elastic, acoustic, poroelastic)
Public Functions
-
field_impl() = default¶
< Access velocity field values
Default constructor.
Creates an uninitialized field implementation with no allocated storage. Fields must be properly initialized before use.
-
field_impl(const int nglob)¶
Construct field implementation with specified number of global points.
Allocates storage for all field components (displacement, velocity, acceleration, mass matrix) with the specified number of global points. This constructor is useful when the global point count is known a priori.
- Parameters:
nglob – Number of global points in the spectral element mesh
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::DefaultExecutionSpace> get_field() const¶
Get device view of displacement field \(\mathbf{u}\).
Returns a device-accessible Kokkos view of the displacement field for use in GPU kernels. The view has dimensions [nglob × components] where components correspond to spatial directions (ux, uy, uz for 3D elastic media).
- Returns:
Device view of displacement field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::DefaultExecutionSpace> get_field_dot() const¶
Get device view of velocity field \(\dot{\mathbf{u}}\).
Returns a device-accessible Kokkos view of the velocity field (first time derivative of displacement) for use in GPU kernels and time integration schemes.
- Returns:
Device view of velocity field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::DefaultExecutionSpace> get_field_dot_dot() const¶
Get device view of acceleration field \(\ddot{\mathbf{u}}\).
Returns a device-accessible Kokkos view of the acceleration field (second time derivative of displacement) for use in GPU kernels and time integration schemes.
- Returns:
Device view of acceleration field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::DefaultExecutionSpace> get_mass_inverse() const¶
Get device view of inverse mass matrix \(\mathbf{M}^{-1}\).
Returns a device-accessible Kokkos view of the inverse mass matrix for efficient solution of the spectral element wave equation. In spectral element methods, the mass matrix is typically diagonal, making inversion trivial.
- Returns:
Device view of inverse mass matrix data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::HostSpace> get_host_field() const¶
Get host view of displacement field for CPU operations.
Returns a host-accessible Kokkos view of the displacement field for CPU-based operations, post-processing, I/O, and debugging. Data must be synchronized from device before accessing if computations were performed on GPU.
- Returns:
Host view of displacement field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::HostSpace> get_host_field_dot() const¶
Get host view of velocity field for CPU operations.
Returns a host-accessible Kokkos view of the velocity field for CPU-based post-processing, analysis, and I/O operations.
- Returns:
Host view of velocity field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::HostSpace> get_host_field_dot_dot() const¶
Get host view of acceleration field for CPU operations.
Returns a host-accessible Kokkos view of the acceleration field for CPU-based post-processing, analysis, and debugging operations.
- Returns:
Host view of acceleration field data
-
inline Kokkos::View<type_real**, Kokkos::LayoutLeft, Kokkos::HostSpace> get_host_mass_inverse() const¶
Get host view of inverse mass matrix for CPU operations.
Returns a host-accessible Kokkos view of the inverse mass matrix for CPU-based analysis, debugging, and verification operations.
- Returns:
Host view of inverse mass matrix data
Public Members
-
int nglob¶
Number of global points in this field implementation.
Public Static Attributes
-
static constexpr auto dimension_tag = DimensionTag¶
Compile-time dimension tag for this field implementation.
-
static constexpr auto medium_tag = MediumTag¶
Compile-time medium tag for this field implementation.
-
static constexpr int components = specfem::element::attributes<DimensionTag, MediumTag>::components¶
Number of field components for this medium and dimension combination.
-
static constexpr auto data_class¶
Data class type identifier for this field component.
-
static constexpr auto data_class
Data class type identifier for this field component.
-
static constexpr auto data_class
Data class type identifier for this field component.
-
static constexpr auto data_class
Data class type identifier for this field component.