da_pt_to_rho_adj.inc
References to this file elsewhere.
1 subroutine da_pt_to_rho_adj(grid)
2
3 !---------------------------------------------------------------------------
4 ! Purpose: Adjoint of da_pt_to_rho.
5 !
6 ! Assumptions: 1) Model level stored top down
7 !---------------------------------------------------------------------------
8
9 implicit none
10
11 type (domain), intent(inout) :: grid
12
13 integer :: i,j,k ! Loop counter.
14
15 integer :: is, ie, js, je
16
17 real :: temp
18
19 if (trace_use) call da_trace_entry("da_pt_to_rho_adj")
20
21 is = its
22 js = jts
23
24 ie = ite
25 je = jte
26
27 if (test_wrfvar) then
28 is = its-1
29 js = jts-1
30
31 ie = ite+1
32 je = jte+1
33
34 if (is < ids) is = ids
35 if (js < jds) js = jds
36
37 if (ie > ide) ie = ide
38 if (je > jde) je = jde
39 end if
40
41 !---------------------------------------------------------------------------
42 ! Calculate rho increments:
43 !---------------------------------------------------------------------------
44
45 do j=js, je
46 do k=kts, kte
47 do i=is, ie
48 temp = grid%xa%rho(i,j,k) * grid%xb%rho(i,j,k)
49
50 grid%xa%p(i,j,k) = grid%xa%p(i,j,k) + temp/grid%xb%p(i,j,k)
51
52 grid%xa%t(i,j,k) = grid%xa%t(i,j,k) - temp/grid%xb%t(i,j,k)
53
54 grid%xa%rho(i,j,k) = 0.0
55 end do
56 end do
57 end do
58
59 if (trace_use) call da_trace_exit("da_pt_to_rho_adj")
60
61 end subroutine da_pt_to_rho_adj
62
63