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