Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_pseudo / da_print_stats_pseudo.inc
blob2b6ecf3f98966294413090db3fd1b10508e128ef
1 subroutine da_print_stats_pseudo(stats_unit, nu, nv, nt, np, nq, pseudo)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    integer,                  intent(in)    :: stats_unit
10    integer,                  intent(inout) :: nu, nv, nt, np, nq
11    type (stats_pseudo_type), intent(in)    :: pseudo
13    if (trace_use_dull) call da_trace_entry("da_print_stats_pseudo")
15    if ( len_trim(adjustl(pseudo_var)) == 3 .and. &
16         (pseudo_var(1:1) == 'q' .or. pseudo_var(1:1) == 'Q') ) then
17       write(unit=stats_unit, fmt='(6a/)') &
18          '   var             ',    &
19          'u (m/s)     n    k    ', &
20          'v (m/s)     n    k    ', &
21          't (K)       n    k    ', &
22          'p (Pa)      n    k    ', &
23          pseudo_var(1:3), ' (kg/kg)   n    k'
24    else
25       write(unit=stats_unit, fmt='(6a/)') &
26          '   var             ',    &
27          'u (m/s)     n    k    ', &
28          'v (m/s)     n    k    ', &
29          't (K)       n    k    ', &
30          'p (Pa)      n    k    ', &
31          'q (kg/kg)   n    k'
32    end if
33    write(unit=stats_unit, fmt='(a,i16,4i22)') &
34         '  Number: ', nu, nv, nt, np, nq
36    if (nu < 1) nu = 1
37    if (nv < 1) nv = 1
38    if (nt < 1) nt = 1
39    if (np < 1) np = 1
40    if (nq < 1) nq = 1
42    write(unit=stats_unit, fmt='((a,4(f12.4,2i5),e12.4,2i5))') &
43         ' Minimum(n,k): ', pseudo%minimum%u, pseudo%minimum%v, pseudo%minimum%t, &
44                       pseudo%minimum%p, pseudo%minimum%q, &
45         ' Maximum(n,k): ', pseudo%maximum%u, pseudo%maximum%v, pseudo%maximum%t, &
46                       pseudo%maximum%p, pseudo%maximum%q
47    write(unit=stats_unit, fmt='((a,4(f12.4,10x),e12.4,10x))') &
48         ' Average     : ', pseudo%average%u/real(nu), pseudo%average%v/real(nv), &
49                       pseudo%average%t/real(nt), pseudo%average%p/real(np), &
50                       pseudo%average%q/real(nq), &
51         '    RMSE     : ', sqrt(pseudo%rms_err%u/real(nu)), &
52                       sqrt(pseudo%rms_err%v/real(nv)), &
53                       sqrt(pseudo%rms_err%t/real(nt)), &
54                       sqrt(pseudo%rms_err%p/real(np)), &
55                       sqrt(pseudo%rms_err%q/real(nq))
57    if (trace_use_dull) call da_trace_exit("da_print_stats_pseudo")
59 end subroutine da_print_stats_pseudo