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.