4 SUBROUTINE screenp(klon, knon, nsrf, &
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)* &
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)* &
94 - 2.0 * log(0.5*(1. + xtmp*xtmp)) &
95 + 2.0 * log(0.5*(1. + xtmp0*xtmp0)))
96 delq(
i) = (qstar(
i)/rkar)* &
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))