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