da_transform_xtogpsref_lin.inc

References to this file elsewhere.
1 subroutine da_transform_xtogpsref_lin(xa, xb, xp)
2 
3    !---------------------------------------------------------------------
4    ! Purpose: TBD
5    ! input: xa%q, xa%p, xa%t, xb%q, xb%p, xb%t, and xp
6    ! output: xa%ref                             
7    !---------------------------------------------------------------------
8 
9    implicit none
10 
11    type (x_type),  intent(inout) :: xa       ! gridded analysis increment.
12    type (xb_type), intent(in)    :: xb       ! first guess state.
13    type (xpose_type), intent(in) :: xp       ! domain decomposition vars.
14    
15    integer :: i, j, k, is, ie, js, je, ks, ke
16    real    :: partone, parttwo, dividnd
17    real    :: partone9,parttwo9,dividnd9
18 
19    call da_trace_entry("da_transform_xtogpsref_lin")
20 
21    ! 1.0 To get the domain range
22 
23    is = xp%its; ie = xp%ite
24    js = xp%jts; je = xp%jte
25    ks = xp%kts; ke = xp%kte      
26 
27    ! 2.0 Loop for a tile
28 
29    do k = ks, ke
30       do j = js, je
31          do i = is, ie
32 
33             !-----calculate refractivity
34             !     Note: p in Pascal, q is the specific humidity
35 
36             ! 2.1 Part one: hydrostatic part
37 
38             partone  = 0.776*xa%p(i,j,k)/xb%t(i,j,k) &
39                      - 0.776*xb%p(i,j,k)*xa%t (i,j,k)/(xb%t(i,j,k)*xb%t(i,j,k))
40             partone9 = 0.776*xb%p(i,j,k)/xb%t(i,j,k)
41 
42             ! 2.2 Part two considering the moisture:
43 
44             dividnd  = xa%t (i,j,k)*(0.622+0.378*xb%q(i,j,k)) &
45                      + xb%t(i,j,k)*       0.378*xa%q(i,j,k)
46             dividnd9 = xb%t(i,j,k)*(0.622+0.378*xb%q(i,j,k))
47 
48             parttwo  =     coeff*xa%q(i,j,k)/dividnd9 &
49                      -     coeff*xb%q(i,j,k)*dividnd /(dividnd9*dividnd9)
50             parttwo9 = 1.0+coeff*xb%q(i,j,k)/dividnd9
51 
52             ! 2.3 Total refractivity
53 
54             xa%ref(i,j,k)= partone9 * parttwo &
55                          + partone  * parttwo9
56          end do
57       end do
58    end do
59 
60    call da_trace_exit("da_transform_xtogpsref_lin")
61    
62 end subroutine da_transform_xtogpsref_lin
63 
64