1 #ifndef VTESTBED_CORE_SHALLOW_WATER_WAVE_HH 2 #define VTESTBED_CORE_SHALLOW_WATER_WAVE_HH 4 #include <vtestbed/base/constants.hh> 5 #include <vtestbed/core/wave.hh> 11 template <
class T,
int N>
13 shallow_water_wave_angular_frequency(
const blitz::TinyVector<T,N>& k, T depth) {
16 using base::constants;
17 constexpr
auto g = constants<T>::g();
18 const auto k_len =
length(k);
19 return Frequency<T>{
sqrt(g*k_len*
tanh(k_len*depth))};
22 template <
class T,
int N>
24 shallow_water_wave_angular_frequency(
29 return shallow_water_wave_angular_frequency<T,N>(
30 wave_number<T,N>(length, angle), depth
34 template <
class T,
int N>
38 using typename Wave_base<T,N>::vec;
69 #endif // vim:filetype=cpp const vec & wave_number() const noexcept
Get wave numbers for each dimension.
vec length() const noexcept
Get wave length.
T direction() const noexcept
Get wave direction in radians.
T length(const blitz::TinyVector< T, N > &x)
Computes vector length without overflow.
T amplitude() const noexcept
Get wave amplitude.
Base class for water waves.