417 integer,
intent(in) :: ng, lbi, ubi, lbj, ubj
431 size2d=real((ubi-lbi+1)*(ubj-lbj+1),
r8)
437 allocate (
mixing(ng) % visc_factor(lbi:ubi,lbj:ubj) )
442 allocate (
mixing(ng) % visc2_p(lbi:ubi,lbj:ubj) )
445 allocate (
mixing(ng) % visc2_r(lbi:ubi,lbj:ubj) )
450 allocate (
mixing(ng) % visc4_p(lbi:ubi,lbj:ubj) )
453 allocate (
mixing(ng) % visc4_r(lbi:ubi,lbj:ubj) )
458 allocate (
mixing(ng) % Hviscosity(lbi:ubi,lbj:ubj) )
461# ifdef UV_U3ADV_SPLIT
462 allocate (
mixing(ng) % Uvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
465 allocate (
mixing(ng) % Vvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
468 allocate (
mixing(ng) % visc3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
474 allocate (
mixing(ng) % rustr2d(lbi:ubi,lbj:ubj) )
476 allocate (
mixing(ng) % rvstr2d(lbi:ubi,lbj:ubj) )
480 allocate (
mixing(ng) % rurol2d(lbi:ubi,lbj:ubj) )
482 allocate (
mixing(ng) % rvrol2d(lbi:ubi,lbj:ubj) )
484 allocate (
mixing(ng) % rubrk2d(lbi:ubi,lbj:ubj) )
486 allocate (
mixing(ng) % rvbrk2d(lbi:ubi,lbj:ubj) )
488 allocate (
mixing(ng) % rukvf2d(lbi:ubi,lbj:ubj) )
490 allocate (
mixing(ng) % rvkvf2d(lbi:ubi,lbj:ubj) )
492# ifdef BOTTOM_STREAMING
493 allocate (
mixing(ng) % rubst2d(lbi:ubi,lbj:ubj) )
495 allocate (
mixing(ng) % rvbst2d(lbi:ubi,lbj:ubj) )
498# ifdef SURFACE_STREAMING
499 allocate (
mixing(ng) % russt2d(lbi:ubi,lbj:ubj) )
501 allocate (
mixing(ng) % rvsst2d(lbi:ubi,lbj:ubj) )
507 allocate (
mixing(ng) % rustr3d(lbi:ubi,lbj:ubj,
n(ng)) )
509 allocate (
mixing(ng) % rvstr3d(lbi:ubi,lbj:ubj,
n(ng)) )
517 allocate (
mixing(ng) % diff_factor(lbi:ubi,lbj:ubj) )
523 allocate (
mixing(ng) % diff2(lbi:ubi,lbj:ubj,
nt(ng)) )
528 allocate (
mixing(ng) % diff4(lbi:ubi,lbj:ubj,
nt(ng)) )
533 allocate (
mixing(ng) % Hdiffusion(lbi:ubi,lbj:ubj) )
536# ifdef TS_U3ADV_SPLIT
537 allocate (
mixing(ng) % diff3d_u(lbi:ubi,lbj:ubj,
n(ng)) )
540 allocate (
mixing(ng) % diff3d_v(lbi:ubi,lbj:ubj,
n(ng)) )
543 allocate (
mixing(ng) % diff3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
548 allocate (
mixing(ng) % Akv(lbi:ubi,lbj:ubj,0:
n(ng)) )
551 allocate (
mixing(ng) % Akt(lbi:ubi,lbj:ubj,0:
n(ng),
nat) )
555 allocate (
mixing(ng) % dAktdz(lbi:ubi,lbj:ubj,
n(ng)) )
559# if defined LMD_SKPP || defined LMD_BKPP || \
560 defined bulk_fluxes || defined balance_operator
561 allocate (
mixing(ng) % alpha(lbi:ubi,lbj:ubj) )
564 allocate (
mixing(ng) % beta(lbi:ubi,lbj:ubj) )
569 allocate (
mixing(ng) % bvf(lbi:ubi,lbj:ubj,0:
n(ng)) )
573# if defined GLS_MIXING || defined MY25_MIXING
574 allocate (
mixing(ng) % tke(lbi:ubi,lbj:ubj,0:
n(ng),3) )
577 allocate (
mixing(ng) % gls(lbi:ubi,lbj:ubj,0:
n(ng),3) )
580 allocate (
mixing(ng) % Lscale(lbi:ubi,lbj:ubj,0:
n(ng)) )
583 allocate (
mixing(ng) % Akk(lbi:ubi,lbj:ubj,0:
n(ng)) )
587 allocate (
mixing(ng) % Akp(lbi:ubi,lbj:ubj,0:
n(ng)) )
592# if defined LMD_MIXING && defined LMD_DDMIX
593 allocate (
mixing(ng) % alfaobeta(lbi:ubi,lbj:ubj,0:
n(ng)) )
597# if defined LMD_SKPP || defined SOLAR_SOURCE
598 allocate (
mixing(ng) % Jwtype(lbi:ubi,lbj:ubj) )
602# if defined LMD_SKPP || defined LMD_BKPP
603 allocate (
mixing(ng) % ksbl(lbi:ubi,lbj:ubj) )
606 allocate (
mixing(ng) % hsbl(lbi:ubi,lbj:ubj) )
610 allocate (
mixing(ng) % kbbl(lbi:ubi,lbj:ubj) )
613 allocate (
mixing(ng) % hbbl(lbi:ubi,lbj:ubj) )
618 allocate (
mixing(ng) % ghats(lbi:ubi,lbj:ubj,0:
n(ng),
nat) )
629 allocate (
mixing(ng) % Kh(lbi:ubi,lbj:ubj) )
633 allocate (
mixing(ng) % Kv(lbi:ubi,lbj:ubj,0:
n(ng)) )
638#if defined TANGENT || defined TL_IOMS
644# ifdef TS_U3ADV_SPLIT
645 allocate (
mixing(ng) % tl_diff3d_u(lbi:ubi,lbj:ubj,
n(ng)) )
648 allocate (
mixing(ng) % tl_diff3d_v(lbi:ubi,lbj:ubj,
n(ng)) )
651 allocate (
mixing(ng) % tl_diff3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
657# ifdef UV_U3ADV_SPLIT
658 allocate (
mixing(ng) % tl_Uvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
661 allocate (
mixing(ng) % tl_Vvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
664 allocate (
mixing(ng) % tl_visc3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
669 allocate (
mixing(ng) % tl_Akv(lbi:ubi,lbj:ubj,0:
n(ng)) )
672 allocate (
mixing(ng) % tl_Akt(lbi:ubi,lbj:ubj,0:
n(ng),
nat) )
675# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
676 allocate (
mixing(ng) % tl_alpha(lbi:ubi,lbj:ubj) )
679 allocate (
mixing(ng) % tl_beta(lbi:ubi,lbj:ubj) )
684 allocate (
mixing(ng) % tl_bvf(lbi:ubi,lbj:ubj,0:
n(ng)) )
687# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
688 allocate (
mixing(ng) % tl_tke(lbi:ubi,lbj:ubj,0:
n(ng),3) )
691 allocate (
mixing(ng) % tl_gls(lbi:ubi,lbj:ubj,0:
n(ng),3) )
694 allocate (
mixing(ng) % tl_Lscale(lbi:ubi,lbj:ubj,0:
n(ng)) )
697 allocate (
mixing(ng) % tl_Akk(lbi:ubi,lbj:ubj,0:
n(ng)) )
701# ifdef GLS_MIXING_NOT_YET
702 allocate (
mixing(ng) % tl_Akp(lbi:ubi,lbj:ubj,0:
n(ng)) )
714# ifdef TS_U3ADV_SPLIT
715 allocate (
mixing(ng) % ad_diff3d_u(lbi:ubi,lbj:ubj,
n(ng)) )
718 allocate (
mixing(ng) % ad_diff3d_v(lbi:ubi,lbj:ubj,
n(ng)) )
721 allocate (
mixing(ng) % ad_diff3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
727# ifdef UV_U3ADV_SPLIT
728 allocate (
mixing(ng) % ad_Uvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
731 allocate (
mixing(ng) % ad_Vvis3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
734 allocate (
mixing(ng) % ad_visc3d_r(lbi:ubi,lbj:ubj,
n(ng)) )
739 allocate (
mixing(ng) % ad_Akv(lbi:ubi,lbj:ubj,0:
n(ng)) )
742 allocate (
mixing(ng) % ad_Akt(lbi:ubi,lbj:ubj,0:
n(ng),
nat) )
745# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
746 allocate (
mixing(ng) % ad_alpha(lbi:ubi,lbj:ubj) )
749 allocate (
mixing(ng) % ad_beta(lbi:ubi,lbj:ubj) )
754 allocate (
mixing(ng) % ad_bvf(lbi:ubi,lbj:ubj,0:
n(ng)) )
758# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
759 allocate (
mixing(ng) % ad_tke(lbi:ubi,lbj:ubj,0:
n(ng),3) )
762 allocate (
mixing(ng) % ad_gls(lbi:ubi,lbj:ubj,0:
n(ng),3) )
765 allocate (
mixing(ng) % ad_Lscale(lbi:ubi,lbj:ubj,0:
n(ng)) )
768 allocate (
mixing(ng) % ad_Akk(lbi:ubi,lbj:ubj,0:
n(ng)) )
772# ifdef GLS_MIXING_NOT_YET
773 allocate (
mixing(ng) % ad_Akp(lbi:ubi,lbj:ubj,0:
n(ng)) )
779#if defined FORWARD_READ && \
780 (defined tangent || defined tl_ioms || defined adjoint)
781# ifdef FORWARD_MIXING
786 allocate (
mixing(ng) % AkvG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
789 allocate (
mixing(ng) % AktG(lbi:ubi,lbj:ubj,0:
n(ng),2,
nat) )
793# if defined LMD_MIXING_NOT_YET
794 allocate (
mixing(ng) % hsblG(lbi:ubi,lbj:ubj,2) )
798# if defined LMD_BKPP_NOT_YET
799 allocate (
mixing(ng) % hbblG(lbi:ubi,lbj:ubj,2) )
803# if defined LMD_NONLOCAL_NOT_YET
804 allocate (
mixing(ng) % ghatsG(lbi:ubi,lbj:ubj,0:
n(ng),2,
nat) )
808# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
809 allocate (
mixing(ng) % tkeG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
812 allocate (
mixing(ng) % glsG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
815 allocate (
mixing(ng) % LscaleG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
818 allocate (
mixing(ng) % AkkG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
821# ifdef GLS_MIXING_NOT_YET
822 allocate (
mixing(ng) % AkpG(lbi:ubi,lbj:ubj,0:
n(ng),2) )
1298 integer,
intent(in) :: ng, tile, model
1302 integer :: imin, imax, jmin, jmax
1308 real(
r8),
parameter :: inival = 0.0_r8
1309 real(
r8) :: cff1, cff2, cff3, cff4
1311#include "set_bounds.h"
1316 imin=
bounds(ng)%LBi(tile)
1317 imax=
bounds(ng)%UBi(tile)
1318 jmin=
bounds(ng)%LBj(tile)
1319 jmax=
bounds(ng)%UBj(tile)
1321 IF (
domain(ng)%Western_Edge(tile))
THEN
1322 imin=
bounds(ng)%LBi(tile)
1326 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1327 imax=
bounds(ng)%UBi(tile)
1331 IF (
domain(ng)%Southern_Edge(tile))
THEN
1332 jmin=
bounds(ng)%LBj(tile)
1336 IF (
domain(ng)%Northern_Edge(tile))
THEN
1337 jmax=
bounds(ng)%UBj(tile)
1349 IF ((model.eq.0).or.(model.eq.
inlm))
THEN
1354 mixing(ng) % visc_factor(i,j) = inival
1360 mixing(ng) % visc2_p(i,j) = inival
1361 mixing(ng) % visc2_r(i,j) = inival
1366 mixing(ng) % visc4_p(i,j) = inival
1367 mixing(ng) % visc4_r(i,j) = inival
1374 mixing(ng) % Hviscosity(i,j) = inival
1375# ifdef UV_U3ADV_SPLIT
1376 mixing(ng) % Uvis3d_r(i,j,k) = inival
1377 mixing(ng) % Vvis3d_r(i,j,k) = inival
1379 mixing(ng) % visc3d_r(i,j,k) = inival
1387 mixing(ng) % rustr2d(i,j) = inival
1388 mixing(ng) % rvstr2d(i,j) = inival
1390 mixing(ng) % rurol2d(i,j) = inival
1391 mixing(ng) % rvrol2d(i,j) = inival
1392 mixing(ng) % rubrk2d(i,j) = inival
1393 mixing(ng) % rvbrk2d(i,j) = inival
1394 mixing(ng) % rukvf2d(i,j) = inival
1395 mixing(ng) % rvkvf2d(i,j) = inival
1396# ifdef BOTTOM_STREAMING
1397 mixing(ng) % rubst2d(i,j) = inival
1398 mixing(ng) % rvbst2d(i,j) = inival
1400# ifdef SURFACE_STREAMING
1401 mixing(ng) % russt2d(i,j) = inival
1402 mixing(ng) % rvsst2d(i,j) = inival
1407 mixing(ng) % rustr3d(i,j,k) = inival
1408 mixing(ng) % rvstr3d(i,j,k) = inival
1417 mixing(ng) % diff_factor(i,j) = inival
1424 mixing(ng) % diff2(i,j,itrc) = inival
1431 mixing(ng) % diff4(i,j,itrc) = inival
1438 mixing(ng) % Hdiffusion(i,j) = inival
1439# ifdef TS_U3ADV_SPLIT
1440 mixing(ng) % diff3d_u(i,j,k) = inival
1441 mixing(ng) % diff3d_v(i,j,k) = inival
1443 mixing(ng) % diff3d_r(i,j,k) = inival
1449 mixing(ng) % Akv(i,j,0) = inival
1450 mixing(ng) % Akv(i,j,
n(ng)) = inival
1459 mixing(ng) % Akt(i,j,0,itrc) = inival
1460 mixing(ng) % Akt(i,j,
n(ng),itrc) = inival
1471 mixing(ng) % dAktdz(i,j,k) = inival
1475# if defined LMD_SKPP || defined LMD_BKPP || \
1476 defined bulk_fluxes || defined balance_operator
1478 mixing(ng) % alpha(i,j) = inival
1479 mixing(ng) % beta(i,j) = inival
1485 mixing(ng) % bvf(i,j,k) = inival
1489# if defined GLS_MIXING || defined MY25_MIXING
1498 mixing(ng) % Lscale(i,j,k) = inival
1502 mixing(ng) % Akk(i,j,0) = inival
1503 mixing(ng) % Akk(i,j,
n(ng)) = inival
1505 mixing(ng) % Akp(i,j,0) = inival
1506 mixing(ng) % Akp(i,j,
n(ng)) = inival
1518# if defined LMD_MIXING && defined LMD_DDMIX
1521 mixing(ng) % alfaobeta(i,j,k) = inival
1525# if defined LMD_SKPP || defined SOLAR_SOURCE
1530# if defined LMD_SKPP || defined LMD_BKPP
1532 mixing(ng) % ksbl(i,j) = 0
1533 mixing(ng) % hsbl(i,j) = inival
1537 mixing(ng) % kbbl(i,j) = 0
1538 mixing(ng) % hbbl(i,j) = inival
1545 mixing(ng) % ghats(i,j,k,itrc) = inival
1560 mixing(ng) % Kh(i,j) = 1.0_r8
1565 mixing(ng) % Kv(i,j,k) = 1.0_r8
1573#if defined TANGENT || defined TL_IOMS
1578# if defined GLS_MIXING || defined MY25_MIXING
1579 IF (model.eq.
irpm)
THEN
1591 IF ((model.eq.0).or.(model.eq.
itlm).or.(model.eq.
irpm))
THEN
1596# ifdef TS_U3ADV_SPLIT
1597 mixing(ng) % tl_diff3d_u(i,j,k) = inival
1598 mixing(ng) % tl_diff3d_v(i,j,k) = inival
1600 mixing(ng) % tl_diff3d_r(i,j,k) = inival
1608# ifdef UV_U3ADV_SPLIT
1609 mixing(ng) % tl_Uvis3d_r(i,j,k) = inival
1610 mixing(ng) % tl_Vvis3d_r(i,j,k) = inival
1612 mixing(ng) % tl_visc3d_r(i,j,k) = inival
1619 mixing(ng) % tl_Akv(i,j,k) = inival
1625 mixing(ng) % tl_Akt(i,j,k,itrc) = inival
1629# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
1631 mixing(ng) % tl_alpha(i,j) = inival
1632 mixing(ng) % tl_beta(i,j) = inival
1638 mixing(ng) % tl_bvf(i,j,k) = inival
1642# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1645 mixing(ng) % tl_tke(i,j,k,1) = cff1
1646 mixing(ng) % tl_tke(i,j,k,2) = cff1
1647 mixing(ng) % tl_tke(i,j,k,3) = cff1
1648 mixing(ng) % tl_gls(i,j,k,1) = cff2
1649 mixing(ng) % tl_gls(i,j,k,2) = cff2
1650 mixing(ng) % tl_gls(i,j,k,3) = cff2
1651 mixing(ng) % tl_Lscale(i,j,k) = inival
1655 mixing(ng) % tl_Akk(i,j,0) = inival
1656 mixing(ng) % tl_Akk(i,j,
n(ng)) = inival
1657# ifdef GLS_MIXING_NOT_YET
1658 mixing(ng) % tl_Akp(i,j,0) = inival
1659 mixing(ng) % tl_Akp(i,j,
n(ng)) = inival
1664 mixing(ng) % tl_Akk(i,j,k) = cff3
1666 mixing(ng) % tl_Akp(i,j,k) = cff4
1681 IF ((model.eq.0).or.(model.eq.
iadm))
THEN
1686# ifdef TS_U3ADV_SPLIT
1687 mixing(ng) % ad_diff3d_u(i,j,k) = inival
1688 mixing(ng) % ad_diff3d_v(i,j,k) = inival
1690 mixing(ng) % ad_diff3d_r(i,j,k) = inival
1698# ifdef UV_U3ADV_SPLIT
1699 mixing(ng) % ad_Uvis3d_r(i,j,k) = inival
1700 mixing(ng) % ad_Vvis3d_r(i,j,k) = inival
1702 mixing(ng) % ad_visc3d_r(i,j,k) = inival
1709 mixing(ng) % ad_Akv(i,j,k) = inival
1715 mixing(ng) % ad_Akt(i,j,k,itrc) = inival
1719# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
1721 mixing(ng) % ad_alpha(i,j) = inival
1722 mixing(ng) % ad_beta(i,j) = inival
1728 mixing(ng) % ad_bvf(i,j,k) = inival
1732# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1735 mixing(ng) % ad_tke(i,j,k,1) = inival
1736 mixing(ng) % ad_tke(i,j,k,2) = inival
1737 mixing(ng) % ad_tke(i,j,k,3) = inival
1738 mixing(ng) % ad_gls(i,j,k,1) = inival
1739 mixing(ng) % ad_gls(i,j,k,2) = inival
1740 mixing(ng) % ad_gls(i,j,k,3) = inival
1741 mixing(ng) % ad_Lscale(i,j,k) = inival
1742 mixing(ng) % ad_Akk(i,j,k) = inival
1744 mixing(ng) % ad_Akp(i,j,k) = inival
1754#if defined FORWARD_READ && defined FORWARD_MIXING && defined SOLVE3D && \
1755 (defined tangent || defined tl_ioms || defined adjoint)
1760 IF (model.eq.0)
THEN
1762# ifdef FORWARD_MIXING
1765 mixing(ng) % AkvG(i,j,k,1) = inival
1766 mixing(ng) % AkvG(i,j,k,2) = inival
1772 mixing(ng) % AktG(i,j,k,1,itrc) = inival
1773 mixing(ng) % AktG(i,j,k,2,itrc) = inival
1778# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1781 mixing(ng) % tkeG(i,j,k,1) = inival
1782 mixing(ng) % tkeG(i,j,k,2) = inival
1783 mixing(ng) % glsG(i,j,k,1) = inival
1784 mixing(ng) % glsG(i,j,k,2) = inival
1785 mixing(ng) % LscaleG(i,j,k,1) = inival
1786 mixing(ng) % LscaleG(i,j,k,2) = inival
1787 mixing(ng) % AkkG(i,j,k,1) = inival
1788 mixing(ng) % AkkG(i,j,k,2) = inival
1789# ifdef GLS_MIXING_NOT_YET
1790 mixing(ng) % AkpG(i,j,k,1) = inival
1791 mixing(ng) % AkpG(i,j,k,2) = inival
1796# if defined LMD_MIXING_NOT_YET
1798 mixing(ng) % hsblG(i,j,1) = inival
1799 mixing(ng) % hsblG(i,j,2) = inival
1802# if defined LMD_BKPP_NOT_YET
1804 mixing(ng) % hbblG(i,j,1) = inival
1805 mixing(ng) % hbblG(i,j,2) = inival
1808# if defined LMD_NONLOCAL_NOT_YET
1812 mixing(ng) % ghatsG(i,j,0:
n(ng),1,itrc) = inival
1813 mixing(ng) % ghatsG(i,j,0:
n(ng),2,itrc) = inival