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)- &
536 & tl_z_r(i ,j,k )))+ &
540 dudz(i,j,k2)=cff*(u(i,j,k+1,nrhs)- &
542 tl_dudz(i,j,k2)=tl_cff*(u(i,j,k+1,nrhs)- &
544 & cff*(tl_u(i,j,k+1,nrhs)- &
545 & tl_u(i,j,k ,nrhs))- &
554 cff=1.0_r8/(0.5_r8*(z_r(i,j-1,k+1)- &
558 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i,j-1,k+1)- &
559 & tl_z_r(i,j-1,k )+ &
560 & tl_z_r(i,j ,k+1)- &
561 & tl_z_r(i,j ,k )))+ &
565 dvdz(i,j,k2)=cff*(v(i,j,k+1,nrhs)- &
567 tl_dvdz(i,j,k2)=tl_cff*(v(i,j,k+1,nrhs)- &
569 & cff*(tl_v(i,j,k+1,nrhs)- &
570 & tl_v(i,j,k ,nrhs))- &
584 cff1=min(dzdx_r(i,j,k1),0.0_r8)
585 cff2=max(dzdx_r(i,j,k1),0.0_r8)
586 cff3=min(dzde_r(i,j,k1),0.0_r8)
587 cff4=max(dzde_r(i,j,k1),0.0_r8)
588 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j,k1)))* &
590 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_r(i,j,k1)))* &
592 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_r(i,j,k1)))* &
594 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j,k1)))* &
596 cff=on_r(i,j)*(dnudx(i,j,k1)- &
598 & (cff1*(dudz(i ,j,k1)+ &
600 & cff2*(dudz(i ,j,k2)+ &
601 & dudz(i+1,j,k1))))- &
602 & om_r(i,j)*(dmvde(i,j,k1)- &
604 & (cff3*(dvdz(i,j ,k1)+ &
606 & cff4*(dvdz(i,j ,k2)+ &
608 tl_cff=on_r(i,j)*(tl_dnudx(i,j,k1)- &
610 & (tl_cff1*(dudz(i ,j,k1)+ &
612 & cff1*(tl_dudz(i ,j,k1)+ &
613 & tl_dudz(i+1,j,k2))+ &
614 & tl_cff2*(dudz(i ,j,k2)+ &
616 & cff2*(tl_dudz(i ,j,k2)+ &
617 & tl_dudz(i+1,j,k1))))- &
618 & om_r(i,j)*(tl_dmvde(i,j,k1)- &
620 & (tl_cff3*(dvdz(i,j ,k1)+ &
622 & cff3*(tl_dvdz(i,j ,k1)+ &
623 & tl_dvdz(i,j+1,k2))+ &
624 & tl_cff4*(dvdz(i,j ,k2)+ &
626 & cff4*(tl_dvdz(i,j ,k2)+ &
627 & tl_dvdz(i,j+1,k1))))- &
629 & (-on_r(i,j)*0.5_r8*pn(i,j)* &
630 & (cff1*(dudz(i ,j,k1)+ &
632 & cff2*(dudz(i ,j,k2)+ &
633 & dudz(i+1,j,k1)))+ &
634 & om_r(i,j)*0.5_r8*pm(i,j)* &
635 & (cff3*(dvdz(i,j ,k1)+ &
637 & cff4*(dvdz(i,j ,k2)+ &
642 tl_cff=tl_cff*rmask(i,j)
645# ifdef UV_U3ADV_SPLIT
646 ufx(i,j)=on_r(i,j)*on_r(i,j)*uvis3d_r(i,j,k)*cff
647 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
648 & (tl_uvis3d_r(i,j,k)*cff+ &
649 & uvis3d_r(i,j,k)*tl_cff)- &
653 vfe(i,j)=om_r(i,j)*om_r(i,j)*vvis3d_r(i,j,k)*cff
654 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
655 & (tl_vvis3d_r(i,j,k)*cff+ &
656 & vvis3d_r(i,j,k)*tl_cff)- &
661 ufx(i,j)=on_r(i,j)*on_r(i,j)*visc3d_r(i,j,k)*cff
662 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
663 & (tl_visc3d_r(i,j,k)*cff+ &
664 & visc3d_r(i,j,k)*tl_cff)- &
668 vfe(i,j)=om_r(i,j)*om_r(i,j)*visc3d_r(i,j,k)*cff
669 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
670 & (tl_visc3d_r(i,j,k)*cff+ &
671 & visc3d_r(i,j,k)*tl_cff)- &
677 ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*cff
678 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*tl_cff
679 vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*cff
680 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*tl_cff
687 pm_p=0.25_r8*(pm(i-1,j-1)+pm(i-1,j)+ &
688 & pm(i ,j-1)+pm(i ,j))
689 pn_p=0.25_r8*(pn(i-1,j-1)+pn(i-1,j)+ &
690 & pn(i ,j-1)+pn(i ,j))
691 cff1=min(dzdx_p(i,j,k1),0.0_r8)
692 cff2=max(dzdx_p(i,j,k1),0.0_r8)
693 cff3=min(dzde_p(i,j,k1),0.0_r8)
694 cff4=max(dzde_p(i,j,k1),0.0_r8)
695 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j,k1)))* &
697 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_p(i,j,k1)))* &
699 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_p(i,j,k1)))* &
701 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j,k1)))* &
703 cff=on_p(i,j)*(dnvdx(i,j,k1)- &
705 & (cff1*(dvdz(i-1,j,k1)+ &
707 & cff2*(dvdz(i-1,j,k2)+ &
708 & dvdz(i ,j,k1))))+ &
709 & om_p(i,j)*(dmude(i,j,k1)- &
711 & (cff3*(dudz(i,j-1,k1)+ &
713 & cff4*(dudz(i,j-1,k2)+ &
715 tl_cff=on_p(i,j)*(tl_dnvdx(i,j,k1)- &
717 & (tl_cff1*(dvdz(i-1,j,k1)+ &
719 & cff1*(tl_dvdz(i-1,j,k1)+ &
720 & tl_dvdz(i ,j,k2))+ &
721 & tl_cff2*(dvdz(i-1,j,k2)+ &
723 & cff2*(tl_dvdz(i-1,j,k2)+ &
724 & tl_dvdz(i ,j,k1))))+ &
725 & om_p(i,j)*(tl_dmude(i,j,k1)- &
727 & (tl_cff3*(dudz(i,j-1,k1)+ &
729 & cff3*(tl_dudz(i,j-1,k1)+ &
730 & tl_dudz(i,j ,k2))+ &
731 & tl_cff4*(dudz(i,j-1,k2)+ &
733 & cff4*(tl_dudz(i,j-1,k2)+ &
734 & tl_dudz(i,j ,k1))))- &
736 & (-on_p(i,j)*0.5_r8*pn_p* &
737 & (cff1*(dvdz(i-1,j,k1)+ &
739 & cff2*(dvdz(i-1,j,k2)+ &
741 & om_p(i,j)*0.5_r8*pm_p* &
742 & (cff3*(dudz(i,j-1,k1)+ &
744 & cff4*(dudz(i,j-1,k2)+ &
749 tl_cff=tl_cff*pmask(i,j)
752# ifdef UV_U3ADV_SPLIT
754 & (uvis3d_r(i-1,j-1,k)+uvis3d_r(i-1,j,k)+ &
755 & uvis3d_r(i ,j-1,k)+uvis3d_r(i ,j,k))
757 & (tl_uvis3d_r(i-1,j-1,k)+tl_uvis3d_r(i-1,j,k)+ &
758 & tl_uvis3d_r(i ,j-1,k)+tl_uvis3d_r(i ,j,k))
760 & (vvis3d_r(i-1,j-1,k)+vvis3d_r(i-1,j,k)+ &
761 & vvis3d_r(i ,j-1,k)+vvis3d_r(i ,j,k))
763 & (tl_vvis3d_r(i-1,j-1,k)+tl_vvis3d_r(i-1,j,k)+ &
764 & tl_vvis3d_r(i ,j-1,k)+tl_vvis3d_r(i ,j,k))
765 ufe(i,j)=om_p(i,j)*om_p(i,j)*uvis_p*cff
766 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
767 & (tl_uvis_p*cff+uvis_p*tl_cff)- &
771 vfx(i,j)=on_p(i,j)*on_p(i,j)*vvis_p*cff
772 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
773 & (tl_vvis_p*cff+vvis_p*tl_cff)- &
779 & (visc3d_r(i-1,j-1,k)+visc3d_r(i-1,j,k)+ &
780 & visc3d_r(i ,j-1,k)+visc3d_r(i ,j,k))
782 & (tl_visc3d_r(i-1,j-1,k)+tl_visc3d_r(i-1,j,k)+ &
783 & tl_visc3d_r(i ,j-1,k)+tl_visc3d_r(i ,j,k))
784 ufe(i,j)=om_p(i,j)*om_p(i,j)*visc_p*cff
785 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
786 & (tl_visc_p*cff+visc_p*tl_cff)- &
790 vfx(i,j)=on_p(i,j)*on_p(i,j)*visc_p*cff
791 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
792 & (tl_visc_p*cff+visc_p*tl_cff)- &
798 ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*cff
799 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*tl_cff
800 vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*cff
801 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*tl_cff
813# ifdef UV_U3ADV_SPLIT
815 & (uvis3d_r(i-1,j,k )+uvis3d_r(i,j,k )+ &
816 & uvis3d_r(i-1,j,k+1)+uvis3d_r(i,j,k+1))
818 & (tl_uvis3d_r(i-1,j,k )+tl_uvis3d_r(i,j,k )+ &
819 & tl_uvis3d_r(i-1,j,k+1)+tl_uvis3d_r(i,j,k+1))
822 & (visc3d_r(i-1,j,k )+visc3d_r(i,j,k )+ &
823 & visc3d_r(i-1,j,k+1)+visc3d_r(i,j,k+1))
825 & (tl_visc3d_r(i-1,j,k )+tl_visc3d_r(i,j,k )+ &
826 & tl_visc3d_r(i-1,j,k+1)+tl_visc3d_r(i,j,k+1))
829 tl_fac1=tl_cff*on_u(i,j)
831 tl_fac2=tl_cff*om_u(i,j)
833 cff=0.25_r8*(visc4_r(i-1,j)+visc4_r(i,j))
837 cff=0.5_r8*(pn(i-1,j)+pn(i,j))
838 dnudz=cff*dudz(i,j,k2)
839 tl_dnudz=cff*tl_dudz(i,j,k2)
840 dnvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
844 tl_dnvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
845 & tl_dvdz(i ,j+1,k2)+ &
846 & tl_dvdz(i-1,j ,k2)+ &
848 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
849 dmudz=cff*dudz(i,j,k2)
850 tl_dmudz=cff*tl_dudz(i,j,k2)
851 dmvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
855 tl_dmvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
856 & tl_dvdz(i ,j+1,k2)+ &
857 & tl_dvdz(i-1,j ,k2)+ &
860 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
861 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
862 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
863 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
864 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
865 & tl_dzdx_r(i-1,j,k1)
866 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
868 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
869 & tl_dzdx_r(i-1,j,k2)
870 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
873 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
874 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
875 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
876 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
877 tl_ufsx(i,j,k2)=fac1* &
878 & (tl_cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
879 & tl_cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
880 & tl_cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
881 & tl_cff4*(cff4*dnudz-dnudx(i ,j,k1))+ &
882 & cff1*(tl_cff1*dnudz+cff1*tl_dnudz- &
883 & tl_dnudx(i-1,j,k1))+ &
884 & cff2*(tl_cff2*dnudz+cff2*tl_dnudz- &
885 & tl_dnudx(i ,j,k2))+ &
886 & cff3*(tl_cff3*dnudz+cff3*tl_dnudz- &
887 & tl_dnudx(i-1,j,k2))+ &
888 & cff4*(tl_cff4*dnudz+cff4*tl_dnudz- &
889 & tl_dnudx(i ,j,k1)))- &
892 & (cff1*(2.0_r8*cff1*dnudz- &
893 & dnudx(i-1,j,k1))+ &
894 & cff2*(2.0_r8*cff2*dnudz- &
896 & cff3*(2.0_r8*cff3*dnudz- &
897 & dnudx(i-1,j,k2))+ &
898 & cff4*(2.0_r8*cff4*dnudz- &
902 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
904 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
905 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
906 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
907 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
910 cff1=min(dzde_p(i,j ,k1),0.0_r8)
911 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
912 cff3=max(dzde_p(i,j ,k2),0.0_r8)
913 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
914 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
916 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
917 & tl_dzde_p(i,j+1,k2)
918 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
920 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
921 & tl_dzde_p(i,j+1,k1)
923 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
924 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
925 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
926 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
927 tl_ufse(i,j,k2)=fac2* &
928 & (tl_cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
929 & tl_cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
930 & tl_cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
931 & tl_cff4*(cff4*dmudz-dmude(i,j+1,k1))+ &
932 & cff1*(tl_cff1*dmudz+cff1*tl_dmudz- &
933 & tl_dmude(i,j ,k1))+ &
934 & cff2*(tl_cff2*dmudz+cff2*tl_dmudz- &
935 & tl_dmude(i,j+1,k2))+ &
936 & cff3*(tl_cff3*dmudz+cff3*tl_dmudz- &
937 & tl_dmude(i,j ,k2))+ &
938 & cff4*(tl_cff4*dmudz+cff4*tl_dmudz- &
939 & tl_dmude(i,j+1,k1)))- &
942 & (cff1*(2.0_r8*cff1*dmudz- &
944 & cff2*(2.0_r8*cff2*dmudz- &
945 & dmude(i,j+1,k2))+ &
946 & cff3*(2.0_r8*cff3*dmudz- &
948 & cff4*(2.0_r8*cff4*dmudz- &
952 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)+ &
954 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
955 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
956 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
957 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
960 cff1=min(dzde_p(i,j ,k1),0.0_r8)
961 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
962 cff3=max(dzde_p(i,j ,k2),0.0_r8)
963 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
964 cff5=min(dzdx_p(i,j ,k1),0.0_r8)
965 cff6=min(dzdx_p(i,j+1,k2),0.0_r8)
966 cff7=max(dzdx_p(i,j ,k2),0.0_r8)
967 cff8=max(dzdx_p(i,j+1,k1),0.0_r8)
968 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
970 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
971 & tl_dzde_p(i,j+1,k2)
972 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
974 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
975 & tl_dzde_p(i,j+1,k1)
976 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j ,k1)))* &
978 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j+1,k2)))* &
979 & tl_dzdx_p(i,j+1,k2)
980 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_p(i,j ,k2)))* &
982 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_p(i,j+1,k1)))* &
983 & tl_dzdx_p(i,j+1,k1)
984 ufsx(i,j,k2)=ufsx(i,j,k2)+ &
986 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
987 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
988 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
989 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
990 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
992 & (tl_cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
993 & tl_cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
994 & tl_cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
995 & tl_cff4*(cff8*dnvdz-dnvdx(i,j+1,k1))+ &
996 & cff1*(tl_cff5*dnvdz+cff5*tl_dnvdz- &
997 & tl_dnvdx(i,j ,k1))+ &
998 & cff2*(tl_cff6*dnvdz+cff6*tl_dnvdz- &
999 & tl_dnvdx(i,j+1,k2))+ &
1000 & cff3*(tl_cff7*dnvdz+cff7*tl_dnvdz- &
1001 & tl_dnvdx(i,j ,k2))+ &
1002 & cff4*(tl_cff8*dnvdz+cff8*tl_dnvdz- &
1003 & tl_dnvdx(i,j+1,k1)))- &
1006 & (cff1*(2.0_r8*cff5*dnvdz- &
1007 & dnvdx(i,j ,k1))+ &
1008 & cff2*(2.0_r8*cff6*dnvdz- &
1009 & dnvdx(i,j+1,k2))+ &
1010 & cff3*(2.0_r8*cff7*dnvdz- &
1011 & dnvdx(i,j ,k2))+ &
1012 & cff4*(2.0_r8*cff8*dnvdz- &
1016 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
1018 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
1019 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
1020 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
1021 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
1024 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
1025 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
1026 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
1027 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
1028 cff5=min(dzde_r(i-1,j,k1),0.0_r8)
1029 cff6=min(dzde_r(i ,j,k2),0.0_r8)
1030 cff7=max(dzde_r(i-1,j,k2),0.0_r8)
1031 cff8=max(dzde_r(i ,j,k1),0.0_r8)
1032 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
1033 & tl_dzdx_r(i-1,j,k1)
1034 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
1035 & tl_dzdx_r(i ,j,k2)
1036 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
1037 & tl_dzdx_r(i-1,j,k2)
1038 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
1039 & tl_dzdx_r(i ,j,k1)
1040 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_r(i-1,j,k1)))* &
1041 & tl_dzde_r(i-1,j,k1)
1042 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_r(i ,j,k2)))* &
1043 & tl_dzde_r(i ,j,k2)
1044 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_r(i-1,j,k2)))* &
1045 & tl_dzde_r(i-1,j,k2)
1046 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_r(i ,j,k1)))* &
1047 & tl_dzde_r(i ,j,k1)
1048 ufse(i,j,k2)=ufse(i,j,k2)- &
1050 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
1051 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
1052 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
1053 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
1054 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
1056 & (tl_cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
1057 & tl_cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
1058 & tl_cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
1059 & tl_cff4*(cff8*dmvdz-dmvde(i ,j,k1))+ &
1060 & cff1*(tl_cff5*dmvdz+cff5*tl_dmvdz- &
1061 & tl_dmvde(i-1,j,k1))+ &
1062 & cff2*(tl_cff6*dmvdz+cff6*tl_dmvdz- &
1063 & tl_dmvde(i ,j,k2))+ &
1064 & cff3*(tl_cff7*dmvdz+cff7*tl_dmvdz- &
1065 & tl_dmvde(i-1,j,k2))+ &
1066 & cff4*(tl_cff8*dmvdz+cff8*tl_dmvdz- &
1067 & tl_dmvde(i ,j,k1)))+ &
1070 & (cff1*(2.0_r8*cff5*dmvdz- &
1071 & dmvde(i-1,j,k1))+ &
1072 & cff2*(2.0_r8*cff6*dmvdz- &
1073 & dmvde(i ,j,k2))+ &
1074 & cff3*(2.0_r8*cff7*dmvdz- &
1075 & dmvde(i-1,j,k2))+ &
1076 & cff4*(2.0_r8*cff8*dmvdz- &
1080 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
1082 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
1083 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
1084 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
1085 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
1093# ifdef UV_U3ADV_SPLIT
1095 & (vvis3d_r(i,j-1,k )+vvis3d_r(i,j,k )+ &
1096 & vvis3d_r(i,j-1,k+1)+vvis3d_r(i,j,k+1))
1098 & (tl_vvis3d_r(i,j-1,k )+tl_vvis3d_r(i,j,k )+ &
1099 & tl_vvis3d_r(i,j-1,k+1)+tl_vvis3d_r(i,j,k+1))
1102 & (visc3d_r(i,j-1,k )+visc3d_r(i,j,k )+ &
1103 & visc3d_r(i,j-1,k+1)+visc3d_r(i,j,k+1))
1105 & (tl_visc3d_r(i,j-1,k )+tl_visc3d_r(i,j,k )+ &
1106 & tl_visc3d_r(i,j-1,k+1)+tl_visc3d_r(i,j,k+1))
1109 tl_fac1=tl_cff*on_v(i,j)
1111 tl_fac2=tl_cff*om_v(i,j)
1113 cff=0.25_r8*(visc4_r(i,j-1)+visc4_r(i,j))
1117 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
1118 dnudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
1119 & dudz(i+1,j ,k2)+ &
1120 & dudz(i ,j-1,k2)+ &
1122 tl_dnudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
1123 & tl_dudz(i+1,j ,k2)+ &
1124 & tl_dudz(i ,j-1,k2)+ &
1125 & tl_dudz(i+1,j-1,k2))
1126 dnvdz=cff*dvdz(i,j,k2)
1127 tl_dnvdz=cff*tl_dvdz(i,j,k2)
1128 cff=0.5_r8*(pm(i,j-1)+pm(i,j))
1129 dmudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
1130 & dudz(i+1,j ,k2)+ &
1131 & dudz(i ,j-1,k2)+ &
1133 tl_dmudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
1134 & tl_dudz(i+1,j ,k2)+ &
1135 & tl_dudz(i ,j-1,k2)+ &
1136 & tl_dudz(i+1,j-1,k2))
1137 dmvdz=cff*dvdz(i,j,k2)
1138 tl_dmvdz=cff*tl_dvdz(i,j,k2)
1140 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
1141 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
1142 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
1143 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
1144 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
1145 & tl_dzdx_p(i ,j,k1)
1146 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
1147 & tl_dzdx_p(i+1,j,k2)
1148 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
1149 & tl_dzdx_p(i ,j,k2)
1150 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
1151 & tl_dzdx_p(i+1,j,k1)
1152 vfsx(i,j,k2)=fac1* &
1153 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1154 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1155 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1156 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
1157 tl_vfsx(i,j,k2)=fac1* &
1158 & (tl_cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1159 & tl_cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1160 & tl_cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1161 & tl_cff4*(cff4*dnvdz-dnvdx(i+1,j,k1))+ &
1162 & cff1*(tl_cff1*dnvdz+cff1*tl_dnvdz- &
1163 & tl_dnvdx(i ,j,k1))+ &
1164 & cff2*(tl_cff2*dnvdz+cff2*tl_dnvdz- &
1165 & tl_dnvdx(i+1,j,k2))+ &
1166 & cff3*(tl_cff3*dnvdz+cff3*tl_dnvdz- &
1167 & tl_dnvdx(i ,j,k2))+ &
1168 & cff4*(tl_cff4*dnvdz+cff4*tl_dnvdz- &
1169 & tl_dnvdx(i+1,j,k1)))- &
1172 & (cff1*(2.0_r8*cff1*dnvdz- &
1173 & dnvdx(i ,j,k1))+ &
1174 & cff2*(2.0_r8*cff2*dnvdz- &
1175 & dnvdx(i+1,j,k2))+ &
1176 & cff3*(2.0_r8*cff3*dnvdz- &
1177 & dnvdx(i ,j,k2))+ &
1178 & cff4*(2.0_r8*cff4*dnvdz- &
1182 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)+ &
1184 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
1185 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
1186 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
1187 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
1190 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
1191 cff2=min(dzde_r(i,j ,k2),0.0_r8)
1192 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
1193 cff4=max(dzde_r(i,j ,k1),0.0_r8)
1194 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
1195 & tl_dzde_r(i,j-1,k1)
1196 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
1197 & tl_dzde_r(i,j ,k2)
1198 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
1199 & tl_dzde_r(i,j-1,k2)
1200 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
1201 & tl_dzde_r(i,j ,k1)
1202 vfse(i,j,k2)=fac2* &
1203 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1204 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1205 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1206 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
1207 tl_vfse(i,j,k2)=fac2* &
1208 & (tl_cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1209 & tl_cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1210 & tl_cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1211 & tl_cff4*(cff4*dmvdz-dmvde(i,j ,k1))+ &
1212 & cff1*(tl_cff1*dmvdz+cff1*tl_dmvdz- &
1213 & tl_dmvde(i,j-1,k1))+ &
1214 & cff2*(tl_cff2*dmvdz+cff2*tl_dmvdz- &
1215 & tl_dmvde(i,j ,k2))+ &
1216 & cff3*(tl_cff3*dmvdz+cff3*tl_dmvdz- &
1217 & tl_dmvde(i,j-1,k2))+ &
1218 & cff4*(tl_cff4*dmvdz+cff4*tl_dmvdz- &
1219 & tl_dmvde(i,j ,k1)))- &
1222 & (cff1*(2.0_r8*cff1*dmvdz- &
1223 & dmvde(i,j-1,k1))+ &
1224 & cff2*(2.0_r8*cff2*dmvdz- &
1225 & dmvde(i,j ,k2))+ &
1226 & cff3*(2.0_r8*cff3*dmvdz- &
1227 & dmvde(i,j-1,k2))+ &
1228 & cff4*(2.0_r8*cff4*dmvdz- &
1232 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1234 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
1235 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
1236 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
1237 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
1240 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
1241 cff2=min(dzde_r(i,j ,k2),0.0_r8)
1242 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
1243 cff4=max(dzde_r(i,j ,k1),0.0_r8)
1244 cff5=min(dzdx_r(i,j-1,k1),0.0_r8)
1245 cff6=min(dzdx_r(i,j ,k2),0.0_r8)
1246 cff7=max(dzdx_r(i,j-1,k2),0.0_r8)
1247 cff8=max(dzdx_r(i,j ,k1),0.0_r8)
1248 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
1249 & tl_dzde_r(i,j-1,k1)
1250 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
1251 & tl_dzde_r(i,j ,k2)
1252 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
1253 & tl_dzde_r(i,j-1,k2)
1254 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
1255 & tl_dzde_r(i,j ,k1)
1256 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j-1,k1)))* &
1257 & tl_dzdx_r(i,j-1,k1)
1258 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j ,k2)))* &
1259 & tl_dzdx_r(i,j ,k2)
1260 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_r(i,j-1,k2)))* &
1261 & tl_dzdx_r(i,j-1,k2)
1262 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_r(i,j ,k1)))* &
1263 & tl_dzdx_r(i,j ,k1)
1264 vfsx(i,j,k2)=vfsx(i,j,k2)- &
1266 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1267 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1268 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1269 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
1270 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
1272 & (tl_cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1273 & tl_cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1274 & tl_cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1275 & tl_cff4*(cff8*dnudz-dnudx(i,j ,k1))+ &
1276 & cff1*(tl_cff5*dnudz+cff5*tl_dnudz- &
1277 & tl_dnudx(i,j-1,k1))+ &
1278 & cff2*(tl_cff6*dnudz+cff6*tl_dnudz- &
1279 & tl_dnudx(i,j ,k2))+ &
1280 & cff3*(tl_cff7*dnudz+cff7*tl_dnudz- &
1281 & tl_dnudx(i,j-1,k2))+ &
1282 & cff4*(tl_cff8*dnudz+cff8*tl_dnudz- &
1283 & tl_dnudx(i,j ,k1)))+ &
1286 & (cff1*(2.0_r8*cff5*dnudz- &
1287 & dnudx(i,j-1,k1))+ &
1288 & cff2*(2.0_r8*cff6*dnudz- &
1289 & dnudx(i,j ,k2))+ &
1290 & cff3*(2.0_r8*cff7*dnudz- &
1291 & dnudx(i,j-1,k2))+ &
1292 & cff4*(2.0_r8*cff8*dnudz- &
1296 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
1298 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
1299 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
1300 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
1301 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
1304 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
1305 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
1306 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
1307 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
1308 cff5=min(dzde_p(i ,j,k1),0.0_r8)
1309 cff6=min(dzde_p(i+1,j,k2),0.0_r8)
1310 cff7=max(dzde_p(i ,j,k2),0.0_r8)
1311 cff8=max(dzde_p(i+1,j,k1),0.0_r8)
1312 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
1313 & tl_dzdx_p(i ,j,k1)
1314 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
1315 & tl_dzdx_p(i+1,j,k2)
1316 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
1317 & tl_dzdx_p(i ,j,k2)
1318 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
1319 & tl_dzdx_p(i+1,j,k1)
1320 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_p(i ,j,k1)))* &
1321 & tl_dzde_p(i ,j,k1)
1322 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_p(i+1,j,k2)))* &
1323 & tl_dzde_p(i+1,j,k2)
1324 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_p(i ,j,k2)))* &
1325 & tl_dzde_p(i ,j,k2)
1326 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_p(i+1,j,k1)))* &
1327 & tl_dzde_p(i+1,j,k1)
1328 vfse(i,j,k2)=vfse(i,j,k2)+ &
1330 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1331 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1332 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1333 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
1334 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1336 & (tl_cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1337 & tl_cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1338 & tl_cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1339 & tl_cff4*(cff8*dmudz-dmude(i+1,j,k1))+ &
1340 & cff1*(tl_cff5*dmudz+cff5*tl_dmudz- &
1341 & tl_dmude(i ,j,k1))+ &
1342 & cff2*(tl_cff6*dmudz+cff6*tl_dmudz- &
1343 & tl_dmude(i+1,j,k2))+ &
1344 & cff3*(tl_cff7*dmudz+cff7*tl_dmudz- &
1345 & tl_dmude(i ,j,k2))+ &
1346 & cff4*(tl_cff8*dmudz+cff8*tl_dmudz- &
1347 & tl_dmude(i+1,j,k1)))- &
1350 & (cff1*(2.0_r8*cff5*dmudz- &
1351 & dmude(i ,j,k1))+ &
1352 & cff2*(2.0_r8*cff6*dmudz- &
1353 & dmude(i+1,j,k2))+ &
1354 & cff3*(2.0_r8*cff7*dmudz- &
1355 & dmude(i ,j,k2))+ &
1356 & cff4*(2.0_r8*cff8*dmudz- &
1360 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
1362 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
1363 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
1364 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
1365 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
1375 cff=0.125_r8*(pm(i-1,j)+pm(i,j))* &
1376 & (pn(i-1,j)+pn(i,j))
1377 cff1=1.0_r8/(0.5_r8*(hz(i-1,j,k)+hz(i,j,k)))
1378 tl_cff1=-cff1*cff1* &
1379 & (0.5_r8*(tl_hz(i-1,j,k)+tl_hz(i,j,k)))+ &
1383 lapu(i,j,k)=cff*((pn(i-1,j)+pn(i,j))* &
1384 (ufx(i,j)-ufx(i-1,j))+ &
1385 & (pm(i-1,j)+pm(i,j))* &
1386 & (ufe(i,j+1)-ufe(i,j)))+ &
1387 & cff1*((ufsx(i,j,k2)+ufse(i,j,k2))- &
1388 & (ufsx(i,j,k1)+ufse(i,j,k1)))
1389 tl_lapu(i,j,k)=cff*((pn(i-1,j)+pn(i,j))* &
1390 (tl_ufx(i,j)-tl_ufx(i-1,j))+ &
1391 & (pm(i-1,j)+pm(i,j))* &
1392 & (tl_ufe(i,j+1)-tl_ufe(i,j)))+ &
1393 & tl_cff1*((ufsx(i,j,k2)+ufse(i,j,k2))- &
1394 & (ufsx(i,j,k1)+ufse(i,j,k1)))+ &
1395 & cff1*((tl_ufsx(i,j,k2)+tl_ufse(i,j,k2))- &
1396 & (tl_ufsx(i,j,k1)+tl_ufse(i,j,k1)))- &
1398 & cff1*((ufsx(i,j,k2)+ufse(i,j,k2))- &
1399 & (ufsx(i,j,k1)+ufse(i,j,k1)))
1402 lapu(i,j,k)=lapu(i,j,k)*umask(i,j)
1403 tl_lapu(i,j,k)=tl_lapu(i,j,k)*umask(i,j)
1410 cff=0.125_r8*(pm(i,j)+pm(i,j-1))* &
1411 & (pn(i,j)+pn(i,j-1))
1412 cff1=1.0_r8/(0.5_r8*(hz(i,j-1,k)+hz(i,j,k)))
1413 tl_cff1=-cff1*cff1* &
1414 & (0.5_r8*(tl_hz(i,j-1,k)+tl_hz(i,j,k)))+ &
1418 lapv(i,j,k)=cff*((pn(i,j-1)+pn(i,j))* &
1419 & (vfx(i+1,j)-vfx(i,j))- &
1420 & (pm(i,j-1)+pm(i,j))* &
1421 & (vfe(i,j)-vfe(i,j-1)))+ &
1422 & cff1*((vfsx(i,j,k2)+vfse(i,j,k2))- &
1423 & (vfsx(i,j,k1)+vfse(i,j,k1)))
1424 tl_lapv(i,j,k)=cff*((pn(i,j-1)+pn(i,j))* &
1425 & (tl_vfx(i+1,j)-tl_vfx(i,j))- &
1426 & (pm(i,j-1)+pm(i,j))* &
1427 & (tl_vfe(i,j)-tl_vfe(i,j-1)))+ &
1428 & tl_cff1*((vfsx(i,j,k2)+vfse(i,j,k2))- &
1429 & (vfsx(i,j,k1)+vfse(i,j,k1)))+ &
1430 & cff1*((tl_vfsx(i,j,k2)+tl_vfse(i,j,k2))- &
1431 & (tl_vfsx(i,j,k1)+tl_vfse(i,j,k1)))- &
1433 & cff1*((vfsx(i,j,k2)+vfse(i,j,k2))- &
1434 & (vfsx(i,j,k1)+vfse(i,j,k1)))
1437 lapv(i,j,k)=lapv(i,j,k)*vmask(i,j)
1438 tl_lapv(i,j,k)=tl_lapv(i,j,k)*vmask(i,j)
1449 IF (
domain(ng)%Western_Edge(tile))
THEN
1453 lapu(istru-1,j,k)=0.0_r8
1454 tl_lapu(istru-1,j,k)=0.0_r8
1460 lapu(istru-1,j,k)=lapu(istru,j,k)
1461 tl_lapu(istru-1,j,k)=tl_lapu(istru,j,k)
1468 lapv(istr-1,j,k)=
gamma2(ng)*lapv(istr,j,k)
1469 tl_lapv(istr-1,j,k)=
gamma2(ng)*tl_lapv(istr,j,k)
1475 lapv(istr-1,j,k)=0.0_r8
1476 tl_lapv(istr-1,j,k)=0.0_r8
1484 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1488 lapu(iend+1,j,k)=0.0_r8
1489 tl_lapu(iend+1,j,k)=0.0_r8
1495 lapu(iend+1,j,k)=lapu(iend,j,k)
1496 tl_lapu(iend+1,j,k)=tl_lapu(iend,j,k)
1503 lapv(iend+1,j,k)=
gamma2(ng)*lapv(iend,j,k)
1504 tl_lapv(iend+1,j,k)=
gamma2(ng)*tl_lapv(iend,j,k)
1510 lapv(iend+1,j,k)=0.0_r8
1511 tl_lapv(iend+1,j,k)=0.0_r8
1519 IF (
domain(ng)%Southern_Edge(tile))
THEN
1523 lapu(i,jstr-1,k)=
gamma2(ng)*lapu(i,jstr,k)
1524 tl_lapu(i,jstr-1,k)=
gamma2(ng)*tl_lapu(i,jstr,k)
1530 lapu(i,jstr-1,k)=0.0_r8
1531 tl_lapu(i,jstr-1,k)=0.0_r8
1538 lapv(i,jstrv-1,k)=0.0_r8
1539 tl_lapv(i,jstrv-1,k)=0.0_r8
1545 lapv(i,jstrv-1,k)=lapv(i,jstrv,k)
1546 tl_lapv(i,jstrv-1,k)=tl_lapv(i,jstrv,k)
1554 IF (
domain(ng)%Northern_Edge(tile))
THEN
1558 lapu(i,jend+1,k)=
gamma2(ng)*lapu(i,jend,k)
1559 tl_lapu(i,jend+1,k)=
gamma2(ng)*tl_lapu(i,jend,k)
1565 lapu(i,jend+1,k)=0.0_r8
1566 tl_lapu(i,jend+1,k)=0.0_r8
1573 lapv(i,jend+1,k)=0.0_r8
1574 tl_lapv(i,jend+1,k)=0.0_r8
1580 lapv(i,jend+1,k)=lapv(i,jend,k)
1581 tl_lapv(i,jend+1,k)=tl_lapv(i,jend,k)
1590 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
1592 lapu(istr ,jstr-1,k)=0.5_r8* &
1593 & (lapu(istr+1,jstr-1,k)+ &
1594 & lapu(istr ,jstr ,k))
1595 tl_lapu(istr ,jstr-1,k)=0.5_r8* &
1596 & (tl_lapu(istr+1,jstr-1,k)+ &
1597 & tl_lapu(istr ,jstr ,k))
1598 lapv(istr-1,jstr ,k)=0.5_r8* &
1599 & (lapv(istr-1,jstr+1,k)+ &
1600 & lapv(istr ,jstr ,k))
1601 tl_lapv(istr-1,jstr ,k)=0.5_r8* &
1602 & (tl_lapv(istr-1,jstr+1,k)+ &
1603 & tl_lapv(istr ,jstr ,k))
1610 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
1612 lapu(iend+1,jstr-1,k)=0.5_r8* &
1613 & (lapu(iend ,jstr-1,k)+ &
1614 & lapu(iend+1,jstr ,k))
1615 tl_lapu(iend+1,jstr-1,k)=0.5_r8* &
1616 & (tl_lapu(iend ,jstr-1,k)+ &
1617 & tl_lapu(iend+1,jstr ,k))
1618 lapv(iend+1,jstr ,k)=0.5_r8* &
1619 & (lapv(iend ,jstr ,k)+ &
1620 & lapv(iend+1,jstr+1,k))
1621 tl_lapv(iend+1,jstr ,k)=0.5_r8* &
1622 & (tl_lapv(iend ,jstr ,k)+ &
1623 & tl_lapv(iend+1,jstr+1,k))
1630 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
1632 lapu(istr ,jend+1,k)=0.5_r8* &
1633 & (lapu(istr+1,jend+1,k)+ &
1634 & lapu(istr ,jend ,k))
1635 tl_lapu(istr ,jend+1,k)=0.5_r8* &
1636 & (tl_lapu(istr+1,jend+1,k)+ &
1637 & tl_lapu(istr ,jend ,k))
1638 lapv(istr-1,jend+1,k)=0.5_r8* &
1639 & (lapv(istr ,jend+1,k)+ &
1640 & lapv(istr-1,jend ,k))
1641 tl_lapv(istr-1,jend+1,k)=0.5_r8* &
1642 & (tl_lapv(istr ,jend+1,k)+ &
1643 & tl_lapv(istr-1,jend ,k))
1650 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
1652 lapu(iend+1,jend+1,k)=0.5_r8* &
1653 & (lapu(iend ,jend+1,k)+ &
1654 & lapu(iend+1,jend ,k))
1655 tl_lapu(iend+1,jend+1,k)=0.5_r8* &
1656 & (tl_lapu(iend ,jend+1,k)+ &
1657 & tl_lapu(iend+1,jend ,k))
1658 lapv(iend+1,jend+1,k)=0.5_r8* &
1659 & (lapv(iend ,jend+1,k)+ &
1660 & lapv(iend+1,jend ,k))
1661 tl_lapv(iend+1,jend+1,k)=0.5_r8* &
1662 & (tl_lapv(iend ,jend+1,k)+ &
1663 & tl_lapv(iend+1,jend ,k))
1672 k_loop2 :
DO k=0,n(ng)
1675 IF (k.lt.n(ng))
THEN
1681 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
1685 ufx(i,j)=cff*(z_r(i ,j,k+1)- &
1687 tl_ufx(i,j)=cff*(tl_z_r(i ,j,k+1)- &
1688 & tl_z_r(i-1,j,k+1))
1693 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
1697 vfe(i,j)=cff*(z_r(i,j ,k+1)- &
1699 tl_vfe(i,j)=cff*(tl_z_r(i,j ,k+1)- &
1700 & tl_z_r(i,j-1,k+1))
1706 dzdx_p(i,j,k2)=0.5_r8*(ufx(i,j-1)+ &
1708 tl_dzdx_p(i,j,k2)=0.5_r8*(tl_ufx(i,j-1)+ &
1710 dzde_p(i,j,k2)=0.5_r8*(vfe(i-1,j)+ &
1712 tl_dzde_p(i,j,k2)=0.5_r8*(tl_vfe(i-1,j)+ &
1718 dzdx_r(i,j,k2)=0.5_r8*(ufx(i ,j)+ &
1720 tl_dzdx_r(i,j,k2)=0.5_r8*(tl_ufx(i ,j)+ &
1722 dzde_r(i,j,k2)=0.5_r8*(vfe(i,j )+ &
1724 tl_dzde_r(i,j,k2)=0.5_r8*(tl_vfe(i,j )+ &
1738 dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
1739 & lapu(i+1,j,k+1)- &
1740 & (pn(i-1,j)+pn(i ,j))* &
1742 tl_dnudx(i,j,k2)=cff*((pn(i ,j)+pn(i+1,j))* &
1743 & tl_lapu(i+1,j,k+1)- &
1744 & (pn(i-1,j)+pn(i ,j))* &
1745 & tl_lapu(i ,j,k+1))
1751 cff=0.125_r8*(pn(i-1,j )+pn(i,j )+ &
1752 & pn(i-1,j-1)+pn(i,j-1))
1756 dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
1758 & (pm(i-1,j-1)+pm(i,j-1))* &
1760 tl_dmude(i,j,k2)=cff*((pm(i-1,j )+pm(i,j ))* &
1761 & tl_lapu(i,j ,k+1)- &
1762 & (pm(i-1,j-1)+pm(i,j-1))* &
1763 & tl_lapu(i,j-1,k+1))
1769 cff=0.125_r8*(pm(i-1,j )+pm(i,j )+ &
1770 & pm(i-1,j-1)+pm(i,j-1))
1774 dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
1776 & (pn(i-1,j-1)+pn(i-1,j))* &
1778 tl_dnvdx(i,j,k2)=cff*((pn(i ,j-1)+pn(i ,j))* &
1779 & tl_lapv(i ,j,k+1)- &
1780 & (pn(i-1,j-1)+pn(i-1,j))* &
1781 & tl_lapv(i-1,j,k+1))
1791 dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
1792 & lapv(i,j+1,k+1)- &
1793 & (pm(i,j-1)+pm(i,j ))* &
1795 tl_dmvde(i,j,k2)=cff*((pm(i,j )+pm(i,j+1))* &
1796 & tl_lapv(i,j+1,k+1)- &
1797 & (pm(i,j-1)+pm(i,j ))* &
1798 & tl_lapv(i,j ,k+1))
1803 IF ((k.eq.0).or.(k.eq.n(ng)))
THEN
1807 tl_dudz(i,j,k2)=0.0_r8
1813 tl_dvdz(i,j,k2)=0.0_r8
1820 tl_ufsx(i,j,k2)=0.0_r8
1822 tl_ufse(i,j,k2)=0.0_r8
1828 tl_vfsx(i,j,k2)=0.0_r8
1830 tl_vfse(i,j,k2)=0.0_r8
1836 cff=1.0_r8/(0.5_r8*(z_r(i-1,j,k+1)- &
1840 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i-1,j,k+1)- &
1841 & tl_z_r(i-1,j,k )+ &
1842 & tl_z_r(i ,j,k+1)- &
1843 & tl_z_r(i ,j,k )))+ &
1847 dudz(i,j,k2)=cff*(lapu(i,j,k+1)- &
1849 tl_dudz(i,j,k2)=tl_cff*(lapu(i,j,k+1)- &
1851 & cff*(tl_lapu(i,j,k+1)- &
1852 & tl_lapu(i,j,k ))- &
1861 cff=1.0_r8/(0.5_r8*(z_r(i,j-1,k+1)- &
1865 tl_cff=-cff*cff*(0.5_r8*(tl_z_r(i,j-1,k+1)- &
1866 & tl_z_r(i,j-1,k )+ &
1867 & tl_z_r(i,j ,k+1)- &
1868 & tl_z_r(i,j ,k )))+ &
1872 dvdz(i,j,k2)=cff*(lapv(i,j,k+1)- &
1874 tl_dvdz(i,j,k2)=tl_cff*(lapv(i,j,k+1)- &
1876 & cff*(tl_lapv(i,j,k+1)- &
1877 & tl_lapv(i,j,k ))- &
1891 cff1=min(dzdx_r(i,j,k1),0.0_r8)
1892 cff2=max(dzdx_r(i,j,k1),0.0_r8)
1893 cff3=min(dzde_r(i,j,k1),0.0_r8)
1894 cff4=max(dzde_r(i,j,k1),0.0_r8)
1895 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j,k1)))* &
1897 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_r(i,j,k1)))* &
1899 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_r(i,j,k1)))* &
1901 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j,k1)))* &
1905 & (on_r(i,j)*(dnudx(i,j,k1)- &
1907 & (cff1*(dudz(i ,j,k1)+ &
1908 & dudz(i+1,j,k2))+ &
1909 & cff2*(dudz(i ,j,k2)+ &
1910 & dudz(i+1,j,k1))))- &
1911 & om_r(i,j)*(dmvde(i,j,k1)- &
1913 & (cff3*(dvdz(i,j ,k1)+ &
1914 & dvdz(i,j+1,k2))+ &
1915 & cff4*(dvdz(i,j ,k2)+ &
1916 & dvdz(i,j+1,k1)))))
1933 tl_cff=tl_hz(i,j,k)* &
1934 & (on_r(i,j)*(dnudx(i,j,k1)- &
1936 & (cff1*(dudz(i ,j,k1)+ &
1937 & dudz(i+1,j,k2))+ &
1938 & cff2*(dudz(i ,j,k2)+ &
1939 & dudz(i+1,j,k1))))- &
1940 & om_r(i,j)*(dmvde(i,j,k1)- &
1942 & (cff3*(dvdz(i,j ,k1)+ &
1943 & dvdz(i,j+1,k2))+ &
1944 & cff4*(dvdz(i,j ,k2)+ &
1945 & dvdz(i,j+1,k1)))))+ &
1947 & (on_r(i,j)*(tl_dnudx(i,j,k1)- &
1949 & (tl_cff1*(dudz(i ,j,k1)+ &
1950 & dudz(i+1,j,k2))+ &
1951 & cff1*(tl_dudz(i ,j,k1)+ &
1952 & tl_dudz(i+1,j,k2))+ &
1953 & tl_cff2*(dudz(i ,j,k2)+ &
1954 & dudz(i+1,j,k1))+ &
1955 & cff2*(tl_dudz(i ,j,k2)+ &
1956 & tl_dudz(i+1,j,k1))))- &
1957 & om_r(i,j)*(tl_dmvde(i,j,k1)- &
1959 & (tl_cff3*(dvdz(i,j ,k1)+ &
1960 & dvdz(i,j+1,k2))+ &
1961 & cff3*(tl_dvdz(i,j ,k1)+ &
1962 & tl_dvdz(i,j+1,k2))+ &
1963 & tl_cff4*(dvdz(i,j ,k2)+ &
1964 & dvdz(i,j+1,k1))+ &
1965 & cff4*(tl_dvdz(i,j ,k2)+ &
1966 & tl_dvdz(i,j+1,k1)))))- &
1969 & (on_r(i,j)*(dnudx(i,j,k1)- &
1971 & (cff1*(dudz(i ,j,k1)+ &
1972 & dudz(i+1,j,k2))+ &
1973 & cff2*(dudz(i ,j,k2)+ &
1974 & dudz(i+1,j,k1))))- &
1975 & om_r(i,j)*(dmvde(i,j,k1)- &
1977 & (cff3*(dvdz(i,j ,k1)+ &
1978 & dvdz(i,j+1,k2))+ &
1979 & cff4*(dvdz(i,j ,k2)+ &
1980 & dvdz(i,j+1,k1)))))
1989 tl_cff=tl_cff*rmask(i,j)
1992# ifdef UV_U3ADV_SPLIT
1993 ufx(i,j)=on_r(i,j)*on_r(i,j)*uvis3d_r(i,j,k)*cff
1994 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
1995 & (tl_uvis3d_r(i,j,k)*cff+ &
1996 & uvis3d_r(i,j,k)*tl_cff)- &
2000 vfe(i,j)=om_r(i,j)*om_r(i,j)*vvis3d_r(i,j,k)*cff
2001 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
2002 & (tl_vvis3d_r(i,j,k)*cff+ &
2003 & vvis3d_r(i,j,k)*tl_cff)- &
2008 ufx(i,j)=on_r(i,j)*on_r(i,j)*visc3d_r(i,j,k)*cff
2009 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)* &
2010 & (tl_visc3d_r(i,j,k)*cff+ &
2011 & visc3d_r(i,j,k)*tl_cff)- &
2015 vfe(i,j)=om_r(i,j)*om_r(i,j)*visc3d_r(i,j,k)*cff
2016 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)* &
2017 & (tl_visc3d_r(i,j,k)*cff+ &
2018 & visc3d_r(i,j,k)*tl_cff)- &
2026 tl_ufx(i,j)=on_r(i,j)*on_r(i,j)*visc4_r(i,j)*tl_cff
2029 tl_vfe(i,j)=om_r(i,j)*om_r(i,j)*visc4_r(i,j)*tl_cff
2036 pm_p=0.25_r8*(pm(i-1,j-1)+pm(i-1,j)+ &
2037 & pm(i ,j-1)+pm(i ,j))
2038 pn_p=0.25_r8*(pn(i-1,j-1)+pn(i-1,j)+ &
2039 & pn(i ,j-1)+pn(i ,j))
2040 cff1=min(dzdx_p(i,j,k1),0.0_r8)
2041 cff2=max(dzdx_p(i,j,k1),0.0_r8)
2042 cff3=min(dzde_p(i,j,k1),0.0_r8)
2043 cff4=max(dzde_p(i,j,k1),0.0_r8)
2044 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j,k1)))* &
2046 tl_cff2=(0.5_r8+sign(0.5_r8, dzdx_p(i,j,k1)))* &
2048 tl_cff3=(0.5_r8+sign(0.5_r8,-dzde_p(i,j,k1)))* &
2050 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j,k1)))* &
2054 & (hz(i-1,j ,k)+hz(i,j ,k)+ &
2055 & hz(i-1,j-1,k)+hz(i,j-1,k))* &
2056 & (on_p(i,j)*(dnvdx(i,j,k1)- &
2058 & (cff1*(dvdz(i-1,j,k1)+ &
2060 & cff2*(dvdz(i-1,j,k2)+ &
2061 & dvdz(i ,j,k1))))+ &
2062 & om_p(i,j)*(dmude(i,j,k1)- &
2064 & (cff3*(dudz(i,j-1,k1)+ &
2066 & cff4*(dudz(i,j-1,k2)+ &
2087 & ((tl_hz(i-1,j ,k)+tl_hz(i,j ,k)+ &
2088 & tl_hz(i-1,j-1,k)+tl_hz(i,j-1,k))* &
2089 & (on_p(i,j)*(dnvdx(i,j,k1)- &
2091 & (cff1*(dvdz(i-1,j,k1)+ &
2093 & cff2*(dvdz(i-1,j,k2)+ &
2094 & dvdz(i ,j,k1))))+ &
2095 & om_p(i,j)*(dmude(i,j,k1)- &
2097 & (cff3*(dudz(i,j-1,k1)+ &
2099 & cff4*(dudz(i,j-1,k2)+ &
2100 & dudz(i,j ,k1)))))+ &
2101 & (hz(i-1,j ,k)+hz(i,j ,k)+ &
2102 & hz(i-1,j-1,k)+hz(i,j-1,k))* &
2103 & (on_p(i,j)*(tl_dnvdx(i,j,k1)- &
2105 & (tl_cff1*(dvdz(i-1,j,k1)+ &
2107 & cff1*(tl_dvdz(i-1,j,k1)+ &
2108 & tl_dvdz(i ,j,k2))+ &
2109 & tl_cff2*(dvdz(i-1,j,k2)+ &
2111 & cff2*(tl_dvdz(i-1,j,k2)+ &
2112 & tl_dvdz(i ,j,k1))))+ &
2113 & om_p(i,j)*(tl_dmude(i,j,k1)- &
2115 & (tl_cff3*(dudz(i,j-1,k1)+ &
2117 & cff3*(tl_dudz(i,j-1,k1)+ &
2118 & tl_dudz(i,j ,k2))+ &
2119 & tl_cff4*(dudz(i,j-1,k2)+ &
2121 & cff4*(tl_dudz(i,j-1,k2)+ &
2122 & tl_dudz(i,j ,k1))))))- &
2124 & visc4_p(i,j)*0.25_r8* &
2125 & (hz(i-1,j ,k)+hz(i,j ,k)+ &
2126 & hz(i-1,j-1,k)+hz(i,j-1,k))* &
2127 & (on_p(i,j)*(dnvdx(i,j,k1)- &
2129 & (cff1*(dvdz(i-1,j,k1)+ &
2131 & cff2*(dvdz(i-1,j,k2)+ &
2132 & dvdz(i ,j,k1))))+ &
2133 & om_p(i,j)*(dmude(i,j,k1)- &
2135 & (cff3*(dudz(i,j-1,k1)+ &
2137 & cff4*(dudz(i,j-1,k2)+ &
2147 tl_cff=tl_cff*pmask(i,j)
2150# ifdef UV_U3ADV_SPLIT
2152 & (uvis3d_r(i-1,j-1,k)+uvis3d_r(i-1,j,k)+ &
2153 & uvis3d_r(i ,j-1,k)+uvis3d_r(i ,j,k))
2154 tl_uvis_p=0.25_r8* &
2155 & (tl_uvis3d_r(i-1,j-1,k)+tl_uvis3d_r(i-1,j,k)+ &
2156 & tl_uvis3d_r(i ,j-1,k)+tl_uvis3d_r(i ,j,k))
2158 & (vvis3d_r(i-1,j-1,k)+vvis3d_r(i-1,j,k)+ &
2159 & vvis3d_r(i ,j-1,k)+vvis3d_r(i ,j,k))
2160 tl_vvis_p=0.25_r8* &
2161 & (tl_vvis3d_r(i-1,j-1,k)+tl_vvis3d_r(i-1,j,k)+ &
2162 & tl_vvis3d_r(i ,j-1,k)+tl_vvis3d_r(i ,j,k))
2163 ufe(i,j)=om_p(i,j)*om_p(i,j)*uvis_p*cff
2164 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
2165 & (tl_uvis_p*cff+uvis_p*tl_cff)- &
2169 vfx(i,j)=on_p(i,j)*on_p(i,j)*vvis_p*cff
2170 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
2171 & (tl_vvis_p*cff+vvis_p*tl_cff)- &
2177 & (visc3d_r(i-1,j-1,k)+visc3d_r(i-1,j,k)+ &
2178 & visc3d_r(i ,j-1,k)+visc3d_r(i ,j,k))
2179 tl_visc_p=0.25_r8* &
2180 & (tl_visc3d_r(i-1,j-1,k)+tl_visc3d_r(i-1,j,k)+ &
2181 & tl_visc3d_r(i ,j-1,k)+tl_visc3d_r(i ,j,k))
2182 ufe(i,j)=om_p(i,j)*om_p(i,j)*visc_p*cff
2183 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)* &
2184 & (tl_visc_p*cff+visc_p*tl_cff)- &
2188 vfx(i,j)=on_p(i,j)*on_p(i,j)*visc_p*cff
2189 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)* &
2190 & (tl_visc_p*cff+visc_p*tl_cff)- &
2198 tl_ufe(i,j)=om_p(i,j)*om_p(i,j)*visc4_p(i,j)*tl_cff
2201 tl_vfx(i,j)=on_p(i,j)*on_p(i,j)*visc4_p(i,j)*tl_cff
2209 IF (k.lt.n(ng))
THEN
2213# ifdef UV_U3ADV_SPLIT
2215 & (uvis3d_r(i-1,j,k )+uvis3d_r(i,j,k )+ &
2216 & uvis3d_r(i-1,j,k+1)+uvis3d_r(i,j,k+1))
2218 & (tl_uvis3d_r(i-1,j,k )+tl_uvis3d_r(i,j,k )+ &
2219 & tl_uvis3d_r(i-1,j,k+1)+tl_uvis3d_r(i,j,k+1))
2222 & (visc3d_r(i-1,j,k )+visc3d_r(i,j,k )+ &
2223 & visc3d_r(i-1,j,k+1)+visc3d_r(i,j,k+1))
2225 & (tl_visc3d_r(i-1,j,k )+tl_visc3d_r(i,j,k )+ &
2226 & tl_visc3d_r(i-1,j,k+1)+tl_visc3d_r(i,j,k+1))
2229 tl_fac1=tl_cff*on_u(i,j)
2231 tl_fac2=tl_cff*om_u(i,j)
2233 cff=0.25_r8*(visc4_r(i-1,j)+visc4_r(i,j))
2237 cff=0.5_r8*(pn(i-1,j)+pn(i,j))
2238 dnudz=cff*dudz(i,j,k2)
2239 tl_dnudz=cff*tl_dudz(i,j,k2)
2240 dnvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
2241 & dvdz(i ,j+1,k2)+ &
2242 & dvdz(i-1,j ,k2)+ &
2244 tl_dnvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
2245 & tl_dvdz(i ,j+1,k2)+ &
2246 & tl_dvdz(i-1,j ,k2)+ &
2247 & tl_dvdz(i ,j ,k2))
2248 cff=0.5_r8*(pm(i-1,j)+pm(i,j))
2249 dmudz=cff*dudz(i,j,k2)
2250 tl_dmudz=cff*tl_dudz(i,j,k2)
2251 dmvdz=cff*0.25_r8*(dvdz(i-1,j+1,k2)+ &
2252 & dvdz(i ,j+1,k2)+ &
2253 & dvdz(i-1,j ,k2)+ &
2255 tl_dmvdz=cff*0.25_r8*(tl_dvdz(i-1,j+1,k2)+ &
2256 & tl_dvdz(i ,j+1,k2)+ &
2257 & tl_dvdz(i-1,j ,k2)+ &
2258 & tl_dvdz(i ,j ,k2))
2260 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
2261 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
2262 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
2263 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
2264 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
2265 & tl_dzdx_r(i-1,j,k1)
2266 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
2267 & tl_dzdx_r(i ,j,k2)
2268 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
2269 & tl_dzdx_r(i-1,j,k2)
2270 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
2278 tl_ufsx(i,j,k2)=fac1* &
2279 & (tl_cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
2280 & tl_cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
2281 & tl_cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
2282 & tl_cff4*(cff4*dnudz-dnudx(i ,j,k1))+ &
2283 & cff1*(tl_cff1*dnudz+cff1*tl_dnudz- &
2284 & tl_dnudx(i-1,j,k1))+ &
2285 & cff2*(tl_cff2*dnudz+cff2*tl_dnudz- &
2286 & tl_dnudx(i ,j,k2))+ &
2287 & cff3*(tl_cff3*dnudz+cff3*tl_dnudz- &
2288 & tl_dnudx(i-1,j,k2))+ &
2289 & cff4*(tl_cff4*dnudz+cff4*tl_dnudz- &
2290 & tl_dnudx(i ,j,k1)))- &
2293 & (cff1*(2.0_r8*cff1*dnudz- &
2294 & dnudx(i-1,j,k1))+ &
2295 & cff2*(2.0_r8*cff2*dnudz- &
2296 & dnudx(i ,j,k2))+ &
2297 & cff3*(2.0_r8*cff3*dnudz- &
2298 & dnudx(i-1,j,k2))+ &
2299 & cff4*(2.0_r8*cff4*dnudz- &
2303 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2305 & (cff1*(cff1*dnudz-dnudx(i-1,j,k1))+ &
2306 & cff2*(cff2*dnudz-dnudx(i ,j,k2))+ &
2307 & cff3*(cff3*dnudz-dnudx(i-1,j,k2))+ &
2308 & cff4*(cff4*dnudz-dnudx(i ,j,k1)))
2311 cff1=min(dzde_p(i,j ,k1),0.0_r8)
2312 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
2313 cff3=max(dzde_p(i,j ,k2),0.0_r8)
2314 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
2315 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
2316 & tl_dzde_p(i,j ,k1)
2317 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
2318 & tl_dzde_p(i,j+1,k2)
2319 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
2320 & tl_dzde_p(i,j ,k2)
2321 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
2329 tl_ufse(i,j,k2)=fac2* &
2330 & (tl_cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
2331 & tl_cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
2332 & tl_cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
2333 & tl_cff4*(cff4*dmudz-dmude(i,j+1,k1))+ &
2334 & cff1*(tl_cff1*dmudz+cff1*tl_dmudz- &
2335 & tl_dmude(i,j ,k1))+ &
2336 & cff2*(tl_cff2*dmudz+cff2*tl_dmudz- &
2337 & tl_dmude(i,j+1,k2))+ &
2338 & cff3*(tl_cff3*dmudz+cff3*tl_dmudz- &
2339 & tl_dmude(i,j ,k2))+ &
2340 & cff4*(tl_cff4*dmudz+cff4*tl_dmudz- &
2341 & tl_dmude(i,j+1,k1)))- &
2344 & (cff1*(2.0_r8*cff1*dmudz- &
2345 & dmude(i,j ,k1))+ &
2346 & cff2*(2.0_r8*cff2*dmudz- &
2347 & dmude(i,j+1,k2))+ &
2348 & cff3*(2.0_r8*cff3*dmudz- &
2349 & dmude(i,j ,k2))+ &
2350 & cff4*(2.0_r8*cff4*dmudz- &
2354 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)+ &
2356 & (cff1*(cff1*dmudz-dmude(i,j ,k1))+ &
2357 & cff2*(cff2*dmudz-dmude(i,j+1,k2))+ &
2358 & cff3*(cff3*dmudz-dmude(i,j ,k2))+ &
2359 & cff4*(cff4*dmudz-dmude(i,j+1,k1)))
2362 cff1=min(dzde_p(i,j ,k1),0.0_r8)
2363 cff2=min(dzde_p(i,j+1,k2),0.0_r8)
2364 cff3=max(dzde_p(i,j ,k2),0.0_r8)
2365 cff4=max(dzde_p(i,j+1,k1),0.0_r8)
2366 cff5=min(dzdx_p(i,j ,k1),0.0_r8)
2367 cff6=min(dzdx_p(i,j+1,k2),0.0_r8)
2368 cff7=max(dzdx_p(i,j ,k2),0.0_r8)
2369 cff8=max(dzdx_p(i,j+1,k1),0.0_r8)
2370 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_p(i,j ,k1)))* &
2371 & tl_dzde_p(i,j ,k1)
2372 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_p(i,j+1,k2)))* &
2373 & tl_dzde_p(i,j+1,k2)
2374 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_p(i,j ,k2)))* &
2375 & tl_dzde_p(i,j ,k2)
2376 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_p(i,j+1,k1)))* &
2377 & tl_dzde_p(i,j+1,k1)
2378 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j ,k1)))* &
2379 & tl_dzdx_p(i,j ,k1)
2380 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_p(i,j+1,k2)))* &
2381 & tl_dzdx_p(i,j+1,k2)
2382 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_p(i,j ,k2)))* &
2383 & tl_dzdx_p(i,j ,k2)
2384 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_p(i,j+1,k1)))* &
2385 & tl_dzdx_p(i,j+1,k1)
2393 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2395 & (tl_cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
2396 & tl_cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
2397 & tl_cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
2398 & tl_cff4*(cff8*dnvdz-dnvdx(i,j+1,k1))+ &
2399 & cff1*(tl_cff5*dnvdz+cff5*tl_dnvdz- &
2400 & tl_dnvdx(i,j ,k1))+ &
2401 & cff2*(tl_cff6*dnvdz+cff6*tl_dnvdz- &
2402 & tl_dnvdx(i,j+1,k2))+ &
2403 & cff3*(tl_cff7*dnvdz+cff7*tl_dnvdz- &
2404 & tl_dnvdx(i,j ,k2))+ &
2405 & cff4*(tl_cff8*dnvdz+cff8*tl_dnvdz- &
2406 & tl_dnvdx(i,j+1,k1)))- &
2409 & (cff1*(2.0_r8*cff5*dnvdz- &
2410 & dnvdx(i,j ,k1))+ &
2411 & cff2*(2.0_r8*cff6*dnvdz- &
2412 & dnvdx(i,j+1,k2))+ &
2413 & cff3*(2.0_r8*cff7*dnvdz- &
2414 & dnvdx(i,j ,k2))+ &
2415 & cff4*(2.0_r8*cff8*dnvdz- &
2419 tl_ufsx(i,j,k2)=tl_ufsx(i,j,k2)+ &
2421 & (cff1*(cff5*dnvdz-dnvdx(i,j ,k1))+ &
2422 & cff2*(cff6*dnvdz-dnvdx(i,j+1,k2))+ &
2423 & cff3*(cff7*dnvdz-dnvdx(i,j ,k2))+ &
2424 & cff4*(cff8*dnvdz-dnvdx(i,j+1,k1)))
2427 cff1=min(dzdx_r(i-1,j,k1),0.0_r8)
2428 cff2=min(dzdx_r(i ,j,k2),0.0_r8)
2429 cff3=max(dzdx_r(i-1,j,k2),0.0_r8)
2430 cff4=max(dzdx_r(i ,j,k1),0.0_r8)
2431 cff5=min(dzde_r(i-1,j,k1),0.0_r8)
2432 cff6=min(dzde_r(i ,j,k2),0.0_r8)
2433 cff7=max(dzde_r(i-1,j,k2),0.0_r8)
2434 cff8=max(dzde_r(i ,j,k1),0.0_r8)
2435 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_r(i-1,j,k1)))* &
2436 & tl_dzdx_r(i-1,j,k1)
2437 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_r(i ,j,k2)))* &
2438 & tl_dzdx_r(i ,j,k2)
2439 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_r(i-1,j,k2)))* &
2440 & tl_dzdx_r(i-1,j,k2)
2441 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_r(i ,j,k1)))* &
2442 & tl_dzdx_r(i ,j,k1)
2443 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_r(i-1,j,k1)))* &
2444 & tl_dzde_r(i-1,j,k1)
2445 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_r(i ,j,k2)))* &
2446 & tl_dzde_r(i ,j,k2)
2447 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_r(i-1,j,k2)))* &
2448 & tl_dzde_r(i-1,j,k2)
2449 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_r(i ,j,k1)))* &
2450 & tl_dzde_r(i ,j,k1)
2458 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
2460 & (tl_cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
2461 & tl_cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
2462 & tl_cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
2463 & tl_cff4*(cff8*dmvdz-dmvde(i ,j,k1))+ &
2464 & cff1*(tl_cff5*dmvdz+cff5*tl_dmvdz- &
2465 & tl_dmvde(i-1,j,k1))+ &
2466 & cff2*(tl_cff6*dmvdz+cff6*tl_dmvdz- &
2467 & tl_dmvde(i ,j,k2))+ &
2468 & cff3*(tl_cff7*dmvdz+cff7*tl_dmvdz- &
2469 & tl_dmvde(i-1,j,k2))+ &
2470 & cff4*(tl_cff8*dmvdz+cff8*tl_dmvdz- &
2471 & tl_dmvde(i ,j,k1)))+ &
2474 & (cff1*(2.0_r8*cff5*dmvdz- &
2475 & dmvde(i-1,j,k1))+ &
2476 & cff2*(2.0_r8*cff6*dmvdz- &
2477 & dmvde(i ,j,k2))+ &
2478 & cff3*(2.0_r8*cff7*dmvdz- &
2479 & dmvde(i-1,j,k2))+ &
2480 & cff4*(2.0_r8*cff8*dmvdz- &
2484 tl_ufse(i,j,k2)=tl_ufse(i,j,k2)- &
2486 & (cff1*(cff5*dmvdz-dmvde(i-1,j,k1))+ &
2487 & cff2*(cff6*dmvdz-dmvde(i ,j,k2))+ &
2488 & cff3*(cff7*dmvdz-dmvde(i-1,j,k2))+ &
2489 & cff4*(cff8*dmvdz-dmvde(i ,j,k1)))
2497# ifdef UV_U3ADV_SPLIT
2499 & (vvis3d_r(i,j-1,k )+vvis3d_r(i,j,k )+ &
2500 & vvis3d_r(i,j-1,k+1)+vvis3d_r(i,j,k+1))
2502 & (tl_vvis3d_r(i,j-1,k )+tl_vvis3d_r(i,j,k )+ &
2503 & tl_vvis3d_r(i,j-1,k+1)+tl_vvis3d_r(i,j,k+1))
2506 & (visc3d_r(i,j-1,k )+visc3d_r(i,j,k )+ &
2507 & visc3d_r(i,j-1,k+1)+visc3d_r(i,j,k+1))
2509 & (tl_visc3d_r(i,j-1,k )+tl_visc3d_r(i,j,k )+ &
2510 & tl_visc3d_r(i,j-1,k+1)+tl_visc3d_r(i,j,k+1))
2513 tl_fac1=tl_cff*on_v(i,j)
2515 tl_fac2=tl_cff*om_v(i,j)
2517 cff=0.25_r8*(visc4_r(i,j-1)+visc4_r(i,j))
2521 cff=0.5_r8*(pn(i,j-1)+pn(i,j))
2522 dnudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
2523 & dudz(i+1,j ,k2)+ &
2524 & dudz(i ,j-1,k2)+ &
2526 tl_dnudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
2527 & tl_dudz(i+1,j ,k2)+ &
2528 & tl_dudz(i ,j-1,k2)+ &
2529 & tl_dudz(i+1,j-1,k2))
2530 dnvdz=cff*dvdz(i,j,k2)
2531 tl_dnvdz=cff*tl_dvdz(i,j,k2)
2532 cff=0.5_r8*(pm(i,j-1)+pm(i,j))
2533 dmudz=cff*0.25_r8*(dudz(i ,j ,k2)+ &
2534 & dudz(i+1,j ,k2)+ &
2535 & dudz(i ,j-1,k2)+ &
2537 tl_dmudz=cff*0.25_r8*(tl_dudz(i ,j ,k2)+ &
2538 & tl_dudz(i+1,j ,k2)+ &
2539 & tl_dudz(i ,j-1,k2)+ &
2540 & tl_dudz(i+1,j-1,k2))
2541 dmvdz=cff*dvdz(i,j,k2)
2542 tl_dmvdz=cff*tl_dvdz(i,j,k2)
2544 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
2545 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
2546 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
2547 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
2548 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
2549 & tl_dzdx_p(i ,j,k1)
2550 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
2551 & tl_dzdx_p(i+1,j,k2)
2552 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
2553 & tl_dzdx_p(i ,j,k2)
2554 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
2555 & tl_dzdx_p(i+1,j,k1)
2562 tl_vfsx(i,j,k2)=fac1* &
2563 & (tl_cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
2564 & tl_cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
2565 & tl_cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
2566 & tl_cff4*(cff4*dnvdz-dnvdx(i+1,j,k1))+ &
2567 & cff1*(tl_cff1*dnvdz+cff1*tl_dnvdz- &
2568 & tl_dnvdx(i ,j,k1))+ &
2569 & cff2*(tl_cff2*dnvdz+cff2*tl_dnvdz- &
2570 & tl_dnvdx(i+1,j,k2))+ &
2571 & cff3*(tl_cff3*dnvdz+cff3*tl_dnvdz- &
2572 & tl_dnvdx(i ,j,k2))+ &
2573 & cff4*(tl_cff4*dnvdz+cff4*tl_dnvdz- &
2574 & tl_dnvdx(i+1,j,k1)))- &
2577 & (cff1*(2.0_r8*cff1*dnvdz- &
2578 & dnvdx(i ,j,k1))+ &
2579 & cff2*(2.0_r8*cff2*dnvdz- &
2580 & dnvdx(i+1,j,k2))+ &
2581 & cff3*(2.0_r8*cff3*dnvdz- &
2582 & dnvdx(i ,j,k2))+ &
2583 & cff4*(2.0_r8*cff4*dnvdz- &
2587 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)+ &
2589 & (cff1*(cff1*dnvdz-dnvdx(i ,j,k1))+ &
2590 & cff2*(cff2*dnvdz-dnvdx(i+1,j,k2))+ &
2591 & cff3*(cff3*dnvdz-dnvdx(i ,j,k2))+ &
2592 & cff4*(cff4*dnvdz-dnvdx(i+1,j,k1)))
2595 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
2596 cff2=min(dzde_r(i,j ,k2),0.0_r8)
2597 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
2598 cff4=max(dzde_r(i,j ,k1),0.0_r8)
2599 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
2600 & tl_dzde_r(i,j-1,k1)
2601 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
2602 & tl_dzde_r(i,j ,k2)
2603 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
2604 & tl_dzde_r(i,j-1,k2)
2605 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
2606 & tl_dzde_r(i,j ,k1)
2613 tl_vfse(i,j,k2)=fac2* &
2614 & (tl_cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
2615 & tl_cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
2616 & tl_cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
2617 & tl_cff4*(cff4*dmvdz-dmvde(i,j ,k1))+ &
2618 & cff1*(tl_cff1*dmvdz+cff1*tl_dmvdz- &
2619 & tl_dmvde(i,j-1,k1))+ &
2620 & cff2*(tl_cff2*dmvdz+cff2*tl_dmvdz- &
2621 & tl_dmvde(i,j ,k2))+ &
2622 & cff3*(tl_cff3*dmvdz+cff3*tl_dmvdz- &
2623 & tl_dmvde(i,j-1,k2))+ &
2624 & cff4*(tl_cff4*dmvdz+cff4*tl_dmvdz- &
2625 & tl_dmvde(i,j ,k1)))- &
2628 & (cff1*(2.0_r8*cff1*dmvdz- &
2629 & dmvde(i,j-1,k1))+ &
2630 & cff2*(2.0_r8*cff2*dmvdz- &
2631 & dmvde(i,j ,k2))+ &
2632 & cff3*(2.0_r8*cff3*dmvdz- &
2633 & dmvde(i,j-1,k2))+ &
2634 & cff4*(2.0_r8*cff4*dmvdz- &
2638 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2640 & (cff1*(cff1*dmvdz-dmvde(i,j-1,k1))+ &
2641 & cff2*(cff2*dmvdz-dmvde(i,j ,k2))+ &
2642 & cff3*(cff3*dmvdz-dmvde(i,j-1,k2))+ &
2643 & cff4*(cff4*dmvdz-dmvde(i,j ,k1)))
2646 cff1=min(dzde_r(i,j-1,k1),0.0_r8)
2647 cff2=min(dzde_r(i,j ,k2),0.0_r8)
2648 cff3=max(dzde_r(i,j-1,k2),0.0_r8)
2649 cff4=max(dzde_r(i,j ,k1),0.0_r8)
2650 cff5=min(dzdx_r(i,j-1,k1),0.0_r8)
2651 cff6=min(dzdx_r(i,j ,k2),0.0_r8)
2652 cff7=max(dzdx_r(i,j-1,k2),0.0_r8)
2653 cff8=max(dzdx_r(i,j ,k1),0.0_r8)
2654 tl_cff1=(0.5_r8+sign(0.5_r8,-dzde_r(i,j-1,k1)))* &
2655 & tl_dzde_r(i,j-1,k1)
2656 tl_cff2=(0.5_r8+sign(0.5_r8,-dzde_r(i,j ,k2)))* &
2657 & tl_dzde_r(i,j ,k2)
2658 tl_cff3=(0.5_r8+sign(0.5_r8, dzde_r(i,j-1,k2)))* &
2659 & tl_dzde_r(i,j-1,k2)
2660 tl_cff4=(0.5_r8+sign(0.5_r8, dzde_r(i,j ,k1)))* &
2661 & tl_dzde_r(i,j ,k1)
2662 tl_cff5=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j-1,k1)))* &
2663 & tl_dzdx_r(i,j-1,k1)
2664 tl_cff6=(0.5_r8+sign(0.5_r8,-dzdx_r(i,j ,k2)))* &
2665 & tl_dzdx_r(i,j ,k2)
2666 tl_cff7=(0.5_r8+sign(0.5_r8, dzdx_r(i,j-1,k2)))* &
2667 & tl_dzdx_r(i,j-1,k2)
2668 tl_cff8=(0.5_r8+sign(0.5_r8, dzdx_r(i,j ,k1)))* &
2669 & tl_dzdx_r(i,j ,k1)
2677 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
2679 & (tl_cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
2680 & tl_cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
2681 & tl_cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
2682 & tl_cff4*(cff8*dnudz-dnudx(i,j ,k1))+ &
2683 & cff1*(tl_cff5*dnudz+cff5*tl_dnudz- &
2684 & tl_dnudx(i,j-1,k1))+ &
2685 & cff2*(tl_cff6*dnudz+cff6*tl_dnudz- &
2686 & tl_dnudx(i,j ,k2))+ &
2687 & cff3*(tl_cff7*dnudz+cff7*tl_dnudz- &
2688 & tl_dnudx(i,j-1,k2))+ &
2689 & cff4*(tl_cff8*dnudz+cff8*tl_dnudz- &
2690 & tl_dnudx(i,j ,k1)))+ &
2693 & (cff1*(2.0_r8*cff5*dnudz- &
2694 & dnudx(i,j-1,k1))+ &
2695 & cff2*(2.0_r8*cff6*dnudz- &
2696 & dnudx(i,j ,k2))+ &
2697 & cff3*(2.0_r8*cff7*dnudz- &
2698 & dnudx(i,j-1,k2))+ &
2699 & cff4*(2.0_r8*cff8*dnudz- &
2703 tl_vfsx(i,j,k2)=tl_vfsx(i,j,k2)- &
2705 & (cff1*(cff5*dnudz-dnudx(i,j-1,k1))+ &
2706 & cff2*(cff6*dnudz-dnudx(i,j ,k2))+ &
2707 & cff3*(cff7*dnudz-dnudx(i,j-1,k2))+ &
2708 & cff4*(cff8*dnudz-dnudx(i,j ,k1)))
2711 cff1=min(dzdx_p(i ,j,k1),0.0_r8)
2712 cff2=min(dzdx_p(i+1,j,k2),0.0_r8)
2713 cff3=max(dzdx_p(i ,j,k2),0.0_r8)
2714 cff4=max(dzdx_p(i+1,j,k1),0.0_r8)
2715 cff5=min(dzde_p(i ,j,k1),0.0_r8)
2716 cff6=min(dzde_p(i+1,j,k2),0.0_r8)
2717 cff7=max(dzde_p(i ,j,k2),0.0_r8)
2718 cff8=max(dzde_p(i+1,j,k1),0.0_r8)
2719 tl_cff1=(0.5_r8+sign(0.5_r8,-dzdx_p(i ,j,k1)))* &
2720 & tl_dzdx_p(i ,j,k1)
2721 tl_cff2=(0.5_r8+sign(0.5_r8,-dzdx_p(i+1,j,k2)))* &
2722 & tl_dzdx_p(i+1,j,k2)
2723 tl_cff3=(0.5_r8+sign(0.5_r8, dzdx_p(i ,j,k2)))* &
2724 & tl_dzdx_p(i ,j,k2)
2725 tl_cff4=(0.5_r8+sign(0.5_r8, dzdx_p(i+1,j,k1)))* &
2726 & tl_dzdx_p(i+1,j,k1)
2727 tl_cff5=(0.5_r8+sign(0.5_r8,-dzde_p(i ,j,k1)))* &
2728 & tl_dzde_p(i ,j,k1)
2729 tl_cff6=(0.5_r8+sign(0.5_r8,-dzde_p(i+1,j,k2)))* &
2730 & tl_dzde_p(i+1,j,k2)
2731 tl_cff7=(0.5_r8+sign(0.5_r8, dzde_p(i ,j,k2)))* &
2732 & tl_dzde_p(i ,j,k2)
2733 tl_cff8=(0.5_r8+sign(0.5_r8, dzde_p(i+1,j,k1)))* &
2734 & tl_dzde_p(i+1,j,k1)
2742 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2744 & (tl_cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
2745 & tl_cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
2746 & tl_cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
2747 & tl_cff4*(cff8*dmudz-dmude(i+1,j,k1))+ &
2748 & cff1*(tl_cff5*dmudz+cff5*tl_dmudz- &
2749 & tl_dmude(i ,j,k1))+ &
2750 & cff2*(tl_cff6*dmudz+cff6*tl_dmudz- &
2751 & tl_dmude(i+1,j,k2))+ &
2752 & cff3*(tl_cff7*dmudz+cff7*tl_dmudz- &
2753 & tl_dmude(i ,j,k2))+ &
2754 & cff4*(tl_cff8*dmudz+cff8*tl_dmudz- &
2755 & tl_dmude(i+1,j,k1)))- &
2758 & (cff1*(2.0_r8*cff5*dmudz- &
2759 & dmude(i ,j,k1))+ &
2760 & cff2*(2.0_r8*cff6*dmudz- &
2761 & dmude(i+1,j,k2))+ &
2762 & cff3*(2.0_r8*cff7*dmudz- &
2763 & dmude(i ,j,k2))+ &
2764 & cff4*(2.0_r8*cff8*dmudz- &
2768 tl_vfse(i,j,k2)=tl_vfse(i,j,k2)+ &
2770 & (cff1*(cff5*dmudz-dmude(i ,j,k1))+ &
2771 & cff2*(cff6*dmudz-dmude(i+1,j,k2))+ &
2772 & cff3*(cff7*dmudz-dmude(i ,j,k2))+ &
2773 & cff4*(cff8*dmudz-dmude(i+1,j,k1)))
2782#ifdef DIAGNOSTICS_UV
2789 cff=
dt(ng)*0.25_r8*(pm(i-1,j)+pm(i,j))*(pn(i-1,j)+pn(i,j))
2792 tl_cff1=0.5_r8*(pn(i-1,j)+pn(i,j))* &
2793 & (tl_ufx(i,j )-tl_ufx(i-1,j))
2796 tl_cff2=0.5_r8*(pm(i-1,j)+pm(i,j))* &
2797 & (tl_ufe(i,j+1)-tl_ufe(i ,j))
2800 tl_cff3=tl_ufsx(i,j,k2)-tl_ufsx(i,j,k1)
2803 tl_cff4=tl_ufse(i,j,k2)-tl_ufse(i,j,k1)
2806 tl_cff5=cff*(tl_cff1+tl_cff2)
2809 tl_cff6=
dt(ng)*(tl_cff3+tl_cff4)
2812 tl_rufrc(i,j)=tl_rufrc(i,j)- &
2813 & tl_cff1-tl_cff2-tl_cff3-tl_cff4
2816 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)-tl_cff5-tl_cff6
2817#ifdef DIAGNOSTICS_UV
2831 cff=
dt(ng)*0.25_r8*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
2834 tl_cff1=0.5_r8*(pn(i,j-1)+pn(i,j))* &
2835 & (tl_vfx(i+1,j)-tl_vfx(i,j ))
2838 tl_cff2=0.5_r8*(pm(i,j-1)+pm(i,j))* &
2839 & (tl_vfe(i ,j)-tl_vfe(i,j-1))
2842 tl_cff3=tl_vfsx(i,j,k2)-tl_vfsx(i,j,k1)
2845 tl_cff4=tl_vfse(i,j,k2)-tl_vfse(i,j,k1)
2848 tl_cff5=cff*(tl_cff1-tl_cff2)
2851 tl_cff6=
dt(ng)*(tl_cff3+tl_cff4)
2854 tl_rvfrc(i,j)=tl_rvfrc(i,j)- &
2855 & tl_cff1+tl_cff2-tl_cff3-tl_cff4
2858 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)-tl_cff5-tl_cff6
2859#ifdef DIAGNOSTICS_UV