94 & LBi, UBi, LBj, UBj, &
95 & IminS, ImaxS, JminS, JmaxS, &
100#ifdef WET_DRY_NOT_YET
101 & umask_wet, vmask_wet, &
104 & pmon_u, pnom_v, pm, pn, &
124 integer,
intent(in) :: ng, tile
125 integer,
intent(in) :: LBi, UBi, LBj, UBj
126 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
127 integer,
intent(in) :: nrhs, nstp, nnew
131 real(r8),
intent(in) :: umask(LBi:,LBj:)
132 real(r8),
intent(in) :: vmask(LBi:,LBj:)
134# ifdef WET_DRY_NOT_YET
135 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
136 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
139 real(r8),
intent(in) :: diff3d_r(LBi:,LBj:,:)
141 real(r8),
intent(in) :: diff2(LBi:,LBj:,:)
143 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
144 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
145 real(r8),
intent(in) :: pmon_u(LBi:,LBj:)
146 real(r8),
intent(in) :: pnom_v(LBi:,LBj:)
147 real(r8),
intent(in) :: pm(LBi:,LBj:)
148 real(r8),
intent(in) :: pn(LBi:,LBj:)
150 real(r8),
intent(in) :: tclm(LBi:,LBj:,:,:)
152# ifdef DIAGNOSTICS_TS
155 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
157 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
160 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
161 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
163# ifdef WET_DRY_NOT_YET
164 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
165 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
168 real(r8),
intent(in) :: diff3d_r(LBi:UBi,LBj:UBj,N(ng))
170 real(r8),
intent(in) :: diff2(LBi:UBi,LBj:UBj,NT(ng))
172 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
173 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
174 real(r8),
intent(in) :: pmon_u(LBi:UBi,LBj:UBj)
175 real(r8),
intent(in) :: pnom_v(LBi:UBi,LBj:UBj)
176 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
177 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
179 real(r8),
intent(in) :: tclm(LBi:UBi,LBj:UBj,N(ng),NT(ng))
181# ifdef DIAGNOSTICS_TS
185 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
187 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
192 integer :: i, itrc, j, k
194 real(r8) :: cff, cff1, tl_cff, tl_cff1
196 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FE
197 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FX
199#include "set_bounds.h"
214 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* &
217 cff=0.25_r8*(diff2(i,j,itrc)+diff2(i-1,j,itrc))* &
220#if defined TS_MIX_STABILITY
229 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
230 & (0.75_r8*(t(i ,j,k,nrhs,itrc)- &
231 & t(i-1,j,k,nrhs,itrc))+ &
232 & 0.25_r8*(t(i ,j,k,nstp,itrc)- &
233 & t(i-1,j,k,nstp,itrc)))+ &
234 & (hz(i,j,k)+hz(i-1,j,k))* &
235 & (0.75_r8*(tl_t(i ,j,k,nrhs,itrc)- &
236 & tl_t(i-1,j,k,nrhs,itrc))+ &
237 & 0.25_r8*(tl_t(i ,j,k,nstp,itrc)- &
238 & tl_t(i-1,j,k,nstp,itrc))))
239#elif defined TS_MIX_CLIMA
247 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
248 & ((t(i ,j,k,nrhs,itrc)- &
249 & tclm(i ,j,k,itrc))- &
250 & (t(i-1,j,k,nrhs,itrc)- &
251 & tclm(i-1,j,k,itrc)))+ &
252 & (hz(i,j,k)+hz(i-1,j,k))* &
253 & (tl_t(i ,j,k,nrhs,itrc)- &
254 & tl_t(i-1,j,k,nrhs,itrc)))
261 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
262 & (t(i ,j,k,nrhs,itrc)- &
263 & t(i-1,j,k,nrhs,itrc))+ &
264 & (hz(i,j,k)+hz(i-1,j,k))* &
265 & (tl_t(i ,j,k,nrhs,itrc)- &
266 & tl_t(i-1,j,k,nrhs,itrc)))
274 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
275 & (t(i ,j,k,nrhs,itrc)- &
276 & t(i-1,j,k,nrhs,itrc))+ &
277 & (hz(i,j,k)+hz(i-1,j,k))* &
278 & (tl_t(i ,j,k,nrhs,itrc)- &
279 & tl_t(i-1,j,k,nrhs,itrc)))
284 tl_fx(i,j)=tl_fx(i,j)*umask(i,j)
286#ifdef WET_DRY_NOT_YET
287 fx(i,j)=fx(i,j)*umask_wet(i,j)
294 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i,j-1,k))* &
297 cff=0.25_r8*(diff2(i,j,itrc)+diff2(i,j-1,itrc))* &
300#if defined TS_MIX_STABILITY
309 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
310 & (0.75_r8*(t(i,j ,k,nrhs,itrc)- &
311 & t(i,j-1,k,nrhs,itrc))+ &
312 & 0.25_r8*(t(i,j ,k,nstp,itrc)- &
313 & t(i,j-1,k,nstp,itrc)))+ &
314 & (hz(i,j,k)+hz(i,j-1,k))* &
315 & (0.75_r8*(tl_t(i,j ,k,nrhs,itrc)- &
316 & tl_t(i,j-1,k,nrhs,itrc))+ &
317 & 0.25_r8*(tl_t(i,j ,k,nstp,itrc)- &
318 & tl_t(i,j-1,k,nstp,itrc))))
319#elif defined TS_MIX_CLIMA
327 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
328 & ((t(i,j ,k,nrhs,itrc)- &
329 & tclm(i,j ,k,itrc))- &
330 & (t(i,j-1,k,nrhs,itrc)- &
331 & tclm(i,j-1,k,itrc)))+ &
332 & (hz(i,j,k)+hz(i,j-1,k))* &
333 & (tl_t(i,j ,k,nrhs,itrc)- &
334 & tl_t(i,j-1,k,nrhs,itrc)))
341 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
342 & (t(i,j ,k,nrhs,itrc)- &
343 & t(i,j-1,k,nrhs,itrc))+ &
344 & (hz(i,j,k)+hz(i,j-1,k))* &
345 & (tl_t(i,j ,k,nrhs,itrc)- &
346 & tl_t(i,j-1,k,nrhs,itrc)))
354 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
355 & (t(i,j ,k,nrhs,itrc)- &
356 & t(i,j-1,k,nrhs,itrc))+ &
357 & (hz(i,j,k)+hz(i,j-1,k))* &
358 & (tl_t(i,j ,k,nrhs,itrc)- &
359 & tl_t(i,j-1,k,nrhs,itrc)))
364 tl_fe(i,j)=tl_fe(i,j)*vmask(i,j)
366#ifdef WET_DRY_NOT_YET
367 fe(i,j)=fe(i,j)*vmask_wet(i,j)
380 tl_cff=
dt(ng)*pm(i,j)*pn(i,j)* &
381 & (tl_fx(i+1,j)-tl_fx(i,j)+ &
382 & tl_fe(i,j+1)-tl_fe(i,j))
385 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)+tl_cff