122 & LBi, UBi, LBj, UBj, &
123 & IminS, ImaxS, JminS, JmaxS, &
124 & nrhs, nstp, nnew, &
126 & rmask, umask, vmask, &
129 & rmask_wet, umask_wet, vmask_wet, &
131 & omn, om_u, om_v, on_u, on_v, &
139# if defined FLOATS_NOT_YET && defined FLOAT_VWALK
142# ifdef DIAGNOSTICS_TS
162 integer,
intent(in) :: ng, tile
163 integer,
intent(in) :: LBi, UBi, LBj, UBj
164 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
165 integer,
intent(in) :: nrhs, nstp, nnew
169 real(r8),
intent(in) :: rmask(LBi:,LBj:)
170 real(r8),
intent(in) :: umask(LBi:,LBj:)
171 real(r8),
intent(in) :: vmask(LBi:,LBj:)
174 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
175 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
176 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
178 real(r8),
intent(in) :: omn(LBi:,LBj:)
179 real(r8),
intent(in) :: om_u(LBi:,LBj:)
180 real(r8),
intent(in) :: om_v(LBi:,LBj:)
181 real(r8),
intent(in) :: on_u(LBi:,LBj:)
182 real(r8),
intent(in) :: on_v(LBi:,LBj:)
183 real(r8),
intent(in) :: pm(LBi:,LBj:)
184 real(r8),
intent(in) :: pn(LBi:,LBj:)
185 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
186 real(r8),
intent(in) :: Huon(LBi:,LBj:,:)
187 real(r8),
intent(in) :: Hvom(LBi:,LBj:,:)
188 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
190 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
191 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
193 real(r8),
intent(in) :: Akt(LBi:,LBj:,0:,:)
194 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
196 real(r8),
intent(in) :: W(LBi:,LBj:,0:)
198 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
199 real(r8),
intent(in) :: tl_Huon(LBi:,LBj:,:)
200 real(r8),
intent(in) :: tl_Hvom(LBi:,LBj:,:)
201 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
203 real(r8),
intent(in) :: tl_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
205 real(r8),
intent(in) :: tl_Akt(LBi:,LBj:,0:,:)
207 real(r8),
intent(in) :: tl_W(LBi:,LBj:,0:)
208# ifdef DIAGNOSTICS_TS
212 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
214 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
216# if defined FLOATS_NOT_YET && defined FLOAT_VWALK
217 real(r8),
intent(out) :: dAktdz(LBi:,LBj:,:)
223 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
224 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
225 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
228 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
229 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
230 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
232 real(r8),
intent(in) :: omn(LBi:UBi,LBj:UBj)
233 real(r8),
intent(in) :: om_u(LBi:UBi,LBj:UBj)
234 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
235 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
236 real(r8),
intent(in) :: on_v(LBi:UBi,LBj:UBj)
237 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
238 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
239 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
240 real(r8),
intent(in) :: Huon(LBi:UBi,LBj:UBj,N(ng))
241 real(r8),
intent(in) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
242 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
243 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
244 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
245 real(r8),
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
247 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
248 real(r8),
intent(in) :: tl_Huon(LBi:UBi,LBj:UBj,N(ng))
249 real(r8),
intent(in) :: tl_Hvom(LBi:UBi,LBj:UBj,N(ng))
250 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
251 real(r8),
intent(in) :: tl_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
252 real(r8),
intent(in) :: tl_W(LBi:UBi,LBj:UBj,0:N(ng))
253# ifdef DIAGNOSTICS_TS
257 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
258# if defined FLOATS_NOT_YET && defined FLOAT_VWALK
259 real(r8),
intent(out) :: dAktdz(LBi:UBi,LBj:UBj,N(ng))
265 logical :: LapplySrc, Lhsimt
267 integer :: JminT, JmaxT
268 integer :: Isrc, Jsrc
269 integer :: i, ic, is, itrc, j, k, ltrc
270# if defined AGE_MEAN && defined T_PASSIVE
273# ifdef DIAGNOSTICS_TS
276 real(r8),
parameter :: eps = 1.0e-16_r8
278 real(r8) :: cff, cff1, cff2, cff3
279 real(r8) :: tl_cff, tl_cff1, tl_cff2, tl_cff3
281 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CF
282 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: BC
283 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC
284 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
286 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_CF
287 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_BC
288 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_DC
289 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
291 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
292 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
293 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: curv
294 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
296 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FE
297 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FX
298 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_curv
299 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_grad
301 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: oHz
302 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_oHz
304# include "set_bounds.h"
319 ohz(i,j,k)=1.0_r8/hz(i,j,k)
320 tl_ohz(i,j,k)=-ohz(i,j,k)*ohz(i,j,k)*tl_hz(i,j,k)
328 ohz(i,j,k)=1.0_r8/hz(i,j,k)
329 tl_ohz(i,j,k)=-ohz(i,j,k)*ohz(i,j,k)*tl_hz(i,j,k)
338 t_loop1 :
DO itrc=1,nt(ng)
354 & lbi, ubi, lbj, ubj, 1, n(ng), &
355 & tl_t(:,:,:,nnew,itrc))
366 & lbi, ubi, lbj, ubj, 1, n(ng), &
369 & tl_t(:,:,:,nnew,itrc))
376 k_loop :
DO k=1,n(ng)
389 & (tl_huon(i,j,k)*(t(i-1,j,k,3,itrc)+ &
390 & t(i ,j,k,3,itrc))+ &
391 & huon(i,j,k)*(tl_t(i-1,j,k,3,itrc)+ &
392 & tl_t(i ,j,k,3,itrc)))
402 & (tl_hvom(i,j,k)*(t(i,j-1,k,3,itrc)+ &
403 & t(i,j ,k,3,itrc))+ &
404 & hvom(i,j,k)*(tl_t(i,j-1,k,3,itrc)+ &
405 & tl_t(i,j ,k,3,itrc)))
438 fx(i,j)=t(i ,j,k,3,itrc)- &
440 tl_fx(i,j)=tl_t(i ,j,k,3,itrc)- &
441 & tl_t(i-1,j,k,3,itrc)
443 fx(i,j)=fx(i,j)*umask(i,j)
444 tl_fx(i,j)=tl_fx(i,j)*umask(i,j)
449 IF (
domain(ng)%Western_Edge(tile))
THEN
451 fx(istr-1,j)=fx(istr,j)
452 tl_fx(istr-1,j)=tl_fx(istr,j)
457 IF (
domain(ng)%Eastern_Edge(tile))
THEN
459 fx(iend+2,j)=fx(iend+1,j)
460 tl_fx(iend+2,j)=tl_fx(iend+1,j)
468 curv(i,j)=fx(i+1,j)-fx(i,j)
469 tl_curv(i,j)=tl_fx(i+1,j)-tl_fx(i,j)
471 cff=2.0_r8*fx(i+1,j)*fx(i,j)
472 tl_cff=2.0_r8*(tl_fx(i+1,j)*fx(i,j)+ &
473 & fx(i+1,j)*tl_fx(i,j))
475 grad(i,j)=cff/(fx(i+1,j)+fx(i,j))
476 tl_grad(i,j)=((fx(i+1,j)+fx(i,j))*tl_cff- &
477 & cff*(tl_fx(i+1,j)+tl_fx(i,j)))/ &
478 & ((fx(i+1,j)+fx(i,j))* &
479 & (fx(i+1,j)+fx(i,j)))
486 grad(i,j)=0.5_r8*(fx(i+1,j)+fx(i,j))
487 tl_grad(i,j)=0.5_r8*(tl_fx(i+1,j)+tl_fx(i,j))
505 & (t(i-1,j,k,3,itrc)+ &
506 & t(i ,j,k,3,itrc))+ &
508 & (tl_t(i-1,j,k,3,itrc)+ &
509 & tl_t(i ,j,k,3,itrc)))- &
511 & (tl_curv(i-1,j)*max(huon(i,j,k),0.0_r8)+ &
513 & (0.5_r8+sign(0.5_r8, huon(i,j,k)))* &
515 & tl_curv(i ,j)*min(huon(i,j,k),0.0_r8)+ &
517 & (0.5_r8+sign(0.5_r8,-huon(i,j,k)))* &
530 & (t(i-1,j,k,3,itrc)+ &
531 & t(i ,j,k,3,itrc)- &
532 & cff2*(grad(i ,j)- &
535 & (tl_t(i-1,j,k,3,itrc)+ &
536 & tl_t(i ,j,k,3,itrc)- &
537 & cff2*(tl_grad(i ,j)- &
545 fe(i,j)=t(i,j ,k,3,itrc)- &
547 tl_fe(i,j)=tl_t(i,j ,k,3,itrc)- &
548 & tl_t(i,j-1,k,3,itrc)
550 fe(i,j)=fe(i,j)*vmask(i,j)
551 tl_fe(i,j)=tl_fe(i,j)*vmask(i,j)
556 IF (
domain(ng)%Southern_Edge(tile))
THEN
558 fe(i,jstr-1)=fe(i,jstr)
559 tl_fe(i,jstr-1)=tl_fe(i,jstr)
564 IF (
domain(ng)%Northern_Edge(tile))
THEN
566 fe(i,jend+2)=fe(i,jend+1)
567 tl_fe(i,jend+2)=tl_fe(i,jend+1)
575 curv(i,j)=fe(i,j+1)-fe(i,j)
576 tl_curv(i,j)=tl_fe(i,j+1)-tl_fe(i,j)
578 cff=2.0_r8*fe(i,j+1)*fe(i,j)
579 tl_cff=2.0_r8*(tl_fe(i,j+1)*fe(i,j)+ &
580 & fe(i,j+1)*tl_fe(i,j))
582 grad(i,j)=cff/(fe(i,j+1)+fe(i,j))
583 tl_grad(i,j)=((fe(i,j+1)+fe(i,j))*tl_cff- &
584 & cff*(tl_fe(i,j+1)+tl_fe(i,j)))/ &
585 & ((fe(i,j+1)+fe(i,j))* &
586 & (fe(i,j+1)+fe(i,j)))
593 grad(i,j)=0.5_r8*(fe(i,j+1)+fe(i,j))
594 tl_grad(i,j)=0.5_r8*(tl_fe(i,j+1)+tl_fe(i,j))
612 & (t(i,j-1,k,3,itrc)+ &
613 & t(i,j ,k,3,itrc))+ &
615 & (tl_t(i,j-1,k,3,itrc)+ &
616 & tl_t(i,j ,k,3,itrc)))- &
618 & (tl_curv(i,j-1)*max(hvom(i,j,k),0.0_r8)+ &
620 & (0.5_r8+sign(0.5_r8, hvom(i,j,k)))* &
622 & tl_curv(i,j )*min(hvom(i,j,k),0.0_r8)+ &
624 & (0.5_r8+sign(0.5_r8,-hvom(i,j,k)))* &
637 & (t(i,j-1,k,3,itrc)+ &
638 & t(i,j ,k,3,itrc)- &
639 & cff2*(grad(i,j )- &
642 & (tl_t(i,j-1,k,3,itrc)+ &
643 & tl_t(i,j ,k,3,itrc)- &
644 & cff2*(tl_grad(i,j )- &
661 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
664 lapplysrc=(istrum2.le.isrc).and. &
665 & (isrc.le.iendp3).and. &
666 & (jstrvm2.le.jsrc).and. &
669 lapplysrc=(istr.le.isrc).and. &
670 & (isrc.le.iend+1).and. &
671 & (jstr.le.jsrc).and. &
679 tl_fx(isrc,jsrc)=tl_huon(isrc,jsrc,k)* &
680 &
sources(ng)%Tsrc(is,k,itrc)+ &
681 & huon(isrc,jsrc,k)* &
682 &
sources(ng)%tl_Tsrc(is,k,itrc)
685 IF ((rmask(isrc ,jsrc).eq.0.0_r8).and. &
686 & (rmask(isrc-1,jsrc).eq.1.0_r8))
THEN
690 tl_fx(isrc,jsrc)=tl_huon(isrc,jsrc,k)* &
691 & t(isrc-1,jsrc,k,3,itrc)+ &
692 & huon(isrc,jsrc,k)* &
693 & tl_t(isrc-1,jsrc,k,3,itrc)
694 ELSE IF ((rmask(isrc ,jsrc).eq.1.0_r8).and. &
695 & (rmask(isrc-1,jsrc).eq.0.0_r8))
THEN
699 tl_fx(isrc,jsrc)=tl_huon(isrc,jsrc,k)* &
700 & t(isrc ,jsrc,k,3,itrc)+ &
701 & huon(isrc,jsrc,k)* &
702 & tl_t(isrc ,jsrc,k,3,itrc)
707 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
710 lapplysrc=(istrum2.le.isrc).and. &
711 & (isrc.le.iendp2i).and. &
712 & (jstrvm2.le.jsrc).and. &
715 lapplysrc=(istr.le.isrc).and. &
716 & (isrc.le.iend).and. &
717 & (jstr.le.jsrc).and. &
725 tl_fe(isrc,jsrc)=tl_hvom(isrc,jsrc,k)* &
726 &
sources(ng)%Tsrc(is,k,itrc)+ &
727 & hvom(isrc,jsrc,k)* &
728 &
sources(ng)%tl_Tsrc(is,k,itrc)
731 IF ((rmask(isrc,jsrc ).eq.0.0_r8).and. &
732 & (rmask(isrc,jsrc-1).eq.1.0_r8))
THEN
736 tl_fe(isrc,jsrc)=tl_hvom(isrc,jsrc,k)* &
737 & t(isrc,jsrc-1,k,3,itrc)+ &
738 & hvom(isrc,jsrc,k)* &
739 & tl_t(isrc,jsrc-1,k,3,itrc)
740 ELSE IF ((rmask(isrc,jsrc ).eq.1.0_r8).and. &
741 & (rmask(isrc,jsrc-1).eq.0.0_r8))
THEN
745 tl_fe(isrc,jsrc)=tl_hvom(isrc,jsrc,k)* &
746 & t(isrc,jsrc ,k,3,itrc)+ &
747 & hvom(isrc,jsrc,k)* &
748 & tl_t(isrc,jsrc ,k,3,itrc)
765 cff=
dt(ng)*pm(i,j)*pn(i,j)
768 tl_cff1=cff*(tl_fx(i+1,j)-tl_fx(i,j))
771 tl_cff2=cff*(tl_fe(i,j+1)-tl_fe(i,j))
774 tl_cff3=tl_cff1+tl_cff2
777 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)-tl_cff3
778# ifdef DIAGNOSTICS_TS
793 t_loop2 :
DO itrc=1,nt(ng)
802 j_loop1 :
DO j=jmint,jmaxt
812 fc(i,0)=1.5_r8*t(i,j,1,3,itrc)
815 fc(i,0)=2.0_r8*t(i,j,1,3,itrc)
821 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
822 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
823 cf(i,k+1)=cff*hz(i,j,k)
824 fc(i,k)=cff*(3.0_r8*(hz(i,j,k )*t(i,j,k+1,3,itrc)+ &
825 & hz(i,j,k+1)*t(i,j,k ,3,itrc))- &
826 & hz(i,j,k+1)*fc(i,k-1))
831 fc(i,n(ng))=(3.0_r8*t(i,j,n(ng),3,itrc)-fc(i,n(ng)-1))/ &
832 & (2.0_r8-cf(i,n(ng)))
834 fc(i,n(ng))=(2.0_r8*t(i,j,n(ng),3,itrc)-fc(i,n(ng)-1))/ &
835 & (1.0_r8-cf(i,n(ng)))
840 fc(i,k)=fc(i,k)-cf(i,k+1)*fc(i,k+1)
850 tl_fc(i,0)=1.5_r8*tl_t(i,j,1,3,itrc)
855 tl_fc(i,0)=2.0_r8*tl_t(i,j,1,3,itrc)
861 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
862 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
863 cf(i,k+1)=cff*hz(i,j,k)
865 & (3.0_r8*(hz(i,j,k )*tl_t(i,j,k+1,3,itrc)+ &
866 & hz(i,j,k+1)*tl_t(i,j,k ,3,itrc)+ &
867 & tl_hz(i,j,k )*t(i,j,k+1,3,itrc)+ &
868 & tl_hz(i,j,k+1)*t(i,j,k ,3,itrc))- &
869 & (tl_hz(i,j,k+1)*fc(i,k-1)+ &
870 & 2.0_r8*(tl_hz(i,j,k )+ &
871 & tl_hz(i,j,k+1))*fc(i,k)+ &
872 & tl_hz(i,j,k )*fc(i,k+1))- &
873 & hz(i,j,k+1)*tl_fc(i,k-1))
881 tl_fc(i,n(ng))=(3.0_r8*tl_t(i,j,n(ng),3,itrc)- &
882 & tl_fc(i,n(ng)-1))/ &
883 & (2.0_r8-cf(i,n(ng)))
888 tl_fc(i,n(ng))=(2.0_r8*tl_t(i,j,n(ng),3,itrc)- &
889 & tl_fc(i,n(ng)-1))/ &
890 & (1.0_r8-cf(i,n(ng)))
897 tl_fc(i,k)=tl_fc(i,k)-cf(i,k+1)*tl_fc(i,k+1)
900 tl_fc(i,k+1)=tl_w(i,j,k+1)*fc(i,k+1)+ &
901 & w(i,j,k+1)*tl_fc(i,k+1)
907 tl_fc(i,n(ng))=0.0_r8
917 fc(i,k+1)=w(i,j,k+1)*fc(i,k+1)
931 fc(i,k)=t(i,j,k+1,3,itrc)- &
933 tl_fc(i,k)=tl_t(i,j,k+1,3,itrc)- &
934 & tl_t(i,j,k ,3,itrc)
939 tl_fc(i,0)=tl_fc(i,1)
940 fc(i,n(ng))=fc(i,n(ng)-1)
941 tl_fc(i,n(ng))=tl_fc(i,n(ng)-1)
945 cff=2.0_r8*fc(i,k)*fc(i,k-1)
946 tl_cff=2.0_r8*(tl_fc(i,k)*fc(i,k-1)+ &
947 & fc(i,k)*tl_fc(i,k-1))
949 cf(i,k)=cff/(fc(i,k)+fc(i,k-1))
950 tl_cf(i,k)=((fc(i,k)+fc(i,k-1))*tl_cff- &
951 & cff*(tl_fc(i,k)+tl_fc(i,k-1)))/ &
952 & ((fc(i,k)+fc(i,k-1))*(fc(i,k)+fc(i,k-1)))
963 & 0.5_r8*(t(i,j,k ,3,itrc)+ &
964 & t(i,j,k+1,3,itrc)- &
965 & cff1*(cf(i,k+1)-cf(i,k)))
968 & (t(i,j,k ,3,itrc)+ &
969 & t(i,j,k+1,3,itrc)- &
970 & cff1*(cf(i,k+1)-cf(i,k)))+ &
972 & (tl_t(i,j,k ,3,itrc)+ &
973 & tl_t(i,j,k+1,3,itrc)- &
974 & cff1*(tl_cf(i,k+1)-tl_cf(i,k))))
979 fc(i,0)=w(i,j,0)*t(i,j,1,3,itrc)
980 tl_fc(i,0)=tl_w(i,j,0)*t(i,j,1,3,itrc)+ &
981 & w(i,j,0)*tl_t(i,j,1,3,itrc)
987 tl_fc(i,n(ng))=0.0_r8
998 & 0.5_r8*(t(i,j,k ,3,itrc)+ &
1000 tl_fc(i,k)=0.5_r8* &
1002 & (t(i,j,k ,3,itrc)+ &
1003 & t(i,j,k+1,3,itrc))+ &
1005 & (tl_t(i,j,k ,3,itrc)+ &
1006 & tl_t(i,j,k+1,3,itrc)))
1011 fc(i,0)=w(i,j,0)*t(i,j,1,3,itrc)
1012 tl_fc(i,0)=tl_w(i,j,0)*t(i,j,1,3,itrc)+ &
1013 & w(i,j,0)*tl_t(i,j,1,3,itrc)
1019 tl_fc(i,n(ng))=0.0_r8
1049 & (cff2*(t(i,j,k ,3,itrc)+ &
1050 & t(i,j,k+1,3,itrc))- &
1051 & cff3*(t(i,j,k-1,3,itrc)+ &
1052 & t(i,j,k+2,3,itrc)))
1053 tl_fc(i,k)=tl_w(i,j,k)* &
1054 & (cff2*(t(i,j,k ,3,itrc)+ &
1055 & t(i,j,k+1,3,itrc))- &
1056 & cff3*(t(i,j,k-1,3,itrc)+ &
1057 & t(i,j,k+2,3,itrc)))+ &
1059 & (cff2*(tl_t(i,j,k ,3,itrc)+ &
1060 & tl_t(i,j,k+1,3,itrc))- &
1061 & cff3*(tl_t(i,j,k-1,3,itrc)+ &
1062 & tl_t(i,j,k+2,3,itrc)))
1067 fc(i,0)=w(i,j,0)*2.0_r8* &
1068 & (cff2*t(i,j,1,3,itrc)- &
1069 & cff3*t(i,j,2,3,itrc))
1070 tl_fc(i,0)=2.0_r8* &
1072 & (cff2*t(i,j,1,3,itrc)- &
1073 & cff3*t(i,j,2,3,itrc))+ &
1075 & (cff2*tl_t(i,j,1,3,itrc)- &
1076 & cff3*tl_t(i,j,2,3,itrc)))
1082 & (cff1*t(i,j,1,3,itrc)+ &
1083 & cff2*t(i,j,2,3,itrc)- &
1084 & cff3*t(i,j,3,3,itrc))
1085 tl_fc(i,1)=tl_w(i,j,1)* &
1086 & (cff1*t(i,j,1,3,itrc)+ &
1087 & cff2*t(i,j,2,3,itrc)- &
1088 & cff3*t(i,j,3,3,itrc))+ &
1090 & (cff1*tl_t(i,j,1,3,itrc)+ &
1091 & cff2*tl_t(i,j,2,3,itrc)- &
1092 & cff3*tl_t(i,j,3,3,itrc))
1093 fc(i,n(ng)-1)=w(i,j,n(ng)-1)* &
1094 & (cff1*t(i,j,n(ng) ,3,itrc)+ &
1095 & cff2*t(i,j,n(ng)-1,3,itrc)- &
1096 & cff3*t(i,j,n(ng)-2,3,itrc))
1097 tl_fc(i,n(ng)-1)=tl_w(i,j,n(ng)-1)* &
1098 & (cff1*t(i,j,n(ng) ,3,itrc)+ &
1099 & cff2*t(i,j,n(ng)-1,3,itrc)- &
1100 & cff3*t(i,j,n(ng)-2,3,itrc))+ &
1102 & (cff1*tl_t(i,j,n(ng) ,3,itrc)+ &
1103 & cff2*tl_t(i,j,n(ng)-1,3,itrc)- &
1104 & cff3*tl_t(i,j,n(ng)-2,3,itrc))
1106 tl_fc(i,n(ng))=0.0_r8
1112# ifdef DIAGNOSTICS_TS
1120 cf(i,0)=
dt(ng)*pm(i,j)*pn(i,j)
1124 cff1=cf(i,0)*(fc(i,k)-fc(i,k-1))
1125 tl_cff1=cf(i,0)*(tl_fc(i,k)-tl_fc(i,k-1))
1128 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)-tl_cff1
1129# ifdef SPLINES_VDIFF
1132 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)* &
1134 & (t(i,j,k,nnew,itrc)*hz(i,j,k))* &
1137# ifdef DIAGNOSTICS_TS
1146 END IF vadv_stepping
1166 IF (int(
sources(ng)%Dsrc(is)).eq.2)
THEN
1169 IF (((istr.le.isrc).and.(isrc.le.iend+1)).and. &
1170 & ((jstr.le.jsrc).and.(jsrc.le.jend+1)))
THEN
1172 cff=
dt(ng)*pm(isrc,jsrc)*pn(isrc,jsrc)
1173# ifdef SPLINES_VDIFF
1174 cff=cff*ohz(isrc,jsrc,k)
1175 tl_cff=cff*tl_ohz(isrc,jsrc,k)
1178 cff3=
sources(ng)%Tsrc(is,k,itrc)
1179 tl_cff3=
sources(ng)%tl_Tsrc(is,k,itrc)
1181 cff3=t(isrc,jsrc,k,3,itrc)
1182 tl_cff3=tl_t(isrc,jsrc,k,3,itrc)
1188# ifdef SPLINES_VDIFF
1189 tl_t(isrc,jsrc,k,nnew,itrc)= &
1190 & tl_t(isrc,jsrc,k,nnew,itrc)+ &
1191 & cff*(
sources(ng)%tl_Qsrc(is,k)* &
1195 & tl_cff*
sources(ng)%Qsrc(is,k)* &
1198 tl_t(isrc,jsrc,k,nnew,itrc)= &
1199 & tl_t(isrc,jsrc,k,nnew,itrc)+ &
1200 & cff*(
sources(ng)%tl_Qsrc(is,k)* &
1217 j_loop2 :
DO j=jstr,jend
1221# ifdef SPLINES_VDIFF
1232 fc(i,k)=cff1*hz(i,j,k )- &
1233 &
dt(ng)*akt(i,j,k-1,ltrc)*ohz(i,j,k )
1234 cf(i,k)=cff1*hz(i,j,k+1)- &
1235 &
dt(ng)*akt(i,j,k+1,ltrc)*ohz(i,j,k+1)
1248 bc(i,k)=cff1*(hz(i,j,k)+hz(i,j,k+1))+ &
1249 &
dt(ng)*akt(i,j,k,ltrc)*(ohz(i,j,k)+ohz(i,j,k+1))
1250 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
1252 dc(i,k)=cff*(t(i,j,k+1,nnew,itrc)-t(i,j,k,nnew,itrc)- &
1253 & fc(i,k)*dc(i,k-1))
1265 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
1279 fc(i,k)=cff1*hz(i,j,k )- &
1280 &
dt(ng)*akt(i,j,k-1,ltrc)*ohz(i,j,k )
1281 tl_fc(i,k)=cff1*tl_hz(i,j,k )- &
1282 &
dt(ng)*(tl_akt(i,j,k-1,ltrc)*ohz(i,j,k )+ &
1283 & akt(i,j,k-1,ltrc)*tl_ohz(i,j,k ))
1284 cf(i,k)=cff1*hz(i,j,k+1)- &
1285 &
dt(ng)*akt(i,j,k+1,ltrc)*ohz(i,j,k+1)
1286 tl_cf(i,k)=cff1*tl_hz(i,j,k+1)- &
1287 &
dt(ng)*(tl_akt(i,j,k+1,ltrc)*ohz(i,j,k+1)+ &
1288 & akt(i,j,k+1,ltrc)*tl_ohz(i,j,k+1))
1302 bc(i,k)=cff1*(hz(i,j,k)+hz(i,j,k+1))+ &
1303 &
dt(ng)*akt(i,j,k,ltrc)*(ohz(i,j,k)+ohz(i,j,k+1))
1304 tl_bc(i,k)=cff1*(tl_hz(i,j,k)+tl_hz(i,j,k+1))+ &
1305 &
dt(ng)*(tl_akt(i,j,k,ltrc)* &
1306 & (ohz(i,j,k)+ohz(i,j,k+1))+ &
1307 & akt(i,j,k,ltrc)* &
1308 & (tl_ohz(i,j,k)+tl_ohz(i,j,k+1)))
1309 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
1311 tl_dc(i,k)=cff*(tl_t(i,j,k+1,nnew,itrc)- &
1312 & tl_t(i,j,k ,nnew,itrc)- &
1313 & (tl_fc(i,k)*dc(i,k-1)+ &
1314 & tl_bc(i,k)*dc(i,k )+ &
1315 & tl_cf(i,k)*dc(i,k+1))- &
1316 & fc(i,k)*tl_dc(i,k-1))
1323 tl_dc(i,n(ng))=0.0_r8
1327 tl_dc(i,k)=tl_dc(i,k)-cf(i,k)*tl_dc(i,k+1)
1336 tl_dc(i,k)=tl_dc(i,k)*akt(i,j,k,ltrc)+ &
1337 & dc(i,k)*tl_akt(i,j,k,ltrc)
1338 dc(i,k)=dc(i,k)*akt(i,j,k,ltrc)
1341 tl_cff1=
dt(ng)*(tl_ohz(i,j,k)*(dc(i,k)-dc(i,k-1))+ &
1342 & ohz(i,j,k)*(tl_dc(i,k)-tl_dc(i,k-1)))
1345 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)+tl_cff1
1346# ifdef DIAGNOSTICS_TS
1369 cff1=1.0_r8/(z_r(i,j,k+1)-z_r(i,j,k))
1370 tl_cff1=-cff1*cff1*(tl_z_r(i,j,k+1)-tl_z_r(i,j,k))
1371 fc(i,k)=cff*cff1*akt(i,j,k,ltrc)
1372 tl_fc(i,k)=cff*(tl_cff1*akt(i,j,k,ltrc)+ &
1373 & cff1*tl_akt(i,j,k,ltrc))
1380 tl_fc(i,n(ng))=0.0_r8
1387 bc(i,k)=hz(i,j,k)-fc(i,k)-fc(i,k-1)
1388 tl_bc(i,k)=tl_hz(i,j,k)-tl_fc(i,k)-tl_fc(i,k-1)
1397 dc(i,k)=tl_t(i,j,k,nnew,itrc)- &
1398 & (tl_fc(i,k-1)*t(i,j,k-1,nnew,itrc)+ &
1399 & tl_bc(i,k )*t(i,j,k ,nnew,itrc)+ &
1400 & tl_fc(i,k )*t(i,j,k+1,nnew,itrc))
1404 dc(i,1)=tl_t(i,j,1,nnew,itrc)- &
1405 & (tl_bc(i,1)*t(i,j,1,nnew,itrc)+ &
1406 & tl_fc(i,1)*t(i,j,2,nnew,itrc))
1407 dc(i,n(ng))=tl_t(i,j,n(ng),nnew,itrc)- &
1408 & (tl_fc(i,n(ng)-1)*t(i,j,n(ng)-1,nnew,itrc)+ &
1409 & tl_bc(i,n(ng) )*t(i,j,n(ng) ,nnew,itrc))
1419 cff=1.0_r8/(bc(i,k)-fc(i,k-1)*cf(i,k-1))
1421 dc(i,k)=cff*(dc(i,k)-fc(i,k-1)*dc(i,k-1))
1429# ifdef DIAGNOSTICS_TS
1432 dc(i,n(ng))=(dc(i,n(ng))-fc(i,n(ng)-1)*dc(i,n(ng)-1))/ &
1433 & (bc(i,n(ng))-fc(i,n(ng)-1)*cf(i,n(ng)-1))
1434 tl_t(i,j,n(ng),nnew,itrc)=dc(i,n(ng))
1435# ifdef DIAGNOSTICS_TS
1443# ifdef DIAGNOSTICS_TS
1446 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
1447 tl_t(i,j,k,nnew,itrc)=dc(i,k)
1448# ifdef DIAGNOSTICS_TS
1454# ifdef SPLINES_VDIFF
1460# if defined AGE_MEAN && defined T_PASSIVE
1488 tl_t(i,j,k,nnew,iage)=tl_t(i,j,k,nnew,iage)+ &
1490 & tl_t(i,j,k,3,
inert(itrc))
1527 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
1528 & imins, imaxs, jmins, jmaxs, &
1544 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)- &
1546 &
clima(ng)%Tnudgcof(i,j,k,ic)* &
1547 & tl_t(i,j,k,nnew,itrc)
1562 tl_t(i,j,k,nnew,itrc)=tl_t(i,j,k,nnew,itrc)*rmask(i,j)
1567# ifdef DIAGNOSTICS_TS
1591 & lbi, ubi, lbj, ubj, 1, n(ng), &
1592 & tl_t(:,:,:,nnew,itrc))
1606 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
1609 & tl_t(:,:,:,nnew,:))
1611# if defined FLOATS_NOT_YET && defined FLOAT_VWALK
1621 daktdz(i,j,k)=(akt(i,j,k,1)-akt(i,j,k-1,1))/hz(i,j,k)
1630 & lbi, ubi, lbj, ubj, 1, n(ng), &
1636 & lbi, ubi, lbj, ubj, 1, n(ng), &