da_transform_xtowtq_adj.inc
References to this file elsewhere.
1 subroutine da_transform_xtowtq_adj (xp, xb, jo_grad_x)
2
3 !--------------------------------------------------------------------------
4 ! Purpose: TBD
5 !--------------------------------------------------------------------------
6
7 implicit none
8
9 type (xpose_type), intent(in) :: xp ! domain decomposition vars.
10 type (xb_type), intent(in) :: xb ! first guess state.
11 type (x_type), intent(inout) :: jo_grad_x ! grad_x(jo)
12
13 integer :: i, j, kz, is, js, ie, je
14 real :: height
15
16 if (trace_use) call da_trace_entry("da_transform_xtowtq_adj")
17
18 kz = xp%kts
19
20 is = xb%its
21 js = xb%jts
22
23 ie = xb%ite
24 je = xb%jte
25
26 if (Testing_WRFVAR) then
27 is = xb%its-1
28 js = xb%jts-1
29
30 ie = xb%ite+1
31 je = xb%jte+1
32
33 if (is < xb%ids) is = xb%ids
34 if (js < xb%jds) js = xb%jds
35
36 if (ie > xb%ide) ie = xb%ide
37 if (je > xb%jde) je = xb%jde
38 end if
39
40 ! Adjoint from Gridded 10-m wind and 2-m moisture and temperature
41 ! to the model adjoint variables
42
43 do j=js, je
44 do i=is, ie
45 jo_grad_x%tgrn(i,j)=0.0
46
47 height = xb%h(i,j,kz) - xb%terr(i,j)
48 if( height <= 0.) then
49 print*,i,j,' ht = ',xb%h(i,j,kz) ,' terr = ',xb%terr(i,j)
50 stop
51 endif
52 call da_sfc_wtq_adj(xb%psfc(i,j), xb%tgrn(i,j), &
53 xb%p(i,j,kz), xb%t(i,j,kz), xb%q(i,j,kz), &
54 xb%u(i,j,kz), xb%v(i,j,kz), &
55 xb%regime(i,j), &
56 jo_grad_x%psfc(i,j), jo_grad_x%tgrn(i,j), &
57 jo_grad_x%p(i,j,kz), jo_grad_x%t(i,j,kz), jo_grad_x%q(i,j,kz), &
58 jo_grad_x%u(i,j,kz), jo_grad_x%v(i,j,kz), &
59 height , xb%rough(i,j), xb%xland(i,j), &
60 jo_grad_x%u10(i,j),jo_grad_x%v10(i,j), &
61 jo_grad_x%t2 (i,j),jo_grad_x%q2 (i,j))
62
63 jo_grad_x%tgrn(i,j)=0.0
64 end do
65 end do
66
67 if (trace_use) call da_trace_exit("da_transform_xtowtq_adj")
68
69 end subroutine da_transform_xtowtq_adj
70
71