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