1 #ifndef VTESTBED_CORE_STOKES_WAVE_HH     2 #define VTESTBED_CORE_STOKES_WAVE_HH     6 #include <vtestbed/base/constants.hh>     7 #include <vtestbed/core/wave.hh>    13         template <
class T, 
int N>
    15         stokes_wave_angular_frequency(
    16             const blitz::TinyVector<T,N>& k,
    17             Amplitude<T> amplitude
    21             const T k_length{
length(k)};
    22             const T steepness = amplitude * k_length;
    23             return Frequency<T>{
sqrt(g*k_length*(T{1} +steepness*steepness))};
    32         template <
class T, 
int N>
    36             using typename Wave_base<T,N>::vec;
    50                 stokes_wave_angular_frequency(k, 
amplitude)
    74                     + T(0.5) * steepness * cos(T(2)*theta)
    75                     + (T(3)/T(8)) * steepness * steepness * cos(T(3)*theta)
    90 #endif // vim:filetype=cpp T angular_frequency() const noexcept
Get wave angular frequency.
 
static constexpr const T g()
Gravitational acceleration.
 
const vec & wave_number() const noexcept
Get wave numbers for each dimension.
 
Propagating third-order Stokes wave.
 
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.
 
T operator()(const vec &x, T t) const noexcept
Returns wavy surface elevation at point x.
 
Base class for water waves.