Dispersion
Uses a linear dispersion relationship to compute wave-frequency from wave-number
Interface
#include <codecogs/engineering/fluid_mechanics/waves/dispersion.h>
using namespace Engineering::Fluid_Mechanics::Waves;
Overview
This function solves the linear dispersion equation, , 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 dispersion_w
Parameters
Returns
FUNCTION
k_to_w
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, to obtain wave-number from a given wave-frequency.
In Deep water, this equations reduces to , which can obviously 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 .
This convergence of this error function is fairly rapid, with poorest conversion, 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 iteration. If your doing many calculation in either shallow water or very long wave periods (>30s), then you might want to consider fine tuning this function.
This relationship can me use to move from the wave-period () to the wave-length (
) 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 dispersion_k
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.910000Example 1
Parameters
Returns
Interactive Calculator
Computing…
Set a range above first to export a graph.