Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_ssmi / da_transform_xtoy_ssmi_tb_adj.inc
blob113798c17bdd25a32ca418ab848d01940bc39119
1 subroutine da_transform_xtoy_ssmi_tb_adj(grid, iv, jo_grad_y, jo_grad_x)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    type (domain),  intent(in)    :: grid
10    type (iv_type), intent(in)    :: iv          ! obs. inc vector (o-b).
11    type (y_type) , intent(in)    :: jo_grad_y   ! grad_y(jo)
12    type (x_type) , intent(inout) :: jo_grad_x   ! grad_x(jo)
14    integer                       :: n                ! loop counter.
16    real, allocatable :: tb19v(:)
17    real, allocatable :: tb19h(:)
18    real, allocatable :: tb22v(:)
19    real, allocatable :: tb37v(:)
20    real, allocatable :: tb37h(:)
21    real, allocatable :: tb85v(:)
22    real, allocatable :: tb85h(:)
24    if (trace_use) call da_trace_entry("da_transform_xtoy_ssmi_tb_adj")
26    allocate(tb19v(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
27    allocate(tb19h(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
28    allocate(tb22v(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
29    allocate(tb37v(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
30    allocate(tb37h(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
31    allocate(tb85v(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
32    allocate(tb85v(iv%info(ssmi_tb)%n1:iv%info(ssmi_tb)%n2))
34    do n=iv%info(ssmi_tb)%n1,iv%info(ssmi_tb)%n2
35       tb19v(n) = jo_grad_y%ssmi_tb(n)%tb19v
36       tb19h(n) = jo_grad_y%ssmi_tb(n)%tb19h
37       tb22v(n) = jo_grad_y%ssmi_tb(n)%tb22v
38       tb37v(n) = jo_grad_y%ssmi_tb(n)%tb37v
39       tb37h(n) = jo_grad_y%ssmi_tb(n)%tb37h
40       tb85v(n) = jo_grad_y%ssmi_tb(n)%tb85v
41       tb85h(n) = jo_grad_y%ssmi_tb(n)%tb85h
42    end do
44    call da_interp_lin_2d_adj(jo_grad_x%tb19v, iv%info(ssmi_tb), 1, tb19v)
45    call da_interp_lin_2d_adj(jo_grad_x%tb19h, iv%info(ssmi_tb), 1, tb19h)
46    call da_interp_lin_2d_adj(jo_grad_x%tb22v, iv%info(ssmi_tb), 1, tb22v)
47    call da_interp_lin_2d_adj(jo_grad_x%tb37v, iv%info(ssmi_tb), 1, tb37v)
48    call da_interp_lin_2d_adj(jo_grad_x%tb37h, iv%info(ssmi_tb), 1, tb37h)
49    call da_interp_lin_2d_adj(jo_grad_x%tb85v, iv%info(ssmi_tb), 1, tb85v)
50    call da_interp_lin_2d_adj(jo_grad_x%tb85h, iv%info(ssmi_tb), 1, tb85h)
51   
52    deallocate(tb19v)
53    deallocate(tb19h)
54    deallocate(tb22v)
55    deallocate(tb37v)
56    deallocate(tb37h)
57    deallocate(tb85v)
58    deallocate(tb85v)
60    if (trace_use) call da_trace_exit("da_transform_xtoy_ssmi_tb_adj")
62 end subroutine da_transform_xtoy_ssmi_tb_adj