Inconsistent use of Awave in BULK_FLUX and BBL routines

Bug reports, work arounds and fixes

Moderators: arango, robertson

Post Reply
Message
Author
rsignell
Posts: 124
Joined: Fri Apr 25, 2003 9:22 pm
Location: USGS

Inconsistent use of Awave in BULK_FLUX and BBL routines

#1 Unread post by rsignell »

I think there is a problem with ROMS 2.2 in the way that the variable Awave is handled.

Awave is used as wave amplitude in the BBL routines such as SG_BBL.H to calculate the wave orbital velocity amplitude (if SWAN is not used):

Code: Select all

# ifdef SWAN
          Ub(i,j)=ABS(Ub_swan(i,j))+eps
          Ab(i,j)=Ub(i,j)/Fwave+eps
# else
          Ab(i,j)=Awave(i,j)/SINH(Kb*h(i,j))+eps
          Ub(i,j)=Fwave*Ab(i,j)+eps
# endif
but in BULK_FLUX.F, Awave is used as sigificant wave height in the COARE3.0 formulae.

Code: Select all

# ifdef BBL_MODEL
!
!  Use wave info if we have it, two different options.
!
#  ifdef WIND_WAVES
            ZoW(i)=(25._r8/pi)*Lwave(i)*(Wstar(i)/Cwave(i))**4.5+       &
     &             0.11_r8*VisAir(i)/(Wstar(i)+eps)
#  else
            ZoW(i)=1200._r8*Awave(i,j)*(Awave(i,j)/Lwave(i))**4.5+      &
     &             0.11_r8*VisAir(i)/(Wstar(i)+eps)
#  endif
# else
            ZoW(i)=charn(i)*Wstar(i)*Wstar(i)/g+                        &
     &             0.11_r8*VisAir(i)/(Wstar(i)+eps)
# endif
Since wave height is twice the amplitude, we have an inconsistency.
I checked the COARE3.0 paper at http://tinyurl.com/7n9a5 to confirm that these formulae are meant to be used with significant wave height.

The name Awave certainly suggests wave amplitude, and in fact, it is listed in VARINFO.DAT as "wind-induced wave amplitude".

But because wave amplitude is only really useful in idealized analytical test cases, while signficant wave height is a commonly used quantity, how about changing Awave to Hwave everywhere in the code, changing varinfo.dat for Hwave to be signficant wave height, and then simply dividing wave height by 2 in the lines where wave orbital velocity amplitude is calculated:

Code: Select all

# ifdef SWAN
          Ub(i,j)=ABS(Ub_swan(i,j))+eps
          Ab(i,j)=Ub(i,j)/Fwave+eps
# else
          Ab(i,j)=0.5_r8*Hwave(i,j)/SINH(Kb*h(i,j))+eps
          Ub(i,j)=Fwave*Ab(i,j)+eps
# endif

What do people think?

-Rich

Post Reply