specfem::units::unit_cast

template<typename To, typename From>
constexpr To specfem::units::unit_cast(From q)

Convert a quantity from one unit to another.

Performs compile-time checked unit conversion. Supports:

  • Identity conversions (no-op)

  • Same-dimension scale changes (m → km)

  • Cross-dimension spectral conversions (s → Hz → \( \omega \))

Unsupported conversions produce a compile-time error.

auto km = unit_cast<Kilometers>(Meters(1500.0));  // 1.5 km
auto freq = unit_cast<Hertz>(Seconds(0.5));       // 2.0 Hz

Template Parameters:
  • To – Target quantity type

  • From – Source quantity type

Parameters:

qQuantity to convert

Returns:

constexpr To Converted quantity