Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_test / da_check_xtoy_adjoint_bogus.inc
blob0cb1e933a1ea4ee16de878c31ba974c954211292
1 subroutine da_check_xtoy_adjoint_bogus(iv, y, adjtest_lhs, pertile_lhs)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    type (iv_type), intent(in)     :: iv            ! obs. inc. vector (o-b).
10    type (y_type) , intent(inout)  :: y             ! y = h (xa)
11    real          , intent(inout)  :: adjtest_lhs, pertile_lhs   
13    integer  :: n, k          ! Loop counter.
14    
15    if (trace_use_dull) call da_trace_entry("da_check_xtoy_adjoint_bogus")
17    do n=iv%info(bogus)%n1, iv%info(bogus)%n2
18       if (iv%info(bogus)%proc_domain(1,n)) then
19          do k=1, iv%info(bogus)%levels(n)
20             adjtest_lhs = adjtest_lhs + &
21                           (y%bogus(n)%u(k)/typical_u_rms)**2 + &
22                           (y%bogus(n)%v(k)/typical_v_rms)**2 + &
23                           (y%bogus(n)%t(k)/typical_t_rms)**2 + &
24                           (y%bogus(n)%q(k)/typical_q_rms)**2 
25          end do
26          adjtest_lhs = adjtest_lhs + (y%bogus(n)%slp/typical_p_rms)**2
27       end if
29       do k=1, iv%info(bogus)%levels(n)
30          pertile_lhs = pertile_lhs + &
31                        (y%bogus(n)%u(k)/typical_u_rms)**2 + &
32                        (y%bogus(n)%v(k)/typical_v_rms)**2 + &
33                        (y%bogus(n)%t(k)/typical_t_rms)**2 + &
34                        (y%bogus(n)%q(k)/typical_q_rms)**2
36          y%bogus(n)%u(k) = y%bogus(n)%u(k) / typical_u_rms ** 2
37          y%bogus(n)%v(k) = y%bogus(n)%v(k) / typical_v_rms ** 2
38          y%bogus(n)%t(k) = y%bogus(n)%t(k) / typical_t_rms ** 2
39          y%bogus(n)%q(k) = y%bogus(n)%q(k) / typical_q_rms ** 2
40       end do
41       pertile_lhs = pertile_lhs + (y%bogus(n)%slp/typical_p_rms)**2
42       y%bogus(n)%slp = y%bogus(n)%slp / typical_p_rms ** 2
43    end do
44    
45    if (trace_use_dull) call da_trace_exit("da_check_xtoy_adjoint_bogus")
47 end subroutine da_check_xtoy_adjoint_bogus