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.