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