da_print_be_stats_p.inc

References to this file elsewhere.
1 subroutine da_print_be_stats_p(outunit, ni, nj, nk, num_bins, num_bins2d, bin, &
2    bin2d, regcoeff1, regcoeff2, regcoeff3)
3 
4    !----------------------------------------------------------------------------
5    ! Purpose: To print out the regression coefficients for the physical
6    !           transform.
7    !
8    ! Input   : outunit              --- Fortran unit for writing out
9    !           ni,nj,nk             --- Dimensions
10    !           num_bins, num_bins2d --- Number of the 3d and 2d bins
11    !           bin, bin2d           --- bin index for the gridpoints
12    !           regcoeff1   --- Reg coefs for chi = regcoeff1 * psi
13    !           regcoeff2   --- Reg coefs for Ps  = sum(regcoeff2(1:k)*psi(1:k))
14    !           regcoeff3   --- Reg coefs for T(k)= sum(regcoeff3(k,1:k)*psi(1:k))
15    !
16    ! Output  : fort.171    --- regcoef1
17    !           fort.172    --- regcoeff2
18    !           fort.173    --- regcoeff3
19    !----------------------------------------------------------------------------
20 
21    implicit none
22 
23    integer, intent(inout) :: outunit                      ! Output file unit.
24    integer, intent(in) :: ni, nj, nk                      ! Grid dimensions. 
25    integer, intent(in) :: num_bins                        ! Number of 3D field bins.
26    integer, intent(in) :: num_bins2d                      ! Number of 2D field bins.
27    integer, intent(in) :: bin(1:ni,1:nj,1:nk)             ! Bin assigned to each 3D point.
28    integer, intent(in) :: bin2d(1:ni,1:nj)                ! Bin assigned to each 3D point.
29    real, intent(in)    :: regcoeff1(1:num_bins)           ! psi/chi regression cooefficient.
30    real, intent(in)    :: regcoeff2(1:nk,1:num_bins2d)    ! psi/ps regression cooefficient.
31    real, intent(in)    :: regcoeff3(1:nk,1:nk,1:num_bins2d) ! psi/T regression cooefficient.
32 
33    integer             :: k1, k2, i, k, j, b, number      ! Loop counters.
34 
35    if (trace_use) call da_trace_entry("da_print_be_stats_p")
36 
37    write(unit=stdout,fmt='(a,i5)')' psi/chi regression coefficient in unit ', outunit
38 
39    open(unit=outunit)
40    write(unit=outunit,fmt='(a,i5)')' psi/chi regression coefficient in unit ', outunit
41    do b = 1, num_bins
42       number = 0
43       do i = 1,ni
44          do j = 1,nj
45             do k = 1,nk
46                if (bin(i,j,k) == b) then
47                   number = number + 1
48                end if
49             end do
50          end do
51       end do
52       write(unit=outunit,fmt='("bin=",i6," number_in_bin=",i6,5X,1pE12.5)') &
53          b, number, regcoeff1(b)
54    end do
55    close(unit=outunit)
56 
57    outunit = outunit + 1
58 
59    write(unit=stdout,fmt='(a,i5)') &
60       ' psi/ps  regression coefficient in unit ', outunit
61 
62    open(unit=outunit)
63    write(unit=outunit,fmt='(a,i5)') &
64       ' psi/ps  regression coefficient in unit ', outunit
65 
66    do b = 1, num_bins2d
67       number = 0
68       do i = 1,ni
69          do j = 1,nj
70             if (bin2d(i,j) == b) then
71                number = number + 1
72             end if
73          end do
74       end do
75       write(unit=outunit,fmt='(/"bin=",i6," number_in_bin=",i6)') b, number
76       write(unit=outunit,fmt='((2X,9(i3,2x,1pE12.5)))') (k,regcoeff2(k,b), k=1,nk)
77    end do
78    close(unit=outunit)
79 
80    outunit = outunit + 1
81 
82    write(unit=stdout,fmt='(a,i5)') &
83       ' psi/T   regression coefficient in unit ', outunit
84 
85    open(unit=outunit)
86    write(unit=outunit,fmt='(a,i5)') &
87       ' psi/T   regression coefficient in unit ', outunit
88    do b = 1, num_bins2d
89       number = 0
90       do i = 1,ni
91          do j = 1,nj
92             if (bin2d(i,j) == b) then
93                number = number + 1
94             end if
95          end do
96       end do
97 
98       write(unit=outunit,fmt='(/"bin=",i6," number_in_bin=",i6)') b, number
99       do k1 = 1,nk
100          write(unit=outunit,fmt='(2X,"Temperature at k1=",i3)') k1
101          write(unit=outunit,fmt='((2X,9(i3,2x,1pE12.5)))') (k2,regcoeff3(k1,k2,b), k2=1,nk)
102       end do
103    end do
104    close(unit=outunit)
105 
106    write(unit=stdout,fmt=*) ' '
107 
108    outunit = outunit + 1
109 
110    if (trace_use) call da_trace_exit("da_print_be_stats_p")
111 
112 end subroutine da_print_be_stats_p
113 
114