90 & LBi, UBi, LBj, UBj, &
91 & IminS, ImaxS, JminS, JmaxS, &
97 & umask_wet, vmask_wet, &
99 & Hz, pmon_u, pnom_v, pm, pn, &
119 integer,
intent(in) :: ng, tile
120 integer,
intent(in) :: LBi, UBi, LBj, UBj
121 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
122 integer,
intent(in) :: nrhs, nstp, nnew
126 real(r8),
intent(in) :: umask(LBi:,LBj:)
127 real(r8),
intent(in) :: vmask(LBi:,LBj:)
130 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
131 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
134 real(r8),
intent(in) :: diff3d_r(LBi:,LBj:,:)
136 real(r8),
intent(in) :: diff2(LBi:,LBj:,:)
138 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
139 real(r8),
intent(in) :: pmon_u(LBi:,LBj:)
140 real(r8),
intent(in) :: pnom_v(LBi:,LBj:)
141 real(r8),
intent(in) :: pm(LBi:,LBj:)
142 real(r8),
intent(in) :: pn(LBi:,LBj:)
144 real(r8),
intent(in) :: tclm(LBi:,LBj:,:,:)
146# ifdef DIAGNOSTICS_TS
147 real(r8),
intent(inout) :: DiaTwrk(LBi:,LBj:,:,:,:)
149 real(r8),
intent(inout) :: t(LBi:,LBj:,:,:,:)
152 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
153 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
156 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
157 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
160 real(r8),
intent(in) :: diff3d_r(LBi:UBi,LBj:UBj,N(ng))
162 real(r8),
intent(in) :: diff2(LBi:UBi,LBj:UBj,NT(ng))
164 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
165 real(r8),
intent(in) :: pmon_u(LBi:UBi,LBj:UBj)
166 real(r8),
intent(in) :: pnom_v(LBi:UBi,LBj:UBj)
167 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
168 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
170 real(r8),
intent(in) :: tclm(LBi:UBi,LBj:UBj,N(ng),NT(ng))
172# ifdef DIAGNOSTICS_TS
173 real(r8),
intent(inout) :: DiaTwrk(LBi:UBi,LBj:UBj,N(ng),NT(ng), &
176 real(r8),
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
181 integer :: i, itrc, j, k
183 real(r8) :: cff, cff1, cff2, cff3
185 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
186 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
188#include "set_bounds.h"
192#ifdef TS_MIX_STABILITY
206 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* &
209 cff=0.25_r8*(diff2(i,j,itrc)+diff2(i-1,j,itrc))* &
212#if defined TS_MIX_STABILITY
214 & (hz(i,j,k)+hz(i-1,j,k))* &
215 & (0.75_r8*(t(i ,j,k,nrhs,itrc)- &
216 & t(i-1,j,k,nrhs,itrc))+ &
217 & 0.25_r8*(t(i ,j,k,nstp,itrc)- &
218 & t(i-1,j,k,nstp,itrc)))
219#elif defined TS_MIX_CLIMA
222 & (hz(i,j,k)+hz(i-1,j,k))* &
223 & ((t(i ,j,k,nrhs,itrc)-tclm(i ,j,k,itrc))- &
224 & (t(i-1,j,k,nrhs,itrc)-tclm(i-1,j,k,itrc)))
227 & (hz(i,j,k)+hz(i-1,j,k))* &
228 & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
232 & (hz(i,j,k)+hz(i-1,j,k))* &
233 & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
236 fx(i,j)=fx(i,j)*umask(i,j)
239 fx(i,j)=fx(i,j)*umask_wet(i,j)
246 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i,j-1,k))* &
249 cff=0.25_r8*(diff2(i,j,itrc)+diff2(i,j-1,itrc))* &
252#if defined TS_MIX_STABILITY
254 & (hz(i,j,k)+hz(i,j-1,k))* &
255 & (0.75_r8*(t(i,j ,k,nrhs,itrc)- &
256 & t(i,j-1,k,nrhs,itrc))+ &
257 & 0.25_r8*(t(i,j ,k,nstp,itrc)- &
258 & t(i,j-1,k,nstp,itrc)))
259#elif defined TS_MIX_CLIMA
262 & (hz(i,j,k)+hz(i,j-1,k))* &
263 & ((t(i,j ,k,nrhs,itrc)-tclm(i,j ,k,itrc))- &
264 & (t(i,j-1,k,nrhs,itrc)-tclm(i,j-1,k,itrc)))
267 & (hz(i,j,k)+hz(i,j-1,k))* &
268 & (t(i,j,k,nrhs,itrc)-t(i,j-1,k,nrhs,itrc))
272 & (hz(i,j,k)+hz(i,j-1,k))* &
273 & (t(i,j,k,nrhs,itrc)-t(i,j-1,k,nrhs,itrc))
276 fe(i,j)=fe(i,j)*vmask(i,j)
279 fe(i,j)=fe(i,j)*vmask_wet(i,j)
288 cff=
dt(ng)*pm(i,j)*pn(i,j)
289 cff1=cff*(fx(i+1,j )-fx(i,j))
290 cff2=cff*(fe(i ,j+1)-fe(i,j))
292 t(i,j,k,nnew,itrc)=t(i,j,k,nnew,itrc)+cff3
294 diatwrk(i,j,k,itrc,
itxdif)=cff1
295 diatwrk(i,j,k,itrc,
itydif)=cff2
296 diatwrk(i,j,k,itrc,
ithdif)=cff3