Returns directional frequency spectrum based on the laboratory and field measurements by Donelan, Hamilton, and Hui (1985). Includes the high frequency form for beta_s found by Banner (1990). This function invokes the DHH omnidirectional spectrum and the directional spreading functions to compute directional frequency spectrum:
$$ F(f,\theta) = F'(f) * D(f,\theta) $$
References:
Donelan, M. A., J. Hamilton, and W. H. Hui, 1985. Directional spectra of wind-generated waves. Phil. Trans. Royal Soc. London A., 315, 509-562.
Banner, M. L., 1990. Equilibrium spectra of wind waves. J. Phys. Oceanogr., 20, 966-984.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in), | dimension(:) | :: | f | Frequency [Hz] |
|
real(kind=rk), | intent(in), | dimension(:) | :: | theta | Wave direction [rad] |
|
real(kind=rk), | intent(in) | :: | wspd | Wind speed at 10 m height [m/s] |
||
real(kind=rk), | intent(in) | :: | fpeak | Peak frequency [Hz] |
||
real(kind=rk), | intent(in) | :: | theta_mean | Mean wave direction [rad] |
||
real(kind=rk), | intent(in) | :: | grav | Gravitational acceleration [m/s^2] |
pure function donelanHamiltonHuiDirectionalSpectrum(f,theta,wspd,fpeak,&
theta_mean,grav) result(spec)
!! Returns directional frequency spectrum based on the laboratory and field
!! measurements by Donelan, Hamilton, and Hui (1985). Includes the high
!! frequency form for beta_s found by Banner (1990). This function invokes the
!! DHH omnidirectional spectrum and the directional spreading functions to
!! compute directional frequency spectrum:
!!
!! $$
!! F(f,\theta) = F'(f) * D(f,\theta)
!! $$
!!
!! References:
!!
!! Donelan, M. A., J. Hamilton, and W. H. Hui, 1985. Directional
!! spectra of wind-generated waves. Phil. Trans. Royal Soc. London A.,
!! 315, 509-562.
!!
!! Banner, M. L., 1990. Equilibrium spectra of wind waves. J. Phys. Oceanogr.,
!! 20, 966-984.
real(kind=rk),dimension(:),intent(in) :: f !! Frequency [Hz]
real(kind=rk),dimension(:),intent(in) :: theta !! Wave direction [rad]
real(kind=rk),intent(in) :: wspd !! Wind speed at 10 m height [m/s]
real(kind=rk),intent(in) :: fpeak !! Peak frequency [Hz]
real(kind=rk),intent(in) :: theta_mean !! Mean wave direction [rad]
real(kind=rk),intent(in) :: grav !! Gravitational acceleration [m/s^2]
real(kind=rk),dimension(:,:),allocatable :: spec
integer(kind=ik) :: ndir
allocate(spec(size(f),size(theta)))
do concurrent(ndir = 1:size(theta))
spec(:,ndir) = donelanHamiltonHui(f,fpeak,wspd,grav)&
* donelanHamiltonHuiDirectionalSpreading(f,wspd,fpeak,theta(ndir),&
theta_mean)
enddo
endfunction donelanHamiltonHuiDirectionalSpectrum