1 subroutine da_check_max_iv_metar(iv,ob, it, num_qcstat_conv)
3 !-----------------------------------------------------------------------
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 !-----------------------------------------------------------------------
12 type(iv_type), intent(inout) :: iv
13 integer, intent(in) :: it ! outer iteration
14 integer, intent(inout) :: num_qcstat_conv(:,:,:,:)
15 type(y_type), intent(in) :: ob ! Observation structure.
21 if (trace_use_dull) call da_trace_entry("da_check_max_iv_metar")
23 !---------------------------------------------------------------------------
24 ! [1.0] Perform maximum innovation vector check:
25 !---------------------------------------------------------------------------
27 do n=iv%info(metar)%n1,iv%info(metar)%n2
29 if( iv%metar(n)%u%qc >= obs_qc_pointer ) &
30 call da_max_error_qc (it, iv%info(metar), n, iv%metar(n)%u, max_error_uv, failed)
31 if( iv%info(metar)%proc_domain(1,n) ) then
32 num_qcstat_conv(1,metar,1,1)= num_qcstat_conv(1,metar,1,1) + 1
34 num_qcstat_conv(2,metar,1,1)= num_qcstat_conv(2,metar,1,1) + 1
35 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
36 'metar',ob_vars(1),iv%info(metar)%lat(1,n),iv%info(metar)%lon(1,n),0.01*ob%metar(n)%p
41 if( iv%metar(n)%v%qc >= obs_qc_pointer ) &
42 call da_max_error_qc (it, iv%info(metar), n, iv%metar(n)%v, max_error_uv, failed)
43 if( iv%info(metar)%proc_domain(1,n) ) then
44 num_qcstat_conv(1,metar,2,1)= num_qcstat_conv(1,metar,2,1) + 1
46 num_qcstat_conv(2,metar,2,1)= num_qcstat_conv(2,metar,2,1) + 1
47 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
48 'metar',ob_vars(2),iv%info(metar)%lat(1,n),iv%info(metar)%lon(1,n),0.01*ob%metar(n)%p
53 if( iv%metar(n)%t%qc >= obs_qc_pointer ) &
54 call da_max_error_qc (it, iv%info(metar), n, iv%metar(n)%t, max_error_t , failed)
55 if( iv%info(metar)%proc_domain(1,n) ) then
56 num_qcstat_conv(1,metar,3,1)= num_qcstat_conv(1,metar,3,1) + 1
58 num_qcstat_conv(2,metar,3,1)= num_qcstat_conv(2,metar,3,1) + 1
59 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
60 'metar',ob_vars(3),iv%info(metar)%lat(1,n),iv%info(metar)%lon(1,n),0.01*ob%metar(n)%p
65 if( iv%metar(n)%p%qc >= obs_qc_pointer ) &
66 call da_max_error_qc (it, iv%info(metar), n, iv%metar(n)%p, max_error_p , failed)
67 if( iv%info(metar)%proc_domain(1,n) ) then
68 num_qcstat_conv(1,metar,5,1)= num_qcstat_conv(1,metar,5,1) + 1
70 num_qcstat_conv(2,metar,5,1)= num_qcstat_conv(2,metar,5,1) + 1
71 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
72 'metar',ob_vars(5),iv%info(metar)%lat(1,n),iv%info(metar)%lon(1,n),0.01*ob%metar(n)%p
77 if( iv%metar(n)%q%qc >= obs_qc_pointer ) then
78 if( iv%metar(n)%t%qc == fails_error_max .or. iv%metar(n)%p%qc == fails_error_max) then
80 iv%metar(n)%q%qc = fails_error_max
81 iv%metar(n)%q%inv = 0.0
83 call da_max_error_qc (it, iv%info(metar), n, iv%metar(n)%q, max_error_q , failed)
85 if( iv%info(metar)%proc_domain(1,n) ) then
86 num_qcstat_conv(1,metar,4,1)= num_qcstat_conv(1,metar,4,1) + 1
88 num_qcstat_conv(2,metar,4,1)= num_qcstat_conv(2,metar,4,1) + 1
89 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
90 'metar',ob_vars(4),iv%info(metar)%lat(1,n),iv%info(metar)%lon(1,n),0.01*ob%metar(n)%p
96 if (trace_use_dull) call da_trace_exit("da_check_max_iv_metar")
98 end subroutine da_check_max_iv_metar