da_oi_stats_ssmi_rv.inc

References to this file elsewhere.
1 subroutine da_oi_stats_ssmi_rv(stats_unit, oi)
2 
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
6 
7    implicit none
8 
9    integer,        intent (in)      :: stats_unit    ! Output unit for stats.
10    type (ob_type), intent (in)      :: oi            ! OI
11 
12    integer                          :: ntpw, nspeed, n
13    type (stats_ssmi_retrieval_type) :: ssmi_retrieval
14 
15    ntpw = 0
16    nspeed = 0
17 
18    ssmi_retrieval%maximum%tpw   = maxmin_type(missing_r, 0, 0)
19    ssmi_retrieval%maximum%speed = maxmin_type(missing_r, 0, 0)
20    ssmi_retrieval%minimum%tpw   = maxmin_type(-missing_r, 0, 0)
21    ssmi_retrieval%minimum%speed = maxmin_type(-missing_r, 0, 0)
22    ssmi_retrieval%average = residual_ssmi_retrieval_type(0.0, 0.0)
23    ssmi_retrieval%rms_err = ssmi_retrieval%average
24 
25    if (oi%num_ssmi_retrieval .gt. 0) then
26       do n=1, oi%num_ssmi_retrieval
27          if (oi%ssmi_retrieval(n)%loc%proc_domain) then
28             call da_stats_calculate(oi%ssmi_retrieval(n)%loc%obs_global_index, &
29                               0, oi%ssmi_retrieval(n)%tpw%qc, &
30                               oi%ssmi_retrieval(n)%tpw%inv, ntpw, &
31                               ssmi_retrieval%minimum%tpw, &
32                               ssmi_retrieval%maximum%tpw,  &
33                               ssmi_retrieval%average%tpw, &
34                               ssmi_retrieval%rms_err%tpw)
35 
36            call da_stats_calculate(oi%ssmi_retrieval(n)%loc%obs_global_index, &
37                               0, oi%ssmi_retrieval(n)%speed%qc, &
38                               oi%ssmi_retrieval(n)%speed%inv, nspeed, &
39                               ssmi_retrieval%minimum%speed, &
40                               ssmi_retrieval%maximum%speed, &
41                               ssmi_retrieval%average%speed, &
42                               ssmi_retrieval%rms_err%speed)
43          end if    ! end if (oi%ssmi_retrieval(n)%loc%proc_domain)
44       end do
45    end if
46 
47    ! Do inter-processor communication to gather statistics.
48    call da_proc_sum_int(ntpw)
49    call da_proc_sum_int(nspeed)
50 
51    call da_proc_stats_combine(ssmi_retrieval%average%tpw, ssmi_retrieval%rms_err%tpw, &
52               ssmi_retrieval%minimum%tpw%value, ssmi_retrieval%maximum%tpw%value, &
53               ssmi_retrieval%minimum%tpw%n, ssmi_retrieval%maximum%tpw%n, &
54               ssmi_retrieval%minimum%tpw%l, ssmi_retrieval%maximum%tpw%l)
55 
56    call da_proc_stats_combine(ssmi_retrieval%average%speed, ssmi_retrieval%rms_err%speed, &
57               ssmi_retrieval%minimum%speed%value, ssmi_retrieval%maximum%speed%value, &
58               ssmi_retrieval%minimum%speed%n, ssmi_retrieval%maximum%speed%n, &
59               ssmi_retrieval%minimum%speed%l, ssmi_retrieval%maximum%speed%l)
60 
61    if (rootproc) then
62       if (ntpw > 0) then
63          write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of OI for ssmi_retrieval'
64          write(unit=stats_unit, fmt='(a/)') '   var           tpw(cm)     n'
65          write(unit=stats_unit, fmt='(a,i14)') '  Number: ', ntpw
66          write(unit=stats_unit, fmt='(a, f12.4,i9)') &
67                        ' Minimum(n): ', ssmi_retrieval%minimum%tpw%value, &
68                                         ssmi_retrieval%minimum%tpw%n    , &
69                        ' Maximum(n): ', ssmi_retrieval%maximum%tpw%value, &
70                                         ssmi_retrieval%maximum%tpw%n
71          write(unit=stats_unit, fmt='(a, f12.4,5x)') &
72                        ' Average   : ', ssmi_retrieval%average%tpw/real(ntpw), &
73                        '    RMSE   : ', sqrt(ssmi_retrieval%rms_err%tpw/real(ntpw))
74       end if
75 
76       if (nspeed > 0) then
77          write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of OI for ssmi_retrieval'
78          write(unit=stats_unit, fmt='(a/)') '   var           speed(m/s)     n'
79          write(unit=stats_unit, fmt='(a,i14)') '  Number: ', nspeed
80          write(unit=stats_unit, fmt='(a, f12.4,i9)') &
81                        ' Minimum(n): ', ssmi_retrieval%minimum%speed%value, &
82                                         ssmi_retrieval%minimum%speed%n    , &
83                        ' Maximum(n): ', ssmi_retrieval%maximum%speed%value, &
84                                         ssmi_retrieval%maximum%speed%n
85          write(unit=stats_unit, fmt='(a, f12.4,5x)') &
86                        ' Average   : ', ssmi_retrieval%average%speed/real(nspeed), &
87                        '    RMSE   : ', sqrt(ssmi_retrieval%rms_err%speed/real(nspeed))
88       end if
89    end if
90 
91 end subroutine da_oi_stats_ssmi_rv
92 
93