129 & LBi, UBi, LBj, UBj, &
130 & IminS, ImaxS, JminS, JmaxS, &
133 & pmask, rmask, umask, vmask, &
135 & om_p, om_r, om_u, om_v, &
136 & on_p, on_r, on_u, on_v, &
141# ifdef UV_U3ADV_SPLIT
142 & Uvis3d_r, Vvis3d_r, &
143 & tl_Uvis3d_r, tl_Vvis3d_r, &
145 & visc3d_r, tl_visc3d_r, &
148 & visc4_p, visc4_r, &
151!! & DiaRUfrc, DiaRVfrc, &
152!! & DiaU3wrk, DiaV3wrk, &
156 & tl_rufrc, tl_rvfrc)
165 integer,
intent(in) :: ng, tile
166 integer,
intent(in) :: LBi, UBi, LBj, UBj
167 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
168 integer,
intent(in) :: nrhs, nnew
172 real(r8),
intent(in) :: pmask(LBi:,LBj:)
173 real(r8),
intent(in) :: rmask(LBi:,LBj:)
174 real(r8),
intent(in) :: umask(LBi:,LBj:)
175 real(r8),
intent(in) :: vmask(LBi:,LBj:)
177 real(r8),
intent(in) :: om_p(LBi:,LBj:)
178 real(r8),
intent(in) :: om_r(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_p(LBi:,LBj:)
182 real(r8),
intent(in) :: on_r(LBi:,LBj:)
183 real(r8),
intent(in) :: on_u(LBi:,LBj:)
184 real(r8),
intent(in) :: on_v(LBi:,LBj:)
185 real(r8),
intent(in) :: pm(LBi:,LBj:)
186 real(r8),
intent(in) :: pn(LBi:,LBj:)
187 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
188 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
189 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
190 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
192# ifdef UV_U3ADV_SPLIT
193 real(r8),
intent(in) :: Uvis3d_r(LBi:,LBj:,:)
194 real(r8),
intent(in) :: Vvis3d_r(LBi:,LBj:,:)
196 real(r8),
intent(in) :: visc3d_r(LBi:,LBj:,:)
199 real(r8),
intent(in) :: visc4_p(LBi:,LBj:)
200 real(r8),
intent(in) :: visc4_r(LBi:,LBj:)
202 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
203 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
205# ifdef DIAGNOSTICS_UV
212# ifdef UV_U3ADV_SPLIT
213 real(r8),
intent(inout) :: tl_Uvis3d_r(LBi:,LBj:,:)
214 real(r8),
intent(inout) :: tl_Vvis3d_r(LBi:,LBj:,:)
216 real(r8),
intent(inout) :: tl_visc3d_r(LBi:,LBj:,:)
219 real(r8),
intent(inout) :: tl_rufrc(LBi:,LBj:)
220 real(r8),
intent(inout) :: tl_rvfrc(LBi:,LBj:)
221 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
222 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
225 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
226 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
227 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
228 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
230 real(r8),
intent(in) :: om_p(LBi:UBi,LBj:UBj)
231 real(r8),
intent(in) :: om_r(LBi:UBi,LBj:UBj)
232 real(r8),
intent(in) :: om_u(LBi:UBi,LBj:UBj)
233 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
234 real(r8),
intent(in) :: on_p(LBi:UBi,LBj:UBj)
235 real(r8),
intent(in) :: on_r(LBi:UBi,LBj:UBj)
236 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
237 real(r8),
intent(in) :: on_v(LBi:UBi,LBj:UBj)
238 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
239 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
240 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
241 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
242 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
243 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
245# ifdef UV_U3ADV_SPLIT
246 real(r8),
intent(in) :: Uvis3d_r(LBi:UBi,LBj:UBj,N(ng))
247 real(r8),
intent(in) :: Vvis3d_r(LBi:UBi,LBj:UBj,N(ng))
249 real(r8),
intent(in) :: visc3d_r(LBi:UBi,LBj:UBj,N(ng))
252 real(r8),
intent(in) :: visc4_p(LBi:UBi,LBj:UBj)
253 real(r8),
intent(in) :: visc4_r(LBi:UBi,LBj:UBj)
255 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
256 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
258# ifdef DIAGNOSTICS_UV
265# ifdef UV_U3ADV_SPLIT
266 real(r8),
intent(inout) :: tl_Uvis3d_r(LBi:UBi,LBj:UBj,N(ng))
267 real(r8),
intent(inout) :: tl_Vvis3d_r(LBi:UBi,LBj:UBj,N(ng))
269 real(r8),
intent(inout) :: tl_visc3d_r(LBi:UBi,LBj:UBj,N(ng))
272 real(r8),
intent(inout) :: tl_rufrc(LBi:UBi,LBj:UBj)
273 real(r8),
intent(inout) :: tl_rvfrc(LBi:UBi,LBj:UBj)
274 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
275 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
280 integer :: i, j, k, k1, k2
282 real(r8) :: cff, fac1, fac2, pm_p, pn_p
283 real(r8) :: cff1, cff2, cff3, cff4
284 real(r8) :: cff5, cff6, cff7, cff8
285 real(r8) :: dmUdz, dnUdz, dmVdz, dnVdz
287 real(r8) :: Uvis_p, Vvis_p, visc_p
288 real(r8) :: tl_fac1, tl_fac2, tl_Uvis_p, tl_Vvis_p, tl_visc_p
291 real(r8) :: tl_cff1, tl_cff2, tl_cff3, tl_cff4
292 real(r8) :: tl_cff5, tl_cff6, tl_cff7, tl_cff8
293 real(r8) :: tl_dmUdz, tl_dnUdz, tl_dmVdz, tl_dnVdz
295 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: LapU
296 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: LapV
298 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_LapU
299 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_LapV
301 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
302 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
303 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
304 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
306 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFe
307 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_UFx
308 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFe
309 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_VFx
311 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: UFse
312 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: UFsx
313 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: VFse
314 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: VFsx
315 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dmUde
316 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dmVde
317 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dnUdx
318 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dnVdx
319 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dUdz
320 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dVdz
321 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZde_p
322 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZde_r
323 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZdx_p
324 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: dZdx_r
326 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_UFse
327 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_UFsx
328 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_VFse
329 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_VFsx
330 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dmUde
331 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dmVde
332 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dnUdx
333 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dnVdx
334 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dUdz
335 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dVdz
336 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZde_p
337 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZde_r
338 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZdx_p
339 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,2) :: tl_dZdx_r
341#include "set_bounds.h"
366 k_loop1 :
DO k=0,n(ng)
375 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
379 ufx(i,j)=cff*(z_r(i ,j,k+1)- &
381 tl_ufx(i,j)=cff*(tl_z_r(i ,j,k+1)- &
387 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
391 vfe(i,j)=cff*(z_r(i,j ,k+1)- &
393 tl_vfe(i,j)=cff*(tl_z_r(i,j ,k+1)- &
400 dzdx_p(i,j,k2)=0.5_r8*(ufx(i,j-1)+ &
402 tl_dzdx_p(i,j,k2)=0.5_r8*(tl_ufx(i,j-1)+ &
404 dzde_p(i,j,k2)=0.5_r8*(vfe(i-1,j)+ &
406 tl_dzde_p(i,j,k2)=0.5_r8*(tl_vfe(i-1,j)+ &
412 dzdx_r(i,j,k2)=0.5_r8*(ufx(i ,j)+ &
414 tl_dzdx_r(i,j,k2)=0.5_r8*(tl_ufx(i ,j)+ &
416 dzde_r(i,j,k2)=0.5_r8*(vfe(i,j )+ &
418 tl_dzde_r(i,j,k2)=0.5_r8*(tl_vfe(i,j )+ &
431 dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
432 & u(i+1,j,k+1,nrhs)- &
433 & (pn(i-1,j)+pn(i ,j))* &
435 tl_dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
436 & tl_u(i+1,j,k+1,nrhs)- &
437 & (pn(i-1,j)+pn(i ,j))* &
438 & tl_u(i ,j,k+1,nrhs))
444 cff=0.125_r8*(pn(i-1,j )+pn(i,j )+ &
445 & pn(i-1,j-1)+pn(i,j-1))
449 dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
450 & u(i,j ,k+1,nrhs)- &
451 & (pm(i-1,j-1)+pm(i,j-1))* &
453 tl_dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
454 & tl_u(i,j ,k+1,nrhs)- &
455 & (pm(i-1,j-1)+pm(i,j-1))* &
456 & tl_u(i,j-1,k+1,nrhs))
462 cff=0.125_r8*(pm(i-1,j )+pm(i,j )+ &
463 & pm(i-1,j-1)+pm(i,j-1))
467 dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
468 & v(i ,j,k+1,nrhs)- &
469 & (pn(i-1,j-1)+pn(i-1,j))* &
471 tl_dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
472 & tl_v(i ,j,k+1,nrhs)- &
473 & (pn(i-1,j-1)+pn(i-1,j))* &
474 & tl_v(i-1,j,k+1,nrhs))
484 dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
485 & v(i,j+1,k+1,nrhs)- &
486 & (pm(i,j-1)+pm(i,j ))* &
488 tl_dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
489 & tl_v(i,j+1,k+1,nrhs)- &
490 & (pm(i,j-1)+pm(i,j ))* &
491 & tl_v(i,j ,k+1,nrhs))
496 IF ((k.eq.0).or.(k.eq.n(ng)))
THEN
500 tl_dudz(i,j,k2)=0.0_r8
506 tl_dvdz(i,j,k2)=0.0_r8
513 tl_ufsx(i,j,k2)=0.0_r8
515 tl_ufse(i,j,k2)=0.0_r8
521 tl_vfsx(i,j,k2)=0.0_r8
523 tl_vfse(i,j,k2)=0.0_r8
529 cff=1.0_r8/(0.5_r8*(z_r(i-1,j,k+1)- &
533 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i-1,j,k+1)- &
534 & tl_z_r(i-1,j,k )+ &
535 & tl_z_r(i ,j,k+1)- &
537 dudz(i,j,k2)=cff*(u(i,j,k+1,nrhs)- &
539 tl_dudz(i,j,k2)=tl_cff*(u(i,j,k+1,nrhs)- &
541 & cff*(tl_u(i,j,k+1,nrhs)- &
548 cff=1.0_r8/(0.5_r8*(z_r(i,j-1,k+1)- &
552 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i,j-1,k+1)- &
553 & tl_z_r(i,j-1,k )+ &
554 & tl_z_r(i,j ,k+1)- &
556 dvdz(i,j,k2)=cff*(v(i,j,k+1,nrhs)- &
558 tl_dvdz(i,j,k2)=tl_cff*(v(i,j,k+1,nrhs)- &
560 & cff*(tl_v(i,j,k+1,nrhs)- &
572 cff1=min(dzdx_r(i,j,k1),0.0_r8)
573 cff2=max(dzdx_r(i,j,k1),0.0_r8)
574 cff3=min(dzde_r(i,j,k1),0.0_r8)
575 cff4=max(dzde_r(i,j,k1),0.0_r8)
576 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j,k1)))* &
578 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_r(i,j,k1)))* &
580 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_r(i,j,k1)))* &
582 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j,k1)))* &
584 cff=on_r(i,j)*(dnudx(i,j,k1)- &
586 & (cff1*(dudz(i ,j,k1)+ &
588 & cff2*(dudz(i ,j,k2)+ &
589 & dudz(i+1,j,k1))))- &
590 & om_r(i,j)*(dmvde(i,j,k1)- &
592 & (cff3*(dvdz(i,j ,k1)+ &
594 & cff4*(dvdz(i,j ,k2)+ &
596 tl_cff=on_r(i,j)*(tl_dnudx(i,j,k1)- &
598 & (tl_cff1*(dudz(i ,j,k1)+ &
600 & cff1*(tl_dudz(i ,j,k1)+ &
601 & tl_dudz(i+1,j,k2))+ &
602 & tl_cff2*(dudz(i ,j,k2)+ &
604 & cff2*(tl_dudz(i ,j,k2)+ &
605 & tl_dudz(i+1,j,k1))))- &
606 & om_r(i,j)*(tl_dmvde(i,j,k1)- &
608 & (tl_cff3*(dvdz(i,j ,k1)+ &
610 & cff3*(tl_dvdz(i,j ,k1)+ &
611 & tl_dvdz(i,j+1,k2))+ &
612 & tl_cff4*(dvdz(i,j ,k2)+ &
614 & cff4*(tl_dvdz(i,j ,k2)+ &
615 & tl_dvdz(i,j+1,k1))))
618 tl_cff=tl_cff*rmask(i,j)
621# ifdef UV_U3ADV_SPLIT
622 ufx(i,j)=on_r(i,j)*on_r(i,j)*uvis3d_r(i,j,k)*cff
623 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
624 & (tl_uvis3d_r(i,j,k)*cff+ &
625 & uvis3d_r(i,j,k)*tl_cff)
626 vfe(i,j)=om_r(i,j)*om_r(i,j)*vvis3d_r(i,j,k)*cff
627 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
628 & (tl_vvis3d_r(i,j,k)*cff+ &
629 & vvis3d_r(i,j,k)*tl_cff)
631 ufx(i,j)=on_r(i,j)*on_r(i,j)*visc3d_r(i,j,k)*cff
632 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
633 & (tl_visc3d_r(i,j,k)*cff+ &
634 & visc3d_r(i,j,k)*tl_cff)
635 vfe(i,j)=om_r(i,j)*om_r(i,j)*visc3d_r(i,j,k)*cff
636 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
637 & (tl_visc3d_r(i,j,k)*cff+ &
638 & visc3d_r(i,j,k)*tl_cff)
641 ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*cff
642 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*tl_cff
643 vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*cff
644 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*tl_cff
651 pm_p=0.25_r8*(pm(i-1,j-1)+pm(i-1,j)+ &
652 & pm(i ,j-1)+pm(i ,j))
653 pn_p=0.25_r8*(pn(i-1,j-1)+pn(i-1,j)+ &
654 & pn(i ,j-1)+pn(i ,j))
655 cff1=min(dzdx_p(i,j,k1),0.0_r8)
656 cff2=max(dzdx_p(i,j,k1),0.0_r8)
657 cff3=min(dzde_p(i,j,k1),0.0_r8)
658 cff4=max(dzde_p(i,j,k1),0.0_r8)
659 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j,k1)))* &
661 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_p(i,j,k1)))* &
663 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_p(i,j,k1)))* &
665 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j,k1)))* &
667 cff=on_p(i,j)*(dnvdx(i,j,k1)- &
669 & (cff1*(dvdz(i-1,j,k1)+ &
671 & cff2*(dvdz(i-1,j,k2)+ &
672 & dvdz(i ,j,k1))))+ &
673 & om_p(i,j)*(dmude(i,j,k1)- &
675 & (cff3*(dudz(i,j-1,k1)+ &
677 & cff4*(dudz(i,j-1,k2)+ &
679 tl_cff=on_p(i,j)*(tl_dnvdx(i,j,k1)- &
681 & (tl_cff1*(dvdz(i-1,j,k1)+ &
683 & cff1*(tl_dvdz(i-1,j,k1)+ &
684 & tl_dvdz(i ,j,k2))+ &
685 & tl_cff2*(dvdz(i-1,j,k2)+ &
687 & cff2*(tl_dvdz(i-1,j,k2)+ &
688 & tl_dvdz(i ,j,k1))))+ &
689 & om_p(i,j)*(tl_dmude(i,j,k1)- &
691 & (tl_cff3*(dudz(i,j-1,k1)+ &
693 & cff3*(tl_dudz(i,j-1,k1)+ &
694 & tl_dudz(i,j ,k2))+ &
695 & tl_cff4*(dudz(i,j-1,k2)+ &
697 & cff4*(tl_dudz(i,j-1,k2)+ &
698 & tl_dudz(i,j ,k1))))
701 tl_cff=tl_cff*pmask(i,j)
704# ifdef UV_U3ADV_SPLIT
706 & (uvis3d_r(i-1,j-1,k)+uvis3d_r(i-1,j,k)+ &
707 & uvis3d_r(i ,j-1,k)+uvis3d_r(i ,j,k))
709 & (tl_uvis3d_r(i-1,j-1,k)+tl_uvis3d_r(i-1,j,k)+ &
710 & tl_uvis3d_r(i ,j-1,k)+tl_uvis3d_r(i ,j,k))
712 & (vvis3d_r(i-1,j-1,k)+vvis3d_r(i-1,j,k)+ &
713 & vvis3d_r(i ,j-1,k)+vvis3d_r(i ,j,k))
715 & (tl_vvis3d_r(i-1,j-1,k)+tl_vvis3d_r(i-1,j,k)+ &
716 & tl_vvis3d_r(i ,j-1,k)+tl_vvis3d_r(i ,j,k))
717 ufe(i,j)=om_p(i,j)*om_p(i,j)*uvis_p*cff
718 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
719 & (tl_uvis_p*cff+uvis_p*tl_cff)
720 vfx(i,j)=on_p(i,j)*on_p(i,j)*vvis_p*cff
721 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
722 & (tl_vvis_p*cff+vvis_p*tl_cff)
725 & (visc3d_r(i-1,j-1,k)+visc3d_r(i-1,j,k)+ &
726 & visc3d_r(i ,j-1,k)+visc3d_r(i ,j,k))
728 & (tl_visc3d_r(i-1,j-1,k)+tl_visc3d_r(i-1,j,k)+ &
729 & tl_visc3d_r(i ,j-1,k)+tl_visc3d_r(i ,j,k))
730 ufe(i,j)=om_p(i,j)*om_p(i,j)*visc_p*cff
731 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
732 & (tl_visc_p*cff+visc_p*tl_cff)
733 vfx(i,j)=on_p(i,j)*on_p(i,j)*visc_p*cff
734 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
735 & (tl_visc_p*cff+visc_p*tl_cff)
738 ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*cff
739 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*tl_cff
740 vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*cff
741 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*tl_cff
753# ifdef UV_U3ADV_SPLIT
755 & (uvis3d_r(i-1,j,k )+uvis3d_r(i,j,k )+ &
756 & uvis3d_r(i-1,j,k+1)+uvis3d_r(i,j,k+1))
758 & (tl_uvis3d_r(i-1,j,k )+tl_uvis3d_r(i,j,k )+ &
759 & tl_uvis3d_r(i-1,j,k+1)+tl_uvis3d_r(i,j,k+1))
762 & (visc3d_r(i-1,j,k )+visc3d_r(i,j,k )+ &
763 & visc3d_r(i-1,j,k+1)+visc3d_r(i,j,k+1))
765 & (tl_visc3d_r(i-1,j,k )+tl_visc3d_r(i,j,k )+ &
766 & tl_visc3d_r(i-1,j,k+1)+tl_visc3d_r(i,j,k+1))
769 tl_fac1=tl_cff*on_u(i,j)
771 tl_fac2=tl_cff*om_u(i,j)
773 cff=0.25_r8*(visc4_r(i-1,j)+visc4_r(i,j))
777 cff=0.5_r8*(pn(i-1,j)+pn(i,j))
778 dnudz=cff*dudz(i,j,k2)
779 tl_dnudz=cff*tl_dudz(i,j,k2)
780 dnvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
784 tl_dnvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
785 & tl_dvdz(i ,j+1,k2)+ &
786 & tl_dvdz(i-1,j ,k2)+ &
788 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
789 dmudz=cff*dudz(i,j,k2)
790 tl_dmudz=cff*tl_dudz(i,j,k2)
791 dmvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
795 tl_dmvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
796 & tl_dvdz(i ,j+1,k2)+ &
797 & tl_dvdz(i-1,j ,k2)+ &
800 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
801 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
802 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
803 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
804 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
805 & tl_dzdx_r(i-1,j,k1)
806 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
808 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
809 & tl_dzdx_r(i-1,j,k2)
810 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
813 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
814 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
815 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
816 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
817 tl_ufsx(i,j,k2)=fac1* &
818 & (tl_cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
819 & tl_cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
820 & tl_cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
821 & tl_cff4*(cff4*dnudz-dnudx(i ,j,k1))+ &
822 & cff1*(tl_cff1*dnudz+cff1*tl_dnudz- &
823 & tl_dnudx(i-1,j,k1))+ &
824 & cff2*(tl_cff2*dnudz+cff2*tl_dnudz- &
825 & tl_dnudx(i ,j,k2))+ &
826 & cff3*(tl_cff3*dnudz+cff3*tl_dnudz- &
827 & tl_dnudx(i-1,j,k2))+ &
828 & cff4*(tl_cff4*dnudz+cff4*tl_dnudz- &
829 & tl_dnudx(i ,j,k1)))
831 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
833 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
834 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
835 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
836 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
839 cff1=min(dzde_p(i,j ,k1),0.0_r8)
840 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
841 cff3=max(dzde_p(i,j ,k2),0.0_r8)
842 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
843 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
845 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
846 & tl_dzde_p(i,j+1,k2)
847 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
849 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
850 & tl_dzde_p(i,j+1,k1)
852 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
853 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
854 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
855 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
856 tl_ufse(i,j,k2)=fac2* &
857 & (tl_cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
858 & tl_cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
859 & tl_cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
860 & tl_cff4*(cff4*dmudz-dmude(i,j+1,k1))+ &
861 & cff1*(tl_cff1*dmudz+cff1*tl_dmudz- &
862 & tl_dmude(i,j ,k1))+ &
863 & cff2*(tl_cff2*dmudz+cff2*tl_dmudz- &
864 & tl_dmude(i,j+1,k2))+ &
865 & cff3*(tl_cff3*dmudz+cff3*tl_dmudz- &
866 & tl_dmude(i,j ,k2))+ &
867 & cff4*(tl_cff4*dmudz+cff4*tl_dmudz- &
868 & tl_dmude(i,j+1,k1)))
870 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)+ &
872 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
873 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
874 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
875 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
878 cff1=min(dzde_p(i,j ,k1),0.0_r8)
879 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
880 cff3=max(dzde_p(i,j ,k2),0.0_r8)
881 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
882 cff5=min(dzdx_p(i,j ,k1),0.0_r8)
883 cff6=min(dzdx_p(i,j+1,k2),0.0_r8)
884 cff7=max(dzdx_p(i,j ,k2),0.0_r8)
885 cff8=max(dzdx_p(i,j+1,k1),0.0_r8)
886 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
888 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
889 & tl_dzde_p(i,j+1,k2)
890 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
892 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
893 & tl_dzde_p(i,j+1,k1)
894 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j ,k1)))* &
896 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j+1,k2)))* &
897 & tl_dzdx_p(i,j+1,k2)
898 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_p(i,j ,k2)))* &
900 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_p(i,j+1,k1)))* &
901 & tl_dzdx_p(i,j+1,k1)
902 ufsx(i,j,k2)=ufsx(i,j,k2)+ &
904 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
905 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
906 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
907 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
908 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
910 & (tl_cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
911 & tl_cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
912 & tl_cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
913 & tl_cff4*(cff8*dnvdz-dnvdx(i,j+1,k1))+ &
914 & cff1*(tl_cff5*dnvdz+cff5*tl_dnvdz- &
915 & tl_dnvdx(i,j ,k1))+ &
916 & cff2*(tl_cff6*dnvdz+cff6*tl_dnvdz- &
917 & tl_dnvdx(i,j+1,k2))+ &
918 & cff3*(tl_cff7*dnvdz+cff7*tl_dnvdz- &
919 & tl_dnvdx(i,j ,k2))+ &
920 & cff4*(tl_cff8*dnvdz+cff8*tl_dnvdz- &
921 & tl_dnvdx(i,j+1,k1)))
923 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
925 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
926 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
927 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
928 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
931 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
932 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
933 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
934 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
935 cff5=min(dzde_r(i-1,j,k1),0.0_r8)
936 cff6=min(dzde_r(i ,j,k2),0.0_r8)
937 cff7=max(dzde_r(i-1,j,k2),0.0_r8)
938 cff8=max(dzde_r(i ,j,k1),0.0_r8)
939 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
940 & tl_dzdx_r(i-1,j,k1)
941 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
943 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
944 & tl_dzdx_r(i-1,j,k2)
945 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
947 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_r(i-1,j,k1)))* &
948 & tl_dzde_r(i-1,j,k1)
949 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_r(i ,j,k2)))* &
951 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_r(i-1,j,k2)))* &
952 & tl_dzde_r(i-1,j,k2)
953 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_r(i ,j,k1)))* &
955 ufse(i,j,k2)=ufse(i,j,k2)- &
957 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
958 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
959 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
960 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
961 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
963 & (tl_cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
964 & tl_cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
965 & tl_cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
966 & tl_cff4*(cff8*dmvdz-dmvde(i ,j,k1))+ &
967 & cff1*(tl_cff5*dmvdz+cff5*tl_dmvdz- &
968 & tl_dmvde(i-1,j,k1))+ &
969 & cff2*(tl_cff6*dmvdz+cff6*tl_dmvdz- &
970 & tl_dmvde(i ,j,k2))+ &
971 & cff3*(tl_cff7*dmvdz+cff7*tl_dmvdz- &
972 & tl_dmvde(i-1,j,k2))+ &
973 & cff4*(tl_cff8*dmvdz+cff8*tl_dmvdz- &
974 & tl_dmvde(i ,j,k1)))
976 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
978 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
979 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
980 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
981 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
989# ifdef UV_U3ADV_SPLIT
991 & (vvis3d_r(i,j-1,k )+vvis3d_r(i,j,k )+ &
992 & vvis3d_r(i,j-1,k+1)+vvis3d_r(i,j,k+1))
994 & (tl_vvis3d_r(i,j-1,k )+tl_vvis3d_r(i,j,k )+ &
995 & tl_vvis3d_r(i,j-1,k+1)+tl_vvis3d_r(i,j,k+1))
998 & (visc3d_r(i,j-1,k )+visc3d_r(i,j,k )+ &
999 & visc3d_r(i,j-1,k+1)+visc3d_r(i,j,k+1))
1001 & (tl_visc3d_r(i,j-1,k )+tl_visc3d_r(i,j,k )+ &
1002 & tl_visc3d_r(i,j-1,k+1)+tl_visc3d_r(i,j,k+1))
1005 tl_fac1=tl_cff*on_v(i,j)
1007 tl_fac2=tl_cff*om_v(i,j)
1009 cff=0.25_r8*(visc4_r(i,j-1)+visc4_r(i,j))
1013 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
1014 dnudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
1015 & dudz(i+1,j ,k2)+ &
1016 & dudz(i ,j-1,k2)+ &
1018 tl_dnudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
1019 & tl_dudz(i+1,j ,k2)+ &
1020 & tl_dudz(i ,j-1,k2)+ &
1021 & tl_dudz(i+1,j-1,k2))
1022 dnvdz=cff*dvdz(i,j,k2)
1023 tl_dnvdz=cff*tl_dvdz(i,j,k2)
1024 cff=0.5_r8*(pm(i,j-1)+pm(i,j))
1025 dmudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
1026 & dudz(i+1,j ,k2)+ &
1027 & dudz(i ,j-1,k2)+ &
1029 tl_dmudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
1030 & tl_dudz(i+1,j ,k2)+ &
1031 & tl_dudz(i ,j-1,k2)+ &
1032 & tl_dudz(i+1,j-1,k2))
1033 dmvdz=cff*dvdz(i,j,k2)
1034 tl_dmvdz=cff*tl_dvdz(i,j,k2)
1036 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
1037 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
1038 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
1039 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
1040 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
1041 & tl_dzdx_p(i ,j,k1)
1042 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
1043 & tl_dzdx_p(i+1,j,k2)
1044 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
1045 & tl_dzdx_p(i ,j,k2)
1046 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
1047 & tl_dzdx_p(i+1,j,k1)
1048 vfsx(i,j,k2)=fac1* &
1049 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1050 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1051 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1052 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
1053 tl_vfsx(i,j,k2)=fac1* &
1054 & (tl_cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1055 & tl_cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1056 & tl_cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1057 & tl_cff4*(cff4*dnvdz-dnvdx(i+1,j,k1))+ &
1058 & cff1*(tl_cff1*dnvdz+cff1*tl_dnvdz- &
1059 & tl_dnvdx(i ,j,k1))+ &
1060 & cff2*(tl_cff2*dnvdz+cff2*tl_dnvdz- &
1061 & tl_dnvdx(i+1,j,k2))+ &
1062 & cff3*(tl_cff3*dnvdz+cff3*tl_dnvdz- &
1063 & tl_dnvdx(i ,j,k2))+ &
1064 & cff4*(tl_cff4*dnvdz+cff4*tl_dnvdz- &
1065 & tl_dnvdx(i+1,j,k1)))
1067 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)+ &
1069 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1070 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1071 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1072 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
1075 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
1076 cff2=min(dzde_r(i,j ,k2),0.0_r8)
1077 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
1078 cff4=max(dzde_r(i,j ,k1),0.0_r8)
1079 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
1080 & tl_dzde_r(i,j-1,k1)
1081 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
1082 & tl_dzde_r(i,j ,k2)
1083 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
1084 & tl_dzde_r(i,j-1,k2)
1085 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
1086 & tl_dzde_r(i,j ,k1)
1087 vfse(i,j,k2)=fac2* &
1088 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1089 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1090 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1091 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
1092 tl_vfse(i,j,k2)=fac2* &
1093 & (tl_cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1094 & tl_cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1095 & tl_cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1096 & tl_cff4*(cff4*dmvdz-dmvde(i,j ,k1))+ &
1097 & cff1*(tl_cff1*dmvdz+cff1*tl_dmvdz- &
1098 & tl_dmvde(i,j-1,k1))+ &
1099 & cff2*(tl_cff2*dmvdz+cff2*tl_dmvdz- &
1100 & tl_dmvde(i,j ,k2))+ &
1101 & cff3*(tl_cff3*dmvdz+cff3*tl_dmvdz- &
1102 & tl_dmvde(i,j-1,k2))+ &
1103 & cff4*(tl_cff4*dmvdz+cff4*tl_dmvdz- &
1104 & tl_dmvde(i,j ,k1)))
1106 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1108 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1109 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1110 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1111 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
1114 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
1115 cff2=min(dzde_r(i,j ,k2),0.0_r8)
1116 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
1117 cff4=max(dzde_r(i,j ,k1),0.0_r8)
1118 cff5=min(dzdx_r(i,j-1,k1),0.0_r8)
1119 cff6=min(dzdx_r(i,j ,k2),0.0_r8)
1120 cff7=max(dzdx_r(i,j-1,k2),0.0_r8)
1121 cff8=max(dzdx_r(i,j ,k1),0.0_r8)
1122 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
1123 & tl_dzde_r(i,j-1,k1)
1124 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
1125 & tl_dzde_r(i,j ,k2)
1126 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
1127 & tl_dzde_r(i,j-1,k2)
1128 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
1129 & tl_dzde_r(i,j ,k1)
1130 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j-1,k1)))* &
1131 & tl_dzdx_r(i,j-1,k1)
1132 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j ,k2)))* &
1133 & tl_dzdx_r(i,j ,k2)
1134 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_r(i,j-1,k2)))* &
1135 & tl_dzdx_r(i,j-1,k2)
1136 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_r(i,j ,k1)))* &
1137 & tl_dzdx_r(i,j ,k1)
1138 vfsx(i,j,k2)=vfsx(i,j,k2)- &
1140 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1141 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1142 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1143 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
1144 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
1146 & (tl_cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1147 & tl_cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1148 & tl_cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1149 & tl_cff4*(cff8*dnudz-dnudx(i,j ,k1))+ &
1150 & cff1*(tl_cff5*dnudz+cff5*tl_dnudz- &
1151 & tl_dnudx(i,j-1,k1))+ &
1152 & cff2*(tl_cff6*dnudz+cff6*tl_dnudz- &
1153 & tl_dnudx(i,j ,k2))+ &
1154 & cff3*(tl_cff7*dnudz+cff7*tl_dnudz- &
1155 & tl_dnudx(i,j-1,k2))+ &
1156 & cff4*(tl_cff8*dnudz+cff8*tl_dnudz- &
1157 & tl_dnudx(i,j ,k1)))
1159 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
1161 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1162 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1163 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1164 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
1167 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
1168 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
1169 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
1170 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
1171 cff5=min(dzde_p(i ,j,k1),0.0_r8)
1172 cff6=min(dzde_p(i+1,j,k2),0.0_r8)
1173 cff7=max(dzde_p(i ,j,k2),0.0_r8)
1174 cff8=max(dzde_p(i+1,j,k1),0.0_r8)
1175 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
1176 & tl_dzdx_p(i ,j,k1)
1177 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
1178 & tl_dzdx_p(i+1,j,k2)
1179 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
1180 & tl_dzdx_p(i ,j,k2)
1181 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
1182 & tl_dzdx_p(i+1,j,k1)
1183 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_p(i ,j,k1)))* &
1184 & tl_dzde_p(i ,j,k1)
1185 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_p(i+1,j,k2)))* &
1186 & tl_dzde_p(i+1,j,k2)
1187 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_p(i ,j,k2)))* &
1188 & tl_dzde_p(i ,j,k2)
1189 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_p(i+1,j,k1)))* &
1190 & tl_dzde_p(i+1,j,k1)
1191 vfse(i,j,k2)=vfse(i,j,k2)+ &
1193 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1194 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1195 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1196 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
1197 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1199 & (tl_cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1200 & tl_cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1201 & tl_cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1202 & tl_cff4*(cff8*dmudz-dmude(i+1,j,k1))+ &
1203 & cff1*(tl_cff5*dmudz+cff5*tl_dmudz- &
1204 & tl_dmude(i ,j,k1))+ &
1205 & cff2*(tl_cff6*dmudz+cff6*tl_dmudz- &
1206 & tl_dmude(i+1,j,k2))+ &
1207 & cff3*(tl_cff7*dmudz+cff7*tl_dmudz- &
1208 & tl_dmude(i ,j,k2))+ &
1209 & cff4*(tl_cff8*dmudz+cff8*tl_dmudz- &
1210 & tl_dmude(i+1,j,k1)))
1212 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1214 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1215 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1216 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1217 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
1227 cff=0.125_r8*(pm(i-1,j)+pm(i,j))* &
1228 & (pn(i-1,j)+pn(i,j))
1229 cff1=1.0_r8/(0.5_r8*(hz(i-1,j,k)+hz(i,j,k)))
1230 tl_cff1=-cff1*cff1* &
1231 & (0.5_r8*(tl_hz(i-1,j,k)+tl_hz(i,j,k)))
1232 lapu(i,j,k)=cff*((pn(i-1,j)+pn(i,j))* &
1233 (ufx(i,j)-ufx(i-1,j))+ &
1234 & (pm(i-1,j)+pm(i,j))* &
1235 & (ufe(i,j+1)-ufe(i,j)))+ &
1236 & cff1*((ufsx(i,j,k2)+ufse(i,j,k2))- &
1237 & (ufsx(i,j,k1)+ufse(i,j,k1)))
1238 tl_lapu(i,j,k)=cff*((pn(i-1,j)+pn(i,j))* &
1239 (tl_ufx(i,j)-tl_ufx(i-1,j))+ &
1240 & (pm(i-1,j)+pm(i,j))* &
1241 & (tl_ufe(i,j+1)-tl_ufe(i,j)))+ &
1242 & tl_cff1*((ufsx(i,j,k2)+ufse(i,j,k2))- &
1243 & (ufsx(i,j,k1)+ufse(i,j,k1)))+ &
1244 & cff1*((tl_ufsx(i,j,k2)+tl_ufse(i,j,k2))- &
1245 & (tl_ufsx(i,j,k1)+tl_ufse(i,j,k1)))
1247 lapu(i,j,k)=lapu(i,j,k)*umask(i,j)
1248 tl_lapu(i,j,k)=tl_lapu(i,j,k)*umask(i,j)
1255 cff=0.125_r8*(pm(i,j)+pm(i,j-1))* &
1256 & (pn(i,j)+pn(i,j-1))
1257 cff1=1.0_r8/(0.5_r8*(hz(i,j-1,k)+hz(i,j,k)))
1258 tl_cff1=-cff1*cff1* &
1259 & (0.5_r8*(tl_hz(i,j-1,k)+tl_hz(i,j,k)))
1260 lapv(i,j,k)=cff*((pn(i,j-1)+pn(i,j))* &
1261 & (vfx(i+1,j)-vfx(i,j))- &
1262 & (pm(i,j-1)+pm(i,j))* &
1263 & (vfe(i,j)-vfe(i,j-1)))+ &
1264 & cff1*((vfsx(i,j,k2)+vfse(i,j,k2))- &
1265 & (vfsx(i,j,k1)+vfse(i,j,k1)))
1266 tl_lapv(i,j,k)=cff*((pn(i,j-1)+pn(i,j))* &
1267 & (tl_vfx(i+1,j)-tl_vfx(i,j))- &
1268 & (pm(i,j-1)+pm(i,j))* &
1269 & (tl_vfe(i,j)-tl_vfe(i,j-1)))+ &
1270 & tl_cff1*((vfsx(i,j,k2)+vfse(i,j,k2))- &
1271 & (vfsx(i,j,k1)+vfse(i,j,k1)))+ &
1272 & cff1*((tl_vfsx(i,j,k2)+tl_vfse(i,j,k2))- &
1273 & (tl_vfsx(i,j,k1)+tl_vfse(i,j,k1)))
1275 lapv(i,j,k)=lapv(i,j,k)*vmask(i,j)
1276 tl_lapv(i,j,k)=tl_lapv(i,j,k)*vmask(i,j)
1287 IF (
domain(ng)%Western_Edge(tile))
THEN
1291 lapu(istru-1,j,k)=0.0_r8
1292 tl_lapu(istru-1,j,k)=0.0_r8
1298 lapu(istru-1,j,k)=lapu(istru,j,k)
1299 tl_lapu(istru-1,j,k)=tl_lapu(istru,j,k)
1306 lapv(istr-1,j,k)=
gamma2(ng)*lapv(istr,j,k)
1307 tl_lapv(istr-1,j,k)=
gamma2(ng)*tl_lapv(istr,j,k)
1313 lapv(istr-1,j,k)=0.0_r8
1314 tl_lapv(istr-1,j,k)=0.0_r8
1322 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1326 lapu(iend+1,j,k)=0.0_r8
1327 tl_lapu(iend+1,j,k)=0.0_r8
1333 lapu(iend+1,j,k)=lapu(iend,j,k)
1334 tl_lapu(iend+1,j,k)=tl_lapu(iend,j,k)
1341 lapv(iend+1,j,k)=
gamma2(ng)*lapv(iend,j,k)
1342 tl_lapv(iend+1,j,k)=
gamma2(ng)*tl_lapv(iend,j,k)
1348 lapv(iend+1,j,k)=0.0_r8
1349 tl_lapv(iend+1,j,k)=0.0_r8
1357 IF (
domain(ng)%Southern_Edge(tile))
THEN
1361 lapu(i,jstr-1,k)=
gamma2(ng)*lapu(i,jstr,k)
1362 tl_lapu(i,jstr-1,k)=
gamma2(ng)*tl_lapu(i,jstr,k)
1368 lapu(i,jstr-1,k)=0.0_r8
1369 tl_lapu(i,jstr-1,k)=0.0_r8
1376 lapv(i,jstrv-1,k)=0.0_r8
1377 tl_lapv(i,jstrv-1,k)=0.0_r8
1383 lapv(i,jstrv-1,k)=lapv(i,jstrv,k)
1384 tl_lapv(i,jstrv-1,k)=tl_lapv(i,jstrv,k)
1392 IF (
domain(ng)%Northern_Edge(tile))
THEN
1396 lapu(i,jend+1,k)=
gamma2(ng)*lapu(i,jend,k)
1397 tl_lapu(i,jend+1,k)=
gamma2(ng)*tl_lapu(i,jend,k)
1403 lapu(i,jend+1,k)=0.0_r8
1404 tl_lapu(i,jend+1,k)=0.0_r8
1411 lapv(i,jend+1,k)=0.0_r8
1412 tl_lapv(i,jend+1,k)=0.0_r8
1418 lapv(i,jend+1,k)=lapv(i,jend,k)
1419 tl_lapv(i,jend+1,k)=tl_lapv(i,jend,k)
1428 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1430 lapu(istr ,jstr-1,k)=0.5_r8* &
1431 & (lapu(istr+1,jstr-1,k)+ &
1432 & lapu(istr ,jstr ,k))
1433 tl_lapu(istr ,jstr-1,k)=0.5_r8* &
1434 & (tl_lapu(istr+1,jstr-1,k)+ &
1435 & tl_lapu(istr ,jstr ,k))
1436 lapv(istr-1,jstr ,k)=0.5_r8* &
1437 & (lapv(istr-1,jstr+1,k)+ &
1438 & lapv(istr ,jstr ,k))
1439 tl_lapv(istr-1,jstr ,k)=0.5_r8* &
1440 & (tl_lapv(istr-1,jstr+1,k)+ &
1441 & tl_lapv(istr ,jstr ,k))
1448 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1450 lapu(iend+1,jstr-1,k)=0.5_r8* &
1451 & (lapu(iend ,jstr-1,k)+ &
1452 & lapu(iend+1,jstr ,k))
1453 tl_lapu(iend+1,jstr-1,k)=0.5_r8* &
1454 & (tl_lapu(iend ,jstr-1,k)+ &
1455 & tl_lapu(iend+1,jstr ,k))
1456 lapv(iend+1,jstr ,k)=0.5_r8* &
1457 & (lapv(iend ,jstr ,k)+ &
1458 & lapv(iend+1,jstr+1,k))
1459 tl_lapv(iend+1,jstr ,k)=0.5_r8* &
1460 & (tl_lapv(iend ,jstr ,k)+ &
1461 & tl_lapv(iend+1,jstr+1,k))
1468 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1470 lapu(istr ,jend+1,k)=0.5_r8* &
1471 & (lapu(istr+1,jend+1,k)+ &
1472 & lapu(istr ,jend ,k))
1473 tl_lapu(istr ,jend+1,k)=0.5_r8* &
1474 & (tl_lapu(istr+1,jend+1,k)+ &
1475 & tl_lapu(istr ,jend ,k))
1476 lapv(istr-1,jend+1,k)=0.5_r8* &
1477 & (lapv(istr ,jend+1,k)+ &
1478 & lapv(istr-1,jend ,k))
1479 tl_lapv(istr-1,jend+1,k)=0.5_r8* &
1480 & (tl_lapv(istr ,jend+1,k)+ &
1481 & tl_lapv(istr-1,jend ,k))
1488 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1490 lapu(iend+1,jend+1,k)=0.5_r8* &
1491 & (lapu(iend ,jend+1,k)+ &
1492 & lapu(iend+1,jend ,k))
1493 tl_lapu(iend+1,jend+1,k)=0.5_r8* &
1494 & (tl_lapu(iend ,jend+1,k)+ &
1495 & tl_lapu(iend+1,jend ,k))
1496 lapv(iend+1,jend+1,k)=0.5_r8* &
1497 & (lapv(iend ,jend+1,k)+ &
1498 & lapv(iend+1,jend ,k))
1499 tl_lapv(iend+1,jend+1,k)=0.5_r8* &
1500 & (tl_lapv(iend ,jend+1,k)+ &
1501 & tl_lapv(iend+1,jend ,k))
1510 k_loop2 :
DO k=0,n(ng)
1513 IF (k.lt.n(ng))
THEN
1519 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
1523 ufx(i,j)=cff*(z_r(i ,j,k+1)- &
1525 tl_ufx(i,j)=cff*(tl_z_r(i ,j,k+1)- &
1526 & tl_z_r(i-1,j,k+1))
1531 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
1535 vfe(i,j)=cff*(z_r(i,j ,k+1)- &
1537 tl_vfe(i,j)=cff*(tl_z_r(i,j ,k+1)- &
1538 & tl_z_r(i,j-1,k+1))
1544 dzdx_p(i,j,k2)=0.5_r8*(ufx(i,j-1)+ &
1546 tl_dzdx_p(i,j,k2)=0.5_r8*(tl_ufx(i,j-1)+ &
1548 dzde_p(i,j,k2)=0.5_r8*(vfe(i-1,j)+ &
1550 tl_dzde_p(i,j,k2)=0.5_r8*(tl_vfe(i-1,j)+ &
1556 dzdx_r(i,j,k2)=0.5_r8*(ufx(i ,j)+ &
1558 tl_dzdx_r(i,j,k2)=0.5_r8*(tl_ufx(i ,j)+ &
1560 dzde_r(i,j,k2)=0.5_r8*(vfe(i,j )+ &
1562 tl_dzde_r(i,j,k2)=0.5_r8*(tl_vfe(i,j )+ &
1576 dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
1577 & lapu(i+1,j,k+1)- &
1578 & (pn(i-1,j)+pn(i ,j))* &
1580 tl_dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
1581 & tl_lapu(i+1,j,k+1)- &
1582 & (pn(i-1,j)+pn(i ,j))* &
1583 & tl_lapu(i ,j,k+1))
1589 cff=0.125_r8*(pn(i-1,j )+pn(i,j )+ &
1590 & pn(i-1,j-1)+pn(i,j-1))
1594 dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
1596 & (pm(i-1,j-1)+pm(i,j-1))* &
1598 tl_dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
1599 & tl_lapu(i,j ,k+1)- &
1600 & (pm(i-1,j-1)+pm(i,j-1))* &
1601 & tl_lapu(i,j-1,k+1))
1607 cff=0.125_r8*(pm(i-1,j )+pm(i,j )+ &
1608 & pm(i-1,j-1)+pm(i,j-1))
1612 dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
1614 & (pn(i-1,j-1)+pn(i-1,j))* &
1616 tl_dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
1617 & tl_lapv(i ,j,k+1)- &
1618 & (pn(i-1,j-1)+pn(i-1,j))* &
1619 & tl_lapv(i-1,j,k+1))
1629 dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
1630 & lapv(i,j+1,k+1)- &
1631 & (pm(i,j-1)+pm(i,j ))* &
1633 tl_dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
1634 & tl_lapv(i,j+1,k+1)- &
1635 & (pm(i,j-1)+pm(i,j ))* &
1636 & tl_lapv(i,j ,k+1))
1641 IF ((k.eq.0).or.(k.eq.n(ng)))
THEN
1645 tl_dudz(i,j,k2)=0.0_r8
1651 tl_dvdz(i,j,k2)=0.0_r8
1658 tl_ufsx(i,j,k2)=0.0_r8
1660 tl_ufse(i,j,k2)=0.0_r8
1666 tl_vfsx(i,j,k2)=0.0_r8
1668 tl_vfse(i,j,k2)=0.0_r8
1674 cff=1.0_r8/(0.5_r8*(z_r(i-1,j,k+1)- &
1678 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i-1,j,k+1)- &
1679 & tl_z_r(i-1,j,k )+ &
1680 & tl_z_r(i ,j,k+1)- &
1682 dudz(i,j,k2)=cff*(lapu(i,j,k+1)- &
1684 tl_dudz(i,j,k2)=tl_cff*(lapu(i,j,k+1)- &
1686 & cff*(tl_lapu(i,j,k+1)- &
1692 cff=1.0_r8/(0.5_r8*(z_r(i,j-1,k+1)- &
1696 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i,j-1,k+1)- &
1697 & tl_z_r(i,j-1,k )+ &
1698 & tl_z_r(i,j ,k+1)- &
1700 dvdz(i,j,k2)=cff*(lapv(i,j,k+1)- &
1702 tl_dvdz(i,j,k2)=tl_cff*(lapv(i,j,k+1)- &
1704 & cff*(tl_lapv(i,j,k+1)- &
1716 cff1=min(dzdx_r(i,j,k1),0.0_r8)
1717 cff2=max(dzdx_r(i,j,k1),0.0_r8)
1718 cff3=min(dzde_r(i,j,k1),0.0_r8)
1719 cff4=max(dzde_r(i,j,k1),0.0_r8)
1720 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j,k1)))* &
1722 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_r(i,j,k1)))* &
1724 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_r(i,j,k1)))* &
1726 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j,k1)))* &
1730 & (on_r(i,j)*(dnudx(i,j,k1)- &
1732 & (cff1*(dudz(i ,j,k1)+ &
1733 & dudz(i+1,j,k2))+ &
1734 & cff2*(dudz(i ,j,k2)+ &
1735 & dudz(i+1,j,k1))))- &
1736 & om_r(i,j)*(dmvde(i,j,k1)- &
1738 & (cff3*(dvdz(i,j ,k1)+ &
1739 & dvdz(i,j+1,k2))+ &
1740 & cff4*(dvdz(i,j ,k2)+ &
1741 & dvdz(i,j+1,k1)))))
1758 tl_cff=tl_hz(i,j,k)* &
1759 & (on_r(i,j)*(dnudx(i,j,k1)- &
1761 & (cff1*(dudz(i ,j,k1)+ &
1762 & dudz(i+1,j,k2))+ &
1763 & cff2*(dudz(i ,j,k2)+ &
1764 & dudz(i+1,j,k1))))- &
1765 & om_r(i,j)*(dmvde(i,j,k1)- &
1767 & (cff3*(dvdz(i,j ,k1)+ &
1768 & dvdz(i,j+1,k2))+ &
1769 & cff4*(dvdz(i,j ,k2)+ &
1770 & dvdz(i,j+1,k1)))))+ &
1772 & (on_r(i,j)*(tl_dnudx(i,j,k1)- &
1774 & (tl_cff1*(dudz(i ,j,k1)+ &
1775 & dudz(i+1,j,k2))+ &
1776 & cff1*(tl_dudz(i ,j,k1)+ &
1777 & tl_dudz(i+1,j,k2))+ &
1778 & tl_cff2*(dudz(i ,j,k2)+ &
1779 & dudz(i+1,j,k1))+ &
1780 & cff2*(tl_dudz(i ,j,k2)+ &
1781 & tl_dudz(i+1,j,k1))))- &
1782 & om_r(i,j)*(tl_dmvde(i,j,k1)- &
1784 & (tl_cff3*(dvdz(i,j ,k1)+ &
1785 & dvdz(i,j+1,k2))+ &
1786 & cff3*(tl_dvdz(i,j ,k1)+ &
1787 & tl_dvdz(i,j+1,k2))+ &
1788 & tl_cff4*(dvdz(i,j ,k2)+ &
1789 & dvdz(i,j+1,k1))+ &
1790 & cff4*(tl_dvdz(i,j ,k2)+ &
1791 & tl_dvdz(i,j+1,k1)))))
1799 tl_cff=tl_cff*rmask(i,j)
1802# ifdef UV_U3ADV_SPLIT
1805 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
1806 & (tl_uvis3d_r(i,j,k)*cff+ &
1807 & uvis3d_r(i,j,k)*tl_cff)
1810 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
1811 & (tl_vvis3d_r(i,j,k)*cff+ &
1812 & vvis3d_r(i,j,k)*tl_cff)
1816 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
1817 & (tl_visc3d_r(i,j,k)*cff+ &
1818 & visc3d_r(i,j,k)*tl_cff)
1821 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
1822 & (tl_visc3d_r(i,j,k)*cff+ &
1823 & visc3d_r(i,j,k)*tl_cff)
1828 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*tl_cff
1831 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*tl_cff
1838 pm_p=0.25_r8*(pm(i-1,j-1)+pm(i-1,j)+ &
1839 & pm(i ,j-1)+pm(i ,j))
1840 pn_p=0.25_r8*(pn(i-1,j-1)+pn(i-1,j)+ &
1841 & pn(i ,j-1)+pn(i ,j))
1842 cff1=min(dzdx_p(i,j,k1),0.0_r8)
1843 cff2=max(dzdx_p(i,j,k1),0.0_r8)
1844 cff3=min(dzde_p(i,j,k1),0.0_r8)
1845 cff4=max(dzde_p(i,j,k1),0.0_r8)
1846 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j,k1)))* &
1848 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_p(i,j,k1)))* &
1850 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_p(i,j,k1)))* &
1852 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j,k1)))* &
1856 & (hz(i-1,j ,k)+hz(i,j ,k)+ &
1857 & hz(i-1,j-1,k)+hz(i,j-1,k))* &
1858 & (on_p(i,j)*(dnvdx(i,j,k1)- &
1860 & (cff1*(dvdz(i-1,j,k1)+ &
1862 & cff2*(dvdz(i-1,j,k2)+ &
1863 & dvdz(i ,j,k1))))+ &
1864 & om_p(i,j)*(dmude(i,j,k1)- &
1866 & (cff3*(dudz(i,j-1,k1)+ &
1868 & cff4*(dudz(i,j-1,k2)+ &
1889 & ((tl_hz(i-1,j ,k)+tl_hz(i,j ,k)+ &
1890 & tl_hz(i-1,j-1,k)+tl_hz(i,j-1,k))* &
1891 & (on_p(i,j)*(dnvdx(i,j,k1)- &
1893 & (cff1*(dvdz(i-1,j,k1)+ &
1895 & cff2*(dvdz(i-1,j,k2)+ &
1896 & dvdz(i ,j,k1))))+ &
1897 & om_p(i,j)*(dmude(i,j,k1)- &
1899 & (cff3*(dudz(i,j-1,k1)+ &
1901 & cff4*(dudz(i,j-1,k2)+ &
1902 & dudz(i,j ,k1)))))+ &
1903 & (hz(i-1,j ,k)+hz(i,j ,k)+ &
1904 & hz(i-1,j-1,k)+hz(i,j-1,k))* &
1905 & (on_p(i,j)*(tl_dnvdx(i,j,k1)- &
1907 & (tl_cff1*(dvdz(i-1,j,k1)+ &
1909 & cff1*(tl_dvdz(i-1,j,k1)+ &
1910 & tl_dvdz(i ,j,k2))+ &
1911 & tl_cff2*(dvdz(i-1,j,k2)+ &
1913 & cff2*(tl_dvdz(i-1,j,k2)+ &
1914 & tl_dvdz(i ,j,k1))))+ &
1915 & om_p(i,j)*(tl_dmude(i,j,k1)- &
1917 & (tl_cff3*(dudz(i,j-1,k1)+ &
1919 & cff3*(tl_dudz(i,j-1,k1)+ &
1920 & tl_dudz(i,j ,k2))+ &
1921 & tl_cff4*(dudz(i,j-1,k2)+ &
1923 & cff4*(tl_dudz(i,j-1,k2)+ &
1924 & tl_dudz(i,j ,k1))))))
1932 tl_cff=tl_cff*pmask(i,j)
1935# ifdef UV_U3ADV_SPLIT
1937 & (uvis3d_r(i-1,j-1,k)+uvis3d_r(i-1,j,k)+ &
1938 & uvis3d_r(i ,j-1,k)+uvis3d_r(i ,j,k))
1939 tl_uvis_p=0.25_r8* &
1940 & (tl_uvis3d_r(i-1,j-1,k)+tl_uvis3d_r(i-1,j,k)+ &
1941 & tl_uvis3d_r(i ,j-1,k)+tl_uvis3d_r(i ,j,k))
1943 & (vvis3d_r(i-1,j-1,k)+vvis3d_r(i-1,j,k)+ &
1944 & vvis3d_r(i ,j-1,k)+vvis3d_r(i ,j,k))
1945 tl_vvis_p=0.25_r8* &
1946 & (tl_vvis3d_r(i-1,j-1,k)+tl_vvis3d_r(i-1,j,k)+ &
1947 & tl_vvis3d_r(i ,j-1,k)+tl_vvis3d_r(i ,j,k))
1950 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
1951 & (tl_uvis_p*cff+uvis_p*tl_cff)
1954 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
1955 & (tl_vvis_p*cff+vvis_p*tl_cff)
1958 & (visc3d_r(i-1,j-1,k)+visc3d_r(i-1,j,k)+ &
1959 & visc3d_r(i ,j-1,k)+visc3d_r(i ,j,k))
1960 tl_visc_p=0.25_r8* &
1961 & (tl_visc3d_r(i-1,j-1,k)+tl_visc3d_r(i-1,j,k)+ &
1962 & tl_visc3d_r(i ,j-1,k)+tl_visc3d_r(i ,j,k))
1965 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
1966 & (tl_visc_p*cff+visc_p*tl_cff)
1969 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
1970 & (tl_visc_p*cff+visc_p*tl_cff)
1975 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*tl_cff
1978 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*tl_cff
1986 IF (k.lt.n(ng))
THEN
1990# ifdef UV_U3ADV_SPLIT
1992 & (uvis3d_r(i-1,j,k )+uvis3d_r(i,j,k )+ &
1993 & uvis3d_r(i-1,j,k+1)+uvis3d_r(i,j,k+1))
1995 & (tl_uvis3d_r(i-1,j,k )+tl_uvis3d_r(i,j,k )+ &
1996 & tl_uvis3d_r(i-1,j,k+1)+tl_uvis3d_r(i,j,k+1))
1999 & (visc3d_r(i-1,j,k )+visc3d_r(i,j,k )+ &
2000 & visc3d_r(i-1,j,k+1)+visc3d_r(i,j,k+1))
2002 & (tl_visc3d_r(i-1,j,k )+tl_visc3d_r(i,j,k )+ &
2003 & tl_visc3d_r(i-1,j,k+1)+tl_visc3d_r(i,j,k+1))
2006 tl_fac1=tl_cff*on_u(i,j)
2008 tl_fac2=tl_cff*om_u(i,j)
2010 cff=0.25_r8*(visc4_r(i-1,j)+visc4_r(i,j))
2014 cff=0.5_r8*(pn(i-1,j)+pn(i,j))
2015 dnudz=cff*dudz(i,j,k2)
2016 tl_dnudz=cff*tl_dudz(i,j,k2)
2017 dnvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
2018 & dvdz(i ,j+1,k2)+ &
2019 & dvdz(i-1,j ,k2)+ &
2021 tl_dnvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
2022 & tl_dvdz(i ,j+1,k2)+ &
2023 & tl_dvdz(i-1,j ,k2)+ &
2024 & tl_dvdz(i ,j ,k2))
2025 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
2026 dmudz=cff*dudz(i,j,k2)
2027 tl_dmudz=cff*tl_dudz(i,j,k2)
2028 dmvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
2029 & dvdz(i ,j+1,k2)+ &
2030 & dvdz(i-1,j ,k2)+ &
2032 tl_dmvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
2033 & tl_dvdz(i ,j+1,k2)+ &
2034 & tl_dvdz(i-1,j ,k2)+ &
2035 & tl_dvdz(i ,j ,k2))
2037 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
2038 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
2039 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
2040 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
2041 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
2042 & tl_dzdx_r(i-1,j,k1)
2043 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
2044 & tl_dzdx_r(i ,j,k2)
2045 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
2046 & tl_dzdx_r(i-1,j,k2)
2047 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
2055 tl_ufsx(i,j,k2)=fac1* &
2056 & (tl_cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
2057 & tl_cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
2058 & tl_cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
2059 & tl_cff4*(cff4*dnudz-dnudx(i ,j,k1))+ &
2060 & cff1*(tl_cff1*dnudz+cff1*tl_dnudz- &
2061 & tl_dnudx(i-1,j,k1))+ &
2062 & cff2*(tl_cff2*dnudz+cff2*tl_dnudz- &
2063 & tl_dnudx(i ,j,k2))+ &
2064 & cff3*(tl_cff3*dnudz+cff3*tl_dnudz- &
2065 & tl_dnudx(i-1,j,k2))+ &
2066 & cff4*(tl_cff4*dnudz+cff4*tl_dnudz- &
2067 & tl_dnudx(i ,j,k1)))
2069 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2071 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
2072 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
2073 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
2074 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
2077 cff1=min(dzde_p(i,j ,k1),0.0_r8)
2078 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
2079 cff3=max(dzde_p(i,j ,k2),0.0_r8)
2080 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
2081 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
2082 & tl_dzde_p(i,j ,k1)
2083 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
2084 & tl_dzde_p(i,j+1,k2)
2085 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
2086 & tl_dzde_p(i,j ,k2)
2087 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
2095 tl_ufse(i,j,k2)=fac2* &
2096 & (tl_cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
2097 & tl_cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
2098 & tl_cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
2099 & tl_cff4*(cff4*dmudz-dmude(i,j+1,k1))+ &
2100 & cff1*(tl_cff1*dmudz+cff1*tl_dmudz- &
2101 & tl_dmude(i,j ,k1))+ &
2102 & cff2*(tl_cff2*dmudz+cff2*tl_dmudz- &
2103 & tl_dmude(i,j+1,k2))+ &
2104 & cff3*(tl_cff3*dmudz+cff3*tl_dmudz- &
2105 & tl_dmude(i,j ,k2))+ &
2106 & cff4*(tl_cff4*dmudz+cff4*tl_dmudz- &
2107 & tl_dmude(i,j+1,k1)))
2109 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)+ &
2111 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
2112 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
2113 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
2114 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
2117 cff1=min(dzde_p(i,j ,k1),0.0_r8)
2118 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
2119 cff3=max(dzde_p(i,j ,k2),0.0_r8)
2120 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
2121 cff5=min(dzdx_p(i,j ,k1),0.0_r8)
2122 cff6=min(dzdx_p(i,j+1,k2),0.0_r8)
2123 cff7=max(dzdx_p(i,j ,k2),0.0_r8)
2124 cff8=max(dzdx_p(i,j+1,k1),0.0_r8)
2125 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
2126 & tl_dzde_p(i,j ,k1)
2127 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
2128 & tl_dzde_p(i,j+1,k2)
2129 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
2130 & tl_dzde_p(i,j ,k2)
2131 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
2132 & tl_dzde_p(i,j+1,k1)
2133 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j ,k1)))* &
2134 & tl_dzdx_p(i,j ,k1)
2135 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j+1,k2)))* &
2136 & tl_dzdx_p(i,j+1,k2)
2137 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_p(i,j ,k2)))* &
2138 & tl_dzdx_p(i,j ,k2)
2139 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_p(i,j+1,k1)))* &
2140 & tl_dzdx_p(i,j+1,k1)
2148 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2150 & (tl_cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
2151 & tl_cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
2152 & tl_cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
2153 & tl_cff4*(cff8*dnvdz-dnvdx(i,j+1,k1))+ &
2154 & cff1*(tl_cff5*dnvdz+cff5*tl_dnvdz- &
2155 & tl_dnvdx(i,j ,k1))+ &
2156 & cff2*(tl_cff6*dnvdz+cff6*tl_dnvdz- &
2157 & tl_dnvdx(i,j+1,k2))+ &
2158 & cff3*(tl_cff7*dnvdz+cff7*tl_dnvdz- &
2159 & tl_dnvdx(i,j ,k2))+ &
2160 & cff4*(tl_cff8*dnvdz+cff8*tl_dnvdz- &
2161 & tl_dnvdx(i,j+1,k1)))
2163 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2165 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
2166 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
2167 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
2168 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
2171 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
2172 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
2173 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
2174 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
2175 cff5=min(dzde_r(i-1,j,k1),0.0_r8)
2176 cff6=min(dzde_r(i ,j,k2),0.0_r8)
2177 cff7=max(dzde_r(i-1,j,k2),0.0_r8)
2178 cff8=max(dzde_r(i ,j,k1),0.0_r8)
2179 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
2180 & tl_dzdx_r(i-1,j,k1)
2181 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
2182 & tl_dzdx_r(i ,j,k2)
2183 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
2184 & tl_dzdx_r(i-1,j,k2)
2185 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
2186 & tl_dzdx_r(i ,j,k1)
2187 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_r(i-1,j,k1)))* &
2188 & tl_dzde_r(i-1,j,k1)
2189 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_r(i ,j,k2)))* &
2190 & tl_dzde_r(i ,j,k2)
2191 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_r(i-1,j,k2)))* &
2192 & tl_dzde_r(i-1,j,k2)
2193 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_r(i ,j,k1)))* &
2194 & tl_dzde_r(i ,j,k1)
2202 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
2204 & (tl_cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
2205 & tl_cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
2206 & tl_cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
2207 & tl_cff4*(cff8*dmvdz-dmvde(i ,j,k1))+ &
2208 & cff1*(tl_cff5*dmvdz+cff5*tl_dmvdz- &
2209 & tl_dmvde(i-1,j,k1))+ &
2210 & cff2*(tl_cff6*dmvdz+cff6*tl_dmvdz- &
2211 & tl_dmvde(i ,j,k2))+ &
2212 & cff3*(tl_cff7*dmvdz+cff7*tl_dmvdz- &
2213 & tl_dmvde(i-1,j,k2))+ &
2214 & cff4*(tl_cff8*dmvdz+cff8*tl_dmvdz- &
2215 & tl_dmvde(i ,j,k1)))
2217 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
2219 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
2220 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
2221 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
2222 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
2230# ifdef UV_U3ADV_SPLIT
2232 & (vvis3d_r(i,j-1,k )+vvis3d_r(i,j,k )+ &
2233 & vvis3d_r(i,j-1,k+1)+vvis3d_r(i,j,k+1))
2235 & (tl_vvis3d_r(i,j-1,k )+tl_vvis3d_r(i,j,k )+ &
2236 & tl_vvis3d_r(i,j-1,k+1)+tl_vvis3d_r(i,j,k+1))
2239 & (visc3d_r(i,j-1,k )+visc3d_r(i,j,k )+ &
2240 & visc3d_r(i,j-1,k+1)+visc3d_r(i,j,k+1))
2242 & (tl_visc3d_r(i,j-1,k )+tl_visc3d_r(i,j,k )+ &
2243 & tl_visc3d_r(i,j-1,k+1)+tl_visc3d_r(i,j,k+1))
2246 tl_fac1=tl_cff*on_v(i,j)
2248 tl_fac2=tl_cff*om_v(i,j)
2250 cff=0.25_r8*(visc4_r(i,j-1)+visc4_r(i,j))
2254 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
2255 dnudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
2256 & dudz(i+1,j ,k2)+ &
2257 & dudz(i ,j-1,k2)+ &
2259 tl_dnudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
2260 & tl_dudz(i+1,j ,k2)+ &
2261 & tl_dudz(i ,j-1,k2)+ &
2262 & tl_dudz(i+1,j-1,k2))
2263 dnvdz=cff*dvdz(i,j,k2)
2264 tl_dnvdz=cff*tl_dvdz(i,j,k2)
2265 cff=0.5_r8*(pm(i,j-1)+pm(i,j))
2266 dmudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
2267 & dudz(i+1,j ,k2)+ &
2268 & dudz(i ,j-1,k2)+ &
2270 tl_dmudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
2271 & tl_dudz(i+1,j ,k2)+ &
2272 & tl_dudz(i ,j-1,k2)+ &
2273 & tl_dudz(i+1,j-1,k2))
2274 dmvdz=cff*dvdz(i,j,k2)
2275 tl_dmvdz=cff*tl_dvdz(i,j,k2)
2277 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
2278 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
2279 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
2280 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
2281 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
2282 & tl_dzdx_p(i ,j,k1)
2283 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
2284 & tl_dzdx_p(i+1,j,k2)
2285 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
2286 & tl_dzdx_p(i ,j,k2)
2287 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
2288 & tl_dzdx_p(i+1,j,k1)
2295 tl_vfsx(i,j,k2)=fac1* &
2296 & (tl_cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
2297 & tl_cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
2298 & tl_cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
2299 & tl_cff4*(cff4*dnvdz-dnvdx(i+1,j,k1))+ &
2300 & cff1*(tl_cff1*dnvdz+cff1*tl_dnvdz- &
2301 & tl_dnvdx(i ,j,k1))+ &
2302 & cff2*(tl_cff2*dnvdz+cff2*tl_dnvdz- &
2303 & tl_dnvdx(i+1,j,k2))+ &
2304 & cff3*(tl_cff3*dnvdz+cff3*tl_dnvdz- &
2305 & tl_dnvdx(i ,j,k2))+ &
2306 & cff4*(tl_cff4*dnvdz+cff4*tl_dnvdz- &
2307 & tl_dnvdx(i+1,j,k1)))
2309 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)+ &
2311 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
2312 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
2313 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
2314 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
2317 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
2318 cff2=min(dzde_r(i,j ,k2),0.0_r8)
2319 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
2320 cff4=max(dzde_r(i,j ,k1),0.0_r8)
2321 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
2322 & tl_dzde_r(i,j-1,k1)
2323 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
2324 & tl_dzde_r(i,j ,k2)
2325 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
2326 & tl_dzde_r(i,j-1,k2)
2327 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
2328 & tl_dzde_r(i,j ,k1)
2335 tl_vfse(i,j,k2)=fac2* &
2336 & (tl_cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
2337 & tl_cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
2338 & tl_cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
2339 & tl_cff4*(cff4*dmvdz-dmvde(i,j ,k1))+ &
2340 & cff1*(tl_cff1*dmvdz+cff1*tl_dmvdz- &
2341 & tl_dmvde(i,j-1,k1))+ &
2342 & cff2*(tl_cff2*dmvdz+cff2*tl_dmvdz- &
2343 & tl_dmvde(i,j ,k2))+ &
2344 & cff3*(tl_cff3*dmvdz+cff3*tl_dmvdz- &
2345 & tl_dmvde(i,j-1,k2))+ &
2346 & cff4*(tl_cff4*dmvdz+cff4*tl_dmvdz- &
2347 & tl_dmvde(i,j ,k1)))
2349 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2351 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
2352 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
2353 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
2354 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
2357 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
2358 cff2=min(dzde_r(i,j ,k2),0.0_r8)
2359 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
2360 cff4=max(dzde_r(i,j ,k1),0.0_r8)
2361 cff5=min(dzdx_r(i,j-1,k1),0.0_r8)
2362 cff6=min(dzdx_r(i,j ,k2),0.0_r8)
2363 cff7=max(dzdx_r(i,j-1,k2),0.0_r8)
2364 cff8=max(dzdx_r(i,j ,k1),0.0_r8)
2365 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
2366 & tl_dzde_r(i,j-1,k1)
2367 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
2368 & tl_dzde_r(i,j ,k2)
2369 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
2370 & tl_dzde_r(i,j-1,k2)
2371 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
2372 & tl_dzde_r(i,j ,k1)
2373 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j-1,k1)))* &
2374 & tl_dzdx_r(i,j-1,k1)
2375 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j ,k2)))* &
2376 & tl_dzdx_r(i,j ,k2)
2377 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_r(i,j-1,k2)))* &
2378 & tl_dzdx_r(i,j-1,k2)
2379 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_r(i,j ,k1)))* &
2380 & tl_dzdx_r(i,j ,k1)
2388 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
2390 & (tl_cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
2391 & tl_cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
2392 & tl_cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
2393 & tl_cff4*(cff8*dnudz-dnudx(i,j ,k1))+ &
2394 & cff1*(tl_cff5*dnudz+cff5*tl_dnudz- &
2395 & tl_dnudx(i,j-1,k1))+ &
2396 & cff2*(tl_cff6*dnudz+cff6*tl_dnudz- &
2397 & tl_dnudx(i,j ,k2))+ &
2398 & cff3*(tl_cff7*dnudz+cff7*tl_dnudz- &
2399 & tl_dnudx(i,j-1,k2))+ &
2400 & cff4*(tl_cff8*dnudz+cff8*tl_dnudz- &
2401 & tl_dnudx(i,j ,k1)))
2403 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
2405 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
2406 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
2407 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
2408 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
2411 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
2412 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
2413 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
2414 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
2415 cff5=min(dzde_p(i ,j,k1),0.0_r8)
2416 cff6=min(dzde_p(i+1,j,k2),0.0_r8)
2417 cff7=max(dzde_p(i ,j,k2),0.0_r8)
2418 cff8=max(dzde_p(i+1,j,k1),0.0_r8)
2419 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
2420 & tl_dzdx_p(i ,j,k1)
2421 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
2422 & tl_dzdx_p(i+1,j,k2)
2423 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
2424 & tl_dzdx_p(i ,j,k2)
2425 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
2426 & tl_dzdx_p(i+1,j,k1)
2427 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_p(i ,j,k1)))* &
2428 & tl_dzde_p(i ,j,k1)
2429 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_p(i+1,j,k2)))* &
2430 & tl_dzde_p(i+1,j,k2)
2431 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_p(i ,j,k2)))* &
2432 & tl_dzde_p(i ,j,k2)
2433 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_p(i+1,j,k1)))* &
2434 & tl_dzde_p(i+1,j,k1)
2442 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2444 & (tl_cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
2445 & tl_cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
2446 & tl_cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
2447 & tl_cff4*(cff8*dmudz-dmude(i+1,j,k1))+ &
2448 & cff1*(tl_cff5*dmudz+cff5*tl_dmudz- &
2449 & tl_dmude(i ,j,k1))+ &
2450 & cff2*(tl_cff6*dmudz+cff6*tl_dmudz- &
2451 & tl_dmude(i+1,j,k2))+ &
2452 & cff3*(tl_cff7*dmudz+cff7*tl_dmudz- &
2453 & tl_dmude(i ,j,k2))+ &
2454 & cff4*(tl_cff8*dmudz+cff8*tl_dmudz- &
2455 & tl_dmude(i+1,j,k1)))
2457 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2459 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
2460 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
2461 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
2462 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
2471#ifdef DIAGNOSTICS_UV
2478 cff=
dt(ng)*0.25_r8*(pm(i-1,j)+pm(i,j))*(pn(i-1,j)+pn(i,j))
2481 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2482 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2485 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2486 & (tl_ufe(i,j+1)-tl_ufe(i ,j))
2489 tl_cff3=tl_ufsx(i,j,k2)-tl_ufsx(i,j,k1)
2492 tl_cff4=tl_ufse(i,j,k2)-tl_ufse(i,j,k1)
2495 tl_cff5=cff*(tl_cff1+tl_cff2)
2498 tl_cff6=
dt(ng)*(tl_cff3+tl_cff4)
2501 tl_rufrc(i,j)=tl_rufrc(i,j)- &
2502 & tl_cff1-tl_cff2-tl_cff3-tl_cff4
2505 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)-tl_cff5-tl_cff6
2506#ifdef DIAGNOSTICS_UV
2520 cff=
dt(ng)*0.25_r8*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
2523 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2524 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2527 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2528 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2531 tl_cff3=tl_vfsx(i,j,k2)-tl_vfsx(i,j,k1)
2534 tl_cff4=tl_vfse(i,j,k2)-tl_vfse(i,j,k1)
2537 tl_cff5=cff*(tl_cff1-tl_cff2)
2540 tl_cff6=
dt(ng)*(tl_cff3+tl_cff4)
2543 tl_rvfrc(i,j)=tl_rvfrc(i,j)- &
2544 & tl_cff1+tl_cff2-tl_cff3-tl_cff4
2547 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)-tl_cff5-tl_cff6
2548#ifdef DIAGNOSTICS_UV