viewed 2024 times and licensed 19 times
Uses a linear dispersion relationship to compute wave-frequency from wave-number
View version details
Contents  |
|
Interface
#include <codecogs/engineering/waves/dispersion.h>
using namespace Engineering::Waves;
| double | dispersion_k (double k, double depth=0, double gravity=9.8066) Uses a linear dispersion relationship to compute wave-frequency from wave-number |
| double | dispersion_k2 (double a, double k, double depth=0, double gravity=9.8066) Uses a 2nd order dispersion relationship, to obtain wave-frequency from wave-number |
| double | dispersion_w (double w, double depth=0, double gravity=9.8066) Itartively solves for wave-number from wave-frequency. |
Function Documentation
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_wExample 1:
#include <stdio.h>
#include <codecogs/engineering/waves/dispersion.h>
using namespace Engineering::Waves;
int main()
{
printf(" k w ");
for(double k=0.01; k<1;k+=0.1)
{
printf("\n %.6lf", k);
double w=dispersion_k(k,2);
printf(" %.3lf", w);
}
}
Output:
k w
0.010000 0.044
0.110000 0.483
0.210000 0.904
0.310000 1.294
0.410000 1.648
0.510000 1.962
0.610000 2.241
0.710000 2.489
0.810000 2.710
0.910000 2.910
Parameters:
| k | ( ) is wave-number. [rad/m] |
| depth | the depth of the water to mean sea level. A value of zero or less corresponds to deep water. [m] |
| gravity | (default 9.8066). [m/s^2] |
Returns:
- wave-frequency (
). [rad/s]
This function solves a 2nd order dispersion relationship to more accurate 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:
where
In deep water(represented with d<=0), this solution reduces to
As in the linear dispersion relationship.
Example 2:
#include <stdio.h>
#include <codecogs/engineering/waves/dispersion.h>
using namespace Engineering::Waves;
int main()
{
double amp=3; // 3 meters
printf(" k w ");
for(double k=0.01; k<1;k+=0.1)
{
printf("\n %.6lf", k);
double w=dispersion_k2(amp,k,2);
printf(" %.3lf", w);
}
}
Output:
k w
????
Parameters:
| a | amplitude of component with wavenumber k. [m] |
| k | wave-number of component ( ). [rad/m] |
| depth | the depth of the water to mean sea level. A value of zero or less corresponds to deep water. [m] |
| gravity | (default ). [m/s^2] |
Returns:
- wave-frequency (
). [rad/s]
Finds the wave-number associated with a particular wave-frequency, using this 2nd 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 \e w=1.5 only 4 iterations are needed, while
\e 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:
The opposite of this function is
dispersion_kExample 3:
#include <stdio.h>
#include <codecogs/engineering/waves/dispersion.h>
using namespace Engineering::Waves;
int main()
{
printf(" k w recalculated k");
for(double k=0.01; k<1;k+=0.1)
{
printf("\n %.6lf", k);
double w=dispersion_k(k,2);
double k2=dispersion_w(w,2);
printf(" %.3lf %.6lf", w, k2);
}
return 0;
}
Output:
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.910000
Parameters:
| w | ( ) is wave-frequency, usually written using (omega). |
| depth | (m) define the depth of the water to mean sea level. A value of zero or less corresponds to deep water. |
| gravity | (default ). |
Returns:
- wave-number (
).
Page Comments
You must login to leave a messge
Last Modified: 8 Apr 09 @ 23:28 Page Rendered: 2010-03-12 17:49:26