da_ao_stats_ssmi_rv.inc

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