Dispersion
Uses a linear dispersion relationship to compute wave-frequency from wave-number
You're viewing an older version of this page (#5379). View the current version.
Interface
#include <codecogs/engineering/fluid_mechanics/waves/dispersion.h>
using namespace Engineering::Fluid_Mechanics::Waves;
Overview
This function solves the linear dispersion equation, $w^2 = g k tanh(k d)$, to obtain wave-frequency from a given wave-number, using a very simple rearrangement
where w is wave-frequency, k is wave-number and g is gravity. In deep water (represented with d<=0), this solution reduces to
The opposite of this function is w_to_k
Parameters
Returns
FUNCTION
k_to_w2
This function solves a 2nd order dispersion relationship to more accurately compute the relationship between wave-frequency and wave-number for the specified wave amplitude a. The solution is based on work by Dalrymple, who derived:
In deep water(represented with d<=0), this solution reduces to
As in the linear dispersion relationship.
Parameters
Returns
Interactive Calculator
Computing…
Set a range above first to export a graph.
FUNCTION
w_to_k
Finds the wave-number associated with a particular wave-frequency, using this 1st order dispersion equation, $w^2 = g k tanh(k d)$ to obtain wave-number from a given wave-frequency.
In deep water, this equation reduces to $w^2 = g k$, which can obviously be solved directly.
For shallow water, an iterative approach must be used. For each iteration, we calculate the residual error:
where w is wave-frequency, k is wave-number and g is gravity.
We then seek to minimise ε using the first derivative $\partial \epsilon / \partial k$.
The convergence of this error function is fairly rapid, with the poorest convergence, 8 iterations in water 2m deep (for 6dp precision) occurring when w is small i.e. w<=0.1. When w=1.5 only 4 iterations are needed, while w>3.5 needs only 2 iterations. Shallow water naturally requires more iterations. If you're doing many calculations in either shallow water or very long wave periods (>30s), then you might want to consider fine tuning this function.
This relationship can be used to move from the wave-period ($2\pi / w$) to the wave-length ($2\pi/k$) of a water wave. This is also shown graphically in the following figure: \graph w=0:4 depth=1:5:3 The opposite of this function is k_to_w
Example 1 [metric]
Compute Wave Frequency from Wave Number in water of depth 2m.
#include <stdio.h>
#include <codecogs/engineering/fluid_mechanics/waves/dispersion.h>
using namespace Engineering::Fluid_Mechanics::Waves;
int main()
{
printf(" k w recalculated k");
for(double k=0.01; k<1;k+=0.1)
{
printf("\n %.6lf", k);
double w=k_to_w(k,2);
double k2=k_to_k(w,2);
printf(" %.3lf %.6lf", w, k2);
}
return 0;
}k w recalculated k
0.010000 0.044 0.010000
0.110000 0.483 0.110000
0.210000 0.904 0.210000
0.310000 1.294 0.310000
0.410000 1.648 0.410000
0.510000 1.962 0.510000
0.610000 2.241 0.610000
0.710000 2.489 0.710000
0.810000 2.710 0.810000
0.910000 2.910 0.910000Parameters
Returns
Interactive Calculator
Computing…
Set a range above first to export a graph.