93 SUBROUTINE w3swl4 (A, CG, WN, DAIR, S, D)
169 REAL,
INTENT(IN) :: a(
nspec), cg(
nk), wn(
nk), dair
175 INTEGER,
SAVE :: ient = 0
177 INTEGER :: ikn(
nk), ith
178 REAL,
PARAMETER :: va = 1.4e-5
179 REAL :: eb(
nk), wn2(
nspec), emean
180 REAL :: fe, aorb, re, recrit, uosig, cdsv
185 CALL strace (ient,
'W3SWL4')
193 wn2(ikn+(ith-1)) = wn
196 eb = sum(reshape(a,(/
nth,
nk /)),1) *
dden(1:
nk) / cg
199 aorb = 2.0*sqrt(emean)
202 uosig = 2.0*sqrt(sum(eb))
210 re = 4.0 * uosig * aorb / va
212 IF (re .GT. recrit)
THEN
215 d = -2.0 * (dair/
dwat) * cdsv * wn2 * sqrt(2.0 * va *
sig2)
251 SUBROUTINE w3swl6 (A, CG, WN, S, D)
335 REAL,
INTENT(IN) :: a(nspec), cg(nk), wn(nk)
336 REAL,
INTENT(OUT) :: s(nspec), d(nspec)
341 INTEGER,
SAVE :: ient = 0
343 INTEGER :: ik, ith, ikn(nk)
344 REAL,
DIMENSION(NK) :: aband, kmax, anar, bn, aorb, ddis
345 REAL :: k(nth,nk), b1
350 CALL strace (ient,
'W3SWL6')
354 ikn = irange(1,nspec,nth)
356 aband = sum(reshape(a,(/ nth,nk /)),1)
364 k = reshape(a,(/ nth,nk /))
367 IF (kmax(ik).LT.1.0e-34)
THEN
370 k(1:nth,ik) = k(1:nth,ik)/kmax(ik)
373 anar = 1.0/( sum(k,1) * dth )
374 bn = anar * ( aband * sig(1:nk) * dth ) * wn**3
385 b1 =
swl6b1 * ( 2. * sqrt(sum(aband*dden/cg)) * wn(ik) )
391 IF (aband(ik) .GT. 1.e-30)
THEN
392 ddis(ik) = -(2./3.) * b1 * sig(ik) * sqrt(bn(ik))
398 d(ikn+(ith-1)) = ddis
430 FUNCTION irange(X0,X1,DX)
RESULT(IX)
449 INTEGER,
INTENT(IN) :: x0, x1, dx
450 INTEGER,
ALLOCATABLE :: ix(:)
454 n = int(real(x1-x0)/real(dx))+1