57 REAL(SP) :: CONST1,COEF1,COEF2,COEF3,COEF4,COEF5,LMAX
58 REAL(SP),
DIMENSION(0:MT,KB) :: GH,SM,SH,PROD,DTEF,KN,BOYGR,A,C,VHP,VH,STF
59 REAL(SP),
DIMENSION(0:MT) :: L0
61 REAL(SP) :: WUSURF_NODE,WVSURF_NODE,WUBOT_NODE,WVBOT_NODE
62 REAL(SP) :: UU_NODE_K,VV_NODE_K,UU_NODE_KM1,VV_NODE_KM1
65 REAL(SP),
PARAMETER :: A1 = 0.92_sp
66 REAL(SP),
PARAMETER :: B1 = 16.6_sp
67 REAL(SP),
PARAMETER :: A2 = 0.74_sp
68 REAL(SP),
PARAMETER :: B2 = 10.1_sp
69 REAL(SP),
PARAMETER :: C1 = 0.08_sp
72 REAL(SP),
PARAMETER :: E1 = 1.80_sp
73 REAL(SP),
PARAMETER :: E2 = 1.33_sp
74 REAL(SP),
PARAMETER :: SEF = 1.00_sp
77 REAL(SP),
PARAMETER :: KAPPA = 0.40_sp
80 REAL(SP),
PARAMETER :: GEE = 9.806_sp
83 REAL(SP),
PARAMETER :: SMALL = 1.e-8_sp
86 REAL(SP),
PARAMETER :: CB = 1.e-8_sp
89 REAL(SP),
PARAMETER :: DEN_S = 1.e-10_sp
92 REAL(SP),
PARAMETER :: GH_MAX = .0233_sp
95 REAL(SP),
PARAMETER :: GH_MIN = -.281_sp
100 REAL(SP),
PARAMETER :: CBCNST = 100.0_sp
101 REAL(SP),
PARAMETER :: SURFL = 2.e+5_sp
102 REAL(SP),
PARAMETER :: SHIW = 0.0_sp
103 REAL(SP),
PARAMETER :: GHC = -6.0_sp
105 REAL(SP) :: KQ_TMP,KM_TMP,KH_TMP
131 IF (
q2f(i,k) <= small .OR.
q2lf(i,k) <= small)
THEN 147 a(i,k) = -0.5_sp*
dti * (
kq(i,k+1)+
kq(i,k)+2.0_sp*
umol)/ &
149 c(i,k) = -0.5_sp*
dti*(
kq(i,k-1)+
kq(i,k)+2.0_sp*
umol)/ &
150 (
dzz(i,k-1)*
dz(i,k-1)*
d(i)*
d(i))
160 const1 = 16.6_sp ** .6666667_sp * sef
171 wusurf_node = wusurf_node/float(
ntve(i))
172 wvsurf_node = wvsurf_node/float(
ntve(i))
174 utau2 = sqrt(wusurf_node**2+wvsurf_node**2)
175 vhp(i,1) = (15.8_sp*cbcnst)**0.6666667_sp*utau2
178 l0(i) = surfl*utau2/
grav_n(i)
186 wubot_node = wubot_node +
wubot(
nbve(i,j))
187 wvbot_node = wvbot_node +
wvbot(
nbve(i,j))
189 wubot_node = wubot_node/float(
ntve(i))
190 wvbot_node = wvbot_node/float(
ntve(i))
192 q2f(i,
kb) = sqrt(wubot_node**2+wvbot_node**2) * const1
208 prod(i,k) =
km(i,k) * 0.0_sp * (.5_sp*(-boygr(i,k)+
abs(boygr(i,k)))) ** 1.5_sp
226 uu_node_k = uu_node_k +
u(
nbve(i,j),k)
227 vv_node_k = vv_node_k +
v(
nbve(i,j),k)
228 uu_node_km1 = uu_node_km1 +
u(
nbve(i,j),k-1)
229 vv_node_km1 = vv_node_km1 +
v(
nbve(i,j),k-1)
231 uu_node_k = uu_node_k/float(
ntve(i))
232 vv_node_k = vv_node_k/float(
ntve(i))
233 uu_node_km1 = uu_node_km1/float(
ntve(i))
234 vv_node_km1 = vv_node_km1/float(
ntve(i))
236 prod(i,k) = prod(i,k) +
km(i,k) * sef * &
237 ((uu_node_k-uu_node_km1)**2+(vv_node_k-vv_node_km1)**2)/ &
239 prod(i,k) = prod(i,k) +
kh(i,k) * boygr(i,k)
263 IF(
z(i,k) > -0.5_sp)
l(i,k) = max(
l(i,k),kappa*l0(i))
264 IF(boygr(i,k) < 0.0_sp)
THEN 265 lmax = sqrt(
abs(gh_min) *
q2(i,k) / (-boygr(i,k) + small) )
266 l(i,k) = min(
l(i,k),lmax)
302 IF(gh(i,k) < 0.0_sp) stf(i,k)=1.0-0.9*(gh(i,k)/ghc)**1.5
303 IF(gh(i,k) < ghc) stf(i,k) = 0.1
309 dtef = sqrt(
q2)/(b1*
l + small)*stf
313 vhp(i,k) = 1. / (a(i,k)+c(i,k)*(1.-vh(i,k-1))-(2.*
dti*dtef(i,k)+1.))
314 vh(i,k) = a(i,k) * vhp(i,k)
315 vhp(i,k) = (-2.*
dti*prod(i,k)+c(i,k)*vhp(i,k-1)-
q2f(i,k))*vhp(i,k)
323 q2f(i,ki) = vh(i,ki) *
q2f(i,ki+1) + vhp(i,ki)
339 dtef(i,k) = dtef(i,k) * (1.+e2*((1./
abs(
z(i,k)-
z(i,1))+1./ &
340 abs(
z(i,k)-
z(i,
kb)))*
l(i,k)/(
d(i)*kappa))**2)
341 vhp(i,k) = 1. / (a(i,k)+c(i,k)*(1.-vh(i,k-1))- &
343 vh(i,k) = a(i,k) * vhp(i,k)
344 vhp(i,k) = (
dti*(-prod(i,k)*
l(i,k)*e1)+c(i,k)* &
345 vhp(i,k-1)-
q2lf(i,k)) * vhp(i,k)
355 q2lf(i,ki) = vh(i,ki) *
q2lf(i,ki+1) + vhp(i,ki)
367 IF (
q2f(i,k) <= small .OR.
q2lf(i,k) <= small)
THEN 394 coef4 = 18.0_sp * a1 * a1 + 9.0_sp * a1 * a2
395 coef5 = 9.0_sp * a1 * a2
399 coef1 = a2 * (1.0_sp-6.0_sp*a1/b1*stf(i,k))
400 coef2 = 3.0_sp * a2 * b2/stf(i,k) + 18.0_sp * a1 * a2
401 coef3 = a1 * (1.0_sp-3.0_sp*c1-6.0_sp*a1/b1*stf(i,k))
403 sh(i,k) = coef1/(1.0_sp-coef2*gh(i,k))
404 sm(i,k) = (coef3+sh(i,k)*coef4*gh(i,k))/(1.-coef5*gh(i,k))
413 kq = 0.5_sp*(kn*kappa*sm+
kq)
414 km = 0.5_sp*(kn*sm+
km)
423 kq_tmp = kq_tmp +
kq(i,k)
424 km_tmp = km_tmp +
km(i,k)
425 kh_tmp = kh_tmp +
kh(i,k)
427 kq_tmp = kq_tmp/(
kbm1-1)
428 km_tmp = km_tmp/(
kbm1-1)
429 kh_tmp = kh_tmp/(
kbm1-1)
real(sp), dimension(:,:), allocatable, target q2
real(sp), dimension(:,:), allocatable, target km
real(sp), dimension(:), allocatable, target d
logical surface_wave_mixing
real(sp), dimension(:,:), allocatable, target q2lf
real(sp), dimension(:), allocatable, target h
real(sp), dimension(:,:), allocatable, target v
logical function dbg_set(vrb)
real(sp), dimension(:,:), allocatable, target rho1
real(sp), dimension(:,:), allocatable, target q2l
real(sp), dimension(:,:), allocatable, target u
real(sp), dimension(:), allocatable, target wubot
real(sp), dimension(:), allocatable, target wvbot
integer, dimension(:), allocatable, target ntve
real(sp), dimension(:), allocatable, target wusurf
real(sp), dimension(:,:), allocatable, target dzz
real(sp), dimension(:,:), allocatable, target q2f
real(sp), dimension(:,:), allocatable, target dz
real(sp), dimension(:,:), allocatable, target l
real(sp), dimension(:,:), allocatable, target kh
integer, dimension(:,:), allocatable, target nbve
real(sp), dimension(:,:), allocatable, target z
real(sp), dimension(:), allocatable, target grav_n
integer, parameter dbg_sbr
real(sp), dimension(:,:), allocatable, target kq
real(sp), dimension(:), allocatable, target wvsurf
integer, dimension(:), allocatable iswetn