Stokes
Interface
Overview
The Stokes wave is an analytical model for regular (each wave looks identical), steady (the wave form doesn't change with time) and unidirectional (all travelling in the same direction) waves. In such an environment, the Stoke's solution provides an accurate description of both the surface elevation and all the underlying kinematics. In particular it is the first model to demonstrate that:- the wave velocity increases slightly with increase of wave steepness.
- the wave profile is more peaked at the crests with wide, less shallow, troughs.
- the trajectories of water particles are not closed, leading to a mass transport in the direction of the waves, often called Stoke's drift.
- the waves break when the wave crest angle reached .
Class Stokes
This Stokes class provides a rapid mechanism for computing the surface elevation and internal kinematics within a wave. It is optimised on the assumption that many requests will be made for different spatial and temporal locations, where as the wave properties and water depth will be varied less frequently.Example 1
- To following example outputs the surface elevation and then the velocities beneath the central wave:
#include <codecogs/engineering/fluid_mechanics/waves/analytic/stokes.h> #include <stdio.h> int main() { double Length=200; // Wave length [m] double Amplitude=15; // Wave Height [m] double Depth=30; // Depth [m] double time=0; // Time [seconds] Engineering::Waves::Analytic::Stokes water(2*pi()/Length, amplitude, 0, depth); for(double x=-200;x<=200;x+=10) printf("\n Eta(%lf)=%lf",x, water.getEta(x, time); double eta=water.getEta(0,0); for(double z=eta;z>-30;z--) printf("\n Phi(%lf)=%lf\tu(%lf)=%lf\tv(%lf)=%lf", z, water.getKin(0,z,time), z, water.getKin(0,z,time,ddx), z, water.getKin(0,z,time,ddz); }
Authors
- William Bateman (April 2010)
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Members of Stokes
Stokes
Constructor for this class. Call the init(...) function, below, with the supplied sea conditions and depthStokes( double k double amplitude double phase = 0
double depth = 0
double gravity = 9.8066
int sign = 1
)[constructor] Init
Computes a number of constants for the given sea state, which allow rapid evaluation of water surface at different temporal and spatial locations.voidinit( double k double amplitude double phase = 0
double depth = 0
double gravity = 9.8066
int sign = 1
) k Wave number of dominant wave component [] amplitude Amplitude of the dominant wave component [m] phase Phase adjustment for the wave in radians depth Depth of water, from sea bed to still water level [m] gravity Acceleration due to gravity [] sign The Direction the wave propagate in. 1=left to right. -1=right to left.
Component
Returns the amplitude of underlying frequency componentsdoublecomponent( int i ) i the ith component from 1 to 5
GetEta
Computes the surface elevation at the point for the given Stokes 5th wave profile with wave-number(k) and an amplitude.doublegetEta( double x double time ) x Spatial location at which to compute the elevation [m] time Temporal location at which to compute the elevation [sec]
Returns
- The surface elevation about still water level [m]
GetKin
Computes the kinematics at the point for the given Stokes 5th wave profile with wave-number(k) and an amplitude. The derivate term allows different kinematics to be returns:doublegetKin( double x double z double time Derivative derivative = norm
) - Norm return Phi()
- ddx, computes or the horizontal velocity (u)
- ddz, computer or the vertical Velocity (v)
x Spatial location at which to compute the kinematics[m] z Depth at which to compute the kinematics [m] time Temporal location at which to compute the elevation [sec] derivative The derivative of Phi to compute
Returns
- Velocity Potential [] or Horizontal/Vertical velocity potential []
Stokes Eta
doubleStokes_eta( | double | k | |
double | amplitude | ||
double | x | ||
double | time = 0 | ||
double | depth = 0 | ) |
Error Message:Function Stokes_eta failed. Ensure that: Invalid C++
Parameters
k Wave number [] amplitude Wave amplitude [m] x Spatial location [m] time Temporal location [sec] depth Depth of water [m]
Authors
- William Bateman (April 2010)
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Stokes Kin
doubleStokes_kin( | double | k | |
double | amplitude | ||
double | x | ||
double | z | ||
double | time = 0 | ||
Derivative | derivative = norm | ||
double | depth = 0 | ) |
Error Message:Function Stokes_kin failed. Ensure that: Invalid C++
Parameters
k Wave number [] amplitude Wave amplitude [m] x Spatial location [m] z Vertical location [m] time Temporal location [sec] derivative The derivative of Phi depth Depth of water [m]
Authors
- William Bateman (April 2010)
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Stokes Surface Kin
doubleStokes_surface_kin( | double | k | |
double | amplitude | ||
double | x | ||
double | time = 0 | ||
Derivative | derivative = norm | ||
double | depth = 0 | ) |
Error Message:Function Stokes_surface_kin failed. Ensure that: Invalid C++
Parameters
k Wave number [] amplitude Wave amplitude [m] x Spatial location [m] time Temporal location [sec] derivative The derivative of Phi depth Depth of water [m]
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Stokes MaxVel
doubleStokes_maxVel( | double | k | |
double | amplitude | ) |
Error Message:Function Stokes_maxVel failed. Ensure that: Invalid C++
Parameters
k Wave number [] amplitude Wave amplitude [m]
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Stokes Component
doubleStokes_component( | int | i | |
double | k | ||
double | amplitude | ||
double | depth = 0 | ) |
Parameters
i the component number (1-5) k Wave number [] amplitude Wave amplitude [m]
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.