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))))- &
241 & (hz(i,j,k)+hz(i-1,j,k))* &
242 & (0.75_r8*(t(i ,j,k,nrhs,itrc)- &
243 & t(i-1,j,k,nrhs,itrc))+ &
244 & 0.25_r8*(t(i ,j,k,nstp,itrc)- &
245 & t(i-1,j,k,nstp,itrc)))
247#elif defined TS_MIX_CLIMA
255 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
256 & ((t(i ,j,k,nrhs,itrc)- &
257 & tclm(i ,j,k,itrc))- &
258 & (t(i-1,j,k,nrhs,itrc)- &
259 & tclm(i-1,j,k,itrc)))+ &
260 & (hz(i,j,k)+hz(i-1,j,k))* &
261 & (tl_t(i ,j,k,nrhs,itrc)- &
262 & tl_t(i-1,j,k,nrhs,itrc)))- &
265 & (hz(i,j,k)+hz(i-1,j,k))* &
266 & ((t(i ,j,k,nrhs,itrc)-tclm(i ,j,k,itrc))- &
267 & (t(i-1,j,k,nrhs,itrc)-tclm(i-1,j,k,itrc)))
275 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
276 & (t(i ,j,k,nrhs,itrc)- &
277 & t(i-1,j,k,nrhs,itrc))+ &
278 & (hz(i,j,k)+hz(i-1,j,k))* &
279 & (tl_t(i ,j,k,nrhs,itrc)- &
280 & tl_t(i-1,j,k,nrhs,itrc)))- &
283 & (hz(i,j,k)+hz(i-1,j,k))* &
284 & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
293 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
294 & (t(i ,j,k,nrhs,itrc)- &
295 & t(i-1,j,k,nrhs,itrc))+ &
296 & (hz(i,j,k)+hz(i-1,j,k))* &
297 & (tl_t(i ,j,k,nrhs,itrc)- &
298 & tl_t(i-1,j,k,nrhs,itrc)))- &
301 & (hz(i,j,k)+hz(i-1,j,k))* &
302 & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
308 tl_fx(i,j)=tl_fx(i,j)*umask(i,j)
310#ifdef WET_DRY_NOT_YET
311 fx(i,j)=fx(i,j)*umask_wet(i,j)
318 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i,j-1,k))* &
321 cff=0.25_r8*(diff2(i,j,itrc)+diff2(i,j-1,itrc))* &
324#if defined TS_MIX_STABILITY
333 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
334 & (0.75_r8*(t(i,j ,k,nrhs,itrc)- &
335 & t(i,j-1,k,nrhs,itrc))+ &
336 & 0.25_r8*(t(i,j ,k,nstp,itrc)- &
337 & t(i,j-1,k,nstp,itrc)))+ &
338 & (hz(i,j,k)+hz(i,j-1,k))* &
339 & (0.75_r8*(tl_t(i,j ,k,nrhs,itrc)- &
340 & tl_t(i,j-1,k,nrhs,itrc))+ &
341 & 0.25_r8*(tl_t(i,j ,k,nstp,itrc)- &
342 & tl_t(i,j-1,k,nstp,itrc))))- &
345 & (hz(i,j,k)+hz(i,j-1,k))* &
346 & (0.75_r8*(t(i,j ,k,nrhs,itrc)- &
347 & t(i,j-1,k,nrhs,itrc))+ &
348 & 0.25_r8*(t(i,j ,k,nstp,itrc)- &
349 & t(i,j-1,k,nstp,itrc)))
351#elif defined TS_MIX_CLIMA
359 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
360 & ((t(i,j ,k,nrhs,itrc)- &
361 & tclm(i,j ,k,itrc))- &
362 & (t(i,j-1,k,nrhs,itrc)- &
363 & tclm(i,j-1,k,itrc)))+ &
364 & (hz(i,j,k)+hz(i,j-1,k))* &
365 & (tl_t(i,j ,k,nrhs,itrc)- &
366 & tl_t(i,j-1,k,nrhs,itrc)))- &
369 & (hz(i,j,k)+hz(i,j-1,k))* &
370 & ((t(i,j ,k,nrhs,itrc)-tclm(i,j ,k,itrc))- &
371 & (t(i,j-1,k,nrhs,itrc)-tclm(i,j-1,k,itrc)))
379 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
380 & (t(i,j ,k,nrhs,itrc)- &
381 & t(i,j-1,k,nrhs,itrc))+ &
382 & (hz(i,j,k)+hz(i,j-1,k))* &
383 & (tl_t(i,j ,k,nrhs,itrc)- &
384 & tl_t(i,j-1,k,nrhs,itrc)))- &
387 & (hz(i,j,k)+hz(i,j-1,k))* &
388 & (t(i,j,k,nrhs,itrc)-t(i,j-1,k,nrhs,itrc))
397 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
398 & (t(i,j ,k,nrhs,itrc)- &
399 & t(i,j-1,k,nrhs,itrc))+ &
400 & (hz(i,j,k)+hz(i,j-1,k))* &
401 & (tl_t(i,j ,k,nrhs,itrc)- &
402 & tl_t(i,j-1,k,nrhs,itrc)))- &
405 & (hz(i,j,k)+hz(i,j-1,k))* &
406 & (t(i,j,k,nrhs,itrc)-t(i,j-1,k,nrhs,itrc))
412 tl_fe(i,j)=tl_fe(i,j)*vmask(i,j)
414#ifdef WET_DRY_NOT_YET
415 fe(i,j)=fe(i,j)*vmask_wet(i,j)
428 tl_cff=
dt(ng)*pm(i,j)*pn(i,j)* &
429 & (tl_fx(i+1,j)-tl_fx(i,j)+ &
430 & tl_fe(i,j+1)-tl_fe(i,j))
433 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)+tl_cff