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