My Project
Functions/Subroutines
mod_report Module Reference

Functions/Subroutines

logical function report_now (IINT, IREPORT)
 
subroutine report (INFO_STRING)
 

Function/Subroutine Documentation

◆ report()

subroutine mod_report::report ( character(len=*)  INFO_STRING)

Definition at line 63 of file mod_report.f90.

63  !==============================================================================|
64  ! REPORT INITIAL INFORMATION |
65  !==============================================================================|
66  USE all_vars
67  USE mod_wd
68  USE mod_ice
69  IMPLICIT NONE
70  CHARACTER(LEN=*) :: INFO_STRING !!INFORMATION STRING
71  INTEGER :: E3TOT,ESTOT,IERR
72  REAL(DP), DIMENSION(22) :: SBUF,RBUF1,RBUF2,RBUF3
73 
74  REAL(SP), ALLOCATABLE :: AICE1(:), VICE1(:)
75  REAL(SP), ALLOCATABLE :: Q21(:,:),Q2L1(:,:),L1(:,:)
76  REAL(SP), ALLOCATABLE :: KH1(:,:),KQ1(:,:)
77  INTEGER :: I,J,K
78  !==============================================================================|
79 
80  ALLOCATE(q21(1:n,kbm1)); q21 = 0.0_sp
81  ALLOCATE(q2l1(1:n,kbm1)); q2l1 = 0.0_sp
82  ALLOCATE(l1(1:n,kbm1)); l1 = 0.0_sp
83  ALLOCATE(kh1(1:n,kbm1)); kh1 = 0.0_sp
84  ALLOCATE(kq1(1:n,kbm1)); kq1 = 0.0_sp
85 
86 
87 
88 
89 
90 
91  DO k=1,kbm1
92  DO i=1,n
93  DO j=1,3
94  q21(i,k) = q21(i,k)+q2(nv(i,j),k)
95  q2l1(i,k) = q2l1(i,k)+q2l(nv(i,j),k)
96  l1(i,k) = l1(i,k)+l(nv(i,j),k)
97  kh1(i,k) = kh1(i,k)+kh(nv(i,j),k)
98  kq1(i,k) = kq1(i,k)+kq(nv(i,j),k)
99  END DO
100  q21(i,k) = q21(i,k)/3.0_sp
101  q2l1(i,k) = q2l1(i,k)/3.0_sp
102  l1(i,k) = l1(i,k)/3.0_sp
103  kh1(i,k) = kh1(i,k)/3.0_sp
104  kq1(i,k) = kq1(i,k)/3.0_sp
105  END DO
106  END DO
107 
108  sbuf = 0.0_dp
109 
110  sbuf(1) = sum(dble(ua(1:n)))
111  sbuf(2) = sum(dble(va(1:n)))
112  sbuf(3) = sum(dble(el1(1:n)))
113  sbuf(4) = sum(dble(h1(1:n)))
114  sbuf(5) = sum(dble(u(1:n,1:kbm1)))
115  sbuf(6) = sum(dble(v(1:n,1:kbm1)))
116  sbuf(7) = sum(dble(s(1:n,1:kbm1)))
117  sbuf(8) = sum(dble(t(1:n,1:kbm1)))
118  sbuf(9) = sum(dble(q21(1:n,2:kbm1)))
119  sbuf(10) = sum(dble(q2l1(1:n,2:kbm1)))
120  sbuf(11) = sum(dble(l1(1:n,1:kbm1)))
121  sbuf(12) = sum(dble(km1(1:n,1:kbm1)))
122  sbuf(13) = sum(dble(kq1(1:n,1:kbm1)))
123  sbuf(14) = sum(dble(kh1(1:n,1:kbm1)))
124  sbuf(15) = sum(dble(rho(1:n,1:kbm1)))
125  sbuf(16) = sum(dble(d1(1:n)))
126  sbuf(17) = sum(iswetc(1:n))
127 
128 
129  rbuf1 = sbuf
130 
131  sbuf = 0.0_dp
132 
133  sbuf(1) = maxval(ua(1:n))
134  sbuf(2) = maxval(va(1:n))
135  sbuf(3) = maxval(el(1:m))
136  sbuf(4) = maxval(h(1:m))
137  sbuf(5) = maxval(u(1:n,1:kbm1))
138  sbuf(6) = maxval(v(1:n,1:kbm1))
139  sbuf(7) = maxval(s1(1:m,1:kbm1))
140  sbuf(8) = maxval(t1(1:m,1:kbm1))
141  sbuf(9) = maxval(q2(1:m,1:kbm1))
142  sbuf(10) = maxval(q2l(1:m,1:kbm1))
143  sbuf(11) = maxval(l(1:m,1:kbm1))
144  sbuf(12) = maxval(km(1:m,1:kbm1))
145  sbuf(13) = maxval(kq(1:m,1:kbm1))
146  sbuf(14) = maxval(kh(1:m,1:kbm1))
147  sbuf(15) = maxval(rho1(1:m,1:kbm1))
148  sbuf(16) = maxval(d(1:m))
149 
150 
151 
152  rbuf2 = sbuf
153 
154  sbuf = 0.0_dp
155 
156  sbuf(1) = minval(ua(1:n))
157  sbuf(2) = minval(va(1:n))
158  sbuf(3) = minval(el(1:m))
159  sbuf(4) = minval(h(1:m))
160  sbuf(5) = minval(u(1:n,1:kbm1))
161  sbuf(6) = minval(v(1:n,1:kbm1))
162  sbuf(7) = minval(s1(1:m,1:kbm1))
163  sbuf(8) = minval(t1(1:m,1:kbm1))
164  sbuf(9) = minval(q2(1:m,1:kbm1))
165  sbuf(10) = minval(q2l(1:m,1:kbm1))
166  sbuf(11) = minval(l(1:m,1:kbm1))
167  sbuf(12) = minval(km(1:m,1:kbm1))
168  sbuf(13) = minval(kq(1:m,1:kbm1))
169  sbuf(14) = minval(kh(1:m,1:kbm1))
170  sbuf(15) = minval(rho1(1:m,1:kbm1))
171  sbuf(16) = minval(d(1:m))
172 
173 
174 
175  rbuf3 = sbuf
176 
177  IF(msr)THEN
178  IF(len_trim(info_string) /= 0)THEN
179  WRITE(ipt,* )'!===================',trim(info_string),'======================'
180  END IF
181  rbuf1(15) = (rbuf1(15)+ngl*kbm1)*1000.
182  rbuf2(15) = (rbuf2(15)+1.)*1000.
183  rbuf3(15) = (rbuf3(15)+1.)*1000.
184  e3tot = dble(ngl*kbm1)
185  estot = dble(ngl)
186  WRITE(ipt,* )'! QUANTITY : AVG MAX MIN'
187  WRITE(ipt,100)'! EXTERNAL UVEL :',rbuf1(1)/estot,rbuf2(1),rbuf3(1)
188  WRITE(ipt,100)'! EXTERNAL VVEL :',rbuf1(2)/estot,rbuf2(2),rbuf3(2)
189  WRITE(ipt,100)'! FREE SURFACE :',rbuf1(3)/estot,rbuf2(3),rbuf3(3)
190  WRITE(ipt,100)'! BATH DEPTH :',rbuf1(4)/estot,rbuf2(4),rbuf3(4)
191  WRITE(ipt,100)'! INTERNAL UVEL :',rbuf1(5)/e3tot,rbuf2(5),rbuf3(5)
192  WRITE(ipt,100)'! INTERNAL VVEL :',rbuf1(6)/e3tot,rbuf2(6),rbuf3(6)
193  WRITE(ipt,100)'! SALINITY :',rbuf1(7)/e3tot,rbuf2(7),rbuf3(7)
194  WRITE(ipt,100)'! TEMPERATURE :',rbuf1(8)/e3tot,rbuf2(8),rbuf3(8)
195  WRITE(ipt,100)'! TURBULENT KE :',rbuf1(9)/e3tot,rbuf2(9),rbuf3(9)
196  WRITE(ipt,100)'! TURB KE*L :',rbuf1(10)/e3tot,rbuf2(10),rbuf3(10)
197  WRITE(ipt,100)'! TURB LENGTH SCALE :',rbuf1(11)/e3tot,rbuf2(11),rbuf3(11)
198  WRITE(ipt,100)'! KM :',rbuf1(12)/e3tot,rbuf2(12),rbuf3(12)
199  WRITE(ipt,100)'! KQ :',rbuf1(13)/e3tot,rbuf2(13),rbuf3(13)
200  WRITE(ipt,100)'! KH :',rbuf1(14)/e3tot,rbuf2(14),rbuf3(14)
201  WRITE(ipt,100)'! DENSITY :',rbuf1(15)/e3tot,rbuf2(15),rbuf3(15)
202  WRITE(ipt,100)'! DEPTH :',rbuf1(16)/estot,rbuf2(16),rbuf3(16)
203 
204  WRITE(ipt,* )'! WET/DRY INFO : #WET #DRY %WET'
205  IF(rbuf1(17) == float(ngl))THEN
206  WRITE(ipt,*)'! NO DRY POINTS '
207  ELSE
208  WRITE(ipt,101)'! WET/DRY DATA :',int(rbuf1(17)),ngl-int(rbuf1(17)),100.*rbuf1(17)/float(ngl)
209  END IF
210 
211  END IF
212 
213 
214  DEALLOCATE(q21,q2l1,l1)
215  DEALLOCATE(kh1,kq1)
216 
217  RETURN
218 100 FORMAT(1x,a26,3f12.6)
219 101 FORMAT(1x,a26,2i12,f12.6)
real(sp), dimension(:,:), allocatable, target q2
Definition: mod_main.f90:1290
real(sp), dimension(:,:), allocatable, target km
Definition: mod_main.f90:1293
real(sp), dimension(:), allocatable, target va
Definition: mod_main.f90:1104
real(sp), dimension(:), allocatable, target d
Definition: mod_main.f90:1132
real(sp), dimension(:), allocatable, target d1
Definition: mod_main.f90:1116
logical msr
Definition: mod_main.f90:101
real(sp), dimension(:,:), allocatable, target s
Definition: mod_main.f90:1288
real(sp), dimension(:), allocatable, target h
Definition: mod_main.f90:1131
real(sp), dimension(:), allocatable, target el
Definition: mod_main.f90:1134
real(sp), dimension(:,:), allocatable, target v
Definition: mod_main.f90:1269
real(sp), dimension(:,:), allocatable, target rho1
Definition: mod_main.f90:1309
real(sp), dimension(:,:), allocatable, target t1
Definition: mod_main.f90:1307
real(sp), dimension(:,:), allocatable, target rho
Definition: mod_main.f90:1284
integer m
Definition: mod_main.f90:56
real(sp), dimension(:,:), allocatable, target q2l
Definition: mod_main.f90:1292
real(sp), dimension(:,:), allocatable, target u
Definition: mod_main.f90:1268
real(sp), dimension(:,:), allocatable, target s1
Definition: mod_main.f90:1308
real(sp), dimension(:), allocatable, target el1
Definition: mod_main.f90:1118
integer n
Definition: mod_main.f90:55
integer, dimension(:,:), allocatable, target nv
Definition: mod_main.f90:1018
real(sp), dimension(:), allocatable, target ua
Definition: mod_main.f90:1103
real(sp), dimension(:,:), allocatable, target l
Definition: mod_main.f90:1291
real(sp), dimension(:,:), allocatable, target kh
Definition: mod_main.f90:1294
integer, dimension(:), allocatable iswetc
Definition: mod_wd.f90:52
real(sp), dimension(:), allocatable, target h1
Definition: mod_main.f90:1115
real(sp), dimension(:,:), allocatable, target t
Definition: mod_main.f90:1286
integer ipt
Definition: mod_main.f90:922
real(sp), dimension(:,:), allocatable, target km1
Definition: mod_main.f90:1299
integer kbm1
Definition: mod_main.f90:65
integer ngl
Definition: mod_main.f90:49
real(sp), dimension(:,:), allocatable, target kq
Definition: mod_main.f90:1295
Here is the caller graph for this function:

◆ report_now()

logical function mod_report::report_now ( integer(itime)  IINT,
integer  IREPORT 
)

Definition at line 46 of file mod_report.f90.

46  USE mod_time
47  IMPLICIT NONE
48  LOGICAL :: REPORT_NOW
49  INTEGER(ITIME) :: IINT
50  INTEGER :: IREPORT
51  INTEGER(ITIME) :: IREPORT_DB
52 
53  report_now = .false.
54  IF(ireport == 0) return
55  ireport_db = ireport
56  IF(mod(iint,ireport_db) /= 0) return
57 
58  report_now = .true.
59 
integer(itime) iint
Definition: mod_main.f90:850
integer ireport
Definition: mod_main.f90:185
Here is the caller graph for this function: