da_ao_stats_qscat.inc
References to this file elsewhere.
1 subroutine da_ao_stats_qscat (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 type (stats_qscat_type) :: qscat
14 integer :: nu, nv
15 integer :: n
16
17 nu = 0
18 nv = 0
19 num_qscat_tot = 0
20
21 qscat%maximum%u = maxmin_type(-1.0E+20, 0, 0)
22 qscat%maximum%v = maxmin_type(-1.0E+20, 0, 0)
23 qscat%minimum%u = maxmin_type (1.0E+20, 0, 0)
24 qscat%minimum%v = maxmin_type (1.0E+20, 0, 0)
25 qscat%average = residual_qscat1_type(0.0, 0.0)
26 qscat%rms_err = qscat%average
27
28 if (oi%num_qscat > 0) then
29 do n=1, oi%num_qscat
30 if (oi%qscat(n)%loc%proc_domain) then
31 call da_stats_calculate (n, 0, oi%qscat(n)%u%qc, &
32 re%qscat(n)%u, nu, &
33 qscat%minimum%u, qscat%maximum%u, &
34 qscat%average%u, qscat%rms_err%u)
35 call da_stats_calculate (n, 0, oi%qscat(n)%v%qc, &
36 re%qscat(n)%v, nv, &
37 qscat%minimum%v, qscat%maximum%v, &
38 qscat%average%v, qscat%rms_err%v)
39 end if ! end if (oi%qscat(n)%loc%proc_domain)
40 end do
41 end if
42
43 ! Do inter-processor communication to gather statistics.
44 call da_proc_sum_int (nu)
45 call da_proc_sum_int (nv)
46 num_qscat_tot = nu + nv
47
48 call da_proc_stats_combine(qscat%average%u, qscat%rms_err%u, &
49 qscat%minimum%u%value, qscat%maximum%u%value, &
50 qscat%minimum%u%n, qscat%maximum%u%n, &
51 qscat%minimum%u%l, qscat%maximum%u%l)
52 call da_proc_stats_combine(qscat%average%v, qscat%rms_err%v, &
53 qscat%minimum%v%value, qscat%maximum%v%value, &
54 qscat%minimum%v%n, qscat%maximum%v%n, &
55 qscat%minimum%v%l, qscat%maximum%v%l)
56
57 if (rootproc) then
58 if (nu /= 0 .or. nv /= 0) then
59 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for qscat'
60 call da_print_stats_qscat(stats_unit, nu, nv, qscat)
61 end if
62 end if
63
64 end subroutine da_ao_stats_qscat
65
66