5 speed, t,
q, zgeop, psol, &
7 cdram, cdrah, cdran, zri1, pref)
40 INTEGER,
intent(in) :: klon, knon,
nsrf
41 LOGICAL,
intent(in) :: zxli
42 REAL,
dimension(klon),
intent(in) :: speed, t,
q, zgeop, psol
43 REAL,
dimension(klon),
intent(in) :: ts,
qsurf,
rugos, ri1
44 LOGICAL,
intent(in) :: okri
46 REAL,
dimension(klon),
intent(out) :: cdram, cdrah, cdran, zri1, pref
53 REAL,
parameter :: rkar=0.40, cb=5.0, cc=5.0, cd=5.0, cepdu2=(0.1)**2
57 REAL,
dimension(klon) :: zdu2, zdphi, ztsolv, ztvd
58 REAL,
dimension(klon) :: zscf, friv, frih, zucf, zcr
59 REAL,
dimension(klon) :: zcfm1, zcfh1
60 REAL,
dimension(klon) :: zcfm2, zcfh2
61 REAL,
dimension(klon) :: trm0, trm1
64 fsta(
x) = 1.0 / (1.0+10.0*
x*(1+8.0*
x))
65 fins(
x) = sqrt(1.0-18.0*
x)
71 zdu2(
i) = max(cepdu2,speed(
i)**2)
72 pref(
i) = exp(log(psol(
i)) - zdphi(
i)/(rd*t(
i)* &
73 (1.+ retv * max(
q(
i),0.0))))
75 ztvd(
i) = t(
i) * (psol(
i)/pref(
i))**rkappa
76 trm0(
i) = 1. + retv * max(
qsurf(
i),0.0)
77 trm1(
i) = 1. + retv * max(
q(
i),0.0)
78 ztsolv(
i) = ztsolv(
i) * trm0(
i)
79 ztvd(
i) = ztvd(
i) * trm1(
i)
80 zri1(
i) = zdphi(
i)*(ztvd(
i)-ztsolv(
i))/(zdu2(
i)*ztvd(
i))
87 IF (ri1(
i).GE.0.0.AND.zri1(
i).LT.0.0)
THEN
89 ELSE IF(ri1(
i).LT.0.0.AND.zri1(
i).GE.0.0)
THEN
96 cdran(
i) = (rkar/log(1.+zdphi(
i)/(rg*
rugos(
i))))**2
98 IF (zri1(
i) .ge. 0.)
THEN
103 zri1(
i) = min(20.,zri1(
i))
106 zscf(
i) = sqrt(1.+cd*abs(zri1(
i)))
107 friv(
i) = max(1. / (1.+2.*cb*zri1(
i)/ zscf(
i)), 0.1)
108 zcfm1(
i) = cdran(
i) * friv(
i)
109 frih(
i) = max(1./ (1.+3.*cb*zri1(
i)*zscf(
i)), 0.1 )
110 zcfh1(
i) = cdran(
i) * frih(
i)
114 cdram(
i) = cdran(
i)* fsta(zri1(
i))
115 cdrah(
i) = cdran(
i)* fsta(zri1(
i))
123 zucf(
i) = 1./(1.+3.0*cb*cc*cdran(
i)*sqrt(abs(zri1(
i)) &
124 *(1.0+zdphi(
i)/(rg*
rugos(
i)))))
125 zcfm2(
i) = cdran(
i)*max((1.-2.0*cb*zri1(
i)*zucf(
i)),0.1)
126 zcfh2(
i) = cdran(
i)*max((1.-3.0*cb*zri1(
i)*zucf(
i)),0.1)
130 cdram(
i) = cdran(
i)* fins(zri1(
i))
131 cdrah(
i) = cdran(
i)* fins(zri1(
i))
136 zcr(
i) = (0.0016/(cdran(
i)*sqrt(zdu2(
i))))*abs(ztvd(
i)-ztsolv(
i)) &
138 IF (
nsrf.EQ.is_oce) cdrah(
i) = cdran(
i)*(1.0+zcr(
i)**1.25) &