148 & LBi, UBi, LBj, UBj, &
149 & IminS, ImaxS, JminS, JmaxS, &
150 & nrhs, nstp, nnew, &
152 & rmask, umask, vmask, &
153# if defined SOLAR_SOURCE && defined WET_DRY
163 & btflx, bustr, bvstr, &
165 & tl_btflx, tl_bustr, tl_bvstr, &
167 & stflx, sustr, svstr, &
169 & tl_stflx, tl_sustr, tl_svstr, &
176# ifdef LMD_NONLOCAL_NOT_YET
181# ifdef DIAGNOSTICS_TS
184# ifdef DIAGNOSTICS_UV
185!! & DiaU3wrk, DiaV3wrk, &
205 integer,
intent(in) :: ng, tile
206 integer,
intent(in) :: LBi, UBi, LBj, UBj
207 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
208 integer,
intent(in) :: nrhs, nstp, nnew
212 real(r8),
intent(in) :: rmask(LBi:,LBj:)
213 real(r8),
intent(in) :: umask(LBi:,LBj:)
214 real(r8),
intent(in) :: vmask(LBi:,LBj:)
215# if defined SOLAR_SOURCE && defined WET_DRY
216 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
219 real(r8),
intent(in) :: pm(LBi:,LBj:)
220 real(r8),
intent(in) :: pn(LBi:,LBj:)
221 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
222 real(r8),
intent(in) :: Huon(LBi:,LBj:,:)
223 real(r8),
intent(in) :: Hvom(LBi:,LBj:,:)
224 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
225 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
227 real(r8),
intent(in) :: srflx(LBi:,LBj:)
230 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
232 real(r8),
intent(in) :: Akt(LBi:,LBj:,0:,:)
234 real(r8),
intent(in) :: Akv(LBi:,LBj:,0:)
235 real(r8),
intent(in) :: W(LBi:,LBj:,0:)
237 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
239 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
241 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
242 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
244 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
245 real(r8),
intent(in) :: tl_Huon(LBi:,LBj:,:)
246 real(r8),
intent(in) :: tl_Hvom(LBi:,LBj:,:)
247 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
248 real(r8),
intent(in) :: tl_z_w(LBi:,LBj:,0:)
249 real(r8),
intent(in) :: btflx(LBi:,LBj:,:)
250 real(r8),
intent(in) :: bustr(LBi:,LBj:)
251 real(r8),
intent(in) :: bvstr(LBi:,LBj:)
252 real(r8),
intent(in) :: stflx(LBi:,LBj:,:)
253 real(r8),
intent(in) :: sustr(LBi:,LBj:)
254 real(r8),
intent(in) :: svstr(LBi:,LBj:)
255 real(r8),
intent(in) :: tl_ru(LBi:,LBj:,0:,:)
256 real(r8),
intent(in) :: tl_rv(LBi:,LBj:,0:,:)
258 real(r8),
intent(in) :: tl_btflx(LBi:,LBj:,:)
259 real(r8),
intent(in) :: tl_bustr(LBi:,LBj:)
260 real(r8),
intent(in) :: tl_bvstr(LBi:,LBj:)
261 real(r8),
intent(in) :: tl_stflx(LBi:,LBj:,:)
262 real(r8),
intent(in) :: tl_sustr(LBi:,LBj:)
263 real(r8),
intent(in) :: tl_svstr(LBi:,LBj:)
265# ifdef LMD_NONLOCAL_NOT_YET
266 real(r8),
intent(in) :: tl_ghats(LBi:,LBj:,0:,:)
269 real(r8),
intent(in) :: tl_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
271 real(r8),
intent(in) :: tl_Akt(LBi:,LBj:,0:,:)
273 real(r8),
intent(in) :: tl_Akv(LBi:,LBj:,0:)
274 real(r8),
intent(in) :: tl_W(LBi:,LBj:,0:)
276# ifdef DIAGNOSTICS_TS
279# ifdef DIAGNOSTICS_UV
286 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
288 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
290 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
291 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
296 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
297 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
298 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
299# if defined SOLAR_SOURCE && defined WET_DRY
300 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
303 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
304 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
305 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
306 real(r8),
intent(in) :: Huon(LBi:UBi,LBj:UBj,N(ng))
307 real(r8),
intent(in) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
308 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
309 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
311 real(r8),
intent(in) :: srflx(LBi:UBi,LBj:UBj)
313 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
314 real(r8),
intent(in) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
315 real(r8),
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
316 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
317 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
318 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
320 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
321 real(r8),
intent(in) :: tl_Huon(LBi:UBi,LBj:UBj,N(ng))
322 real(r8),
intent(in) :: tl_Hvom(LBi:UBi,LBj:UBj,N(ng))
323 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
324 real(r8),
intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:N(ng))
325 real(r8),
intent(in) :: btflx(LBi:UBi,LBj:UBj,NT(ng))
326 real(r8),
intent(in) :: bustr(LBi:UBi,LBj:UBj)
327 real(r8),
intent(in) :: bvstr(LBi:UBi,LBj:UBj)
328 real(r8),
intent(in) :: stflx(LBi:UBi,LBj:UBj,NT(ng))
329 real(r8),
intent(in) :: sustr(LBi:UBi,LBj:UBj)
330 real(r8),
intent(in) :: svstr(LBi:UBi,LBj:UBj)
331 real(r8),
intent(in) :: tl_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
332 real(r8),
intent(in) :: tl_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
334 real(r8),
intent(in) :: tl_btflx(LBi:UBi,LBj:UBj,NT(ng))
335 real(r8),
intent(in) :: tl_bustr(LBi:UBi,LBj:UBj)
336 real(r8),
intent(in) :: tl_bvstr(LBi:UBi,LBj:UBj)
337 real(r8),
intent(in) :: tl_stflx(LBi:UBi,LBj:UBj,NT(ng))
338 real(r8),
intent(in) :: tl_sustr(LBi:UBi,LBj:UBj)
339 real(r8),
intent(in) :: tl_svstr(LBi:UBi,LBj:UBj)
341# ifdef LMD_NONLOCAL_NOT_YET
342 real(r8),
intent(in) :: ghats(LBi:UBi,LBj:UBj,0:N(ng),NAT)
344 real(r8),
intent(in) :: tl_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
345 real(r8),
intent(in) :: tl_Akv(LBi:UBi,LBj:UBj,0:N(ng))
346 real(r8),
intent(in) :: tl_W(LBi:UBi,LBj:UBj,0:N(ng))
348# ifdef DIAGNOSTICS_TS
352# ifdef DIAGNOSTICS_UV
358 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
359 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
360 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
365 integer :: Isrc, Jsrc
366 integer :: i, ic, indx, is, itrc, j, k, ltrc
367# if defined AGE_MEAN && defined T_PASSIVE
370# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV
373 real(r8),
parameter :: eps = 1.0e-16_r8
375 real(r8) :: cff, cff1, cff2, cff3, cff4
376 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3, tl_cff4
379 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CF
380 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC
381 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
383 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_CF
384 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_DC
385 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
388 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: tl_swdk
391 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
392 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
393 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: curv
394 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
396 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FE
397 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FX
398 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_curv
399 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
401# include "set_bounds.h"
417 fx(i,j)=z_w(i,j,n(ng))-z_w(i,j,k)
418 tl_fx(i,j)=tl_z_w(i,j,n(ng))-tl_z_w(i,j,k)
427 & lbi, ubi, lbj, ubj, &
428 & imins, imaxs, jmins, jmaxs, &
429 & -1.0_r8, fx, tl_fx, tl_fe)
434 tl_swdk(i,j,k)=tl_fe(i,j)
447 t_loop1 :
DO itrc=1,nt(ng)
448 k_loop :
DO k=1,n(ng)
456 fx(i,j)=huon(i,j,k)* &
457 & 0.5_r8*(t(i-1,j,k,nstp,itrc)+ &
458 & t(i ,j,k,nstp,itrc))
461 & (t(i-1,j,k,nstp,itrc)+ &
462 & t(i ,j,k,nstp,itrc))+ &
464 & (tl_t(i-1,j,k,nstp,itrc)+ &
465 & tl_t(i ,j,k,nstp,itrc)))- &
473 fe(i,j)=hvom(i,j,k)* &
474 & 0.5_r8*(t(i,j-1,k,nstp,itrc)+ &
475 & t(i,j ,k,nstp,itrc))
478 & (t(i,j-1,k,nstp,itrc)+ &
479 & t(i,j ,k,nstp,itrc))+ &
481 & (tl_t(i,j-1,k,nstp,itrc)+ &
482 & tl_t(i,j ,k,nstp,itrc)))- &
496 cff1=max(huon(i,j,k),0.0_r8)
497 cff2=min(huon(i,j,k),0.0_r8)
498 tl_cff1=(0.5_r8+sign(0.5_r8, huon(i,j,k)))* &
500 tl_cff2=(0.5_r8+sign(0.5_r8,-huon(i,j,k)))* &
502 fx(i,j)=cff1*t(i-1,j,k,nstp,itrc)+ &
503 & cff2*t(i ,j,k,nstp,itrc)
504 tl_fx(i,j)=tl_cff1*t(i-1,j,k,nstp,itrc)+ &
505 & cff1*tl_t(i-1,j,k,nstp,itrc)+ &
506 & tl_cff2*t(i ,j,k,nstp,itrc)+ &
507 & cff2*tl_t(i ,j,k,nstp,itrc)- &
515 cff1=max(hvom(i,j,k),0.0_r8)
516 cff2=min(hvom(i,j,k),0.0_r8)
517 tl_cff1=(0.5_r8+sign(0.5_r8, hvom(i,j,k)))* &
519 tl_cff2=(0.5_r8+sign(0.5_r8,-hvom(i,j,k)))* &
521 fe(i,j)=cff1*t(i,j-1,k,nstp,itrc)+ &
522 & cff2*t(i,j ,k,nstp,itrc)
523 tl_fe(i,j)=tl_cff1*t(i,j-1,k,nstp,itrc)+ &
524 & cff1*tl_t(i,j-1,k,nstp,itrc)+ &
525 & tl_cff2*t(i,j ,k,nstp,itrc)+ &
526 & cff2*tl_t(i,j ,k,nstp,itrc)- &
543 fx(i,j)=t(i ,j,k,nstp,itrc)- &
544 & t(i-1,j,k,nstp,itrc)
545 tl_fx(i,j)=tl_t(i ,j,k,nstp,itrc)- &
546 & tl_t(i-1,j,k,nstp,itrc)
548 fx(i,j)=fx(i,j)*umask(i,j)
549 tl_fx(i,j)=tl_fx(i,j)*umask(i,j)
554 IF (
domain(ng)%Western_Edge(tile))
THEN
556 fx(istr-1,j)=fx(istr,j)
557 tl_fx(istr-1,j)=tl_fx(istr,j)
562 IF (
domain(ng)%Eastern_Edge(tile))
THEN
564 fx(iend+2,j)=fx(iend+1,j)
565 tl_fx(iend+2,j)=tl_fx(iend+1,j)
573 curv(i,j)=fx(i+1,j)-fx(i,j)
574 tl_curv(i,j)=tl_fx(i+1,j)-tl_fx(i,j)
576 cff=2.0_r8*fx(i+1,j)*fx(i,j)
577 tl_cff=2.0_r8*(tl_fx(i+1,j)*fx(i,j)+ &
578 & fx(i+1,j)*tl_fx(i,j))- &
583 grad(i,j)=cff/(fx(i+1,j)+fx(i,j))
584 tl_grad(i,j)=((fx(i+1,j)+fx(i,j))*tl_cff- &
585 & cff*(tl_fx(i+1,j)+tl_fx(i,j)))/ &
586 & ((fx(i+1,j)+fx(i,j))* &
587 & (fx(i+1,j)+fx(i,j)))+ &
597 grad(i,j)=0.5_r8*(fx(i+1,j)+fx(i,j))
598 tl_grad(i,j)=0.5_r8*(tl_fx(i+1,j)+tl_fx(i,j))
608 fx(i,j)=huon(i,j,k)*0.5_r8* &
609 & (t(i-1,j,k,nstp,itrc)+ &
610 & t(i ,j,k,nstp,itrc))- &
611 & cff1*(curv(i-1,j)*max(huon(i,j,k),0.0_r8)+ &
612 & curv(i ,j)*min(huon(i,j,k),0.0_r8))
615 & (t(i-1,j,k,nstp,itrc)+ &
616 & t(i ,j,k,nstp,itrc))+ &
618 & (tl_t(i-1,j,k,nstp,itrc)+ &
619 & tl_t(i ,j,k,nstp,itrc)))- &
621 & (tl_curv(i-1,j)*max(huon(i,j,k),0.0_r8)+ &
623 & (0.5_r8+sign(0.5_r8, huon(i,j,k)))* &
625 & tl_curv(i ,j)*min(huon(i,j,k),0.0_r8)+ &
627 & (0.5_r8+sign(0.5_r8,-huon(i,j,k)))* &
635 fx(i,j)=huon(i,j,k)*0.5_r8* &
636 & (t(i-1,j,k,nstp,itrc)+ &
637 & t(i ,j,k,nstp,itrc)- &
638 & cff2*(grad(i ,j)- &
642 & (t(i-1,j,k,nstp,itrc)+ &
643 & t(i ,j,k,nstp,itrc)- &
644 & cff2*(grad(i ,j)- &
647 & (tl_t(i-1,j,k,nstp,itrc)+ &
648 & tl_t(i ,j,k,nstp,itrc)- &
649 & cff2*(tl_grad(i ,j)- &
650 & tl_grad(i-1,j))))- &
660 fe(i,j)=t(i,j ,k,nstp,itrc)- &
661 & t(i,j-1,k,nstp,itrc)
662 tl_fe(i,j)=tl_t(i,j ,k,nstp,itrc)- &
663 & tl_t(i,j-1,k,nstp,itrc)
665 fe(i,j)=fe(i,j)*vmask(i,j)
666 tl_fe(i,j)=tl_fe(i,j)*vmask(i,j)
671 IF (
domain(ng)%Southern_Edge(tile))
THEN
673 fe(i,jstr-1)=fe(i,jstr)
674 tl_fe(i,jstr-1)=tl_fe(i,jstr)
679 IF (
domain(ng)%Northern_Edge(tile))
THEN
681 fe(i,jend+2)=fe(i,jend+1)
682 tl_fe(i,jend+2)=tl_fe(i,jend+1)
690 curv(i,j)=fe(i,j+1)-fe(i,j)
691 tl_curv(i,j)=tl_fe(i,j+1)-tl_fe(i,j)
693 cff=2.0_r8*fe(i,j+1)*fe(i,j)
694 tl_cff=2.0_r8*(tl_fe(i,j+1)*fe(i,j)+ &
695 & fe(i,j+1)*tl_fe(i,j))- &
700 grad(i,j)=cff/(fe(i,j+1)+fe(i,j))
701 tl_grad(i,j)=((fe(i,j+1)+fe(i,j))*tl_cff- &
702 & cff*(tl_fe(i,j+1)+tl_fe(i,j)))/ &
703 & ((fe(i,j+1)+fe(i,j))* &
704 & (fe(i,j+1)+fe(i,j)))+ &
714 grad(i,j)=0.5_r8*(fe(i,j+1)+fe(i,j))
715 tl_grad(i,j)=0.5_r8*(tl_fe(i,j+1)+tl_fe(i,j))
725 fe(i,j)=hvom(i,j,k)*0.5_r8* &
726 & (t(i,j-1,k,nstp,itrc)+ &
727 & t(i,j ,k,nstp,itrc))- &
728 & cff1*(curv(i,j-1)*max(hvom(i,j,k),0.0_r8)+ &
729 & curv(i,j )*min(hvom(i,j,k),0.0_r8))
732 & (t(i,j-1,k,nstp,itrc)+ &
733 & t(i,j ,k,nstp,itrc))+ &
735 & (tl_t(i,j-1,k,nstp,itrc)+ &
736 & tl_t(i,j ,k,nstp,itrc)))- &
738 & (tl_curv(i,j-1)*max(hvom(i,j,k),0.0_r8)+ &
740 & (0.5_r8+sign(0.5_r8, hvom(i,j,k)))* &
742 & tl_curv(i,j )*min(hvom(i,j,k),0.0_r8)+ &
744 & (0.5_r8+sign(0.5_r8,-hvom(i,j,k)))* &
752 fe(i,j)=hvom(i,j,k)*0.5_r8* &
753 & (t(i,j-1,k,nstp,itrc)+ &
754 & t(i,j ,k,nstp,itrc)- &
755 & cff2*(grad(i,j )- &
759 & (t(i,j-1,k,nstp,itrc)+ &
760 & t(i,j ,k,nstp,itrc)- &
761 & cff2*(grad(i,j )- &
764 & (tl_t(i,j-1,k,nstp,itrc)+ &
765 & tl_t(i,j ,k,nstp,itrc)- &
766 & cff2*(tl_grad(i,j )- &
767 & tl_grad(i,j-1))))- &
786 IF (((istr.le.isrc).and.(isrc.le.iend+1)).and. &
787 & ((jstr.le.jsrc).and.(jsrc.le.jend+1)))
THEN
788 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
790 fx(isrc,jsrc)=huon(isrc,jsrc,k)* &
792 tl_fx(isrc,jsrc)=tl_huon(isrc,jsrc,k)* &
793 &
sources(ng)%Tsrc(is,k,itrc)+ &
794 & huon(isrc,jsrc,k)* &
795 &
sources(ng)%tl_Tsrc(is,k,itrc)- &
802 tl_fx(isrc,jsrc)=0.0_r8
804 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
806 fe(isrc,jsrc)=hvom(isrc,jsrc,k)* &
808 tl_fe(isrc,jsrc)=tl_hvom(isrc,jsrc,k)* &
809 &
sources(ng)%Tsrc(is,k,itrc)+ &
810 & hvom(isrc,jsrc,k)* &
811 &
sources(ng)%tl_Tsrc(is,k,itrc)- &
818 tl_fe(isrc,jsrc)=0.0_r8
838 cff=(1.0_r8-gamma)*
dt(ng)
850 tl_t(i,j,k,3,itrc)=tl_hz(i,j,k)* &
851 & (cff1*t(i,j,k,nstp,itrc)+ &
852 & cff2*t(i,j,k,nnew,itrc))+ &
854 & (cff1*tl_t(i,j,k,nstp,itrc)+ &
855 & cff2*tl_t(i,j,k,nnew,itrc))- &
856 & cff*pm(i,j)*pn(i,j)* &
857 & (tl_fx(i+1,j)-tl_fx(i,j)+ &
858 & tl_fe(i,j+1)-tl_fe(i,j))- &
860 & hz(i,j,k)*(cff1*t(i,j,k,nstp,itrc)+ &
861 & cff2*t(i,j,k,nnew,itrc))
868# if defined AGE_MEAN && defined T_PASSIVE
882 cff=(1.0_r8-gamma)*
dt(ng)
892 tl_t(i,j,k,3,iage)=tl_t(i,j,k,3,iage)+ &
895 & tl_t(i,j,k,nnew,
inert(itrc))+ &
897 & t(i,j,k,nnew,
inert(itrc)))- &
900 & t(i,j,k,nnew,
inert(itrc))
914 j_loop1 :
DO j=jstr,jend
915 t_loop2 :
DO itrc=1,nt(ng)
924 fc(i,0)=1.5_r8*t(i,j,1,nstp,itrc)
927 fc(i,0)=2.0_r8*t(i,j,1,nstp,itrc)
933 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
934 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
935 cf(i,k+1)=cff*hz(i,j,k)
936 fc(i,k)=cff*(3.0_r8*(hz(i,j,k )*t(i,j,k+1,nstp,itrc)+ &
937 & hz(i,j,k+1)*t(i,j,k ,nstp,itrc))- &
938 & hz(i,j,k+1)*fc(i,k-1))
943 fc(i,n(ng))=(3.0_r8*t(i,j,n(ng),nstp,itrc)- &
944 & fc(i,n(ng)-1))/(2.0_r8-cf(i,n(ng)))
946 fc(i,n(ng))=(2.0_r8*t(i,j,n(ng),nstp,itrc)- &
947 & fc(i,n(ng)-1))/(1.0_r8-cf(i,n(ng)))
952 fc(i,k)=fc(i,k)-cf(i,k+1)*fc(i,k+1)
962 tl_fc(i,0)=1.5_r8*tl_t(i,j,1,nstp,itrc)
967 tl_fc(i,0)=2.0_r8*tl_t(i,j,1,nstp,itrc)
973 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
974 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
975 cf(i,k+1)=cff*hz(i,j,k)
978 & (3.0_r8*(hz(i,j,k )* &
979 & tl_t(i,j,k+1,nstp,itrc)+ &
981 & tl_t(i,j,k ,nstp,itrc)+ &
983 & t(i,j,k+1,nstp,itrc)+ &
985 & t(i,j,k ,nstp,itrc)- &
986 & hz(i,j,k )*t(i,j,k+1,nstp,itrc)- &
987 & hz(i,j,k+1)*t(i,j,k ,nstp,itrc))- &
988 & ((tl_hz(i,j,k+1)-hz(i,j,k+1))*fc(i,k-1)+ &
989 & 2.0_r8*(tl_hz(i,j,k )+ &
992 & hz(i,j,k+1))*fc(i,k)+ &
993 & (tl_hz(i,j,k )-hz(i,j,k ))*fc(i,k+1))- &
994 & hz(i,j,k+1)*tl_fc(i,k-1))
997 & (3.0_r8*(hz(i,j,k )* &
998 & tl_t(i,j,k+1,nstp,itrc)+ &
1000 & tl_t(i,j,k ,nstp,itrc)+ &
1002 & t(i,j,k+1,nstp,itrc)+ &
1004 & t(i,j,k ,nstp,itrc))- &
1005 & (tl_hz(i,j,k+1)*fc(i,k-1)+ &
1006 & 2.0_r8*(tl_hz(i,j,k )+ &
1007 & tl_hz(i,j,k+1))*fc(i,k)+ &
1008 & tl_hz(i,j,k )*fc(i,k+1))- &
1009 & hz(i,j,k+1)*tl_fc(i,k-1))
1018 tl_fc(i,n(ng))=(3.0_r8*tl_t(i,j,n(ng),nstp,itrc)- &
1019 & tl_fc(i,n(ng)-1))/ &
1020 & (2.0_r8-cf(i,n(ng)))
1025 tl_fc(i,n(ng))=(2.0_r8*tl_t(i,j,n(ng),nstp,itrc)- &
1026 & tl_fc(i,n(ng)-1))/ &
1027 & (1.0_r8-cf(i,n(ng)))
1034 tl_fc(i,k)=tl_fc(i,k)-cf(i,k+1)*tl_fc(i,k+1)
1037 tl_fc(i,k+1)=tl_w(i,j,k+1)*fc(i,k+1)+ &
1038 & w(i,j,k+1)*tl_fc(i,k+1)- &
1040 & w(i,j,k+1)*fc(i,k+1)
1047 tl_fc(i,n(ng))=0.0_r8
1057 fc(i,k+1)=w(i,j,k+1)*fc(i,k+1)
1071 fc(i,k)=t(i,j,k+1,nstp,itrc)- &
1072 & t(i,j,k ,nstp,itrc)
1073 tl_fc(i,k)=tl_t(i,j,k+1,nstp,itrc)- &
1074 & tl_t(i,j,k ,nstp,itrc)
1079 tl_fc(i,0)=tl_fc(i,1)
1080 fc(i,n(ng))=fc(i,n(ng)-1)
1081 tl_fc(i,n(ng))=tl_fc(i,n(ng)-1)
1085 cff=2.0_r8*fc(i,k)*fc(i,k-1)
1086 tl_cff=2.0_r8*(tl_fc(i,k)*fc(i,k-1)+ &
1087 & fc(i,k)*tl_fc(i,k-1))- &
1091 IF (cff.gt.eps)
THEN
1092 cf(i,k)=cff/(fc(i,k)+fc(i,k-1))
1093 tl_cf(i,k)=((fc(i,k)+fc(i,k-1))*tl_cff- &
1094 & cff*(tl_fc(i,k)+tl_fc(i,k-1)))/ &
1095 & ((fc(i,k)+fc(i,k-1))*(fc(i,k)+fc(i,k-1)))+ &
1109 & 0.5_r8*(t(i,j,k ,nstp,itrc)+ &
1110 & t(i,j,k+1,nstp,itrc)- &
1111 & cff1*(cf(i,k+1)-cf(i,k)))
1112 tl_fc(i,k)=0.5_r8* &
1114 & (t(i,j,k ,nstp,itrc)+ &
1115 & t(i,j,k+1,nstp,itrc)- &
1116 & cff1*(cf(i,k+1)-cf(i,k)))+ &
1118 & (tl_t(i,j,k ,nstp,itrc)+ &
1119 & tl_t(i,j,k+1,nstp,itrc)- &
1120 & cff1*(tl_cf(i,k+1)-tl_cf(i,k))))- &
1130 tl_fc(i,n(ng))=0.0_r8
1140 & 0.5_r8*(t(i,j,k ,nstp,itrc)+ &
1141 & t(i,j,k+1,nstp,itrc))
1142 tl_fc(i,k)=0.5_r8* &
1144 & (t(i,j,k ,nstp,itrc)+ &
1145 & t(i,j,k+1,nstp,itrc))+ &
1147 & (tl_t(i,j,k ,nstp,itrc)+ &
1148 & tl_t(i,j,k+1,nstp,itrc)))- &
1158 tl_fc(i,n(ng))=0.0_r8
1168 cff1=max(w(i,j,k),0.0_r8)
1169 cff2=min(w(i,j,k),0.0_r8)
1170 tl_cff1=(0.5_r8+sign(0.5_r8, w(i,j,k)))*tl_w(i,j,k)
1171 tl_cff2=(0.5_r8+sign(0.5_r8,-w(i,j,k)))*tl_w(i,j,k)
1172 fc(i,k)=cff1*t(i,j,k ,nstp,itrc)+ &
1173 & cff2*t(i,j,k+1,nstp,itrc)
1174 tl_fc(i,k)=tl_cff1*t(i,j,k ,nstp,itrc)+ &
1175 & cff1*tl_t(i,j,k ,nstp,itrc)+ &
1176 & tl_cff2*t(i,j,k+1,nstp,itrc)+ &
1177 & cff2*tl_t(i,j,k+1,nstp,itrc)- &
1189 tl_fc(i,n(ng))=0.0_r8
1203 & (cff2*(t(i,j,k ,nstp,itrc)+ &
1204 & t(i,j,k+1,nstp,itrc))- &
1205 & cff3*(t(i,j,k-1,nstp,itrc)+ &
1206 & t(i,j,k+2,nstp,itrc)))
1207 tl_fc(i,k)=tl_w(i,j,k)* &
1208 & (cff2*(t(i,j,k ,nstp,itrc)+ &
1209 & t(i,j,k+1,nstp,itrc))- &
1210 & cff3*(t(i,j,k-1,nstp,itrc)+ &
1211 & t(i,j,k+2,nstp,itrc)))+ &
1213 & (cff2*(tl_t(i,j,k ,nstp,itrc)+ &
1214 & tl_t(i,j,k+1,nstp,itrc))- &
1215 & cff3*(tl_t(i,j,k-1,nstp,itrc)+ &
1216 & tl_t(i,j,k+2,nstp,itrc)))- &
1226 & (cff1*t(i,j,1,nstp,itrc)+ &
1227 & cff2*t(i,j,2,nstp,itrc)- &
1228 & cff3*t(i,j,3,nstp,itrc))
1229 tl_fc(i,1)=tl_w(i,j,1)* &
1230 & (cff1*t(i,j,1,nstp,itrc)+ &
1231 & cff2*t(i,j,2,nstp,itrc)- &
1232 & cff3*t(i,j,3,nstp,itrc))+ &
1234 & (cff1*tl_t(i,j,1,nstp,itrc)+ &
1235 & cff2*tl_t(i,j,2,nstp,itrc)- &
1236 & cff3*tl_t(i,j,3,nstp,itrc))- &
1241 fc(i,n(ng)-1)=w(i,j,n(ng)-1)* &
1242 & (cff1*t(i,j,n(ng) ,nstp,itrc)+ &
1243 & cff2*t(i,j,n(ng)-1,nstp,itrc)- &
1244 & cff3*t(i,j,n(ng)-2,nstp,itrc))
1245 tl_fc(i,n(ng)-1)=tl_w(i,j,n(ng)-1)* &
1246 & (cff1*t(i,j,n(ng) ,nstp,itrc)+ &
1247 & cff2*t(i,j,n(ng)-1,nstp,itrc)- &
1248 & cff3*t(i,j,n(ng)-2,nstp,itrc))+ &
1250 & (cff1*tl_t(i,j,n(ng) ,nstp,itrc)+ &
1251 & cff2*tl_t(i,j,n(ng)-1,nstp,itrc)- &
1252 & cff3*tl_t(i,j,n(ng)-2,nstp,itrc))- &
1257 tl_fc(i,n(ng))=0.0_r8
1275 cff=(1.0_r8-gamma)*
dt(ng)
1279 dc(i,k)=1.0_r8/(hz(i,j,k)- &
1280 & cff*pm(i,j)*pn(i,j)* &
1281 & (huon(i+1,j,k)-huon(i,j,k)+ &
1282 & hvom(i,j+1,k)-hvom(i,j,k)+ &
1283 & (w(i,j,k)-w(i,j,k-1))))
1284 tl_dc(i,k)=-dc(i,k)*dc(i,k)* &
1286 & cff*pm(i,j)*pn(i,j)* &
1287 & (tl_huon(i+1,j,k)-tl_huon(i,j,k)+ &
1288 & tl_hvom(i,j+1,k)-tl_hvom(i,j,k)+ &
1289 & (tl_w(i,j,k)-tl_w(i,j,k-1))))+ &
1306 cff1=cff*pm(i,j)*pn(i,j)
1311 tl_t(i,j,k,3,itrc)=tl_dc(i,k)* &
1312 & (t(i,j,k,3,itrc)*hz(i,j,k)- &
1313 & cff1*(fc(i,k)-fc(i,k-1)))+ &
1315 & (tl_t(i,j,k,3,itrc)- &
1316 & cff1*(tl_fc(i,k)-tl_fc(i,k-1)))- &
1319 & (t(i,j,k,3,itrc)*hz(i,j,k)- &
1320 & cff1*(fc(i,k)-fc(i,k-1)))
1342 cff=1.0_r8/(z_r(i,j,k+1)-z_r(i,j,k))
1343 tl_cff=-cff*cff*(tl_z_r(i,j,k+1)-tl_z_r(i,j,k))+ &
1357 fc(i,k)=cff3*cff*akt(i,j,k,ltrc)* &
1358 & (t(i,j,k+1,nstp,itrc)- &
1359 & t(i,j,k ,nstp,itrc))
1362 & (cff*(tl_akt(i,j,k,ltrc)* &
1363 & (t(i,j,k+1,nstp,itrc)- &
1364 & t(i,j,k ,nstp,itrc))+ &
1365 & akt(i,j,k,ltrc)* &
1366 & (tl_t(i,j,k+1,nstp,itrc)- &
1367 & tl_t(i,j,k ,nstp,itrc)))+ &
1368 & tl_cff*(akt(i,j,k,ltrc)* &
1369 & (t(i,j,k+1,nstp,itrc)- &
1370 & t(i,j,k,nstp,itrc))))- &
1377# ifdef LMD_NONLOCAL_NOT_YET
1384 IF (itrc.le.nat)
THEN
1392 &
dt(ng)*akt(i,j,k,itrc)*ghats(i,j,k,itrc)
1394 tl_fc(i,k)=tl_fc(i,k)- &
1395 &
dt(ng)*(tl_akt(i,j,k,itrc)* &
1396 & ghats(i,j,k,itrc)+ &
1397 & akt(i,j,k,itrc)* &
1398 & tl_ghats(i,j,k,itrc))+ &
1400 &
dt(ng)*akt(i,j,k,itrc)*ghats(i,j,k,itrc)
1411 IF (itrc.eq.
itemp)
THEN
1421 tl_fc(i,k)=tl_fc(i,k)+ &
1422 &
dt(ng)*srflx(i,j)* &
1423# ifdef WET_DRY_NOT_YET
1437 tl_fc(i,0)=
dt(ng)*tl_btflx(i,j,itrc)
1440 tl_fc(i,n(ng))=
dt(ng)*tl_stflx(i,j,itrc)
1447 cff1=hz(i,j,k)*t(i,j,k,nstp,itrc)
1448 tl_cff1=tl_hz(i,j,k)*t(i,j,k,nstp,itrc)+ &
1449 & hz(i,j,k)*tl_t(i,j,k,nstp,itrc)- &
1453 cff2=fc(i,k)-fc(i,k-1)
1454 tl_cff2=tl_fc(i,k)-tl_fc(i,k-1)
1457 tl_t(i,j,k,nnew,itrc)=tl_cff1+tl_cff2
1458# ifdef DIAGNOSTICS_TS
1466# endif /* !TS_FIXED */
1476 j_loop2:
DO j=jstr,jend
1480 cff=1.0_r8/(z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
1481 & z_r(i,j,k )-z_r(i-1,j,k ))
1482 tl_cff=-cff*cff*(tl_z_r(i,j,k+1)+tl_z_r(i-1,j,k+1)- &
1483 & tl_z_r(i,j,k )-tl_z_r(i-1,j,k ))+ &
1496 fc(i,k)=cff3*cff*(u(i,j,k+1,nstp)-u(i,j,k,nstp))* &
1497 & (akv(i,j,k)+akv(i-1,j,k))
1500 & (cff*((tl_u(i,j,k+1,nstp)-tl_u(i,j,k,nstp))* &
1501 & (akv(i,j,k)+akv(i-1,j,k))+ &
1502 & (u(i,j,k+1,nstp)-u(i,j,k,nstp))* &
1503 & (tl_akv(i,j,k)+tl_akv(i-1,j,k)))+ &
1504 & tl_cff*(u(i,j,k+1,nstp)-u(i,j,k,nstp))* &
1505 & (akv(i,j,k)+akv(i-1,j,k)))- &
1521 tl_fc(i,n(ng))=0.0_r8
1525 tl_fc(i,0)=
dt(ng)*tl_bustr(i,j)
1528 tl_fc(i,n(ng))=
dt(ng)*tl_sustr(i,j)
1536 dc(i,0)=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
1542 cff1=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
1543 tl_cff1=0.5_r8*(tl_u(i,j,k,nstp)* &
1544 & (hz(i,j,k)+hz(i-1,j,k))+ &
1546 & (tl_hz(i,j,k)+tl_hz(i-1,j,k)))- &
1552 tl_cff2=tl_fc(i,k)-tl_fc(i,k-1)
1555 tl_u(i,j,k,nnew)=tl_cff1+tl_cff2
1556# ifdef DIAGNOSTICS_UV
1568 cff1=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
1569 tl_cff1=0.5_r8*(tl_u(i,j,k,nstp)* &
1570 & (hz(i,j,k)+hz(i-1,j,k))+ &
1572 & (tl_hz(i,j,k)+tl_hz(i-1,j,k)))- &
1578 tl_cff2=tl_fc(i,k)-tl_fc(i,k-1)
1584 tl_u(i,j,k,nnew)=tl_cff1- &
1585 & cff3*tl_ru(i,j,k,indx)+ &
1587# ifdef DIAGNOSTICS_UV
1601 cff1= 5.0_r8/12.0_r8
1602 cff2=16.0_r8/12.0_r8
1605 cff3=u(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
1606 tl_cff3=0.5_r8*(tl_u(i,j,k,nstp)* &
1607 & (hz(i,j,k)+hz(i-1,j,k))+ &
1609 & (tl_hz(i,j,k)+tl_hz(i-1,j,k)))- &
1615 tl_cff4=tl_fc(i,k)-tl_fc(i,k-1)
1621 tl_u(i,j,k,nnew)=tl_cff3+ &
1622 & dc(i,0)*(cff1*tl_ru(i,j,k,nrhs)- &
1623 & cff2*tl_ru(i,j,k,indx))+ &
1625# ifdef DIAGNOSTICS_UV
1652 IF (j.ge.jstrv)
THEN
1656 cff=1.0_r8/(z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
1657 & z_r(i,j,k )-z_r(i,j-1,k ))
1658 tl_cff=-cff*cff*(tl_z_r(i,j,k+1)+tl_z_r(i,j-1,k+1)- &
1659 & tl_z_r(i,j,k )-tl_z_r(i,j-1,k ))+ &
1672 fc(i,k)=cff3*cff*(v(i,j,k+1,nstp)-v(i,j,k,nstp))* &
1673 & (akv(i,j,k)+akv(i,j-1,k))
1676 & (cff*((tl_v(i,j,k+1,nstp)-tl_v(i,j,k,nstp))* &
1677 & (akv(i,j,k)+akv(i,j-1,k))+ &
1678 & (v(i,j,k+1,nstp)-v(i,j,k,nstp))* &
1679 & (tl_akv(i,j,k)+tl_akv(i,j-1,k)))+ &
1680 & tl_cff*(v(i,j,k+1,nstp)-v(i,j,k,nstp))* &
1681 & (akv(i,j,k)+akv(i,j-1,k)))- &
1697 tl_fc(i,n(ng))=0.0_r8
1701 tl_fc(i,0)=
dt(ng)*tl_bvstr(i,j)
1704 tl_fc(i,n(ng))=
dt(ng)*tl_svstr(i,j)
1712 dc(i,0)=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
1717 cff1=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
1718 tl_cff1=0.5_r8*(tl_v(i,j,k,nstp)* &
1719 & (hz(i,j,k)+hz(i,j-1,k))+ &
1721 & (tl_hz(i,j,k)+tl_hz(i,j-1,k)))- &
1727 tl_cff2=tl_fc(i,k)-tl_fc(i,k-1)
1730 tl_v(i,j,k,nnew)=tl_cff1+tl_cff2
1731# ifdef DIAGNOSTICS_UV
1743 cff1=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
1744 tl_cff1=0.5_r8*(tl_v(i,j,k,nstp)* &
1745 & (hz(i,j,k)+hz(i,j-1,k))+ &
1747 & (tl_hz(i,j,k)+tl_hz(i,j-1,k)))- &
1753 tl_cff2=tl_fc(i,k)-tl_fc(i,k-1)
1759 tl_v(i,j,k,nnew)=tl_cff1- &
1760 & cff3*tl_rv(i,j,k,indx)+ &
1762# ifdef DIAGNOSTICS_UV
1776 cff1= 5.0_r8/12.0_r8
1777 cff2=16.0_r8/12.0_r8
1780 cff3=v(i,j,k,nstp)*0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
1781 tl_cff3=0.5_r8*(tl_v(i,j,k,nstp)* &
1782 & (hz(i,j,k)+hz(i,j-1,k))+ &
1784 & (tl_hz(i,j,k)+tl_hz(i,j-1,k)))- &
1790 tl_cff4=tl_fc(i,k)-tl_fc(i,k-1)
1796 tl_v(i,j,k,nnew)=tl_cff3+ &
1797 & dc(i,0)*(cff1*tl_rv(i,j,k,nrhs)- &
1798 & cff2*tl_rv(i,j,k,indx))+ &
1800# ifdef DIAGNOSTICS_UV
1839 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
1840 & imins, imaxs, jmins, jmaxs, &
1850 & lbi, ubi, lbj, ubj, 1, n(ng), &
1851 & tl_t(:,:,:,3,itrc))
1863 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &