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