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)