Ignore:
Timestamp:
Jul 20, 2017 5:27:19 PM (7 years ago)
Author:
suehring
Message:

get topograpyh top index via function call

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/pmc_interface_mod.f90

    r2311 r2317  
    2121! Current revisions:
    2222! ------------------
    23 !
     23! Get topography top index via Function call
    2424!
    2525! Former revisions:
     
    192192    USE indices,                                                                &
    193193        ONLY:  nbgp, nx, nxl, nxlg, nxlu, nxr, nxrg, ny, nyn, nyng, nys, nysg,  &
    194                nysv, nz, nzb, nzb_max, nzt, wall_flags_0
     194               nysv, nz, nzb, nzt, wall_flags_0
    195195
    196196    USE kinds
     
    233233
    234234    USE surface_mod,                                                            &
    235         ONLY:  surf_def_h, surf_lsm_h, surf_usm_h
     235        ONLY:  get_topography_top_index, surf_def_h, surf_lsm_h, surf_usm_h
    236236
    237237    IMPLICIT NONE
     
    13941394!--             Determine largest topography index on scalar grid
    13951395                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1396                   MAXLOC(                                                      &
    1397                           MERGE( 1, 0,                                         &
    1398                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    1399                                ), DIM = 1                                      &
    1400                         ) - 1          )
     1396                                         get_topography_top_index( j, i, 's' ) )
    14011397!
    14021398!--             Determine largest topography index on u grid
    14031399                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1404                   MAXLOC(                                                      &
    1405                           MERGE( 1, 0,                                         &
    1406                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 14 )  &
    1407                                ), DIM = 1                                      &
    1408                         ) - 1          )
     1400                                         get_topography_top_index( j, i, 'u' ) )
    14091401!
    14101402!--             Determine largest topography index on v grid
    14111403                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1412                   MAXLOC(                                                      &
    1413                           MERGE( 1, 0,                                         &
    1414                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 16 )  &
    1415                                ), DIM = 1                                      &
    1416                         ) - 1          )
     1404                                         get_topography_top_index( j, i, 'v' ) )
    14171405!
    14181406!--             Determine largest topography index on w grid
    14191407                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1420                   MAXLOC(                                                      &
    1421                           MERGE( 1, 0,                                         &
    1422                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 18 )  &
    1423                                ), DIM = 1                                      &
    1424                         ) - 1          )
     1408                                         get_topography_top_index( j, i, 'w' ) )
    14251409             ENDDO
    14261410          ENDDO
     
    14361420!--             Determine largest topography index on scalar grid
    14371421                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1438                   MAXLOC(                                                      &
    1439                           MERGE( 1, 0,                                         &
    1440                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )  &
    1441                                ), DIM = 1                                      &
    1442                         ) - 1          )
     1422                                         get_topography_top_index( j, i, 's' ) )
    14431423!
    14441424!--             Determine largest topography index on u grid
    14451425                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1446                   MAXLOC(                                                      &
    1447                           MERGE( 1, 0,                                         &
    1448                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 14 )  &
    1449                                ), DIM = 1                                      &
    1450                         ) - 1          )
     1426                                         get_topography_top_index( j, i, 'u' ) )
    14511427!
    14521428!--             Determine largest topography index on v grid
    14531429                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1454                   MAXLOC(                                                      &
    1455                           MERGE( 1, 0,                                         &
    1456                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 16 )  &
    1457                                ), DIM = 1                                      &
    1458                         ) - 1          )
     1430                                         get_topography_top_index( j, i, 'v' ) )
    14591431!
    14601432!--             Determine largest topography index on w grid
    14611433                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1462                   MAXLOC(                                                      &
    1463                           MERGE( 1, 0,                                         &
    1464                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 18 )  &
    1465                                ), DIM = 1                                      &
    1466                         ) - 1          )
     1434                                         get_topography_top_index( j, i, 'w' ) )
    14671435          ENDDO
    14681436          nzt_topo_nestbc_r = nzt_topo_nestbc_r + 1
     
    14771445!--             Determine largest topography index on scalar grid
    14781446                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1479                   MAXLOC(                                                      &
    1480                           MERGE( 1, 0,                                         &
    1481                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    1482                                ), DIM = 1                                      &
    1483                         ) - 1          )
     1447                                         get_topography_top_index( j, i, 's' ) )
    14841448!
    14851449!--             Determine largest topography index on u grid
    14861450                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1487                   MAXLOC(                                                      &
    1488                           MERGE( 1, 0,                                         &
    1489                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 14 )    &
    1490                                ), DIM = 1                                      &
    1491                         ) - 1          )
     1451                                         get_topography_top_index( j, i, 'u' ) )
    14921452!
    14931453!--             Determine largest topography index on v grid
    14941454                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1495                   MAXLOC(                                                      &
    1496                           MERGE( 1, 0,                                         &
    1497                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 16 )    &
    1498                                ), DIM = 1                                      &
    1499                         ) - 1          )
     1455                                         get_topography_top_index( j, i, 'v' ) )
    15001456!
    15011457!--             Determine largest topography index on w grid
    15021458                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1503                   MAXLOC(                                                      &
    1504                           MERGE( 1, 0,                                         &
    1505                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 18 )    &
    1506                                ), DIM = 1                                      &
    1507                         ) - 1          )
     1459                                         get_topography_top_index( j, i, 'w' ) )
    15081460             ENDDO
    15091461          ENDDO
     
    15191471!--             Determine largest topography index on scalar grid
    15201472                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1521                   MAXLOC(                                                      &
    1522                           MERGE( 1, 0,                                         &
    1523                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    1524                                ), DIM = 1                                      &
    1525                         ) - 1          )
     1473                                         get_topography_top_index( j, i, 's' ) )
    15261474!
    15271475!--             Determine largest topography index on u grid
    15281476                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1529                   MAXLOC(                                                      &
    1530                           MERGE( 1, 0,                                         &
    1531                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 14 )    &
    1532                                ), DIM = 1                                      &
    1533                         ) - 1          )
     1477                                         get_topography_top_index( j, i, 'u' ) )
    15341478!
    15351479!--             Determine largest topography index on v grid
    15361480                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1537                   MAXLOC(                                                      &
    1538                           MERGE( 1, 0,                                         &
    1539                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 16 )    &
    1540                                ), DIM = 1                                      &
    1541                         ) - 1          )
     1481                                         get_topography_top_index( j, i, 'v' ) )
    15421482!
    15431483!--             Determine largest topography index on w grid
    15441484                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1545                   MAXLOC(                                                      &
    1546                           MERGE( 1, 0,                                         &
    1547                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 18 )    &
    1548                                ), DIM = 1                                      &
    1549                         ) - 1          )
     1485                                         get_topography_top_index( j, i, 'w' ) )
    15501486          ENDDO
    15511487          nzt_topo_nestbc_n = nzt_topo_nestbc_n + 1
     
    16031539!--          is part of the surfacetypes now. Set default roughness instead.
    16041540!--          Determine topography top index on u-grid
    1605              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1606                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 14 ) &
    1607                                 ), DIM = 1                                     &
    1608                          ) - 1
     1541             kb  = get_topography_top_index( j, i, 'u' )
    16091542             k   = kb + 1
    16101543             wall_index = kb
     
    16221555!
    16231556!--          Determine topography top index on v-grid
    1624              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1625                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 16 ) &
    1626                                 ), DIM = 1                                     &
    1627                          ) - 1
     1557             kb  = get_topography_top_index( j, i, 'v' )
    16281558             k   = kb + 1
    16291559             wall_index = kb
     
    16691599!--          to the present surface tpye.
    16701600!--          Determine topography top index on u-grid
    1671              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1672                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 14 ) &
    1673                                 ), DIM = 1                                     &
    1674                          ) - 1
     1601             kb  = get_topography_top_index( j, i, 'u' )
    16751602             k   = kb + 1
    16761603             wall_index = kb
     
    16881615!
    16891616!--          Determine topography top index on v-grid
    1690              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1691                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 16 ) &
    1692                                 ), DIM = 1                                     &
    1693                          ) - 1
     1617             kb  = get_topography_top_index( j, i, 'v' )
    16941618             k   = kb + 1
    16951619             wall_index = kb
     
    17321656!
    17331657!--          Determine topography top index on u-grid
    1734              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1735                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 14 ) &
    1736                                 ), DIM = 1                                     &
    1737                          ) - 1
     1658             kb  = get_topography_top_index( j, i, 'u' )
    17381659             k   = kb + 1
    17391660             wall_index = kb
     
    17511672!
    17521673!--          Determine topography top index on v-grid
    1753              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1754                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 16 ) &
    1755                                 ), DIM = 1                                     &
    1756                          ) - 1
     1674             kb  = get_topography_top_index( j, i, 'v' )
    17571675             k   = kb + 1
    17581676             wall_index = kb
     
    17941712             j   = nyn + 1
    17951713!
    1796 !--          Determine topography top index on v-grid
    1797              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1798                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 14 ) &
    1799                                 ), DIM = 1                                     &
    1800                          ) - 1
     1714!--          Determine topography top index on u-grid
     1715             kb  = get_topography_top_index( j, i, 'u' )
    18011716             k   = kb + 1
    18021717             wall_index = kb
     
    18141729!
    18151730!--          Determine topography top index on v-grid
    1816              kb  = MAXLOC( MERGE( 1, 0,                                        &
    1817                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,i), 16 ) &
    1818                                 ), DIM = 1                                     &
    1819                          ) - 1
     1731             kb  = get_topography_top_index( j, i, 'v' )
    18201732             k   = kb + 1
    18211733             wall_index = kb
     
    18561768
    18571769             DO  j = nys, nyn
    1858                 k_wall_u_ji   = MAXLOC(                                        &
    1859                             MERGE( 1, 0,                                       &
    1860                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,0), 26 ) &
    1861                                  ), DIM = 1                                    &
    1862                                       ) - 1
    1863                 k_wall_u_ji_p = MAXLOC(                                        &
    1864                             MERGE( 1, 0,                                       &
    1865                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j+1,0), 26 )&
    1866                                  ), DIM = 1                                    &
    1867                                       ) - 1
    1868                 k_wall_u_ji_m = MAXLOC(                                        &
    1869                             MERGE( 1, 0,                                       &
    1870                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j-1,0), 26 )&
    1871                                  ), DIM = 1                                    &
    1872                                       ) - 1
    1873 
    1874                 k_wall_w_ji   = MAXLOC(                                        &
    1875                             MERGE( 1, 0,                                       &
    1876                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j,-1), 28 )&
    1877                                  ), DIM = 1                                    &
    1878                                       ) - 1
    1879                 k_wall_w_ji_p = MAXLOC(                                        &
    1880                             MERGE( 1, 0,                                       &
    1881                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j+1,-1), 28 )&
    1882                                  ), DIM = 1                                    &
    1883                                       ) - 1
    1884                 k_wall_w_ji_m = MAXLOC(                                        &
    1885                             MERGE( 1, 0,                                       &
    1886                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_l,j-1,-1), 28 )&
    1887                                  ), DIM = 1                                    &
    1888                                       ) - 1
     1770!
     1771!--             Determine lowest grid on outer grids for u and w.
     1772                k_wall_u_ji   = get_topography_top_index( j,   0, 'u_out' )
     1773                k_wall_u_ji_p = get_topography_top_index( j+1, 0, 'u_out' )
     1774                k_wall_u_ji_m = get_topography_top_index( j-1, 0, 'u_out' )
     1775
     1776                k_wall_w_ji   = get_topography_top_index( j,   -1, 'w_out' )
     1777                k_wall_w_ji_p = get_topography_top_index( j+1, -1, 'w_out' )
     1778                k_wall_w_ji_m = get_topography_top_index( j-1, -1, 'w_out' )
    18891779
    18901780                DO  k = nzb, nzt_topo_nestbc_l
     
    19711861
    19721862             DO  j = nys, nyn
    1973 
    1974                 k_wall_u_ji    = MAXLOC(                                       &
    1975                             MERGE( 1, 0,                                       &
    1976                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j,i), 26 ) &
    1977                                  ), DIM = 1                                    &
    1978                                      ) - 1
    1979                 k_wall_u_ji_p  = MAXLOC(                                       &
    1980                             MERGE( 1, 0,                                       &
    1981                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j+1,i), 26 )&
    1982                                  ), DIM = 1                                    &
    1983                                      ) - 1
    1984                 k_wall_u_ji_m  = MAXLOC(                                       &
    1985                             MERGE( 1, 0,                                       &
    1986                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j-1,i), 26 )&
    1987                                      ), DIM = 1                                &
    1988                                         ) - 1
    1989 
    1990                 k_wall_w_ji    = MAXLOC(                                       &
    1991                             MERGE( 1, 0,                                       &
    1992                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j,i), 28 ) &
    1993                                  ), DIM = 1                                    &
    1994                                      ) - 1
    1995                 k_wall_w_ji_p  = MAXLOC(                                       &
    1996                             MERGE( 1, 0,                                       &
    1997                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j+1,i), 28 )&
    1998                                  ), DIM = 1                                    &
    1999                                      ) - 1
    2000                 k_wall_w_ji_m  = MAXLOC(                                       &
    2001                             MERGE( 1, 0,                                       &
    2002                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_r,j-1,i), 28 )&
    2003                                      ), DIM = 1                                &
    2004                                         ) - 1
     1863!
     1864!--             Determine lowest grid on outer grids for u and w.
     1865                k_wall_u_ji   = get_topography_top_index( j,   i, 'u_out' )
     1866                k_wall_u_ji_p = get_topography_top_index( j+1, i, 'u_out' )
     1867                k_wall_u_ji_m = get_topography_top_index( j-1, i, 'u_out' )
     1868
     1869                k_wall_w_ji   = get_topography_top_index( j,   i, 'w_out' )
     1870                k_wall_w_ji_p = get_topography_top_index( j+1, i, 'w_out' )
     1871                k_wall_w_ji_m = get_topography_top_index( j-1, i, 'w_out' )
     1872
    20051873                DO  k = nzb, nzt_topo_nestbc_r
    20061874!
     
    20811949
    20821950             DO  i = nxl, nxr
    2083 
    2084                 k_wall_v_ji    = MAXLOC(                                       &
    2085                             MERGE( 1, 0,                                       &
    2086                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,0,i), 27 ) &
    2087                                  ), DIM = 1                                    &
    2088                                      ) - 1
    2089                 k_wall_v_ji_p  = MAXLOC(                                       &
    2090                             MERGE( 1, 0,                                       &
    2091                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,0,i+1), 27 )&
    2092                                  ), DIM = 1                                    &
    2093                                      ) - 1
    2094                 k_wall_v_ji_m  = MAXLOC(                                       &
    2095                             MERGE( 1, 0,                                       &
    2096                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,0,i-1), 27 )&
    2097                                      ), DIM = 1                                &
    2098                                         ) - 1
    2099 
    2100                 k_wall_w_ji    = MAXLOC(                                       &
    2101                             MERGE( 1, 0,                                       &
    2102                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,-1,i), 28 )&
    2103                                  ), DIM = 1                                    &
    2104                                      ) - 1
    2105                 k_wall_w_ji_p  = MAXLOC(                                       &
    2106                             MERGE( 1, 0,                                       &
    2107                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,-1,i+1), 28 )&
    2108                                  ), DIM = 1                                    &
    2109                                      ) - 1
    2110                 k_wall_w_ji_m  = MAXLOC(                                       &
    2111                             MERGE( 1, 0,                                       &
    2112                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_s,-1,i-1), 28 )&
    2113                                      ), DIM = 1                                &
    2114                                         ) - 1
     1951!
     1952!--             Determine lowest grid on outer grids for v and w.
     1953                k_wall_v_ji   = get_topography_top_index( 0, i,   'v_out' )
     1954                k_wall_v_ji_p = get_topography_top_index( 0, i+1, 'v_out' )
     1955                k_wall_v_ji_m = get_topography_top_index( 0, i-1, 'v_out' )
     1956
     1957                k_wall_w_ji   = get_topography_top_index( -1, i,   'w_out' )
     1958                k_wall_w_ji_p = get_topography_top_index( -1, i+1, 'w_out' )
     1959                k_wall_w_ji_m = get_topography_top_index( -1, i-1, 'w_out' )
     1960
    21151961                DO  k = nzb, nzt_topo_nestbc_s
    21161962!
     
    21952041
    21962042             DO  i = nxl, nxr
    2197                 k_wall_v_ji    = MAXLOC(                                       &
    2198                             MERGE( 1, 0,                                       &
    2199                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i), 27 ) &
    2200                                  ), DIM = 1                                    &
    2201                                        ) - 1
    2202 
    2203                 k_wall_v_ji_p  = MAXLOC(                                       &
    2204                             MERGE( 1, 0,                                       &
    2205                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i+1), 27 )&
    2206                                  ), DIM = 1                                    &
    2207                                        ) - 1
    2208                 k_wall_v_ji_m  = MAXLOC(                                       &
    2209                             MERGE( 1, 0,                                       &
    2210                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i-1), 27 )&
    2211                                      ), DIM = 1                                &
    2212                                        ) - 1
    2213 
    2214                 k_wall_w_ji    = MAXLOC(                                       &
    2215                             MERGE( 1, 0,                                       &
    2216                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i), 28 )  &
    2217                                  ), DIM = 1                                    &
    2218                                        ) - 1
    2219                 k_wall_w_ji_p  = MAXLOC(                                       &
    2220                             MERGE( 1, 0,                                       &
    2221                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i+1), 28 )&
    2222                                  ), DIM = 1                                    &
    2223                                        ) - 1
    2224                 k_wall_w_ji_m  = MAXLOC(                                       &
    2225                             MERGE( 1, 0,                                       &
    2226                           BTEST( wall_flags_0(nzb:nzt_topo_nestbc_n,j,i-1), 28 )&
    2227                                      ), DIM = 1                                &
    2228                                        ) - 1
     2043!
     2044!--             Determine lowest grid on outer grids for v and w.
     2045                k_wall_v_ji   = get_topography_top_index( j, i,   'v_out' )
     2046                k_wall_v_ji_p = get_topography_top_index( j, i+1, 'v_out' )
     2047                k_wall_v_ji_m = get_topography_top_index( j, i-1, 'v_out' )
     2048
     2049                k_wall_w_ji   = get_topography_top_index( j, i,   'w_out' )
     2050                k_wall_w_ji_p = get_topography_top_index( j, i+1, 'w_out' )
     2051                k_wall_w_ji_m = get_topography_top_index( j, i-1, 'w_out' )
     2052
    22292053                DO  k = nzb, nzt_topo_nestbc_n
    22302054!
     
    28312655          i = nxl - 1
    28322656          DO  j = nysg, nyng
    2833              k_wall = MAXLOC(                                                  &
    2834                           MERGE( 1, 0,                                         &
    2835                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    2836                                ), DIM = 1                                      &
    2837                             ) - 1
     2657             k_wall = get_topography_top_index( j, i, 's' )
    28382658
    28392659             DO  k = k_wall + 1, nzt
     
    28562676          i = nxr + 1
    28572677          DO  j = nysg, nyng
    2858              k_wall = MAXLOC(                                                  &
    2859                           MERGE( 1, 0,                                         &
    2860                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    2861                                ), DIM = 1                                      &
    2862                             ) - 1
     2678             k_wall = get_topography_top_index( j, i, 's' )
    28632679
    28642680             DO  k = k_wall + 1, nzt
     
    28812697          j = nys - 1
    28822698          DO  i = nxlg, nxrg
    2883              k_wall = MAXLOC(                                                  &
    2884                           MERGE( 1, 0,                                         &
    2885                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    2886                                ), DIM = 1                                      &
    2887                             ) - 1
     2699             k_wall = get_topography_top_index( j, i, 's' )
    28882700
    28892701             DO  k = k_wall + 1, nzt
     
    29062718          j = nyn + 1
    29072719          DO  i = nxlg, nxrg
    2908              k_wall = MAXLOC(                                                  &
    2909                           MERGE( 1, 0,                                         &
    2910                                  BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )    &
    2911                                ), DIM = 1                                      &
    2912                             ) - 1
     2720             k_wall = get_topography_top_index( j, i, 's' )
     2721
    29132722             DO  k = k_wall + 1, nzt
    29142723
     
    29322741!
    29332742!--          Determine vertical index for local topography top
    2934              k_wall = MAXLOC(                                                  &
    2935                         MERGE( 1, 0,                                           &
    2936                                BTEST( wall_flags_0(nzb:nzb_max,j,i), 12 )      &
    2937                              ), DIM = 1                                        &
    2938                             ) - 1
     2743             k_wall = get_topography_top_index( j, i, 's' )
    29392744
    29402745             kc     = kco(k+1)
     
    33153120       INTEGER(iwp), DIMENSION(nzb:nzt+1), INTENT(IN)           ::  kc    !:
    33163121
    3317        INTEGER(iwp) ::  flag_nr  !: Number of flag array to mask topography on respective u/v/w or s grid
    3318        INTEGER(iwp) ::  flag_nr2 !: Number of flag array to indicate vertical index of topography top on respective u/v/w or s grid
    33193122       INTEGER(iwp) ::  i        !:
    33203123       INTEGER(iwp) ::  ib       !:
     
    33803183          ENDIF
    33813184       ENDIF
    3382 !
    3383 !--    Determine number of flag array to be used to mask topography
    3384        IF ( var == 'u' )  THEN
    3385           flag_nr  = 1
    3386           flag_nr2 = 14
    3387        ELSEIF ( var == 'v' )  THEN
    3388           flag_nr  = 2
    3389           flag_nr2 = 16
    3390        ELSEIF ( var == 'w' )  THEN
    3391           flag_nr  = 3
    3392           flag_nr2 = 18
    3393        ELSE
    3394           flag_nr  = 0
    3395           flag_nr2 = 12
    3396        ENDIF
     3185
    33973186!
    33983187!--    Trilinear interpolation.
     
    34263215!
    34273216!--             Determine vertical index of topography top at grid point (j,i)
    3428                 k_wall = MAXLOC(                                               &
    3429                       MERGE( 1, 0,                                             &
    3430                              BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )  &
    3431                            ), DIM = 1                                          &
    3432                                ) - 1
     3217                k_wall = get_topography_top_index( j, i, TRIM ( var ) )
    34333218!
    34343219!--             kbc is the first coarse-grid point above the surface
     
    34613246!
    34623247!--              Determine vertical index of topography top at grid point (j,i)
    3463                  k_wall = MAXLOC(                                              &
    3464                       MERGE( 1, 0,                                             &
    3465                              BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )  &
    3466                            ), DIM = 1                                          &
    3467                                 ) - 1
     3248                 k_wall = get_topography_top_index( j, i, 'w' )
    34683249
    34693250                 f(k_wall,j,i) = 0.0_wp
     
    45634344      CHARACTER(LEN=1), INTENT(IN) ::  var    !:
    45644345
    4565       INTEGER(iwp) ::  flag_nr  !: Number of flag array to mask topography on respective u/v/w or s grid
    4566       INTEGER(iwp) ::  flag_nr2 !: Number of flag array to indicate vertical index of topography top on respective u/v/w or s grid
    45674346      INTEGER(iwp) ::  i        !:
    45684347      INTEGER(iwp) ::  ib       !:
     
    46114390         ib = nxr + 2
    46124391      ENDIF
    4613 !
    4614 !--    Determine number of flag array to be used to mask topography
    4615        IF ( var == 'u' )  THEN
    4616           flag_nr  = 1
    4617           flag_nr2 = 14
    4618        ELSEIF ( var == 'v' )  THEN
    4619           flag_nr  = 2
    4620           flag_nr2 = 16
    4621        ELSEIF ( var == 'w' )  THEN
    4622           flag_nr  = 3
    4623           flag_nr2 = 18
    4624        ELSE
    4625           flag_nr  = 0
    4626           flag_nr2 = 12
    4627        ENDIF
    46284392     
    46294393      DO  j = nys, nyn+1
     
    46534417!
    46544418!--         Determine vertical index of topography top at grid point (j,i)
    4655             k_wall = MAXLOC(                                                   &
    4656                         MERGE( 1, 0,                                           &
    4657                                BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )&
    4658                              ), DIM = 1                                        &
    4659                            ) - 1
     4419            k_wall = get_topography_top_index( j, i, TRIM ( var ) )
    46604420
    46614421            k = k_wall+1
     
    46834443!
    46844444!--            Determine vertical index of topography top at grid point (j,i)
    4685                k_wall = MAXLOC(                                                &
    4686                      MERGE( 1, 0,                                              &
    4687                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4688                           ), DIM = 1                                           &
    4689                               ) - 1
     4445               k_wall = get_topography_top_index( j, i, TRIM ( var ) )
     4446
    46904447               DO  k = k_wall+1, nzt_topo_nestbc
    46914448                  IF ( ( logc(2,k,j) /= 0 )  .AND.  ( logc(1,k,j) == 0 ) )  THEN
     
    47114468!
    47124469!--            Determine vertical index of topography top at grid point (j,i)
    4713                k_wall = MAXLOC(                                                &
    4714                      MERGE( 1, 0,                                              &
    4715                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4716                           ), DIM = 1                                           &
    4717                               ) - 1
     4470               k_wall = get_topography_top_index( j, i, TRIM ( var ) )
     4471
    47184472               k = k_wall + 1
    47194473               IF ( ( logc(2,k,j) /= 0 )  .AND.  ( logc(1,k,j) /= 0 ) )  THEN
     
    47464500!
    47474501!--            Determine vertical index of topography top at grid point (j,i)
    4748                k_wall = MAXLOC(                                                &
    4749                      MERGE( 1, 0,                                              &
    4750                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4751                           ), DIM = 1                                           &
    4752                               ) - 1
     4502               k_wall = get_topography_top_index( j, i, 's' )
     4503
    47534504               DO  k = k_wall, nzt + 1
    47544505                  f(k,j,i) = tkefactor_l(k,j) * f(k,j,i)
     
    47594510!
    47604511!--            Determine vertical index of topography top at grid point (j,i)
    4761                k_wall = MAXLOC(                                                &
    4762                      MERGE( 1, 0,                                              &
    4763                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4764                           ), DIM = 1                                           &
    4765                               ) - 1
     4512               k_wall = get_topography_top_index( j, i, 's' )
     4513
    47664514               DO  k = k_wall, nzt+1
    47674515                  f(k,j,i) = tkefactor_r(k,j) * f(k,j,i)
     
    48214569      CHARACTER(LEN=1), INTENT(IN) ::  var    !:
    48224570     
    4823       INTEGER(iwp) ::  flag_nr  !: Number of flag array to mask topography on respective u/v/w or s grid
    4824       INTEGER(iwp) ::  flag_nr2 !: Number of flag array to indicate vertical index of topography top on respective u/v/w or s grid
    48254571      INTEGER(iwp) ::  i       !:
    48264572      INTEGER(iwp) ::  iinc    !:
     
    48674613      ENDIF
    48684614
    4869 !
    4870 !--    Determine number of flag array to be used to mask topography
    4871        IF ( var == 'u' )  THEN
    4872           flag_nr  = 1
    4873           flag_nr2 = 14
    4874        ELSEIF ( var == 'v' )  THEN
    4875           flag_nr  = 2
    4876           flag_nr2 = 16
    4877        ELSEIF ( var == 'w' )  THEN
    4878           flag_nr  = 3
    4879           flag_nr2 = 18
    4880        ELSE
    4881           flag_nr  = 0
    4882           flag_nr2 = 12
    4883        ENDIF
    48844615
    48854616      DO  i = nxl, nxr+1
    48864617!
    48874618!--      Determine vertical index of topography top at grid point (j,i)
    4888          k_wall = MAXLOC(                                                      &
    4889                         MERGE( 1, 0,                                           &
    4890                                BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )&
    4891                              ), DIM = 1                                        &
    4892                            ) - 1
     4619         k_wall = get_topography_top_index( j, i, TRIM( var ) )
     4620
    48934621         DO  k = k_wall, nzt+1
    48944622            l = ic(i)
     
    49164644!
    49174645!--         Determine vertical index of topography top at grid point (j,i)
    4918             k_wall = MAXLOC(                                                   &
    4919                         MERGE( 1, 0,                                           &
    4920                                BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )&
    4921                              ), DIM = 1                                        &
    4922                            ) - 1
     4646            k_wall = get_topography_top_index( j, i, TRIM( var ) )
    49234647
    49244648            k = k_wall + 1
     
    49454669!
    49464670!--            Determine vertical index of topography top at grid point (j,i)
    4947                k_wall = MAXLOC(                                                &
    4948                      MERGE( 1, 0,                                              &
    4949                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4950                           ), DIM = 1                                           &
    4951                               ) - 1
     4671               k_wall = get_topography_top_index( j, i, TRIM( var ) )
     4672
    49524673               DO  k = k_wall, nzt_topo_nestbc
    49534674!
     
    49754696!
    49764697!--            Determine vertical index of topography top at grid point (j,i)
    4977                k_wall = MAXLOC(                                                &
    4978                      MERGE( 1, 0,                                              &
    4979                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    4980                           ), DIM = 1                                           &
    4981                               ) - 1
     4698               k_wall = get_topography_top_index( j, i, TRIM( var ) )
     4699
    49824700               k = k_wall + 1
    49834701               IF ( ( logc(2,k,i) /= 0 )  .AND.  ( logc(1,k,i) /= 0 ) )  THEN
     
    50104728!
    50114729!--            Determine vertical index of topography top at grid point (j,i)
    5012                k_wall = MAXLOC(                                                &
    5013                      MERGE( 1, 0,                                              &
    5014                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    5015                           ), DIM = 1                                           &
    5016                               ) - 1
     4730               k_wall = get_topography_top_index( j, i, 's' )
    50174731               DO  k = k_wall, nzt+1
    50184732                  f(k,j,i) = tkefactor_s(k,i) * f(k,j,i)
     
    50234737!
    50244738!--            Determine vertical index of topography top at grid point (j,i)
    5025                k_wall = MAXLOC(                                                &
    5026                      MERGE( 1, 0,                                              &
    5027                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr2 )   &
    5028                           ), DIM = 1                                           &
    5029                               ) - 1
     4739               k_wall = get_topography_top_index( j, i, 's' )
    50304740               DO  k = k_wall, nzt+1
    50314741                  f(k,j,i) = tkefactor_n(k,i) * f(k,j,i)
     
    51534863       CHARACTER(LEN=1), INTENT(IN) ::  var    !:
    51544864
    5155        INTEGER(iwp) ::  flag_nr !: Number of flag array to mask topography on respective u/v/w or s grid
    51564865       INTEGER(iwp) ::  i       !:
    51574866       INTEGER(iwp) ::  ib      !:
     
    51864895          outnor = 1.0_wp
    51874896       ENDIF
    5188 !
    5189 !--    Determine number of flag array to be used to mask topography
    5190        IF ( var == 'u' )  THEN
    5191           flag_nr  = 14
    5192        ELSEIF ( var == 'v' )  THEN
    5193           flag_nr  = 16
    5194        ELSEIF ( var == 'w' )  THEN
    5195           flag_nr  = 18
    5196        ELSE
    5197           flag_nr  = 12
    5198        ENDIF
     4897
    51994898
    52004899       DO  j = nys, nyn+1
    52014900!
    52024901!--       Determine vertical index of topography top at grid point (j,i)
    5203           k_wall = MAXLOC(                                                     &
    5204                      MERGE( 1, 0,                                              &
    5205                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr )    &
    5206                           ), DIM = 1                                           &
    5207                          ) - 1
     4902          k_wall = get_topography_top_index( j, i, TRIM( var ) )
     4903
    52084904          DO  k = k_wall, nzt+1
    52094905             vdotnor = outnor * u(k,j,ied)
     
    52484944       CHARACTER(LEN=1), INTENT(IN) ::  var    !:
    52494945     
    5250        INTEGER(iwp) ::  flag_nr   !: Number of flag array to mask topography on respective u/v/w or s grid
    52514946       INTEGER(iwp) ::  i         !:
    52524947       INTEGER(iwp) ::  j         !:
     
    52824977       ENDIF
    52834978
    5284 !
    5285 !--    Determine number of flag array to be used to mask topography
    5286        IF ( var == 'u' )  THEN
    5287           flag_nr  = 14
    5288        ELSEIF ( var == 'v' )  THEN
    5289           flag_nr  = 16
    5290        ELSEIF ( var == 'w' )  THEN
    5291           flag_nr  = 18
    5292        ELSE
    5293           flag_nr  = 12
    5294        ENDIF
    52954979
    52964980       DO  i = nxl, nxr+1
    52974981!
    52984982!--       Determine vertical index of topography top at grid point (j,i)
    5299           k_wall = MAXLOC(                                                     &
    5300                      MERGE( 1, 0,                                              &
    5301                             BTEST( wall_flags_0(nzb:nzb_max,j,i), flag_nr )    &
    5302                           ), DIM = 1                                           &
    5303                          ) - 1
     4983          k_wall = get_topography_top_index( j, i, TRIM( var ) )
     4984
    53044985          DO  k = k_wall, nzt+1
    53054986             vdotnor = outnor * v(k,jed,i)
Note: See TracChangeset for help on using the changeset viewer.