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