I have forgotten

• http://facebook.com/
• https://www.google.com/accounts/o8/id
• https://me.yahoo.com COST (GBP) 3.00 0.00 0

# Dispersion

viewed 2321 times and licensed 44 times
Uses a linear dispersion relationship to compute wave-frequency from wave-number
Controller: CodeCogs   C++

## K To W

 doublek_to_w( double k double depth = 0 double gravity = 9.8066 )
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

 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/s2]

### Returns

##### 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.

## K To W

 doublek_to_w( double a double k double depth = 0 double gravity = 9.8066 )
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.

Example:
##### Example - Second order Wave Number to Wave Frequency
Problem
Compute the second order Wave Number from Wave Frequency in water of depth 2m.
Workings
#include <stdio.h>
#include <codecogs/engineering/fluid_mechanics/waves/dispersion.h>
using namespace Engineering::Fluid_Mechanics::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=k_to_w(amp,k,2);
printf("  %.3lf", 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/s2]

### Returns

##### 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.

## W To K

 doublew_to_k( double w double depth = 0 double gravity = 9.8066 )
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:
There is an error with your graph parameters for w_to_k with options w=0:4 depth=1:5:3

Error Message:Function w_to_k failed. Ensure that: Invalid C++

The opposite of this function is dispersion_k

Example:
[metric]
##### Example - First order conversion of Wave Frequency to Wave Number
Problem
Compute Wave Frequency from Wave Number in water of depth 2m.
Workings
#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;
}
Solution
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 ().
##### 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.