da_evapo_lin.inc

References to this file elsewhere.
1 subroutine da_evapo_lin(DT,SCR3,SCR5,QV_B,PRE,SCR6,  &
2                         SCR39,SCR59,QV_A,PRE9,SCR69, &
3                         kts,kte,kms,kme)
4 
5    !-----------------------------------------------------------------------
6    ! Purpose: Rainwater evaporation
7    !-----------------------------------------------------------------------
8 
9    implicit none
10 
11    integer, intent(in)                   :: kts, kte, kms, kme
12    real, dimension(kms:kme), intent(in)  :: DT, SCR3, SCR5, SCR6, QV_B
13    real, dimension(kms:kme), intent(out) :: PRE, PRE9
14    real, dimension(kms:kme), intent(in)  :: SCR39, SCR59, SCR69, QV_A
15 
16    integer           :: k
17    real              :: beta, QRTH
18    real              :: TMP, TMP2
19 
20    QRTH = 1.e-6
21    beta = 0.0486   ! original
22 
23    do K = kts, kte
24 
25       if (DT(k) <= 0.) cycle
26 
27       if ( SCR3(k) > QRTH .and. QV_B(k) < SCR5(k) ) then
28          TMP  = beta * ( QV_B(k)-SCR5(k) )* 0.65 * ( SCR6(k)*SCR3(k) )**(-0.35)
29          TMP2 = beta * ( SCR6(k)*SCR3(k) )**0.65
30          PRE9(k) = TMP * ( SCR69(k)*SCR3(k)+SCR6(k)*SCR39(k) ) + &
31                    TMP2 * ( QV_A(k)-SCR59(k) )
32          PRE(k)  = beta * ( QV_B(k)-SCR5(k) ) * ( SCR6(k)*SCR3(k) )**0.65
33       else if ( SCR3(k) <= QRTH .and. SCR3(k) > 0. .and. QV_B(k) < SCR5(k) ) then
34          TMP  = beta * ( QV_B(k)-SCR5(k) ) * 0.65 * ( SCR6(k)*QRTH )**(-0.35)
35          TMP2 = beta * ( SCR6(k)*QRTH )**0.65
36          PRE9(k) = TMP * ( SCR69(k)*QRTH ) + &
37                    TMP2 * ( QV_A(k)-SCR59(k) )
38          PRE(k)  = beta * ( QV_B(k)-SCR5(k) ) * ( SCR6(k)*QRTH )**0.65
39       else
40          PRE9(k) = 0.
41          PRE(k) = 0.
42       end if
43 
44       if ( PRE(k) < -SCR3(k)/DT(k) ) then
45          PRE9(k) = -SCR39(k) / DT(k)
46          PRE(k)  = -SCR3(k) / DT(k)
47       end if
48 
49    end do
50 
51 end subroutine da_evapo_lin
52