49 INTEGER(ITIME) :: iint
51 INTEGER(ITIME) :: ireport_db
54 IF(ireport == 0)
return 56 IF(
mod(iint,ireport_db) /= 0)
return 62 SUBROUTINE report(INFO_STRING)
70 CHARACTER(LEN=*) :: INFO_STRING
71 INTEGER :: E3TOT,ESTOT,IERR
72 REAL(DP),
DIMENSION(22) :: SBUF,RBUF1,RBUF2,RBUF3
74 REAL(SP),
ALLOCATABLE :: AICE1(:), VICE1(:)
75 REAL(SP),
ALLOCATABLE :: Q21(:,:),Q2L1(:,:),L1(:,:)
76 REAL(SP),
ALLOCATABLE :: KH1(:,:),KQ1(:,:)
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
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)
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
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))
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))
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))
178 IF(len_trim(info_string) /= 0)
THEN 179 WRITE(ipt,* )
'!===================',trim(info_string),
'======================' 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)
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)
204 WRITE(ipt,* )
'! WET/DRY INFO : #WET #DRY %WET' 205 IF(rbuf1(17) == float(ngl))
THEN 206 WRITE(ipt,*)
'! NO DRY POINTS ' 208 WRITE(ipt,101)
'! WET/DRY DATA :',int(rbuf1(17)),ngl-int(rbuf1(17)),100.*rbuf1(17)/float(ngl)
214 DEALLOCATE(q21,q2l1,l1)
218 100
FORMAT(1x,a26,3f12.6)
219 101
FORMAT(1x,a26,2i12,f12.6)
real(sp), dimension(:,:), allocatable, target q2
real(sp), dimension(:,:), allocatable, target km
real(sp), dimension(:), allocatable, target va
subroutine report(INFO_STRING)
real(sp), dimension(:), allocatable, target d
real(sp), dimension(:), allocatable, target d1
real(sp), dimension(:,:), allocatable, target s
real(sp), dimension(:), allocatable, target h
real(sp), dimension(:), allocatable, target el
real(sp), dimension(:,:), allocatable, target v
real(sp), dimension(:,:), allocatable, target rho1
real(sp), dimension(:,:), allocatable, target t1
real(sp), dimension(:,:), allocatable, target rho
real(sp), dimension(:,:), allocatable, target q2l
real(sp), dimension(:,:), allocatable, target u
real(sp), dimension(:,:), allocatable, target s1
real(sp), dimension(:), allocatable, target el1
integer, dimension(:,:), allocatable, target nv
logical function report_now(IINT, IREPORT)
real(sp), dimension(:), allocatable, target ua
real(sp), dimension(:,:), allocatable, target l
real(sp), dimension(:,:), allocatable, target kh
integer, dimension(:), allocatable iswetc
real(sp), dimension(:), allocatable, target h1
real(sp), dimension(:,:), allocatable, target t
real(sp), dimension(:,:), allocatable, target km1
real(sp), dimension(:,:), allocatable, target kq