101 & LBi, UBi, LBj, UBj, &
102 & IminS, ImaxS, JminS, JmaxS, &
103 & nrhs, nstp, nnew, &
107#ifdef WET_DRY_NOT_YET
108 & umask_wet, vmask_wet, &
110 & om_v, on_u, pm, pn, &
114# ifdef TS_U3ADV_SPLIT
115 & diff3d_u, diff3d_v, &
137 integer,
intent(in) :: ng, tile
138 integer,
intent(in) :: LBi, UBi, LBj, UBj
139 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
140 integer,
intent(in) :: nrhs, nstp, nnew
144 real(r8),
intent(in) :: umask(LBi:,LBj:)
145 real(r8),
intent(in) :: vmask(LBi:,LBj:)
147# ifdef WET_DRY_NOT_YET
148 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
149 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
152# ifdef TS_U3ADV_SPLIT
153 real(r8),
intent(in) :: diff3d_u(LBi:,LBj:,:)
154 real(r8),
intent(in) :: diff3d_v(LBi:,LBj:,:)
156 real(r8),
intent(in) :: diff3d_r(LBi:,LBj:,:)
159 real(r8),
intent(in) :: diff4(LBi:,LBj:,:)
161 real(r8),
intent(in) :: om_v(LBi:,LBj:)
162 real(r8),
intent(in) :: on_u(LBi:,LBj:)
163 real(r8),
intent(in) :: pm(LBi:,LBj:)
164 real(r8),
intent(in) :: pn(LBi:,LBj:)
165 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
166 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
167 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
169 real(r8),
intent(in) :: tclm(LBi:,LBj:,:,:)
171 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
172 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
173# ifdef DIAGNOSTICS_TS
174 real(r8),
intent(inout) :: DiaTwrk(LBi:,LBj:,:,:,:)
176 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
179 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
180 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
182# ifdef WET_DRY_NOT_YET
183 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
184 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
187# ifdef TS_U3ADV_SPLIT
188 real(r8),
intent(in) :: diff3d_u(LBi:UBi,LBj:UBj,N(ng))
189 real(r8),
intent(in) :: diff3d_v(LBi:UBi,LBj:UBj,N(ng))
191 real(r8),
intent(in) :: diff3d_r(LBi:UBi,LBj:UBj,N(ng))
194 real(r8),
intent(in) :: diff4(LBi:UBi,LBj:UBj,NT(ng))
196 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
197 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
198 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
199 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
200 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
201 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
202 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
204 real(r8),
intent(in) :: tclm(LBi:UBi,LBj:UBj,N(ng),NT(ng))
206 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
207 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
208# ifdef DIAGNOSTICS_TS
212 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
217 integer :: Imin, Imax, Jmin, Jmax
218 integer :: i, itrc, j, k, k1, k2
220 real(r8) :: cff, cff1, cff2, cff3, cff4, dife, difx
221 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3, tl_cff4
223 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: LapT
225 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_LapT
227 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
228 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
230 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FE
231 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FX
233 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: FS
234 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dTde
235 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dTdx
236 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dTdz
237 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZde
238 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZdx
240 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_FS
241 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dTde
242 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dTdx
243 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dTdz
244 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZde
245 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZdx
247#include "set_bounds.h"
262 imax=min(iend+1,
lm(ng))
269 jmax=min(jend+1,
mm(ng))
281#ifdef TS_MIX_STABILITY
287 t_loop :
DO itrc=1,nt(ng)
289 k_loop1 :
DO k=0,n(ng)
295 cff=0.5_r8*(pm(i,j)+pm(i-1,j))
299#ifdef WET_DRY_NOT_YET
300 cff=cff*umask_wet(i,j)
302 dzdx(i,j,k2)=cff*(z_r(i ,j,k+1)- &
304 tl_dzdx(i,j,k2)=cff*(tl_z_r(i ,j,k+1)- &
306#if defined TS_MIX_STABILITY
307 dtdx(i,j,k2)=cff*(0.75_r8*(t(i ,j,k+1,nrhs,itrc)- &
308 & t(i-1,j,k+1,nrhs,itrc))+ &
309 & 0.25_r8*(t(i ,j,k+1,nstp,itrc)- &
310 & t(i-1,j,k+1,nstp,itrc)))
312 & (0.75_r8*(tl_t(i ,j,k+1,nrhs,itrc)- &
313 & tl_t(i-1,j,k+1,nrhs,itrc))+ &
314 & 0.25_r8*(tl_t(i ,j,k+1,nstp,itrc)- &
315 & tl_t(i-1,j,k+1,nstp,itrc)))
316#elif defined TS_MIX_CLIMA
318 dtdx(i,j,k2)=cff*((t(i ,j,k+1,nrhs,itrc)- &
319 & tclm(i ,j,k+1,itrc))- &
320 & (t(i-1,j,k+1,nrhs,itrc)- &
321 & tclm(i-1,j,k+1,itrc)))
323 dtdx(i,j,k2)=cff*(t(i ,j,k+1,nrhs,itrc)- &
324 & t(i-1,j,k+1,nrhs,itrc))
326 tl_dtdx(i,j,k2)=cff*(tl_t(i ,j,k+1,nrhs,itrc)- &
327 & tl_t(i-1,j,k+1,nrhs,itrc))
329 dtdx(i,j,k2)=cff*(t(i ,j,k+1,nrhs,itrc)- &
330 & t(i-1,j,k+1,nrhs,itrc))
331 tl_dtdx(i,j,k2)=cff*(tl_t(i ,j,k+1,nrhs,itrc)- &
332 & tl_t(i-1,j,k+1,nrhs,itrc))
338 cff=0.5_r8*(pn(i,j)+pn(i,j-1))
342#ifdef WET_DRY_NOT_YET
343 cff=cff*vmask_wet(i,j)
345 dzde(i,j,k2)=cff*(z_r(i,j ,k+1)- &
347 tl_dzde(i,j,k2)=cff*(tl_z_r(i,j ,k+1)- &
349#if defined TS_MIX_STABILITY
350 dtde(i,j,k2)=cff*(0.75_r8*(t(i,j ,k+1,nrhs,itrc)- &
351 & t(i,j-1,k+1,nrhs,itrc))+ &
352 & 0.25_r8*(t(i,j ,k+1,nstp,itrc)- &
353 & t(i,j-1,k+1,nstp,itrc)))
355 & (0.75_r8*(tl_t(i,j ,k+1,nrhs,itrc)- &
356 & tl_t(i,j-1,k+1,nrhs,itrc))+ &
357 & 0.25_r8*(tl_t(i,j ,k+1,nstp,itrc)- &
358 & tl_t(i,j-1,k+1,nstp,itrc)))
359#elif defined TS_MIX_CLIMA
361 dtde(i,j,k2)=cff*((t(i,j ,k+1,nrhs,itrc)- &
362 & tclm(i,j ,k+1,itrc))- &
363 & (t(i,j-1,k+1,nrhs,itrc)- &
364 & tclm(i,j-1,k+1,itrc)))
366 dtde(i,j,k2)=cff*(t(i,j ,k+1,nrhs,itrc)- &
367 & t(i,j-1,k+1,nrhs,itrc))
369 tl_dtde(i,j,k2)=cff*(tl_t(i,j ,k+1,nrhs,itrc)- &
370 & tl_t(i,j-1,k+1,nrhs,itrc))
372 dtde(i,j,k2)=cff*(t(i,j ,k+1,nrhs,itrc)- &
373 & t(i,j-1,k+1,nrhs,itrc))
374 tl_dtde(i,j,k2)=cff*(tl_t(i,j ,k+1,nrhs,itrc)- &
375 & tl_t(i,j-1,k+1,nrhs,itrc))
380 IF ((k.eq.0).or.(k.eq.n(ng)))
THEN
384 tl_dtdz(i,j,k2)=0.0_r8
392 cff=1.0_r8/(z_r(i,j,k+1)- &
394 tl_cff=-cff*cff*(tl_z_r(i,j,k+1)- &
396#if defined TS_MIX_STABILITY
397 dtdz(i,j,k2)=cff*(0.75_r8*(t(i,j,k+1,nrhs,itrc)- &
398 & t(i,j,k ,nrhs,itrc))+ &
399 & 0.25_r8*(t(i,j,k+1,nstp,itrc)- &
400 & t(i,j,k ,nstp,itrc)))
401 tl_dtdz(i,j,k2)=tl_cff*(0.75_r8*(t(i,j,k+1,nrhs,itrc)- &
402 & t(i,j,k ,nrhs,itrc))+ &
403 & 0.25_r8*(t(i,j,k+1,nstp,itrc)- &
404 & t(i,j,k ,nstp,itrc)))+&
405 & cff*(0.75_r8*(tl_t(i,j,k+1,nrhs,itrc)- &
406 & tl_t(i,j,k ,nrhs,itrc))+ &
407 & 0.25_r8*(tl_t(i,j,k+1,nstp,itrc)- &
408 & tl_t(i,j,k ,nstp,itrc)))
409#elif defined TS_MIX_CLIMA
411 dtdz(i,j,k2)=cff*((t(i,j,k+1,nrhs,itrc)- &
412 & tclm(i,j,k+1,itrc))- &
413 & (t(i,j,k ,nrhs,itrc)- &
414 & tclm(i,j,k ,itrc)))
415 tl_dtdz(i,j,k2)=tl_cff*((t(i,j,k+1,nrhs,itrc)- &
416 & tclm(i,j,k+1,itrc))- &
417 & (t(i,j,k ,nrhs,itrc)- &
418 & tclm(i,j,k ,itrc)))+ &
419 & cff*(tl_t(i,j,k+1,nrhs,itrc)- &
420 & tl_t(i,j,k ,nrhs,itrc))
423 dtdz(i,j,k2)=cff*(t(i,j,k+1,nrhs,itrc)- &
424 & t(i,j,k ,nrhs,itrc))
425 tl_dtdz(i,j,k2)=tl_cff*(t(i,j,k+1,nrhs,itrc)- &
426 & t(i,j,k ,nrhs,itrc))+ &
427 & cff*(tl_t(i,j,k+1,nrhs,itrc)- &
428 & tl_t(i,j,k ,nrhs,itrc))
431 dtdz(i,j,k2)=cff*(t(i,j,k+1,nrhs,itrc)- &
432 & t(i,j,k ,nrhs,itrc))
433 tl_dtdz(i,j,k2)=tl_cff*(t(i,j,k+1,nrhs,itrc)- &
434 & t(i,j,k ,nrhs,itrc))+ &
435 & cff*(tl_t(i,j,k+1,nrhs,itrc)- &
436 & tl_t(i,j,k ,nrhs,itrc))
445# ifdef TS_U3ADV_SPLIT
446 cff=0.5_r8*diff3d_u(i,j,k)*on_u(i,j)
448 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* &
452 cff=0.25_r8*(diff4(i,j,itrc)+diff4(i-1,j,itrc))* &
456 & (hz(i,j,k)+hz(i-1,j,k))* &
458 & 0.5_r8*(min(dzdx(i,j,k1),0.0_r8)* &
461 & max(dzdx(i,j,k1),0.0_r8)* &
465 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
467 & 0.5_r8*(min(dzdx(i,j,k1),0.0_r8)* &
470 & max(dzdx(i,j,k1),0.0_r8)* &
472 & dtdz(i ,j,k1))))+ &
473 & (hz(i,j,k)+hz(i-1,j,k))* &
474 & (tl_dtdx(i,j,k1)- &
475 & 0.5_r8*(min(dzdx(i,j,k1),0.0_r8)* &
476 & (tl_dtdz(i-1,j,k1)+ &
477 & tl_dtdz(i ,j,k2))+ &
478 & max(dzdx(i,j,k1),0.0_r8)* &
479 & (tl_dtdz(i-1,j,k2)+ &
480 & tl_dtdz(i ,j,k1)))- &
482 & sign(0.5_r8,-dzdx(i,j,k1)))* &
484 & (dtdz(i-1,j,k1)+dtdz(i,j,k2))+ &
486 & sign(0.5_r8, dzdx(i,j,k1)))* &
488 & (dtdz(i-1,j,k2)+dtdz(i,j,k1)))))
494# ifdef TS_U3ADV_SPLIT
495 cff=0.5_r8*diff3d_v(i,j,k)*om_v(i,j)
497 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i,j-1,k))* &
501 cff=0.25_r8*(diff4(i,j,itrc)+diff4(i,j-1,itrc))* &
505 & (hz(i,j,k)+hz(i,j-1,k))* &
507 & 0.5_r8*(min(dzde(i,j,k1),0.0_r8)* &
510 & max(dzde(i,j,k1),0.0_r8)* &
514 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
516 & 0.5_r8*(min(dzde(i,j,k1),0.0_r8)* &
519 & max(dzde(i,j,k1),0.0_r8)* &
521 & dtdz(i,j ,k1))))+ &
522 & (hz(i,j,k)+hz(i,j-1,k))* &
523 & (tl_dtde(i,j,k1)- &
524 & 0.5_r8*(min(dzde(i,j,k1),0.0_r8)* &
525 & (tl_dtdz(i,j-1,k1)+ &
526 & tl_dtdz(i,j ,k2))+ &
527 & max(dzde(i,j,k1),0.0_r8)* &
528 & (tl_dtdz(i,j-1,k2)+ &
529 & tl_dtdz(i,j ,k1)))- &
531 & sign(0.5_r8,-dzde(i,j,k1)))* &
533 & (dtdz(i,j-1,k1)+dtdz(i,j,k2))+ &
535 & sign(0.5_r8, dzde(i,j,k1)))* &
537 & (dtdz(i,j-1,k2)+dtdz(i,j,k1)))))
544# ifdef TS_U3ADV_SPLIT
545 difx=0.125_r8*(diff3d_u(i,j,k )+diff3d_u(i+1,j,k )+ &
546 & diff3d_u(i,j,k+1)+diff3d_u(i+1,j,k+1))
547 dife=0.125_r8*(diff3d_v(i,j,k )+diff3d_v(i,j+1,k )+ &
548 & diff3d_v(i,j,k+1)+diff3d_v(i,j+1,k+1))
550 difx=0.5_r8*diff3d_r(i,j,k)
554 difx=0.5_r8*diff4(i,j,itrc)
557 cff1=min(dzdx(i ,j,k1),0.0_r8)
558 cff2=min(dzdx(i+1,j,k2),0.0_r8)
559 cff3=max(dzdx(i ,j,k2),0.0_r8)
560 cff4=max(dzdx(i+1,j,k1),0.0_r8)
561 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx(i ,j,k1)))* &
563 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx(i+1,j,k2)))* &
565 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx(i ,j,k2)))* &
567 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx(i+1,j,k1)))* &
570 & (cff1*(cff1*dtdz(i,j,k2)- &
572 & cff2*(cff2*dtdz(i,j,k2)- &
574 & cff3*(cff3*dtdz(i,j,k2)- &
576 & cff4*(cff4*dtdz(i,j,k2)- &
578 tl_fs(i,j,k2)=difx* &
579 & (tl_cff1*(cff1*dtdz(i,j,k2)- &
581 & tl_cff2*(cff2*dtdz(i,j,k2)- &
583 & tl_cff3*(cff3*dtdz(i,j,k2)- &
585 & tl_cff4*(cff4*dtdz(i,j,k2)- &
587 & cff1*(tl_cff1*dtdz(i,j,k2)+ &
588 & cff1*tl_dtdz(i,j,k2)- &
589 & tl_dtdx(i ,j,k1))+ &
590 & cff2*(tl_cff2*dtdz(i,j,k2)+ &
591 & cff2*tl_dtdz(i,j,k2)- &
592 & tl_dtdx(i+1,j,k2))+ &
593 & cff3*(tl_cff3*dtdz(i,j,k2)+ &
594 & cff3*tl_dtdz(i,j,k2)- &
595 & tl_dtdx(i ,j,k2))+ &
596 & cff4*(tl_cff4*dtdz(i,j,k2)+ &
597 & cff4*tl_dtdz(i,j,k2)- &
598 & tl_dtdx(i+1,j,k1)))
600 cff1=min(dzde(i,j ,k1),0.0_r8)
601 cff2=min(dzde(i,j+1,k2),0.0_r8)
602 cff3=max(dzde(i,j ,k2),0.0_r8)
603 cff4=max(dzde(i,j+1,k1),0.0_r8)
604 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde(i,j ,k1)))* &
606 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde(i,j+1,k2)))* &
608 tl_cff3=(0.5_r8+sign(0.5_r8, dzde(i,j ,k2)))* &
610 tl_cff4=(0.5_r8+sign(0.5_r8, dzde(i,j+1,k1)))* &
612 fs(i,j,k2)=fs(i,j,k2)+ &
614 & (cff1*(cff1*dtdz(i,j,k2)- &
616 & cff2*(cff2*dtdz(i,j,k2)- &
618 & cff3*(cff3*dtdz(i,j,k2)- &
620 & cff4*(cff4*dtdz(i,j,k2)- &
622 tl_fs(i,j,k2)=tl_fs(i,j,k2)+ &
624 & (tl_cff1*(cff1*dtdz(i,j,k2)- &
626 & tl_cff2*(cff2*dtdz(i,j,k2)- &
628 & tl_cff3*(cff3*dtdz(i,j,k2)- &
630 & tl_cff4*(cff4*dtdz(i,j,k2)- &
632 & cff1*(tl_cff1*dtdz(i,j,k2)+ &
633 & cff1*tl_dtdz(i,j,k2)- &
634 & tl_dtde(i,j ,k1))+ &
635 & cff2*(tl_cff2*dtdz(i,j,k2)+ &
636 & cff2*tl_dtdz(i,j,k2)- &
637 & tl_dtde(i,j+1,k2))+ &
638 & cff3*(tl_cff3*dtdz(i,j,k2)+ &
639 & cff3*tl_dtdz(i,j,k2)- &
640 & tl_dtde(i,j ,k2))+ &
641 & cff4*(tl_cff4*dtdz(i,j,k2)+ &
642 & cff4*tl_dtdz(i,j,k2)- &
643 & tl_dtde(i,j+1,k1)))
655 cff1=1.0_r8/hz(i,j,k)
656 tl_cff1=-cff1*cff1*tl_hz(i,j,k)
657 lapt(i,j,k)=cff1*(cff* &
658 & (fx(i+1,j)-fx(i,j)+ &
659 & fe(i,j+1)-fe(i,j))+ &
660 & (fs(i,j,k2)-fs(i,j,k1)))
661 tl_lapt(i,j,k)=tl_cff1*(cff* &
662 & (fx(i+1,j)-fx(i,j)+ &
663 & fe(i,j+1)-fe(i,j))+ &
664 & (fs(i,j,k2)-fs(i,j,k1)))+ &
666 & (tl_fx(i+1,j)-tl_fx(i,j)+ &
667 & tl_fe(i,j+1)-tl_fe(i,j))+ &
668 & (tl_fs(i,j,k2)-tl_fs(i,j,k1)))
678 IF (
domain(ng)%Western_Edge(tile))
THEN
682 lapt(istr-1,j,k)=0.0_r8
683 tl_lapt(istr-1,j,k)=0.0_r8
689 lapt(istr-1,j,k)=lapt(istr,j,k)
690 tl_lapt(istr-1,j,k)=tl_lapt(istr,j,k)
698 IF (
domain(ng)%Eastern_Edge(tile))
THEN
702 lapt(iend+1,j,k)=0.0_r8
703 tl_lapt(iend+1,j,k)=0.0_r8
709 lapt(iend+1,j,k)=lapt(iend,j,k)
710 tl_lapt(iend+1,j,k)=tl_lapt(iend,j,k)
718 IF (
domain(ng)%Southern_Edge(tile))
THEN
722 lapt(i,jstr-1,k)=0.0_r8
723 tl_lapt(i,jstr-1,k)=0.0_r8
729 lapt(i,jstr-1,k)=lapt(i,jstr,k)
730 tl_lapt(i,jstr-1,k)=tl_lapt(i,jstr,k)
738 IF (
domain(ng)%Northern_Edge(tile))
THEN
742 lapt(i,jend+1,k)=0.0_r8
743 tl_lapt(i,jend+1,k)=0.0_r8
749 lapt(i,jend+1,k)=lapt(i,jend,k)
750 tl_lapt(i,jend+1,k)=tl_lapt(i,jend,k)
759 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
761 lapt(istr-1,jstr-1,k)=0.5_r8* &
762 & (lapt(istr ,jstr-1,k)+ &
763 & lapt(istr-1,jstr ,k))
764 tl_lapt(istr-1,jstr-1,k)=0.5_r8* &
765 & (tl_lapt(istr ,jstr-1,k)+ &
766 & tl_lapt(istr-1,jstr ,k))
773 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
775 lapt(iend+1,jstr-1,k)=0.5_r8* &
776 & (lapt(iend ,jstr-1,k)+ &
777 & lapt(iend+1,jstr ,k))
778 tl_lapt(iend+1,jstr-1,k)=0.5_r8* &
779 & (tl_lapt(iend ,jstr-1,k)+ &
780 & tl_lapt(iend+1,jstr ,k))
787 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
789 lapt(istr-1,jend+1,k)=0.5_r8* &
790 & (lapt(istr ,jend+1,k)+ &
791 & lapt(istr-1,jend ,k))
792 tl_lapt(istr-1,jend+1,k)=0.5_r8* &
793 & (tl_lapt(istr ,jend+1,k)+ &
794 & tl_lapt(istr-1,jend ,k))
801 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
803 lapt(iend+1,jend+1,k)=0.5_r8* &
804 & (lapt(iend ,jend+1,k)+ &
805 & lapt(iend+1,jend ,k))
806 tl_lapt(iend+1,jend+1,k)=0.5_r8* &
807 & (tl_lapt(iend ,jend+1,k)+ &
808 & tl_lapt(iend+1,jend ,k))
817 k_loop2:
DO k=0,n(ng)
823 cff=0.5_r8*(pm(i,j)+pm(i-1,j))
827#ifdef WET_DRY_NOT_YET
828 cff=cff*umask_wet(i,j)
830 dzdx(i,j,k2)=cff*(z_r(i ,j,k+1)- &
832 tl_dzdx(i,j,k2)=cff*(tl_z_r(i ,j,k+1)- &
834 dtdx(i,j,k2)=cff*(lapt(i ,j,k+1)- &
836 tl_dtdx(i,j,k2)=cff*(tl_lapt(i ,j,k+1)- &
837 & tl_lapt(i-1,j,k+1))
842 cff=0.5_r8*(pn(i,j)+pn(i,j-1))
846#ifdef WET_DRY_NOT_YET
847 cff=cff*vmask_wet(i,j)
849 dzde(i,j,k2)=cff*(z_r(i,j ,k+1)- &
851 tl_dzde(i,j,k2)=cff*(tl_z_r(i,j ,k+1)- &
853 dtde(i,j,k2)=cff*(lapt(i,j ,k+1)- &
855 tl_dtde(i,j,k2)=cff*(tl_lapt(i,j ,k+1)- &
856 & tl_lapt(i,j-1,k+1))
860 IF ((k.eq.0).or.(k.eq.n(ng)))
THEN
864 tl_dtdz(i,j,k2)=0.0_r8
872 cff=1.0_r8/(z_r(i,j,k+1)- &
874 tl_cff=-cff*cff*(tl_z_r(i,j,k+1)- &
876 dtdz(i,j,k2)=cff*(lapt(i,j,k+1)- &
878 tl_dtdz(i,j,k2)=tl_cff*(lapt(i,j,k+1)- &
880 & cff*(tl_lapt(i,j,k+1)- &
893# ifdef TS_U3ADV_SPLIT
894 cff=0.5_r8*diff3d_u(i,j,k)*on_u(i,j)
896 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* &
900 cff=0.25_r8*(diff4(i,j,itrc)+diff4(i-1,j,itrc))* &
914 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
916 & 0.5_r8*(min(dzdx(i,j,k1),0.0_r8)* &
919 & max(dzdx(i,j,k1),0.0_r8)* &
921 & dtdz(i ,j,k1))))+ &
922 & (hz(i,j,k)+hz(i-1,j,k))* &
923 & (tl_dtdx(i,j,k1)- &
924 & 0.5_r8*(min(dzdx(i,j,k1),0.0_r8)* &
925 & (tl_dtdz(i-1,j,k1)+ &
926 & tl_dtdz(i ,j,k2))+ &
927 & max(dzdx(i,j,k1),0.0_r8)* &
928 & (tl_dtdz(i-1,j,k2)+ &
929 & tl_dtdz(i ,j,k1)))- &
931 & sign(0.5_r8,-dzdx(i,j,k1)))* &
933 & (dtdz(i-1,j,k1)+dtdz(i,j,k2))+ &
935 & sign(0.5_r8, dzdx(i,j,k1)))* &
937 & (dtdz(i-1,j,k2)+dtdz(i,j,k1)))))
943# ifdef TS_U3ADV_SPLIT
944 cff=0.5_r8*diff3d_v(i,j,k)*om_v(i,j)
946 cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i,j-1,k))* &
950 cff=0.25_r8*(diff4(i,j,itrc)+diff4(i,j-1,itrc))* &
964 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
966 & 0.5_r8*(min(dzde(i,j,k1),0.0_r8)* &
969 & max(dzde(i,j,k1),0.0_r8)* &
971 & dtdz(i,j ,k1))))+ &
972 & (hz(i,j,k)+hz(i,j-1,k))* &
973 & (tl_dtde(i,j,k1)- &
974 & 0.5_r8*(min(dzde(i,j,k1),0.0_r8)* &
975 & (tl_dtdz(i,j-1,k1)+ &
976 & tl_dtdz(i,j ,k2))+ &
977 & max(dzde(i,j,k1),0.0_r8)* &
978 & (tl_dtdz(i,j-1,k2)+ &
979 & tl_dtdz(i,j ,k1)))- &
981 & sign(0.5_r8,-dzde(i,j,k1)))* &
983 & (dtdz(i,j-1,k1)+dtdz(i,j,k2))+ &
985 & sign(0.5_r8, dzde(i,j,k1)))* &
987 & (dtdz(i,j-1,k2)+dtdz(i,j,k1)))))
994# ifdef TS_U3ADV_SPLIT
995 difx=0.125_r8*(diff3d_u(i,j,k )+diff3d_u(i+1,j,k )+ &
996 & diff3d_u(i,j,k+1)+diff3d_u(i+1,j,k+1))
997 dife=0.125_r8*(diff3d_v(i,j,k )+diff3d_v(i,j+1,k )+ &
998 & diff3d_v(i,j,k+1)+diff3d_v(i,j+1,k+1))
1000 difx=0.5_r8*diff3d_r(i,j,k)
1004 difx=0.5_r8*diff4(i,j,itrc)
1007 cff1=min(dzdx(i ,j,k1),0.0_r8)
1008 cff2=min(dzdx(i+1,j,k2),0.0_r8)
1009 cff3=max(dzdx(i ,j,k2),0.0_r8)
1010 cff4=max(dzdx(i+1,j,k1),0.0_r8)
1011 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx(i ,j,k1)))* &
1013 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx(i+1,j,k2)))* &
1015 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx(i ,j,k2)))* &
1017 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx(i+1,j,k1)))* &
1030 tl_fs(i,j,k2)=difx* &
1031 & (tl_cff1*(cff1*dtdz(i,j,k2)- &
1033 & tl_cff2*(cff2*dtdz(i,j,k2)- &
1034 & dtdx(i+1,j,k2))+ &
1035 & tl_cff3*(cff3*dtdz(i,j,k2)- &
1037 & tl_cff4*(cff4*dtdz(i,j,k2)- &
1038 & dtdx(i+1,j,k1))+ &
1039 & cff1*(tl_cff1*dtdz(i,j,k2)+ &
1040 & cff1*tl_dtdz(i,j,k2)- &
1041 & tl_dtdx(i ,j,k1))+ &
1042 & cff2*(tl_cff2*dtdz(i,j,k2)+ &
1043 & cff2*tl_dtdz(i,j,k2)- &
1044 & tl_dtdx(i+1,j,k2))+ &
1045 & cff3*(tl_cff3*dtdz(i,j,k2)+ &
1046 & cff3*tl_dtdz(i,j,k2)- &
1047 & tl_dtdx(i ,j,k2))+ &
1048 & cff4*(tl_cff4*dtdz(i,j,k2)+ &
1049 & cff4*tl_dtdz(i,j,k2)- &
1050 & tl_dtdx(i+1,j,k1)))
1052 cff1=min(dzde(i,j ,k1),0.0_r8)
1053 cff2=min(dzde(i,j+1,k2),0.0_r8)
1054 cff3=max(dzde(i,j ,k2),0.0_r8)
1055 cff4=max(dzde(i,j+1,k1),0.0_r8)
1056 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde(i,j ,k1)))* &
1058 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde(i,j+1,k2)))* &
1060 tl_cff3=(0.5_r8+sign(0.5_r8, dzde(i,j ,k2)))* &
1062 tl_cff4=(0.5_r8+sign(0.5_r8, dzde(i,j+1,k1)))* &
1075 tl_fs(i,j,k2)=tl_fs(i,j,k2)+ &
1077 & (tl_cff1*(cff1*dtdz(i,j,k2)- &
1079 & tl_cff2*(cff2*dtdz(i,j,k2)- &
1080 & dtde(i,j+1,k2))+ &
1081 & tl_cff3*(cff3*dtdz(i,j,k2)- &
1083 & tl_cff4*(cff4*dtdz(i,j,k2)- &
1084 & dtde(i,j+1,k1))+ &
1085 & cff1*(tl_cff1*dtdz(i,j,k2)+ &
1086 & cff1*tl_dtdz(i,j,k2)- &
1087 & tl_dtde(i,j ,k1))+ &
1088 & cff2*(tl_cff2*dtdz(i,j,k2)+ &
1089 & cff2*tl_dtdz(i,j,k2)- &
1090 & tl_dtde(i,j+1,k2))+ &
1091 & cff3*(tl_cff3*dtdz(i,j,k2)+ &
1092 & cff3*tl_dtdz(i,j,k2)- &
1093 & tl_dtde(i,j ,k2))+ &
1094 & cff4*(tl_cff4*dtdz(i,j,k2)+ &
1095 & cff4*tl_dtdz(i,j,k2)- &
1096 & tl_dtde(i,j+1,k1)))
1110 tl_cff=
dt(ng)*pm(i,j)*pn(i,j)* &
1111 & (tl_fx(i+1,j)-tl_fx(i,j)+ &
1112 & tl_fe(i,j+1)-tl_fe(i,j))+ &
1113 &
dt(ng)*(tl_fs(i,j,k2)-tl_fs(i,j,k1))
1116 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)-tl_cff
1117#ifdef DIAGNOSTICS_TS