wrf svn trunk commit r4103
[wrffire.git] / wrfv2_fire / var / da / da_tamdar / da_check_max_iv_tamdar_sfc.inc
blob138074b53f7e6b738e603e2239ee0801eeba37dc
1 subroutine da_check_max_iv_tamdar_sfc(iv,ob, it, num_qcstat_conv)                                 
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      ! Outer iteration
14    integer,       intent(inout) :: num_qcstat_conv(:,:,:,:)
15    type(y_type),  intent(in)    :: ob      ! Observation structure.
18    logical :: failed
19    integer :: n
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
29       failed=.false.
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
34       if(failed) then
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
38       end if
39       end if
41       failed=.false.
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
46       if(failed) then
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
50       end if
51       end if
53       failed=.false.
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
58       if(failed) then
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
62       end if
63       end if
65       failed=.false.
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
70       if(failed) then
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
74       end if
75       end if
77       failed=.false.
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
80        failed=.true.
81        iv%tamdar_sfc(n)%q%qc  = fails_error_max
82        iv%tamdar_sfc(n)%q%inv = 0.0
83        else
84        call da_max_error_qc (it, iv%info(tamdar_sfc), n, iv%tamdar_sfc(n)%q, max_error_q , failed)
85        endif
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
88       if(failed) then
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
92       end if
93       end if
94       end if
96    end do
98    if (trace_use_dull) call da_trace_exit("da_check_max_iv_tamdar_sfc")
100 end subroutine da_check_max_iv_tamdar_sfc