4 SUBROUTINE screenp(klon, knon, nsrf, &
6 & ts, qsurf, rugos, lmon, &
7 & ustar, testar, qstar, zref, &
41 INTEGER,
intent(in) :: klon, knon, nsrf
42 REAL,
dimension(klon),
intent(in) :: speed, tair, qair
43 REAL,
dimension(klon),
intent(in) :: ts, qsurf, rugos
44 DOUBLE PRECISION,
dimension(klon),
intent(in) :: lmon
45 REAL,
dimension(klon),
intent(in) :: ustar, testar, qstar
46 REAL,
intent(in) :: zref
48 REAL,
dimension(klon),
intent(out) :: delu, delte, delq
52 REAL,
PARAMETER :: RKAR=0.40
58 IF (lmon(i).GE.0.)
THEN
62 IF (speed(i).GT.1.5.AND.lmon(i).LE.1.0 &
63 & .AND. rugos(i).LE.1.0)
THEN
64 delu(i) = (ustar(i)/rkar)* &
65 (log(zref/(rugos(i))+1.) + &
66 min(5.d0, 5.0 *(zref - rugos(i))/lmon(i)))
67 delte(i) = (testar(i)/rkar)* &
68 (log(zref/(rugos(i))+1.) + &
69 min(5.d0, 5.0 * (zref - rugos(i))/lmon(i)))
70 delq(i) = (qstar(i)/rkar)* &
71 (log(zref/(rugos(i))+1.) + &
72 min(5.d0, 5.0 * (zref - rugos(i))/lmon(i)))
74 delu(i) = 0.1 * speed(i)
75 delte(i) = 0.1 * (tair(i) - ts(i) )
76 delq(i) = 0.1 * (max(qair(i),0.0) - max(qsurf(i),0.0))
82 IF (speed(i).GT.5.0.AND.abs(lmon(i)).LE.50.0)
THEN
83 xtmp = (1. - 16. * (zref/lmon(i)))**(1./4.)
84 xtmp0 = (1. - 16. * (rugos(i)/lmon(i)))**(1./4.)
85 delu(i) = (ustar(i)/rkar)* &
86 (log(zref/(rugos(i))+1.) &
87 - 2.*log(0.5*(1. + xtmp)) &
88 + 2.*log(0.5*(1. + xtmp0)) &
89 - log(0.5*(1. + xtmp*xtmp)) &
90 + log(0.5*(1. + xtmp0*xtmp0)) &
91 + 2.*atan(xtmp) - 2.*atan(xtmp0))
92 delte(i) = (testar(i)/rkar)* &
93 (log(zref/(rugos(i))+1.) &
94 - 2.0 * log(0.5*(1. + xtmp*xtmp)) &
95 + 2.0 * log(0.5*(1. + xtmp0*xtmp0)))
96 delq(i) = (qstar(i)/rkar)* &
97 (log(zref/(rugos(i))+1.) &
98 - 2.0 * log(0.5*(1. + xtmp*xtmp)) &
99 + 2.0 * log(0.5*(1. + xtmp0*xtmp0)))
101 delu(i) = 0.5 * speed(i)
102 delte(i) = 0.5 * (tair(i) - ts(i) )
103 delq(i) = 0.5 * (max(qair(i),0.0) - max(qsurf(i),0.0))
subroutine screenp(klon, knon, nsrf, speed, tair, qair, ts, qsurf, rugos, lmon, ustar, testar, qstar, zref, delu, delte, delq)