da_ao_stats_radar.inc
References to this file elsewhere.
1 subroutine da_ao_stats_radar (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 type (stats_radar_type) :: stats
14 integer :: nrv, nrf
15 integer :: n, k
16
17 if (trace_use) call da_trace_entry("da_ao_stats_radar")
18
19 nrv = 0
20 nrf = 0
21
22 stats%maximum%rv = maxmin_type (missing_r, 0, 0)
23 stats%maximum%rf = maxmin_type (missing_r, 0, 0)
24 stats%minimum%rv = maxmin_type(-missing_r, 0, 0)
25 stats%minimum%rf = maxmin_type(-missing_r, 0, 0)
26
27 stats%average = residual_radar1_type(0, 0.0)
28 stats%rms_err = stats%average
29
30 do n=1, iv%info(radar)%nlocal
31 if (iv%info(radar)%proc_domain(1,n)) then
32 do k=1, iv%info(radar)%levels(n)
33 if (use_radar_rv) then
34 call da_stats_calculate (n, k, iv%radar(n)%rv(k)%qc, &
35 re%radar(n)%rv(k), nrv, &
36 stats%minimum%rv, stats%maximum%rv, &
37 stats%average%rv, stats%rms_err%rv)
38 end if
39
40 if (use_radar_rf) then
41 call da_stats_calculate (n, k, iv%radar(n)%rf(k)%qc, &
42 re%radar(n)%rf(k), nrf, &
43 stats%minimum%rf, stats%maximum%rf, &
44 stats%average%rf, stats%rms_err%rf)
45 end if
46 end do
47 end if ! end if (iv%pilot(n)%loc%proc_domain)
48 end do
49
50 ! Do inter-processor communication to gather statistics.
51 if (use_radar_rv) then
52 call da_proc_sum_int (nrv)
53 call da_proc_stats_combine(stats%average%rv, stats%rms_err%rv, &
54 stats%minimum%rv%value, stats%maximum%rv%value, &
55 stats%minimum%rv%n, stats%maximum%rv%n, &
56 stats%minimum%rv%l, stats%maximum%rv%l)
57 end if
58
59 if (use_radar_rf) then
60 call da_proc_sum_int (nrf)
61 call da_proc_stats_combine(stats%average%rf, stats%rms_err%rf, &
62 stats%minimum%rf%value, stats%maximum%rf%value, &
63 stats%minimum%rf%n, stats%maximum%rf%n, &
64 stats%minimum%rf%l, stats%maximum%rf%l)
65 end if
66 iv%nstats(radar) = nrv + nrf
67
68 if (rootproc) then
69 if (nrv /= 0 .or. nrf /= 0) then
70 write(unit=stats_unit, fmt='(/a/)') ' Diagnostics of AO for radar'
71 call da_print_stats_radar(stats_unit, nrv, nrf, stats)
72 end if
73 end if
74
75 if (trace_use) call da_trace_exit("da_ao_stats_radar")
76
77 end subroutine da_ao_stats_radar
78
79