da_ao_stats_ssmi_tb.inc
References to this file elsewhere.
1 subroutine da_ao_stats_ssmi_tb (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 :: ntb19v,ntb19h,ntb22v,ntb37v,ntb37h, &
14 ntb85v,ntb85h
15 integer :: n
16 type (stats_ssmi_tb_type) :: ssmi_tb
17
18 ntb19v = 0
19 ntb19h = 0
20 ntb22v = 0
21 ntb37v = 0
22 ntb37h = 0
23 ntb85v = 0
24 ntb85h = 0
25 num_ssmi_tb_tot = 0
26
27 ssmi_tb%maximum%tb19v = maxmin_type (missing_r, 0, 0)
28 ssmi_tb%maximum%tb19h = maxmin_type (missing_r, 0, 0)
29 ssmi_tb%maximum%tb22v = maxmin_type (missing_r, 0, 0)
30 ssmi_tb%maximum%tb37v = maxmin_type (missing_r, 0, 0)
31 ssmi_tb%maximum%tb37h = maxmin_type (missing_r, 0, 0)
32 ssmi_tb%maximum%tb85v = maxmin_type (missing_r, 0, 0)
33 ssmi_tb%maximum%tb85h = maxmin_type (missing_r, 0, 0)
34 ssmi_tb%minimum%tb19v = maxmin_type(-missing_r, 0, 0)
35 ssmi_tb%minimum%tb19h = maxmin_type(-missing_r, 0, 0)
36 ssmi_tb%minimum%tb22v = maxmin_type(-missing_r, 0, 0)
37 ssmi_tb%minimum%tb37v = maxmin_type(-missing_r, 0, 0)
38 ssmi_tb%minimum%tb37h = maxmin_type(-missing_r, 0, 0)
39 ssmi_tb%minimum%tb85v = maxmin_type(-missing_r, 0, 0)
40 ssmi_tb%minimum%tb85h = maxmin_type(-missing_r, 0, 0)
41 ssmi_tb%average = residual_ssmi_tb_type(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
42 ssmi_tb%rms_err = ssmi_tb%average
43
44 if (oi%num_ssmi_tb .gt. 0) then
45 do n=1, oi%num_ssmi_tb
46 if (oi%ssmi_tb(n)%loc%proc_domain) then
47 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb19v%qc, &
48 re%ssmi_tb(n)%tb19v, ntb19v, &
49 ssmi_tb%minimum%tb19v, ssmi_tb%maximum%tb19v,&
50 ssmi_tb%average%tb19v, ssmi_tb%rms_err%tb19v)
51
52
53 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb19h%qc, &
54 re%ssmi_tb(n)%tb19h, ntb19h, &
55 ssmi_tb%minimum%tb19h, ssmi_tb%maximum%tb19h,&
56 ssmi_tb%average%tb19h, ssmi_tb%rms_err%tb19h)
57
58 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb22v%qc, &
59 re%ssmi_tb(n)%tb22v, ntb22v, &
60 ssmi_tb%minimum%tb22v, ssmi_tb%maximum%tb22v,&
61 ssmi_tb%average%tb22v, ssmi_tb%rms_err%tb22v)
62
63 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb37v%qc, &
64 re%ssmi_tb(n)%tb37v, ntb37v, &
65 ssmi_tb%minimum%tb37v, ssmi_tb%maximum%tb37v,&
66 ssmi_tb%average%tb37v, ssmi_tb%rms_err%tb37v)
67
68 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb37h%qc, &
69 re%ssmi_tb(n)%tb37h, ntb37h, &
70 ssmi_tb%minimum%tb37h, ssmi_tb%maximum%tb37h,&
71 ssmi_tb%average%tb37h, ssmi_tb%rms_err%tb37h)
72
73 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb85v%qc, &
74 re%ssmi_tb(n)%tb85v, ntb85v, &
75 ssmi_tb%minimum%tb85v, ssmi_tb%maximum%tb85v,&
76 ssmi_tb%average%tb85v, ssmi_tb%rms_err%tb85v)
77
78 call da_stats_calculate (n, 0, oi%ssmi_tb(n)%tb85h%qc, &
79 re%ssmi_tb(n)%tb85h, ntb85h, &
80 ssmi_tb%minimum%tb85h, ssmi_tb%maximum%tb85h,&
81 ssmi_tb%average%tb85h, ssmi_tb%rms_err%tb85h)
82
83 end if ! end if (oi%ssmi_tb(n)%loc%proc_domain)
84 end do
85 end if
86
87 ! Do inter-processor communication to gather statistics.
88 call da_proc_sum_int (ntb19v)
89 call da_proc_sum_int (ntb19h)
90 call da_proc_sum_int (ntb22v)
91 call da_proc_sum_int (ntb37v)
92 call da_proc_sum_int (ntb37h)
93 call da_proc_sum_int (ntb85v)
94 call da_proc_sum_int (ntb85h)
95 num_ssmi_tb_tot = ntb19v + ntb19h + ntb22v + ntb37v + ntb37h + &
96 ntb85v + ntb85h
97
98 call da_proc_stats_combine(ssmi_tb%average%tb19v, ssmi_tb%rms_err%tb19v, &
99 ssmi_tb%minimum%tb19v%value, ssmi_tb%maximum%tb19v%value, &
100 ssmi_tb%minimum%tb19v%n, ssmi_tb%maximum%tb19v%n, &
101 ssmi_tb%minimum%tb19v%l, ssmi_tb%maximum%tb19v%l)
102
103 call da_proc_stats_combine(ssmi_tb%average%tb19h, ssmi_tb%rms_err%tb19h, &
104 ssmi_tb%minimum%tb19h%value, ssmi_tb%maximum%tb19h%value, &
105 ssmi_tb%minimum%tb19h%n, ssmi_tb%maximum%tb19h%n, &
106 ssmi_tb%minimum%tb19h%l, ssmi_tb%maximum%tb19h%l)
107
108 call da_proc_stats_combine(ssmi_tb%average%tb22v, ssmi_tb%rms_err%tb22v, &
109 ssmi_tb%minimum%tb22v%value, ssmi_tb%maximum%tb22v%value, &
110 ssmi_tb%minimum%tb22v%n, ssmi_tb%maximum%tb22v%n, &
111 ssmi_tb%minimum%tb22v%l, ssmi_tb%maximum%tb22v%l)
112
113 call da_proc_stats_combine(ssmi_tb%average%tb37v, ssmi_tb%rms_err%tb37v, &
114 ssmi_tb%minimum%tb37v%value, ssmi_tb%maximum%tb37v%value, &
115 ssmi_tb%minimum%tb37v%n, ssmi_tb%maximum%tb37v%n, &
116 ssmi_tb%minimum%tb37v%l, ssmi_tb%maximum%tb37v%l)
117
118 call da_proc_stats_combine(ssmi_tb%average%tb37h, ssmi_tb%rms_err%tb37h, &
119 ssmi_tb%minimum%tb37h%value, ssmi_tb%maximum%tb37h%value, &
120 ssmi_tb%minimum%tb37h%n, ssmi_tb%maximum%tb37h%n, &
121 ssmi_tb%minimum%tb37h%l, ssmi_tb%maximum%tb37h%l)
122
123 call da_proc_stats_combine(ssmi_tb%average%tb85v, ssmi_tb%rms_err%tb85v, &
124 ssmi_tb%minimum%tb85v%value, ssmi_tb%maximum%tb85v%value, &
125 ssmi_tb%minimum%tb85v%n, ssmi_tb%maximum%tb85v%n, &
126 ssmi_tb%minimum%tb85v%l, ssmi_tb%maximum%tb85v%l)
127
128 call da_proc_stats_combine(ssmi_tb%average%tb85h, ssmi_tb%rms_err%tb85h, &
129 ssmi_tb%minimum%tb85h%value, ssmi_tb%maximum%tb85h%value, &
130 ssmi_tb%minimum%tb85h%n, ssmi_tb%maximum%tb85h%n, &
131 ssmi_tb%minimum%tb85h%l, ssmi_tb%maximum%tb85h%l)
132
133 if (rootproc) then
134 if (ntb19v /= 0) then
135 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
136
137 write(unit=stats_unit, fmt='(a/)') ' var tb19v(m/s) n'
138
139 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb19v
140
141 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
142 ' Minimum(n): ', ssmi_tb%minimum%tb19v%value, &
143 ssmi_tb%minimum%tb19v%n, &
144 ' Maximum(n): ', ssmi_tb%maximum%tb19v%value, &
145 ssmi_tb%maximum%tb19v%n
146 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
147 ' Average : ', ssmi_tb%average%tb19v/real(ntb19v), &
148 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb19v/real(ntb19v))
149 end if
150
151 if (ntb19h /= 0) then
152 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
153
154 write(unit=stats_unit, fmt='(a/)') ' var tb19h(m/s) n'
155
156 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb19h
157
158 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
159 ' Minimum(n): ', ssmi_tb%minimum%tb19h%value, &
160 ssmi_tb%minimum%tb19h%n, &
161 ' Maximum(n): ', ssmi_tb%maximum%tb19h%value, &
162 ssmi_tb%maximum%tb19h%n
163 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
164 ' Average : ', ssmi_tb%average%tb19h/real(ntb19h), &
165 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb19h/real(ntb19h))
166 end if
167
168 if (ntb22v /= 0) then
169 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
170
171 write(unit=stats_unit, fmt='(a/)') ' var tb22v(m/s) n'
172
173 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb22v
174
175 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
176 ' Minimum(n): ', ssmi_tb%minimum%tb22v%value, &
177 ssmi_tb%minimum%tb22v%n, &
178 ' Maximum(n): ', ssmi_tb%maximum%tb22v%value, &
179 ssmi_tb%maximum%tb22v%n
180 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
181 ' Average : ', ssmi_tb%average%tb22v/real(ntb22v), &
182 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb22v/real(ntb22v))
183 end if
184
185 if (ntb37v /= 0) then
186 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
187
188 write(unit=stats_unit, fmt='(a/)') ' var tb37v(m/s) n'
189
190 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb37v
191
192 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
193 ' Minimum(n): ', ssmi_tb%minimum%tb37v%value, &
194 ssmi_tb%minimum%tb37v%n, &
195 ' Maximum(n): ', ssmi_tb%maximum%tb37v%value, &
196 ssmi_tb%maximum%tb37v%n
197 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
198 ' Average : ', ssmi_tb%average%tb37v/real(ntb37v), &
199 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb37v/real(ntb37v))
200 end if
201
202 if (ntb37h /= 0) then
203 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
204
205 write(unit=stats_unit, fmt='(a/)') ' var tb37h(m/s) n'
206
207 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb37h
208
209 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
210 ' Minimum(n): ', ssmi_tb%minimum%tb37h%value, &
211 ssmi_tb%minimum%tb37h%n, &
212 ' Maximum(n): ', ssmi_tb%maximum%tb37h%value, &
213 ssmi_tb%maximum%tb37h%n
214 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
215 ' Average : ', ssmi_tb%average%tb37h/real(ntb37h), &
216 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb37h/real(ntb37h))
217 end if
218
219 if (ntb85v /= 0) then
220 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
221
222 write(unit=stats_unit, fmt='(a/)') ' var tb85v(m/s) n'
223
224 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb85v
225
226 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
227 ' Minimum(n): ', ssmi_tb%minimum%tb85v%value, &
228 ssmi_tb%minimum%tb85v%n, &
229 ' Maximum(n): ', ssmi_tb%maximum%tb85v%value, &
230 ssmi_tb%maximum%tb85v%n
231 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
232 ' Average : ', ssmi_tb%average%tb85v/real(ntb85v), &
233 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb85v/real(ntb85v))
234 end if
235
236 if (ntb85h /= 0) then
237 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for ssmi_tb'
238
239 write(unit=stats_unit, fmt='(a/)') ' var tb85h(m/s) n'
240
241 write(unit=stats_unit, fmt='(a,i14)') ' Number: ', ntb85h
242
243 write(unit=stats_unit, fmt='(a, f12.4,i5)') &
244 ' Minimum(n): ', ssmi_tb%minimum%tb85h%value, &
245 ssmi_tb%minimum%tb85h%n, &
246 ' Maximum(n): ', ssmi_tb%maximum%tb85h%value, &
247 ssmi_tb%maximum%tb85h%n
248 write(unit=stats_unit, fmt='(a, f12.4,5x)') &
249 ' Average : ', ssmi_tb%average%tb85h/real(ntb85h), &
250 ' RMSE : ', sqrt(ssmi_tb%rms_err%tb85h/real(ntb85h))
251 end if
252 end if
253
254 end subroutine da_ao_stats_ssmi_tb
255
256