specfem::wavefield::simulation_field

enum class specfem::wavefield::simulation_field

Simulation field types for wave propagation algorithms.

Used in time-stepping schemes and inversion methods.

Values:

enumerator forward

Forward time propagation.

enumerator adjoint

Adjoint field (backward from receivers)

enumerator backward

Backward field (for gradient computation)

enumerator buffer

Temporary buffer field.

specfem::wavefield::type

enum class specfem::wavefield::type

Wavefield component types for different physical quantities.

Supports elastic (displacement/velocity/acceleration) and acoustic (pressure) fields.

Values:

enumerator displacement

Displacement field (elastic media)

enumerator velocity

Velocity field (time derivative of displacement)

enumerator acceleration

Acceleration field (second time derivative)

enumerator pressure

Pressure field (acoustic media)

enumerator rotation

Rotation field (Cosserat media)

enumerator intrinsic_rotation

Intrinsic rotation (micropolar)

enumerator curl

Curl of displacement field.

specfem::wavefield::wavefield

template<specfem::dimension::type DimensionTag, specfem::wavefield::type Component>
class wavefield

Compile-time wavefield component traits.

Provides dimension-specific component counts and type information.

using disp_2d = wavefield<dim2, type::displacement>;
static_assert(disp_2d::num_components() == 2); // u_x, u_z

Template Parameters:
  • DimensionTag – Spatial dimension (2D or 3D)

  • Component – Wavefield component type

specfem::wavefield::to_string

const std::string specfem::wavefield::to_string(const specfem::wavefield::type &wavefield_component)

Convert wavefield component to string.

Parameters:

wavefield_component – Wavefield component type

Returns:

String representation (“displacement”, “velocity”, etc.)

Wavefield Specializations

template<>
class wavefield<specfem::dimension::type::dim2, specfem::wavefield::type::displacement>

2D displacement wavefield (u_x, u_z).

Public Static Functions

static inline constexpr auto dimension()

2D dimension

static inline constexpr auto component()

Displacement component type.

static inline constexpr int num_components()

u_x, u_z components

template<>
class wavefield<specfem::dimension::type::dim2, specfem::wavefield::type::velocity>

2D velocity wavefield (v_x, v_z).

Public Static Functions

static inline constexpr auto dimension()

2D dimension

static inline constexpr auto component()

Velocity component type.

static inline constexpr int num_components()

v_x, v_z components

template<>
class wavefield<specfem::dimension::type::dim2, specfem::wavefield::type::acceleration>

2D acceleration wavefield (a_x, a_z).

Public Static Functions

static inline constexpr auto dimension()

2D dimension

static inline constexpr auto component()

Acceleration component type.

static inline constexpr int num_components()

a_x, a_z components

template<>
class wavefield<specfem::dimension::type::dim2, specfem::wavefield::type::pressure>

2D pressure wavefield (scalar acoustic field).

Public Static Functions

static inline constexpr auto dimension()

2D dimension

static inline constexpr auto component()

Pressure component type.

static inline constexpr int num_components()

Scalar pressure component.