da_tp_to_qs_lin.inc
References to this file elsewhere.
1 subroutine da_tp_to_qs_lin( xb, xp, xa, qs_prime_over_qs )
2
3 !---------------------------------------------------------------------------
4 ! Purpose: Convert es/p/es_prime to saturation specific humidity increment.
5 !
6 ! Method: qs~ = qs * ( p es'/es - p' ) / ( p - (1-rd_over_rv) es ).
7 ! use Rogers & Yau (1989) formula: es = a exp( bTc / (T_c + c) ).
8
9 !---------------------------------------------------------------------------
10
11 implicit none
12
13 type (xb_type), intent(in) :: xb ! First guess structure.
14 type (xpose_type), intent(in) :: xp ! Dimensions and xpose buffers.
15 type (x_type), intent(inout) :: xa ! increment structure.
16 real, intent(out) :: qs_prime_over_qs(xp%its:xp%ite,xp%jts:xp%jte,xp%kts:xp%kte)
17
18 integer :: is, ie ! 1st dim. end points.
19 integer :: js, je ! 2nd dim. end points.
20 integer :: ks, ke ! 3rd dim. end points.
21 integer :: i, j, k ! Loop counters.
22 real :: temp ! Temporary array.
23 real :: es_prime_over_es ! Sat Vap pressure ratio.
24
25 !---------------------------------------------------------------------------
26 ! [1.0] initialise:
27 !---------------------------------------------------------------------------
28
29 is = xp%its; ie = xp%ite
30 js = xp%jts; je = xp%jte
31 ks = xp%kts; ke = xp%kte
32
33 do k = ks, ke
34 do j = js, je
35 do i = is, ie
36 temp = xb % t(i,j,k) + es_gammakelvin
37 !-----------------------------------------------------------------
38 ! [2.0] Calculate saturation vapour pressure increment:
39 !-----------------------------------------------------------------
40
41 es_prime_over_es = es_gammabeta * xa % t(i,j,k) / ( temp * temp )
42
43 !-----------------------------------------------------------------
44 ! [3.0] Calculate saturation specific humidity increment:
45 !-----------------------------------------------------------------
46
47 qs_prime_over_qs(i,j,k) = ( xb % p(i,j,k) * es_prime_over_es - &
48 xa % p(i,j,k) ) / &
49 ( xb % p(i,j,k) - rd_over_rv1 * &
50 xb % es(i,j,k) )
51 end do
52 end do
53 end do
54
55 end subroutine da_tp_to_qs_lin
56
57