File indexing completed on 2025-11-04 06:08:41 UTC
view on githubraw file Latest commit 78dc053d on 2025-11-03 22:25:45 UTC
c90c060abd Ed H*0001 #include "DIAG_OPTIONS.h"
ab685e6b35 Jean*0002
c83206cd4e Jean*0003
0004
0005
8ce775c441 Jean*0006 SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myIter, myThid )
c90c060abd Ed H*0007
c83206cd4e Jean*0008
0009
0010
0011
0012
0013
0014
0015
0016 IMPLICIT NONE
0017
2e735ea21e Andr*0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
d316948822 Andr*0020 #include "PARAMS.h"
2e735ea21e Andr*0021 #include "GRID.h"
0ef6d0142d Jean*0022 #include "SURFACE.h"
5b0d80d77c Jean*0023 #include "DYNVARS.h"
0024 #include "NH_VARS.h"
8ce775c441 Jean*0025 #ifdef ALLOW_GENERIC_ADVDIFF
0026 # include "GAD.h"
0027 #endif
2e735ea21e Andr*0028
c83206cd4e Jean*0029
0030
0031
0032
0033
0034
7b936be362 Andr*0035
8ce775c441 Jean*0036
c83206cd4e Jean*0037
9ba8ef70b1 Jean*0038 INTEGER selectVars
8ce775c441 Jean*0039 INTEGER myIter
9ba8ef70b1 Jean*0040 INTEGER myThid
ab685e6b35 Jean*0041
0042 #ifdef ALLOW_DIAGNOSTICS
c83206cd4e Jean*0043
0044
337bea277a Jean*0045 LOGICAL DIAGNOSTICS_IS_ON
0046 EXTERNAL DIAGNOSTICS_IS_ON
0047 _RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
0048 _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
06349ecfd7 Jean*0049 _RL tmpU (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0050 _RL tmpV (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
84d01e10aa Jean*0051 _RL tmpFac, uBarC, vBarC
b21f2d376f Jean*0052 #ifdef ALLOW_FIZHI
d316948822 Andr*0053 _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
b21f2d376f Jean*0054 #endif
8ce775c441 Jean*0055 #ifdef ALLOW_ADAMSBASHFORTH_3
0056 INTEGER m1
0057 #endif
0058 INTEGER i,j,k,bi,bj
337bea277a Jean*0059 INTEGER km1
9ba8ef70b1 Jean*0060
7b936be362 Andr*0061 IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
c83206cd4e Jean*0062
0063
62f9c88755 Jean*0064 CALL DIAGNOSTICS_FILL(etaN, 'ETAN ',0, 1,0,1,1,myThid)
ee04343829 Andr*0065
0066 IF ( DIAGNOSTICS_IS_ON('RSURF ',myThid) ) THEN
0067 DO bj = myByLo(myThid), myByHi(myThid)
0068 DO bi = myBxLo(myThid), myBxHi(myThid)
0069 DO j = 1,sNy
0070 DO i = 1,sNx
0071 tmp1k(i,j,bi,bj) = Ro_surf(i,j,bi,bj) + etaH(i,j,bi,bj)
0072 ENDDO
0073 ENDDO
0074 ENDDO
0075 ENDDO
0076 CALL DIAGNOSTICS_FILL(tmp1k,'RSURF ',0,1,0,1,1,myThid)
0077 ENDIF
0078
d9055b137d Jean*0079 CALL DIAGNOSTICS_SCALE_FILL( etaN, oneRL, 2,
62f9c88755 Jean*0080 & 'ETANSQ ',0, 1,0,1,1,myThid)
d9055b137d Jean*0081 CALL DIAGNOSTICS_SCALE_FILL( dEtaHdt, oneRL, 2,
62f9c88755 Jean*0082 & 'DETADT2 ',0, 1,0,1,1,myThid)
78dc053d11 Jean*0083
5b0d80d77c Jean*0084 #ifdef ALLOW_NONHYDROSTATIC
0085 IF ( use3Dsolver ) THEN
0086 CALL DIAGNOSTICS_FILL( phi_nh,'PHI_NH ',0,Nr,0,1,1,myThid )
0087 ENDIF
0088 #endif
9ba8ef70b1 Jean*0089
ff78c25591 Jean*0090 IF ( nonlinFreeSurf.GT.0 ) THEN
0091 CALL DIAGNOSTICS_FILL_RS( hFacW,'hFactorW',0,Nr,0,1,1,myThid )
0092 CALL DIAGNOSTICS_FILL_RS( hFacS,'hFactorS',0,Nr,0,1,1,myThid )
0093 ENDIF
0094
c83206cd4e Jean*0095 CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid)
0096 CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid)
0097 CALL DIAGNOSTICS_FILL(wVel, 'WVEL ',0,Nr,0,1,1,myThid)
9ba8ef70b1 Jean*0098
d9055b137d Jean*0099 CALL DIAGNOSTICS_SCALE_FILL( uVel, oneRL, 2,
62f9c88755 Jean*0100 & 'UVELSQ ',0,Nr,0,1,1,myThid)
d9055b137d Jean*0101 CALL DIAGNOSTICS_SCALE_FILL( vVel, oneRL, 2,
62f9c88755 Jean*0102 & 'VVELSQ ',0,Nr,0,1,1,myThid)
d9055b137d Jean*0103 CALL DIAGNOSTICS_SCALE_FILL( wVel, oneRL, 2,
62f9c88755 Jean*0104 & 'WVELSQ ',0,Nr,0,1,1,myThid)
0105
c83206cd4e Jean*0106
0107
78dc053d11 Jean*0108 IF ( DIAGNOSTICS_IS_ON('VSHEARSQ',myThid) ) THEN
0109 DO bj = myByLo(myThid), myByHi(myThid)
0110 DO bi = myBxLo(myThid), myBxHi(myThid)
0111 DO j = 1,sNy
0112 DO i = 1,sNx
0113 tmpMk(i,j,1,bi,bj) = 0. _d 0
0114 ENDDO
0115 ENDDO
0116 DO k=2,Nr
0117 DO j = 1,sNy+1
0118 DO i = 1,sNx+1
0119 tmpU(i,j) = ( uVel(i,j,k,bi,bj) - uVel(i,j,k-1,bi,bj) )
0120
0121 tmpV(i,j) = ( vVel(i,j,k,bi,bj) - vVel(i,j,k-1,bi,bj) )
0122
0123 ENDDO
0124 ENDDO
0125 DO j = 1,sNy
0126 DO i = 1,sNx
0127 tmpMk(i,j,k,bi,bj) = recip_drC(k)*recip_drC(k)*halfRL
0128 & *( ( tmpU(i,j)*tmpU(i,j) + tmpU(i+1,j)*tmpU(i+1,j) )
0129 & + ( tmpV(i,j)*tmpV(i,j) + tmpV(i,j+1)*tmpV(i,j+1) )
0130 & )
0131 ENDDO
0132 ENDDO
0133 ENDDO
0134 ENDDO
0135 ENDDO
0136 CALL DIAGNOSTICS_FILL(tmpMk,'VSHEARSQ',0,Nr,0,1,1,myThid)
0137 ENDIF
0138
06349ecfd7 Jean*0139 IF ( DIAGNOSTICS_IS_ON('UE_VEL_C',myThid) .OR.
0140 & DIAGNOSTICS_IS_ON('VN_VEL_C',myThid) .OR.
0141 & DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
c83206cd4e Jean*0142 DO bj = myByLo(myThid), myByHi(myThid)
0143 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0144 DO k=1,Nr
337bea277a Jean*0145 DO j = 1,sNy
c83206cd4e Jean*0146 DO i = 1,sNx
84d01e10aa Jean*0147 uBarC = 0.5 _d 0
8ce775c441 Jean*0148 & *(uVel(i,j,k,bi,bj)+uVel(i+1,j,k,bi,bj))
84d01e10aa Jean*0149 vBarC = 0.5 _d 0
8ce775c441 Jean*0150 & *(vVel(i,j,k,bi,bj)+vVel(i,j+1,k,bi,bj))
06349ecfd7 Jean*0151 tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC
0152 & -angleSinC(i,j,bi,bj)*vBarC
0153 tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC
0154 & +angleCosC(i,j,bi,bj)*vBarC
8ce775c441 Jean*0155 tmpMk(i,j,k,bi,bj) = tmpU(i,j)*tmpV(i,j)
c83206cd4e Jean*0156 ENDDO
337bea277a Jean*0157 ENDDO
06349ecfd7 Jean*0158 CALL DIAGNOSTICS_FILL(tmpU,'UE_VEL_C',k,1,2,bi,bj,myThid)
0159 CALL DIAGNOSTICS_FILL(tmpV,'VN_VEL_C',k,1,2,bi,bj,myThid)
c83206cd4e Jean*0160 ENDDO
337bea277a Jean*0161 ENDDO
c83206cd4e Jean*0162 ENDDO
0163 CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
0164 ENDIF
9ba8ef70b1 Jean*0165
c83206cd4e Jean*0166 IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
0167 DO bj = myByLo(myThid), myByHi(myThid)
0168 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0169 DO k=1,Nr
c83206cd4e Jean*0170 DO j = 1,sNy+1
0171 DO i = 1,sNx+1
8ce775c441 Jean*0172 tmpMk(i,j,k,bi,bj) = 0.25 _d 0
0173 & *(uVel(i,j-1,k,bi,bj)+uVel(i,j,k,bi,bj))
0174 & *(vVel(i-1,j,k,bi,bj)+vVel(i,j,k,bi,bj))
c83206cd4e Jean*0175 ENDDO
337bea277a Jean*0176 ENDDO
c83206cd4e Jean*0177 ENDDO
337bea277a Jean*0178 ENDDO
c83206cd4e Jean*0179 ENDDO
0180 CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)
0181 ENDIF
9ba8ef70b1 Jean*0182
6df3568a20 Jean*0183 IF ( DIAGNOSTICS_IS_ON('WU_VEL ',myThid) ) THEN
0184 DO bj = myByLo(myThid), myByHi(myThid)
0185 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0186 DO k=1,Nr
6df3568a20 Jean*0187 km1 = MAX(k-1,1)
0188 DO j = 1,sNy
0189 DO i = 1,sNx+1
8ce775c441 Jean*0190 tmpMk(i,j,k,bi,bj) = 0.25 _d 0
0191 & *(uVel(i,j,km1,bi,bj)+uVel(i,j,k,bi,bj))
0192 & *(wVel(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
0193 & +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
6df3568a20 Jean*0194 & )*recip_rAw(i,j,bi,bj)
0195 ENDDO
0196 ENDDO
0197 ENDDO
0198 ENDDO
0199 ENDDO
0200 CALL DIAGNOSTICS_FILL(tmpMk,'WU_VEL ',0,Nr,0,1,1,myThid)
0201 ENDIF
0202
0203 IF ( DIAGNOSTICS_IS_ON('WV_VEL ',myThid) ) THEN
0204 DO bj = myByLo(myThid), myByHi(myThid)
0205 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0206 DO k=1,Nr
6df3568a20 Jean*0207 km1 = MAX(k-1,1)
0208 DO j = 1,sNy+1
0209 DO i = 1,sNx
8ce775c441 Jean*0210 tmpMk(i,j,k,bi,bj) = 0.25 _d 0
0211 & *(vVel(i,j,km1,bi,bj)+vVel(i,j,k,bi,bj))
0212 & *(wVel(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
0213 & +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
6df3568a20 Jean*0214 & )*recip_rAs(i,j,bi,bj)
0215 ENDDO
0216 ENDDO
0217 ENDDO
0218 ENDDO
0219 ENDDO
0220 CALL DIAGNOSTICS_FILL(tmpMk,'WV_VEL ',0,Nr,0,1,1,myThid)
0221 ENDIF
0222
c83206cd4e Jean*0223
0224
0225 IF ( DIAGNOSTICS_IS_ON('UVELTH ',myThid) ) THEN
0226 DO bj = myByLo(myThid), myByHi(myThid)
0227 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0228 DO k=1,Nr
337bea277a Jean*0229 DO j = 1,sNy
c83206cd4e Jean*0230 DO i = 1,sNx+1
8ce775c441 Jean*0231 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
0232 & *(theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
c83206cd4e Jean*0233 ENDDO
337bea277a Jean*0234 ENDDO
c83206cd4e Jean*0235 ENDDO
337bea277a Jean*0236 ENDDO
c83206cd4e Jean*0237 ENDDO
0238 CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
0239 ENDIF
9ba8ef70b1 Jean*0240
c83206cd4e Jean*0241 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
0242 DO bj = myByLo(myThid), myByHi(myThid)
0243 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0244 DO k=1,Nr
c83206cd4e Jean*0245 DO j = 1,sNy+1
0246 DO i = 1,sNx
8ce775c441 Jean*0247 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
0248 & *(theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
c83206cd4e Jean*0249 ENDDO
337bea277a Jean*0250 ENDDO
c83206cd4e Jean*0251 ENDDO
337bea277a Jean*0252 ENDDO
c83206cd4e Jean*0253 ENDDO
0254 CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
0255 ENDIF
9ba8ef70b1 Jean*0256
c83206cd4e Jean*0257 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
0258 DO bj = myByLo(myThid), myByHi(myThid)
0259 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0260 DO k=1,Nr
47146cb74f Ed H*0261 km1 = MAX(k-1,1)
337bea277a Jean*0262 DO j = 1,sNy
c83206cd4e Jean*0263 DO i = 1,sNx
8ce775c441 Jean*0264 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
0265 & *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
c83206cd4e Jean*0266 ENDDO
337bea277a Jean*0267 ENDDO
c83206cd4e Jean*0268 ENDDO
337bea277a Jean*0269 ENDDO
c83206cd4e Jean*0270 ENDDO
0271 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
0272 ENDIF
9ba8ef70b1 Jean*0273
c83206cd4e Jean*0274 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
0275 DO bj = myByLo(myThid), myByHi(myThid)
0276 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0277 DO k=1,Nr
337bea277a Jean*0278 DO j = 1,sNy
c83206cd4e Jean*0279 DO i = 1,sNx+1
8ce775c441 Jean*0280 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
0281 & *(salt(i,j,k,bi,bj)+salt(i-1,j,k,bi,bj))
c83206cd4e Jean*0282 ENDDO
337bea277a Jean*0283 ENDDO
c83206cd4e Jean*0284 ENDDO
337bea277a Jean*0285 ENDDO
c83206cd4e Jean*0286 ENDDO
0287 CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
0288 ENDIF
9ba8ef70b1 Jean*0289
c83206cd4e Jean*0290 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
0291 DO bj = myByLo(myThid), myByHi(myThid)
0292 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0293 DO k=1,Nr
c83206cd4e Jean*0294 DO j = 1,sNy+1
0295 DO i = 1,sNx
8ce775c441 Jean*0296 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
0297 & *(salt(i,j,k,bi,bj)+salt(i,j-1,k,bi,bj))
c83206cd4e Jean*0298 ENDDO
337bea277a Jean*0299 ENDDO
c83206cd4e Jean*0300 ENDDO
337bea277a Jean*0301 ENDDO
c83206cd4e Jean*0302 ENDDO
0303 CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
0304 ENDIF
2e735ea21e Andr*0305
c83206cd4e Jean*0306 IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
0307 DO bj = myByLo(myThid), myByHi(myThid)
0308 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0309 DO k=1,Nr
47146cb74f Ed H*0310 km1 = MAX(k-1,1)
337bea277a Jean*0311 DO j = 1,sNy
c83206cd4e Jean*0312 DO i = 1,sNx
8ce775c441 Jean*0313 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
0314 & *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
c83206cd4e Jean*0315 ENDDO
337bea277a Jean*0316 ENDDO
c83206cd4e Jean*0317 ENDDO
337bea277a Jean*0318 ENDDO
c83206cd4e Jean*0319 ENDDO
0320 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
0321 ENDIF
9ba8ef70b1 Jean*0322
fefa9e1c60 Andr*0323 IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
0324 DO bj = myByLo(myThid), myByHi(myThid)
0325 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0326 DO k=1,Nr
fefa9e1c60 Andr*0327 DO j = 1,sNy
0328 DO i = 1,sNx+1
8ce775c441 Jean*0329 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
0330 & *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i-1,j,k,bi,bj))
fefa9e1c60 Andr*0331 ENDDO
0332 ENDDO
0333 ENDDO
0334 ENDDO
0335 ENDDO
0336 CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
0337 ENDIF
9ba8ef70b1 Jean*0338
fefa9e1c60 Andr*0339 IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
0340 DO bj = myByLo(myThid), myByHi(myThid)
0341 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0342 DO k=1,Nr
fefa9e1c60 Andr*0343 DO j = 1,sNy+1
0344 DO i = 1,sNx
8ce775c441 Jean*0345 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
0346 & *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i,j-1,k,bi,bj))
fefa9e1c60 Andr*0347 ENDDO
0348 ENDDO
0349 ENDDO
0350 ENDDO
0351 ENDDO
0352 CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
0353 ENDIF
9ba8ef70b1 Jean*0354
ee8b184348 Jean*0355 IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
e4ea461a62 Andr*0356 DO bj = myByLo(myThid), myByHi(myThid)
0357 DO bi = myBxLo(myThid), myBxHi(myThid)
57630d677b Jean*0358 DO j = 1,sNy
0359 DO i = 1,sNx
0360 tmp1k(i,j,bi,bj) = R_low(i,j,bi,bj)
0361 ENDDO
0362 ENDDO
0363 DO k = Nr,1,-1
0364 DO j = 1,sNy
0365 DO i = 1,sNx
0366 tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj)
b6c3833a19 Jean*0367 & + (rF(k+1)-rC(k))*hFacC(i,j,k,bi,bj)*rkSign
4c2a1393c6 Jean*0368
0369
57630d677b Jean*0370 tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj)
0371 & + drF(k)*hFacC(i,j,k,bi,bj)
0372 ENDDO
0373 ENDDO
0374 ENDDO
e4ea461a62 Andr*0375 ENDDO
0376 ENDDO
ee8b184348 Jean*0377 CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
e4ea461a62 Andr*0378 ENDIF
0379
7b936be362 Andr*0380
0381
0382
0383
d9055b137d Jean*0384 tmpFac = -86400. _d 0/deltaTMom
0385 CALL DIAGNOSTICS_SCALE_FILL( uVel, tmpFac, 1,
0386 & 'TOTUTEND',0,Nr,0,1,1,myThid )
0387 CALL DIAGNOSTICS_SCALE_FILL( vVel, tmpFac, 1,
0388 & 'TOTVTEND',0,Nr,0,1,1,myThid )
9ba8ef70b1 Jean*0389
7b936be362 Andr*0390 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
0391 DO bj = myByLo(myThid), myByHi(myThid)
0392 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0393 DO k=1,Nr
d9055b137d Jean*0394 tmpFac = -86400. _d 0/dTtracerLev(k)
7b936be362 Andr*0395 DO j = 1,sNy
0396 DO i = 1,sNx
d9055b137d Jean*0397 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
7b936be362 Andr*0398 ENDDO
0399 ENDDO
0400 ENDDO
0401 ENDDO
0402 ENDDO
0403 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
edd113ba3f Ryan*0404 #ifdef ALLOW_LAYERS
0405 IF ( useLayers ) THEN
0406 CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,0,1,1,myThid)
0407 ENDIF
ff78c25591 Jean*0408 #endif /* ALLOW_LAYERS */
7b936be362 Andr*0409 ENDIF
9ba8ef70b1 Jean*0410
7b936be362 Andr*0411 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
0412 DO bj = myByLo(myThid), myByHi(myThid)
0413 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0414 DO k=1,Nr
d9055b137d Jean*0415 tmpFac = -86400. _d 0/dTtracerLev(k)
7b936be362 Andr*0416 DO j = 1,sNy
0417 DO i = 1,sNx
d9055b137d Jean*0418 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
7b936be362 Andr*0419 ENDDO
0420 ENDDO
0421 ENDDO
0422 ENDDO
0423 ENDDO
0424 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
edd113ba3f Ryan*0425 #ifdef ALLOW_LAYERS
0426 IF ( useLayers ) THEN
0427 CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,0,1,1,myThid)
0428 ENDIF
0429 #endif /* ALLOW_LAYERS */
7b936be362 Andr*0430 ENDIF
0431
c83206cd4e Jean*0432
337bea277a Jean*0433 ENDIF
c83206cd4e Jean*0434
0435
0436
0437 IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
0438
0439
ff78c25591 Jean*0440 IF ( nonlinFreeSurf.GT.0 ) THEN
0441 CALL DIAGNOSTICS_FILL_RS( hFacC,'hFactorC',0,Nr,0,1,1,myThid )
0442 ENDIF
0443
c83206cd4e Jean*0444 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
0445 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
62f9c88755 Jean*0446
d316948822 Andr*0447 #ifdef ALLOW_FIZHI
8ce775c441 Jean*0448 IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM ',myThid) ) THEN
d316948822 Andr*0449 kappa = getcon('KAPPA')
8ce775c441 Jean*0450 DO bj = myByLo(myThid), myByHi(myThid)
0451 DO bi = myBxLo(myThid), myBxHi(myThid)
0452 DO j = 1,sNy
0453 DO i = 1,sNx
0454 DO k = 1,Nr
0455 dummy1 = theta(i,j,k,bi,bj) * ((rC(k)/100.)/1000.)**kappa
0456 dummy2 = rC(k) / 100.
0457 CALL QSAT(dummy1,dummy2,dummy3,dummy4,.false.)
0458 tmpMk(i,j,k,bi,bj) = hFacC(i,j,k,bi,bj)
0459 & *salt(i,j,k,bi,bj)*100. / dummy3
0460 ENDDO
0461 ENDDO
0462 ENDDO
0463 ENDDO
0464 ENDDO
d316948822 Andr*0465 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
0466 ENDIF
0467 #endif /* ALLOW_FIZHI */
0468
d9055b137d Jean*0469 CALL DIAGNOSTICS_SCALE_FILL( theta, oneRL, 2,
62f9c88755 Jean*0470 & 'THETASQ ',0,Nr,0,1,1,myThid)
d9055b137d Jean*0471 CALL DIAGNOSTICS_SCALE_FILL( salt, oneRL, 2,
62f9c88755 Jean*0472 & 'SALTSQ ',0,Nr,0,1,1,myThid)
9ba8ef70b1 Jean*0473
8ce775c441 Jean*0474 #ifdef ALLOW_GENERIC_ADVDIFF
0475 # ifdef ALLOW_ADAMSBASHFORTH_3
0476 IF ( selectVars.EQ.1 ) THEN
0477
0478 m1 = 1 + MOD(myIter,2)
0479 ELSE
0480
0481 m1 = 1 + MOD(myIter+1,2)
0482 ENDIF
0483 IF ( AdamsBashforthGt )
0484 & CALL DIAGNOSTICS_FILL( gtNm(1-OLx,1-OLy,1,1,1,m1),
0485 & 'gTinAB ',0,Nr,0,1,1,myThid )
0486 IF ( AdamsBashforthGs )
0487 & CALL DIAGNOSTICS_FILL( gsNm(1-OLx,1-OLy,1,1,1,m1),
0488 & 'gSinAB ',0,Nr,0,1,1,myThid )
0489 # else /* ALLOW_ADAMSBASHFORTH_3 */
0490 IF ( AdamsBashforthGt )
0491 & CALL DIAGNOSTICS_FILL( gtNm1,'gTinAB ',0,Nr,0,1,1,myThid )
0492 IF ( AdamsBashforthGs )
0493 & CALL DIAGNOSTICS_FILL( gsNm1,'gSinAB ',0,Nr,0,1,1,myThid )
0494 # endif /* ALLOW_ADAMSBASHFORTH_3 */
0495 #endif /* ALLOW_GENERIC_ADVDIFF */
0496
b21f2d376f Jean*0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
9ba8ef70b1 Jean*0509
b21f2d376f Jean*0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
c83206cd4e Jean*0522
9ba8ef70b1 Jean*0523 IF ( fluidIsWater .AND.
0524 & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
0525 & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
23753a76a9 Dimi*0526 DO bj = myByLo(myThid), myByHi(myThid)
0527 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0528 DO k=1,Nr
23753a76a9 Dimi*0529 DO j = 1,sNy
0530 DO i = 1,sNx
8ce775c441 Jean*0531 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
23753a76a9 Dimi*0532 ENDDO
0533 ENDDO
0534 ENDDO
0535 ENDDO
0536 ENDDO
9ba8ef70b1 Jean*0537 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
d9055b137d Jean*0538 CALL DIAGNOSTICS_SCALE_FILL( tmpMk, oneRL, 2,
9ba8ef70b1 Jean*0539 & 'SALTSQan',0,Nr,0,1,1,myThid)
23753a76a9 Dimi*0540 ENDIF
9ba8ef70b1 Jean*0541
c83206cd4e Jean*0542
0543
0544 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
0545 DO bj = myByLo(myThid), myByHi(myThid)
0546 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0547 DO k=1,Nr
337bea277a Jean*0548 DO j = 1,sNy
e2067c2922 Jean*0549 DO i = 1,sNx+1
8ce775c441 Jean*0550 tmpMk(i,j,k,bi,bj)
0551 & = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
337bea277a Jean*0552 ENDDO
0553 ENDDO
c83206cd4e Jean*0554 ENDDO
337bea277a Jean*0555 ENDDO
c83206cd4e Jean*0556 ENDDO
0557 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
0558 ENDIF
2e735ea21e Andr*0559
c83206cd4e Jean*0560 IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
0561 DO bj = myByLo(myThid), myByHi(myThid)
0562 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0563 DO k=1,Nr
e2067c2922 Jean*0564 DO j = 1,sNy+1
337bea277a Jean*0565 DO i = 1,sNx
8ce775c441 Jean*0566 tmpMk(i,j,k,bi,bj)
0567 & = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
337bea277a Jean*0568 ENDDO
0569 ENDDO
c83206cd4e Jean*0570 ENDDO
337bea277a Jean*0571 ENDDO
c83206cd4e Jean*0572 ENDDO
0573 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
0574 ENDIF
2e735ea21e Andr*0575
c83206cd4e Jean*0576 CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
0577
0578 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
0579 DO bj = myByLo(myThid), myByHi(myThid)
0580 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0581 DO k=1,Nr
337bea277a Jean*0582 DO j = 1,sNy
c83206cd4e Jean*0583 DO i = 1,sNx+1
8ce775c441 Jean*0584 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
0585 & *(theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
0586 & * hFacW(i,j,k,bi,bj)
c83206cd4e Jean*0587 ENDDO
337bea277a Jean*0588 ENDDO
c83206cd4e Jean*0589 ENDDO
337bea277a Jean*0590 ENDDO
c83206cd4e Jean*0591 ENDDO
0592 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
0593 ENDIF
2e735ea21e Andr*0594
c83206cd4e Jean*0595 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
0596 DO bj = myByLo(myThid), myByHi(myThid)
0597 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0598 DO k=1,Nr
c83206cd4e Jean*0599 DO j = 1,sNy+1
0600 DO i = 1,sNx
8ce775c441 Jean*0601 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
0602 & *(theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
0603 & * hFacS(i,j,k,bi,bj)
c83206cd4e Jean*0604 ENDDO
337bea277a Jean*0605 ENDDO
c83206cd4e Jean*0606 ENDDO
337bea277a Jean*0607 ENDDO
c83206cd4e Jean*0608 ENDDO
0609 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
0610 ENDIF
9ba8ef70b1 Jean*0611
c83206cd4e Jean*0612 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
0613 DO bj = myByLo(myThid), myByHi(myThid)
0614 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0615 DO k=1,Nr
c83206cd4e Jean*0616 km1 = MAX(k-1,1)
337bea277a Jean*0617 DO j = 1,sNy
c83206cd4e Jean*0618 DO i = 1,sNx
8ce775c441 Jean*0619 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
0620 & *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
c83206cd4e Jean*0621 ENDDO
0622 ENDDO
0623 ENDDO
0624 ENDDO
0625 ENDDO
0626 CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
0627 ENDIF
0628
0629 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
0630 DO bj = myByLo(myThid), myByHi(myThid)
0631 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0632 DO k=1,Nr
c83206cd4e Jean*0633 DO j = 1,sNy
0634 DO i = 1,sNx+1
8ce775c441 Jean*0635 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
0636 & *(salt(i,j,k,bi,bj)+salt(i-1,j,k,bi,bj))
0637 & * hFacW(i,j,k,bi,bj)
c83206cd4e Jean*0638 ENDDO
337bea277a Jean*0639 ENDDO
c83206cd4e Jean*0640 ENDDO
337bea277a Jean*0641 ENDDO
c83206cd4e Jean*0642 ENDDO
0643 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
0644 ENDIF
2e735ea21e Andr*0645
c83206cd4e Jean*0646 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
0647 DO bj = myByLo(myThid), myByHi(myThid)
0648 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0649 DO k=1,Nr
c83206cd4e Jean*0650 DO j = 1,sNy+1
0651 DO i = 1,sNx
8ce775c441 Jean*0652 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
0653 & *(salt(i,j,k,bi,bj)+salt(i,j-1,k,bi,bj))
0654 & * hFacS(i,j,k,bi,bj)
c83206cd4e Jean*0655 ENDDO
337bea277a Jean*0656 ENDDO
c83206cd4e Jean*0657 ENDDO
337bea277a Jean*0658 ENDDO
c83206cd4e Jean*0659 ENDDO
0660 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
0661 ENDIF
9ba8ef70b1 Jean*0662
c83206cd4e Jean*0663 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
0664 DO bj = myByLo(myThid), myByHi(myThid)
0665 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0666 DO k=1,Nr
c83206cd4e Jean*0667 km1 = MAX(k-1,1)
0668 DO j = 1,sNy
0669 DO i = 1,sNx
8ce775c441 Jean*0670 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
0671 & *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
c83206cd4e Jean*0672 ENDDO
0673 ENDDO
0674 ENDDO
0675 ENDDO
0676 ENDDO
0677 CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
0678 ENDIF
9ba8ef70b1 Jean*0679
c83206cd4e Jean*0680
0681 ENDIF
0682
7b936be362 Andr*0683 IF ( selectVars.EQ.4 ) THEN
0684
3ab2854677 Dimi*0685
d9055b137d Jean*0686
7b936be362 Andr*0687
d9055b137d Jean*0688 tmpFac = 86400. _d 0/deltaTMom
0689 DO bj = myByLo(myThid), myByHi(myThid)
0690 DO bi = myBxLo(myThid), myBxHi(myThid)
0691 CALL DIAGNOSTICS_SCALE_FILL( uVel, tmpFac, 1,
0692 & 'TOTUTEND',0,Nr,-1,bi,bj,myThid )
0693 CALL DIAGNOSTICS_SCALE_FILL( vVel, tmpFac, 1,
0694 & 'TOTVTEND',0,Nr,-1,bi,bj,myThid )
7b936be362 Andr*0695 ENDDO
d9055b137d Jean*0696 ENDDO
9ba8ef70b1 Jean*0697
7b936be362 Andr*0698 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
0699 DO bj = myByLo(myThid), myByHi(myThid)
0700 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0701 DO k=1,Nr
d9055b137d Jean*0702 tmpFac = 86400. _d 0/dTtracerLev(k)
7b936be362 Andr*0703 DO j = 1,sNy
0704 DO i = 1,sNx
d9055b137d Jean*0705 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
7b936be362 Andr*0706 ENDDO
0707 ENDDO
0708 ENDDO
0709 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
edd113ba3f Ryan*0710 #ifdef ALLOW_LAYERS
0711 IF ( useLayers ) THEN
0712 CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,-1,bi,bj,myThid)
0713 ENDIF
ff78c25591 Jean*0714 #endif /* ALLOW_LAYERS */
7b936be362 Andr*0715 ENDDO
0716 ENDDO
0717 ENDIF
9ba8ef70b1 Jean*0718
7b936be362 Andr*0719 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
0720 DO bj = myByLo(myThid), myByHi(myThid)
0721 DO bi = myBxLo(myThid), myBxHi(myThid)
8ce775c441 Jean*0722 DO k=1,Nr
d9055b137d Jean*0723 tmpFac = 86400. _d 0/dTtracerLev(k)
7b936be362 Andr*0724 DO j = 1,sNy
0725 DO i = 1,sNx
d9055b137d Jean*0726 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
7b936be362 Andr*0727 ENDDO
0728 ENDDO
0729 ENDDO
0730 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
edd113ba3f Ryan*0731 #ifdef ALLOW_LAYERS
0732 IF ( useLayers ) THEN
0733 CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,-1,bi,bj,myThid)
0734 ENDIF
ff78c25591 Jean*0735 #endif /* ALLOW_LAYERS */
7b936be362 Andr*0736 ENDDO
0737 ENDDO
0738 ENDIF
0739
0740
0741 ENDIF
0742
ab685e6b35 Jean*0743 #endif /* ALLOW_DIAGNOSTICS */
9ba8ef70b1 Jean*0744
0745 RETURN
337bea277a Jean*0746 END