Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_radar / da_check_max_iv_radar.inc
blobb64ef441296f71b33363c164aecd75cbb3454b66
1 subroutine da_check_max_iv_radar(iv, it, irv, irf, irvf, irff)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    ! Update:
6    !    Removed Outerloop check as it is done in da_get_innov
7    !    Author: Syed RH Rizvi,  MMM/NESL/NCAR,  Date: 07/12/2009
8    !-----------------------------------------------------------------------
10    implicit none
12    type(iv_type), intent(inout) :: iv
13    integer,       intent(in)    :: it    
14    integer,       intent(inout) :: irv, irf, irvf, irff    
16    integer :: k,n
17    logical :: failed 
19    if (trace_use) call da_trace_entry("da_check_max_iv_radar")
21    !---------------------------------------------------------------------------
22    ! [1.0] Open diagnostic file:
23    !---------------------------------------------------------------------------
25    if (rootproc .and. check_max_iv_print) then
26       write (check_max_iv_unit,'(a)')  &
27          '----------------------------------------------------------------'
28       write (unit = check_max_iv_unit, fmt = '(A,/)') 'MAX ERROR TEST QC:'
30       write (unit = check_max_iv_unit, fmt = '(/,9(A,F3.0,/))')  &
31          'Error max test ratio for radar_rv   = ',max_error_rv, &
32          'Error max test ratio for radar_rf   = ',max_error_rf
33    end if
35    !------------------------------------------------------------------------
36    ! [2.0] Perform maximum innovation vector check:
37    !------------------------------------------------------------------------
39    failed = .false.
41    do n = iv%info(radar)%n1,iv%info(radar)%n2
42       do k = 1, iv%info(radar)%levels(n)
43          if (iv%radar(n)%height_qc(k) /= far_below_model_surface .and. &
44               iv%radar(n)%height_qc(k) /= above_model_lid) then
45             ! rv
46             if (use_radar_rv) then
47                call da_max_error_qc_radar(it, iv%info(radar), n, iv%radar(n)%rv(k), max_error_rv, irv, irvf, &
48                   check_max_iv_unit, 'rv   ', failed, check_max_iv_print)
49             end if
51             ! rf
52             if (use_radar_rf) then
53                call da_max_error_qc_radar(it, iv%info(radar), n, iv%radar(n)%rf(k), max_error_rf, irf, irff, &
54                   check_max_iv_unit, 'rf   ', failed, check_max_iv_print)
55             end if
56          end if
57       end do
58    end do
60    if (trace_use) call da_trace_exit("da_check_max_iv_radar")
62 end subroutine da_check_max_iv_radar