1 subroutine da_check_max_iv_tamdar_sfc(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_tamdar_sfc")
24 !---------------------------------------------------------------------------
25 ! [1.0] Perform maximum innovation vector check:
26 !---------------------------------------------------------------------------
28 do n=iv%info(tamdar_sfc)%n1,iv%info(tamdar_sfc)%n2
30 if( iv%tamdar_sfc(n)%u%qc >= obs_qc_pointer ) &
31 call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%u, max_error_uv, failed)
32 if( iv%info(tamdar_sfc)%proc_domain(1,n) ) then
33 num_qcstat_conv(1,tamdar_sfc,1,1)= num_qcstat_conv(1,tamdar_sfc,1,1) + 1
35 num_qcstat_conv(2,tamdar_sfc,1,1)= num_qcstat_conv(2,tamdar_sfc,1,1) + 1
36 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
37 'tamdar_sfc',ob_vars(1),iv%info(tamdar_sfc)%lat(1,n),iv%info(tamdar_sfc)%lon(1,n),0.01*ob%tamdar_sfc(n)%p
42 if( iv%tamdar_sfc(n)%v%qc >= obs_qc_pointer ) &
43 call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%v, max_error_uv, failed)
44 if( iv%info(tamdar_sfc)%proc_domain(1,n) ) then
45 num_qcstat_conv(1,tamdar_sfc,2,1)= num_qcstat_conv(1,tamdar_sfc,2,1) + 1
47 num_qcstat_conv(2,tamdar_sfc,2,1)= num_qcstat_conv(2,tamdar_sfc,2,1) + 1
48 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
49 'tamdar_sfc',ob_vars(2),iv%info(tamdar_sfc)%lat(1,n),iv%info(tamdar_sfc)%lon(1,n),0.01*ob%tamdar_sfc(n)%p
54 if( iv%tamdar_sfc(n)%t%qc >= obs_qc_pointer ) &
55 call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%t, max_error_t , failed)
56 if( iv%info(tamdar_sfc)%proc_domain(1,n) ) then
57 num_qcstat_conv(1,tamdar_sfc,3,1)= num_qcstat_conv(1,tamdar_sfc,3,1) + 1
59 num_qcstat_conv(2,tamdar_sfc,3,1)= num_qcstat_conv(2,tamdar_sfc,3,1) + 1
60 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
61 'tamdar_sfc',ob_vars(3),iv%info(tamdar_sfc)%lat(1,n),iv%info(tamdar_sfc)%lon(1,n),0.01*ob%tamdar_sfc(n)%p
66 if( iv%tamdar_sfc(n)%p%qc >= obs_qc_pointer ) &
67 call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%p, max_error_p , failed)
68 if( iv%info(tamdar_sfc)%proc_domain(1,n) ) then
69 num_qcstat_conv(1,tamdar_sfc,5,1)= num_qcstat_conv(1,tamdar_sfc,5,1) + 1
71 num_qcstat_conv(2,tamdar_sfc,5,1)= num_qcstat_conv(2,tamdar_sfc,5,1) + 1
72 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
73 'tamdar_sfc',ob_vars(5),iv%info(tamdar_sfc)%lat(1,n),iv%info(tamdar_sfc)%lon(1,n),0.01*ob%tamdar_sfc(n)%p
78 if( iv%tamdar_sfc(n)%q%qc >= obs_qc_pointer ) then
79 if( iv%tamdar_sfc(n)%t%qc == fails_error_max .or. iv%tamdar_sfc(n)%p%qc == fails_error_max) then
81 iv%tamdar_sfc(n)%q%qc = fails_error_max
82 iv%tamdar_sfc(n)%q%inv = 0.0
84 call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%q, max_error_q , failed)
86 if( iv%info(tamdar_sfc)%proc_domain(1,n) ) then
87 num_qcstat_conv(1,tamdar_sfc,4,1)= num_qcstat_conv(1,tamdar_sfc,4,1) + 1
89 num_qcstat_conv(2,tamdar_sfc,4,1)= num_qcstat_conv(2,tamdar_sfc,4,1) + 1
90 write(qcstat_conv_unit,'(2x,a10,2x,a4,3f12.2)')&
91 'tamdar_sfc',ob_vars(4),iv%info(tamdar_sfc)%lat(1,n),iv%info(tamdar_sfc)%lon(1,n),0.01*ob%tamdar_sfc(n)%p
98 if (trace_use_dull) call da_trace_exit("da_check_max_iv_tamdar_sfc")
100 end subroutine da_check_max_iv_tamdar_sfc