Changeset 2812 for palm


Ignore:
Timestamp:
Feb 16, 2018 1:40:25 PM (7 years ago)
Author:
hellstea
Message:

Bugfixes in computation of the interpolation loglaw-correction parameters

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r2809 r2812  
    2525! -----------------
    2626! $Id$
     27! Bugfixes in computation of the interpolation loglaw-correction parameters
     28!
     29! 2809 2018-02-15 09:55:58Z schwenkel
    2730! Bugfix for gfortran: Replace the function C_SIZEOF with STORAGE_SIZE
    2831!
     
    415418    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::  logc_w_r   !<
    416419    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::  logc_w_s   !<
     420    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_u_l !<
     421    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_u_n !<
     422    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_u_r !<
     423    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_u_s !<
     424    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_v_l !<   
     425    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_v_n !<
     426    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_v_r !<   
     427    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_v_s !<
     428    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_w_l !<   
     429    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_w_n !<
     430    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_w_r !<   
     431    INTEGER(iwp), SAVE, ALLOCATABLE, DIMENSION(:,:)   ::  logc_kbounds_w_s !<       
    417432    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:,:,:)   ::  logc_ratio_u_l   !<
    418433    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:,:,:)   ::  logc_ratio_u_n   !<
     
    629644    IF ( TRIM( nesting_mode ) /= 'one-way'  .AND.                              &
    630645         TRIM( nesting_mode ) /= 'two-way'  .AND.                              &
    631          TRIM( nesting_mode ) /= 'vertical' )                                  &                 
     646         TRIM( nesting_mode ) /= 'vertical' )                                  &
    632647    THEN
    633648       message_string = 'illegal nesting mode: ' // TRIM( nesting_mode )
     
    11841199
    11851200       IF( particle_advection )  THEN
    1186           CALL pmc_set_dataarray_name( 'coarse', 'nr_part'  ,'fine', 'nr_part',  ierr )
    1187           CALL pmc_set_dataarray_name( 'coarse', 'part_adr'  ,'fine', 'part_adr',  ierr )
     1201          CALL pmc_set_dataarray_name( 'coarse', 'nr_part'  ,'fine',           &
     1202               'nr_part',  ierr )
     1203          CALL pmc_set_dataarray_name( 'coarse', 'part_adr'  ,'fine',          &
     1204               'part_adr',  ierr )
    11881205       ENDIF
    11891206       
     
    15991616!--             Determine largest topography index on scalar grid
    16001617                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1601                                          get_topography_top_index_ji( j, i, 's' ) )
     1618                                    get_topography_top_index_ji( j, i, 's' ) )
    16021619!
    16031620!--             Determine largest topography index on u grid
    16041621                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1605                                          get_topography_top_index_ji( j, i, 'u' ) )
     1622                                    get_topography_top_index_ji( j, i, 'u' ) )
    16061623!
    16071624!--             Determine largest topography index on v grid
    16081625                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1609                                          get_topography_top_index_ji( j, i, 'v' ) )
     1626                                    get_topography_top_index_ji( j, i, 'v' ) )
    16101627!
    16111628!--             Determine largest topography index on w grid
    16121629                nzt_topo_nestbc_l = MAX( nzt_topo_nestbc_l,                    &
    1613                                          get_topography_top_index_ji( j, i, 'w' ) )
     1630                                    get_topography_top_index_ji( j, i, 'w' ) )
    16141631             ENDDO
    16151632          ENDDO
     
    16251642!--             Determine largest topography index on scalar grid
    16261643                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1627                                          get_topography_top_index_ji( j, i, 's' ) )
     1644                                    get_topography_top_index_ji( j, i, 's' ) )
    16281645!
    16291646!--             Determine largest topography index on u grid
    16301647                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1631                                          get_topography_top_index_ji( j, i, 'u' ) )
     1648                                    get_topography_top_index_ji( j, i, 'u' ) )
    16321649!
    16331650!--             Determine largest topography index on v grid
    16341651                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1635                                          get_topography_top_index_ji( j, i, 'v' ) )
     1652                                    get_topography_top_index_ji( j, i, 'v' ) )
    16361653!
    16371654!--             Determine largest topography index on w grid
    16381655                nzt_topo_nestbc_r = MAX( nzt_topo_nestbc_r,                    &
    1639                                          get_topography_top_index_ji( j, i, 'w' ) )
     1656                                    get_topography_top_index_ji( j, i, 'w' ) )
    16401657          ENDDO
    16411658          nzt_topo_nestbc_r = nzt_topo_nestbc_r + 1
     
    16501667!--             Determine largest topography index on scalar grid
    16511668                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1652                                          get_topography_top_index_ji( j, i, 's' ) )
     1669                                    get_topography_top_index_ji( j, i, 's' ) )
    16531670!
    16541671!--             Determine largest topography index on u grid
    16551672                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1656                                          get_topography_top_index_ji( j, i, 'u' ) )
     1673                                    get_topography_top_index_ji( j, i, 'u' ) )
    16571674!
    16581675!--             Determine largest topography index on v grid
    16591676                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1660                                          get_topography_top_index_ji( j, i, 'v' ) )
     1677                                    get_topography_top_index_ji( j, i, 'v' ) )
    16611678!
    16621679!--             Determine largest topography index on w grid
    16631680                nzt_topo_nestbc_s = MAX( nzt_topo_nestbc_s,                    &
    1664                                          get_topography_top_index_ji( j, i, 'w' ) )
     1681                                    get_topography_top_index_ji( j, i, 'w' ) )
    16651682             ENDDO
    16661683          ENDDO
     
    16761693!--             Determine largest topography index on scalar grid
    16771694                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1678                                          get_topography_top_index_ji( j, i, 's' ) )
     1695                                    get_topography_top_index_ji( j, i, 's' ) )
    16791696!
    16801697!--             Determine largest topography index on u grid
    16811698                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1682                                          get_topography_top_index_ji( j, i, 'u' ) )
     1699                                    get_topography_top_index_ji( j, i, 'u' ) )
    16831700!
    16841701!--             Determine largest topography index on v grid
    16851702                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1686                                          get_topography_top_index_ji( j, i, 'v' ) )
     1703                                    get_topography_top_index_ji( j, i, 'v' ) )
    16871704!
    16881705!--             Determine largest topography index on w grid
    16891706                nzt_topo_nestbc_n = MAX( nzt_topo_nestbc_n,                    &
    1690                                          get_topography_top_index_ji( j, i, 'w' ) )
     1707                                    get_topography_top_index_ji( j, i, 'w' ) )
    16911708          ENDDO
    16921709          nzt_topo_nestbc_n = nzt_topo_nestbc_n + 1
     
    16951712!--    Then determine the maximum number of near-wall nodes per wall point based
    16961713!--    on the grid-spacing ratios.
    1697        nzt_topo_max = MAX( nzt_topo_nestbc_l, nzt_topo_nestbc_r,                &
     1714       nzt_topo_max = MAX( nzt_topo_nestbc_l, nzt_topo_nestbc_r,               &
    16981715                           nzt_topo_nestbc_s, nzt_topo_nestbc_n )
    16991716!
     
    17131730       z0_topo = roughness_length
    17141731!
    1715 !--    First horizontal walls. Note that also logc_w_? and logc_ratio_w_? need to
    1716 !--    be allocated and initialized here.
     1732!--    First horizontal walls. Note that also logc_w_? and logc_ratio_w_? and
     1733!--    logc_kbounds_* need to be allocated and initialized here.
    17171734!--    Left boundary
    17181735       IF ( nest_bound_l )  THEN
     
    17211738          ALLOCATE( logc_v_l(1:2,nzb:nzt_topo_nestbc_l,nys:nyn) )
    17221739          ALLOCATE( logc_w_l(1:2,nzb:nzt_topo_nestbc_l,nys:nyn) )
     1740          ALLOCATE( logc_kbounds_u_l(1:2,nys:nyn) )
     1741          ALLOCATE( logc_kbounds_v_l(1:2,nys:nyn) )
     1742          ALLOCATE( logc_kbounds_w_l(1:2,nys:nyn) )
    17231743          ALLOCATE( logc_ratio_u_l(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_l,nys:nyn) )
    17241744          ALLOCATE( logc_ratio_v_l(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_l,nys:nyn) )
     
    17781798          ALLOCATE( logc_u_r(1:2,nzb:nzt_topo_nestbc_r,nys:nyn) )
    17791799          ALLOCATE( logc_v_r(1:2,nzb:nzt_topo_nestbc_r,nys:nyn) )
    1780           ALLOCATE( logc_w_r(1:2,nzb:nzt_topo_nestbc_r,nys:nyn) )
     1800          ALLOCATE( logc_w_r(1:2,nzb:nzt_topo_nestbc_r,nys:nyn) )         
     1801          ALLOCATE( logc_kbounds_u_r(1:2,nys:nyn) )
     1802          ALLOCATE( logc_kbounds_v_r(1:2,nys:nyn) )
     1803          ALLOCATE( logc_kbounds_w_r(1:2,nys:nyn) )
    17811804          ALLOCATE( logc_ratio_u_r(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_r,nys:nyn) )
    17821805          ALLOCATE( logc_ratio_v_r(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_r,nys:nyn) )
     
    18381861          ALLOCATE( logc_v_s(1:2,nzb:nzt_topo_nestbc_s,nxl:nxr) )
    18391862          ALLOCATE( logc_w_s(1:2,nzb:nzt_topo_nestbc_s,nxl:nxr) )
     1863          ALLOCATE( logc_kbounds_u_s(1:2,nxl:nxr) )
     1864          ALLOCATE( logc_kbounds_v_s(1:2,nxl:nxr) )
     1865          ALLOCATE( logc_kbounds_w_s(1:2,nxl:nxr) )
    18401866          ALLOCATE( logc_ratio_u_s(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_s,nxl:nxr) )
    18411867          ALLOCATE( logc_ratio_v_s(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_s,nxl:nxr) )
     
    18941920          ALLOCATE( logc_v_n(1:2,nzb:nzt_topo_nestbc_n,nxl:nxr) )
    18951921          ALLOCATE( logc_w_n(1:2,nzb:nzt_topo_nestbc_n,nxl:nxr) )
     1922          ALLOCATE( logc_kbounds_u_n(1:2,nxl:nxr) )
     1923          ALLOCATE( logc_kbounds_v_n(1:2,nxl:nxr) )
     1924          ALLOCATE( logc_kbounds_w_n(1:2,nxl:nxr) )
    18961925          ALLOCATE( logc_ratio_u_n(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_n,nxl:nxr) )
    18971926          ALLOCATE( logc_ratio_v_n(1:2,0:ncorr-1,nzb:nzt_topo_nestbc_n,nxl:nxr) )
     
    19551984          z0_topo = roughness_length
    19561985
    1957           kb = 0       ! kb is not used when direction > 1
     1986          kb = 0       ! kb is not used when direction > 1       
    19581987!       
    19591988!--       Left boundary
    1960 
    1961 !
    1962 !--       Are loglaw-correction parameters also calculated inside topo?
    19631989          IF ( nest_bound_l )  THEN
    1964 
     1990             logc_kbounds_u_l(1:2,nys:nyn) = 0
     1991             logc_kbounds_v_l(1:2,nys:nyn) = 0             
     1992             logc_kbounds_w_l(1:2,nys:nyn) = 0
     1993             
    19651994             direction  = 2
    19661995
    19671996             DO  j = nys, nyn
    19681997!
    1969 !--             Determine lowest grid on outer grids for u and w.
    1970                 k_wall_u_ji   = get_topography_top_index_ji( j,   0, 'u_out' )
    1971                 k_wall_u_ji_p = get_topography_top_index_ji( j+1, 0, 'u_out' )
    1972                 k_wall_u_ji_m = get_topography_top_index_ji( j-1, 0, 'u_out' )
    1973 
    1974                 k_wall_w_ji   = get_topography_top_index_ji( j,   -1, 'w_out' )
    1975                 k_wall_w_ji_p = get_topography_top_index_ji( j+1, -1, 'w_out' )
    1976                 k_wall_w_ji_m = get_topography_top_index_ji( j-1, -1, 'w_out' )
    1977 
    1978                 DO  k = nzb, nzt_topo_nestbc_l
    1979 
    1980                    i            = 0
    1981 !
    1982 !--                Wall for u on the south side, but not on the north side
    1983                    IF ( ( k_wall_u_ji > k_wall_u_ji_p ) .AND.                  &
    1984                         ( k_wall_u_ji == k_wall_u_ji_m ) )                     &
    1985                    THEN
    1986                       inc        =  1
    1987                       wall_index =  j
     1998!--             Determine the lowest k-indices for u at j,i, j+1,i and j-1,i.
     1999                i             = 0
     2000                k_wall_u_ji   = get_topography_top_index_ji( j,   i, 'u' )
     2001                k_wall_u_ji_p = get_topography_top_index_ji( j+1, i, 'u' )
     2002                k_wall_u_ji_m = get_topography_top_index_ji( j-1, i, 'u' )
     2003!
     2004!--             Wall for u on the south side.
     2005                IF ( ( k_wall_u_ji <  k_wall_u_ji_m ) .AND.                    &
     2006                     ( k_wall_u_ji >= k_wall_u_ji_p ) )  THEN
     2007                   inc        =  1
     2008                   wall_index =  j
     2009!
     2010!--                Store the kbounds for use in pmci_interp_tril_lr.
     2011                   logc_kbounds_u_l(1,j) = k_wall_u_ji + 1
     2012                   logc_kbounds_u_l(2,j) = k_wall_u_ji_m
     2013                   DO  k = logc_kbounds_u_l(1,j), logc_kbounds_u_l(2,j)
    19882014                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    1989                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2015                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2016                           ncorr )
    19902017!
    19912018!--                   The direction of the wall-normal index is stored as the
     
    19942021                      logc_ratio_u_l(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    19952022                      lcr(0:ncorr-1) = 1.0_wp
    1996                    ENDIF
    1997 !
    1998 !--                Wall for u on the north side, but not on the south side
    1999                    IF ( ( k_wall_u_ji > k_wall_u_ji_m ) .AND.                  &
    2000                         ( k_wall_u_ji == k_wall_u_ji_p ) )  THEN
    2001                       inc        = -1
    2002                       wall_index =  j + 1
     2023                   ENDDO
     2024                ENDIF
     2025!
     2026!--             Wall for u on the north side.
     2027                IF ( ( k_wall_u_ji <  k_wall_u_ji_p ) .AND.                    &
     2028                     ( k_wall_u_ji >= k_wall_u_ji_m ) )  THEN
     2029                   inc        = -1
     2030                   wall_index =  j + 1
     2031!
     2032!--                Store the kbounds for use in pmci_interp_tril_lr.                   
     2033                   logc_kbounds_u_l(1,j) = k_wall_u_ji + 1
     2034                   logc_kbounds_u_l(2,j) = k_wall_u_ji_p
     2035                   DO  k = logc_kbounds_u_l(1,j), logc_kbounds_u_l(2,j)
    20032036                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2004                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2037                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2038                           ncorr )
    20052039!
    20062040!--                   The direction of the wall-normal index is stored as the
     
    20092043                      logc_ratio_u_l(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    20102044                      lcr(0:ncorr-1) = 1.0_wp
    2011                    ENDIF
    2012 
    2013                    i  = -1
    2014 !
    2015 !--                Wall for w on the south side, but not on the north side.
    2016 
    2017                    IF ( ( k_wall_w_ji > k_wall_w_ji_p )  .AND.                 &
    2018                         ( k_wall_w_ji == k_wall_w_ji_m ) )  THEN   
    2019                       inc        =  1
    2020                       wall_index =  j
     2045                   ENDDO
     2046                ENDIF
     2047!
     2048!--             Determine the lowest k-indices for w at j,i, j+1,i and j-1,i.
     2049                i             = -1
     2050                k_wall_w_ji   = get_topography_top_index_ji( j,   i, 'w' )
     2051                k_wall_w_ji_p = get_topography_top_index_ji( j+1, i, 'w' )
     2052                k_wall_w_ji_m = get_topography_top_index_ji( j-1, i, 'w' )
     2053!
     2054!--             Wall for w on the south side.               
     2055                IF ( ( k_wall_w_ji <  k_wall_w_ji_m ) .AND.                    &
     2056                     ( k_wall_w_ji >= k_wall_w_ji_p ) )  THEN
     2057                   inc        =  1
     2058                   wall_index =  j
     2059!
     2060!--                Store the kbounds for use in pmci_interp_tril_lr.
     2061                   logc_kbounds_w_l(1,j) = k_wall_w_ji + 1
     2062                   logc_kbounds_w_l(2,j) = k_wall_w_ji_m
     2063                   DO  k = logc_kbounds_w_l(1,j), logc_kbounds_w_l(2,j)
    20212064                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2022                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2065                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2066                           ncorr )
    20232067!
    20242068!--                   The direction of the wall-normal index is stored as the
     
    20272071                      logc_ratio_w_l(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    20282072                      lcr(0:ncorr-1) = 1.0_wp
    2029                    ENDIF
    2030 !
    2031 !--                Wall for w on the north side, but not on the south side.
    2032                    IF ( ( k_wall_w_ji > k_wall_w_ji_m )  .AND.                 &
    2033                         ( k_wall_w_ji == k_wall_w_ji_p ) )  THEN
    2034                       inc        = -1
    2035                       wall_index =  j+1
     2073                   ENDDO
     2074                ENDIF
     2075!
     2076!--             Wall for w on the north side.
     2077                IF ( ( k_wall_w_ji <  k_wall_w_ji_p ) .AND.                    &
     2078                     ( k_wall_w_ji >= k_wall_w_ji_m ) )  THEN
     2079                   inc        = -1
     2080                   wall_index =  j+1
     2081!
     2082!--                Store the kbounds for use in pmci_interp_tril_lr.
     2083                   logc_kbounds_w_l(1,j) = k_wall_w_ji + 1
     2084                   logc_kbounds_w_l(2,j) = k_wall_w_ji_p
     2085                   DO  k = logc_kbounds_w_l(1,j), logc_kbounds_w_l(2,j)
    20362086                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2037                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2087                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2088                           ncorr )
    20382089!
    20392090!--                   The direction of the wall-normal index is stored as the
     
    20422093                      logc_ratio_w_l(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    20432094                      lcr(0:ncorr-1) = 1.0_wp
    2044                    ENDIF
    2045 
    2046                 ENDDO
     2095                   ENDDO
     2096                ENDIF
     2097                   
    20472098             ENDDO
    20482099
     
    20512102!--       Right boundary
    20522103          IF ( nest_bound_r )  THEN
     2104             logc_kbounds_u_r(1:2,nys:nyn) = 0
     2105             logc_kbounds_v_r(1:2,nys:nyn) = 0             
     2106             logc_kbounds_w_r(1:2,nys:nyn) = 0
    20532107
    20542108             direction  = 2
    2055              i  = nxr + 1
     2109             i  = nx + 1
    20562110
    20572111             DO  j = nys, nyn
    20582112!
    2059 !--             Determine lowest grid on outer grids for u and w.
    2060                 k_wall_u_ji   = get_topography_top_index_ji( j,   i, 'u_out' )
    2061                 k_wall_u_ji_p = get_topography_top_index_ji( j+1, i, 'u_out' )
    2062                 k_wall_u_ji_m = get_topography_top_index_ji( j-1, i, 'u_out' )
    2063 
    2064                 k_wall_w_ji   = get_topography_top_index_ji( j,   i, 'w_out' )
    2065                 k_wall_w_ji_p = get_topography_top_index_ji( j+1, i, 'w_out' )
    2066                 k_wall_w_ji_m = get_topography_top_index_ji( j-1, i, 'w_out' )
    2067 
    2068                 DO  k = nzb, nzt_topo_nestbc_r
    2069 !
    2070 !--                Wall for u on the south side, but not on the north side
    2071                    IF ( ( k_wall_u_ji > k_wall_u_ji_p )  .AND.                 &
    2072                         ( k_wall_u_ji == k_wall_u_ji_m ) )  THEN
    2073                       inc        = 1
    2074                       wall_index = j
     2113!--             Determine the lowest k-indices for u at j,i, j+1,i and j-1,i.
     2114                k_wall_u_ji   = get_topography_top_index_ji( j,   i, 'u' )
     2115                k_wall_u_ji_p = get_topography_top_index_ji( j+1, i, 'u' )
     2116                k_wall_u_ji_m = get_topography_top_index_ji( j-1, i, 'u' )
     2117!
     2118!--             Wall for u on the south side.
     2119                IF ( ( k_wall_u_ji <  k_wall_u_ji_m ) .AND.                    &
     2120                     ( k_wall_u_ji >= k_wall_u_ji_p ) )  THEN
     2121                   inc        =  1
     2122                   wall_index =  j
     2123!
     2124!--                Store the kbounds for use in pmci_interp_tril_lr.                 
     2125                   logc_kbounds_u_r(1,j) = k_wall_u_ji + 1
     2126                   logc_kbounds_u_r(2,j) = k_wall_u_ji_m
     2127                   DO  k = logc_kbounds_u_r(1,j), logc_kbounds_u_r(2,j)
    20752128                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2076                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2129                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
    20772130!
    20782131!--                   The direction of the wall-normal index is stored as the
     
    20812134                      logc_ratio_u_r(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    20822135                      lcr(0:ncorr-1) = 1.0_wp
    2083                    ENDIF
    2084 !
    2085 !--                Wall for u on the north side, but not on the south side
    2086                    IF ( ( k_wall_u_ji > k_wall_u_ji_m )  .AND.                  &
    2087                         ( k_wall_u_ji == k_wall_u_ji_p ) )  THEN
    2088                       inc        = -1
    2089                       wall_index =  j+1
    2090                       CALL pmci_define_loglaw_correction_parameters( lc, lcr,   &
    2091                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2136                   ENDDO
     2137                ENDIF
     2138!
     2139!--             Wall for u on the south side.
     2140                IF ( ( k_wall_u_ji <  k_wall_u_ji_p ) .AND.                    &
     2141                     ( k_wall_u_ji >= k_wall_u_ji_m ) )  THEN
     2142                   inc        = -1
     2143                   wall_index =  j + 1                 
     2144!
     2145!--                Store the kbounds for use in pmci_interp_tril_lr.                   
     2146                   logc_kbounds_u_r(1,j) = k_wall_u_ji + 1
     2147                   logc_kbounds_u_r(2,j) = k_wall_u_ji_p
     2148                   DO  k = logc_kbounds_u_r(1,j), logc_kbounds_u_r(2,j)
     2149                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
     2150                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2151                           ncorr )
    20922152!
    20932153!--                   The direction of the wall-normal index is stored as the
     
    20962156                      logc_ratio_u_r(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    20972157                      lcr(0:ncorr-1) = 1.0_wp
    2098                    ENDIF
    2099 !
    2100 !--                Wall for w on the south side, but not on the north side
    2101                    IF ( ( k_wall_w_ji > k_wall_w_ji_p )  .AND.                 &
    2102                         ( k_wall_w_ji == k_wall_w_ji_m ) )  THEN
    2103                       inc        =  1
    2104                       wall_index =  j
     2158                   ENDDO
     2159                ENDIF
     2160!
     2161!--             Determine the lowest k-indices for w at j,i, j+1,i and j-1,i.
     2162                k_wall_w_ji   = get_topography_top_index_ji( j,   i, 'w' )
     2163                k_wall_w_ji_p = get_topography_top_index_ji( j+1, i, 'w' )
     2164                k_wall_w_ji_m = get_topography_top_index_ji( j-1, i, 'w' )
     2165!
     2166!--             Wall for w on the south side.               
     2167                IF ( ( k_wall_w_ji <  k_wall_w_ji_m ) .AND.                    &
     2168                     ( k_wall_w_ji >= k_wall_w_ji_p ) )  THEN
     2169                   inc        =  1
     2170                   wall_index =  j
     2171!
     2172!--                Store the kbounds for use in pmci_interp_tril_lr.                   
     2173                   logc_kbounds_w_r(1,j) = k_wall_w_ji + 1
     2174                   logc_kbounds_w_r(2,j) = k_wall_w_ji_m
     2175                   DO  k = logc_kbounds_w_r(1,j), logc_kbounds_w_r(2,j)
    21052176                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2106                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2177                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2178                           ncorr )
    21072179!
    21082180!--                   The direction of the wall-normal index is stored as the
     
    21112183                      logc_ratio_w_r(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    21122184                      lcr(0:ncorr-1) = 1.0_wp
    2113                    ENDIF
    2114 !
    2115 !--                Wall for w on the north side, but not on the south side
    2116                    IF ( ( k_wall_w_ji > k_wall_w_ji_m )  .AND.                 &
    2117                         ( k_wall_w_ji == k_wall_w_ji_p ) )  THEN
    2118                       inc        = -1
    2119                       wall_index =  j+1
     2185                   ENDDO
     2186                ENDIF
     2187!
     2188!--             Wall for w on the north side.
     2189                IF ( ( k_wall_w_ji <  k_wall_w_ji_p ) .AND.                    &
     2190                     ( k_wall_w_ji >= k_wall_w_ji_m ) )  THEN
     2191                   inc        = -1
     2192                   wall_index =  j+1
     2193!
     2194!--                Store the kbounds for use in pmci_interp_tril_lr.                   
     2195                   logc_kbounds_w_r(1,j) = k_wall_w_ji + 1
     2196                   logc_kbounds_w_r(2,j) = k_wall_w_ji_p
     2197                   DO  k = logc_kbounds_w_r(1,j), logc_kbounds_w_r(2,j)
    21202198                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2121                           k, j, inc, wall_index, z0_topo, kb, direction, ncorr )
     2199                           k, j, inc, wall_index, z0_topo, kb, direction,      &
     2200                           ncorr )
    21222201!
    21232202!--                   The direction of the wall-normal index is stored as the
     
    21262205                      logc_ratio_w_r(2,0:ncorr-1,k,j) = lcr(0:ncorr-1)
    21272206                      lcr(0:ncorr-1) = 1.0_wp
    2128                    ENDIF
    2129 
    2130                 ENDDO
     2207                   ENDDO
     2208                ENDIF
     2209                   
    21312210             ENDDO
    2132 
     2211             
    21332212          ENDIF   !  IF ( nest_bound_r )
    21342213!       
    21352214!--       South boundary
    21362215          IF ( nest_bound_s )  THEN
     2216             logc_kbounds_u_s(1:2,nxl:nxr) = 0
     2217             logc_kbounds_v_s(1:2,nxl:nxr) = 0
     2218             logc_kbounds_w_s(1:2,nxl:nxr) = 0
    21372219
    21382220             direction  = 3
     
    21402222             DO  i = nxl, nxr
    21412223!
    2142 !--             Determine lowest grid on outer grids for v and w.
    2143                 k_wall_v_ji   = get_topography_top_index_ji( 0, i,   'v_out' )
    2144                 k_wall_v_ji_p = get_topography_top_index_ji( 0, i+1, 'v_out' )
    2145                 k_wall_v_ji_m = get_topography_top_index_ji( 0, i-1, 'v_out' )
    2146 
    2147                 k_wall_w_ji   = get_topography_top_index_ji( -1, i,   'w_out' )
    2148                 k_wall_w_ji_p = get_topography_top_index_ji( -1, i+1, 'w_out' )
    2149                 k_wall_w_ji_m = get_topography_top_index_ji( -1, i-1, 'w_out' )
    2150 
    2151                 DO  k = nzb, nzt_topo_nestbc_s
    2152 !
    2153 !--                Wall for v on the left side, but not on the right side
    2154                    j  = 0
    2155                    IF ( ( k_wall_v_ji > k_wall_v_ji_p )  .AND.                 &
    2156                         ( k_wall_v_ji == k_wall_v_ji_m ) )  THEN
    2157                       inc        =  1
    2158                       wall_index =  i
     2224!--             Determine the lowest k-indices for v at j,i, j,i+1 and j,i-1.
     2225                j             = 0               
     2226                k_wall_v_ji   = get_topography_top_index_ji( j, i,   'v' )
     2227                k_wall_v_ji_p = get_topography_top_index_ji( j, i+1, 'v' )
     2228                k_wall_v_ji_m = get_topography_top_index_ji( j, i-1, 'v' )
     2229!
     2230!--             Wall for v on the left side.
     2231                IF ( ( k_wall_v_ji <  k_wall_v_ji_m ) .AND.                    &
     2232                     ( k_wall_v_ji >= k_wall_v_ji_p ) )  THEN
     2233                   inc        =  1
     2234                   wall_index =  i
     2235!
     2236!--                Store the kbounds for use in pmci_interp_tril_sn.                   
     2237                   logc_kbounds_v_s(1,i) = k_wall_v_ji + 1
     2238                   logc_kbounds_v_s(2,i) = k_wall_v_ji_m
     2239                   DO  k = logc_kbounds_v_s(1,i), logc_kbounds_v_s(2,i)
    21592240                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2160                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2241                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2242                           ncorr )
    21612243!
    21622244!--                   The direction of the wall-normal index is stored as the
     
    21652247                      logc_ratio_v_s(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    21662248                      lcr(0:ncorr-1) = 1.0_wp
    2167                    ENDIF
    2168 !
    2169 !--                Wall for v on the right side, but not on the left side
    2170                    j  = 0
    2171                    IF ( ( k_wall_v_ji > k_wall_v_ji_m )  .AND.                 &
    2172                         ( k_wall_v_ji == k_wall_v_ji_p ) )  THEN
    2173                       inc        = -1
    2174                       wall_index =  i+1
     2249                   ENDDO
     2250                ENDIF
     2251!
     2252!--             Wall for v on the right side.
     2253                IF ( ( k_wall_v_ji <  k_wall_v_ji_p ) .AND.                    &
     2254                     ( k_wall_v_ji >= k_wall_v_ji_m ) )  THEN
     2255                   inc        = -1
     2256                   wall_index =  i+1
     2257!
     2258!--                Store the kbounds for use in pmci_interp_tril_sn.                   
     2259                   logc_kbounds_v_s(1,i) = k_wall_v_ji + 1
     2260                   logc_kbounds_v_s(2,i) = k_wall_v_ji_p
     2261                   DO  k = logc_kbounds_v_s(1,i), logc_kbounds_v_s(2,i)
    21752262                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2176                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2263                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2264                           ncorr )
    21772265!
    21782266!--                   The direction of the wall-normal index is stored as the
     
    21812269                      logc_ratio_v_s(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    21822270                      lcr(0:ncorr-1) = 1.0_wp
    2183                    ENDIF
    2184 !
    2185 !--                Wall for w on the left side, but not on the right side
    2186                    j  = -1
    2187                    IF ( ( k_wall_w_ji > k_wall_w_ji_p )  .AND.                 &
    2188                         ( k_wall_w_ji == k_wall_w_ji_m ) )  THEN
    2189                       inc        =  1
    2190                       wall_index =  i
     2271                   ENDDO
     2272                ENDIF
     2273!
     2274!--             Determine the lowest k-indices for w at j,i, j,i+1 and j,i-1.
     2275                j             = -1
     2276                k_wall_w_ji   = get_topography_top_index_ji( j, i,   'w' )
     2277                k_wall_w_ji_p = get_topography_top_index_ji( j, i+1, 'w' )
     2278                k_wall_w_ji_m = get_topography_top_index_ji( j, i-1, 'w' )
     2279!
     2280!--             Wall for w on the left side.
     2281                IF ( ( k_wall_w_ji <  k_wall_w_ji_m ) .AND.                    &
     2282                     ( k_wall_w_ji >= k_wall_w_ji_p ) )  THEN
     2283                   inc        =  1
     2284                   wall_index =  i
     2285!
     2286!--                Store the kbounds for use in pmci_interp_tril_sn.
     2287                   logc_kbounds_w_s(1,i) = k_wall_w_ji + 1
     2288                   logc_kbounds_w_s(2,i) = k_wall_w_ji_m
     2289                   DO  k = logc_kbounds_w_s(1,i), logc_kbounds_w_s(2,i)
    21912290                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2192                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2291                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2292                           ncorr )
    21932293!
    21942294!--                   The direction of the wall-normal index is stored as the
     
    21972297                      logc_ratio_w_s(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    21982298                      lcr(0:ncorr-1) = 1.0_wp
    2199                    ENDIF
    2200 
    2201 !
    2202 !--                Wall for w on the right side, but not on the left side
    2203                    j  = -1
    2204                    IF ( ( k_wall_w_ji > k_wall_w_ji_m )  .AND.                 &
    2205                         ( k_wall_w_ji == k_wall_w_ji_p ) )  THEN
    2206                       inc        = -1
    2207                       wall_index =  i+1
     2299                   ENDDO
     2300                ENDIF
     2301!
     2302!--             Wall for w on the right side.
     2303                IF ( ( k_wall_w_ji <  k_wall_w_ji_p ) .AND.                    &
     2304                     ( k_wall_w_ji >= k_wall_w_ji_m ) )  THEN
     2305                   inc        = -1
     2306                   wall_index =  i+1
     2307!
     2308!--                Store the kbounds for use in pmci_interp_tril_sn.
     2309                   logc_kbounds_w_s(1,i) = k_wall_w_ji + 1
     2310                   logc_kbounds_w_s(2,i) = k_wall_w_ji_p
     2311                   DO  k = logc_kbounds_w_s(1,i), logc_kbounds_w_s(2,i)
    22082312                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2209                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2313                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2314                           ncorr )
    22102315!
    22112316!--                   The direction of the wall-normal index is stored as the
     
    22142319                      logc_ratio_w_s(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    22152320                      lcr(0:ncorr-1) = 1.0_wp
    2216                    ENDIF
    2217 
    2218                 ENDDO
     2321                   ENDDO
     2322                ENDIF
     2323
    22192324             ENDDO
    22202325
     
    22232328!--       North boundary
    22242329          IF ( nest_bound_n )  THEN
     2330             logc_kbounds_u_n(1:2,nxl:nxr) = 0             
     2331             logc_kbounds_v_n(1:2,nxl:nxr) = 0
     2332             logc_kbounds_w_n(1:2,nxl:nxr) = 0
    22252333
    22262334             direction  = 3
    2227              j  = nyn + 1
     2335             j  = ny + 1
    22282336
    22292337             DO  i = nxl, nxr
    22302338!
    2231 !--             Determine lowest grid on outer grids for v and w.
    2232                 k_wall_v_ji   = get_topography_top_index_ji( j, i,   'v_out' )
    2233                 k_wall_v_ji_p = get_topography_top_index_ji( j, i+1, 'v_out' )
    2234                 k_wall_v_ji_m = get_topography_top_index_ji( j, i-1, 'v_out' )
    2235 
    2236                 k_wall_w_ji   = get_topography_top_index_ji( j, i,   'w_out' )
    2237                 k_wall_w_ji_p = get_topography_top_index_ji( j, i+1, 'w_out' )
    2238                 k_wall_w_ji_m = get_topography_top_index_ji( j, i-1, 'w_out' )
    2239 
    2240                 DO  k = nzb, nzt_topo_nestbc_n
    2241 !
    2242 !--                Wall for v on the left side, but not on the right side
    2243                    IF ( ( k_wall_v_ji > k_wall_v_ji_p )  .AND.                 &
    2244                         ( k_wall_v_ji == k_wall_v_ji_m ) )  THEN
    2245                       inc        = 1
    2246                       wall_index = i
     2339!--             Determine the lowest k-indices for v at j,i, j,i+1 and j,i-1
     2340                k_wall_v_ji   = get_topography_top_index_ji( j, i,   'v' )
     2341                k_wall_v_ji_p = get_topography_top_index_ji( j, i+1, 'v' )
     2342                k_wall_v_ji_m = get_topography_top_index_ji( j, i-1, 'v' )
     2343!
     2344!--             Wall for v on the left side.
     2345                IF ( ( k_wall_v_ji <  k_wall_v_ji_m ) .AND.                    &
     2346                     ( k_wall_v_ji >= k_wall_v_ji_p ) )  THEN
     2347                   inc        = 1
     2348                   wall_index = i                   
     2349!
     2350!--                Store the kbounds for use in pmci_interp_tril_sn.
     2351                   logc_kbounds_v_n(1,i) = k_wall_v_ji + 1
     2352                   logc_kbounds_v_n(2,i) = k_wall_v_ji_m
     2353                   DO  k = logc_kbounds_v_n(1,i), logc_kbounds_v_n(2,i)
    22472354                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2248                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2355                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2356                           ncorr )
    22492357!
    22502358!--                   The direction of the wall-normal index is stored as the
     
    22532361                      logc_ratio_v_n(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    22542362                      lcr(0:ncorr-1) = 1.0_wp
    2255                    ENDIF
    2256 !
    2257 !--                Wall for v on the right side, but not on the left side
    2258                    IF ( ( k_wall_v_ji > k_wall_v_ji_m )  .AND.                 &
    2259                         ( k_wall_v_ji == k_wall_v_ji_p ) )  THEN
    2260                       inc        = -1
    2261                       wall_index =  i + 1
     2363                   ENDDO
     2364                ENDIF
     2365!
     2366!--             Wall for v on the right side.
     2367                IF ( ( k_wall_v_ji <  k_wall_v_ji_p ) .AND.                    &
     2368                     ( k_wall_v_ji >= k_wall_v_ji_m ) )  THEN
     2369                   inc        = -1
     2370                   wall_index =  i + 1
     2371!
     2372!--                Store the kbounds for use in pmci_interp_tril_sn.
     2373                   logc_kbounds_v_n(1,i) = k_wall_v_ji + 1
     2374                   logc_kbounds_v_n(2,i) = k_wall_v_ji_p
     2375                   DO  k = logc_kbounds_v_n(1,i), logc_kbounds_v_n(2,i)
    22622376                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2263                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2377                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2378                           ncorr )
    22642379!
    22652380!--                   The direction of the wall-normal index is stored as the
     
    22682383                      logc_ratio_v_n(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    22692384                      lcr(0:ncorr-1) = 1.0_wp
    2270                    ENDIF
    2271 !
    2272 !--                Wall for w on the left side, but not on the right side
    2273                    IF ( ( k_wall_v_ji > k_wall_v_ji_p )  .AND.                 &
    2274                         ( k_wall_v_ji == k_wall_v_ji_m ) )  THEN
    2275                       inc        = 1
    2276                       wall_index = i
     2385                   ENDDO
     2386                ENDIF
     2387!
     2388!--             Determine the lowest k-indices for w at j,i, j,i+1 and j,i-1.
     2389                k_wall_w_ji   = get_topography_top_index_ji( j, i,   'w' )
     2390                k_wall_w_ji_p = get_topography_top_index_ji( j, i+1, 'w' )
     2391                k_wall_w_ji_m = get_topography_top_index_ji( j, i-1, 'w' )                   
     2392!
     2393!--             Wall for w on the left side.
     2394                IF ( ( k_wall_w_ji <  k_wall_w_ji_m ) .AND.                    &
     2395                     ( k_wall_w_ji >= k_wall_w_ji_p ) )  THEN
     2396                   inc        = 1
     2397                   wall_index = i
     2398!
     2399!--                Store the kbounds for use in pmci_interp_tril_sn.
     2400                   logc_kbounds_w_n(1,i) = k_wall_w_ji + 1
     2401                   logc_kbounds_w_n(2,i) = k_wall_w_ji_m
     2402                   DO  k = logc_kbounds_w_n(1,i), logc_kbounds_w_n(2,i)
    22772403                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
    2278                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2404                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2405                           ncorr )
    22792406!
    22802407!--                   The direction of the wall-normal index is stored as the
     
    22832410                      logc_ratio_w_n(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    22842411                      lcr(0:ncorr-1) = 1.0_wp
    2285                    ENDIF
    2286 !
    2287 !--                Wall for w on the right side, but not on the left side
    2288                    IF ( ( k_wall_v_ji > k_wall_v_ji_m )  .AND.                 &
    2289                         ( k_wall_v_ji == k_wall_v_ji_p ) )  THEN
    2290                       inc        = -1
    2291                       wall_index =  i+1
    2292                       CALL pmci_define_loglaw_correction_parameters( lc, lcr,   &
    2293                           k, i, inc, wall_index, z0_topo, kb, direction, ncorr )
     2412                   ENDDO
     2413                ENDIF
     2414!
     2415!--             Wall for w on the right side, but not on the left side
     2416                IF ( ( k_wall_w_ji <  k_wall_w_ji_p ) .AND.                    &
     2417                     ( k_wall_w_ji >= k_wall_w_ji_m ) )  THEN
     2418                   inc        = -1
     2419                   wall_index =  i+1
     2420!
     2421!--                Store the kbounds for use in pmci_interp_tril_sn.
     2422                   logc_kbounds_w_n(1,i) = k_wall_w_ji + 1
     2423                   logc_kbounds_w_n(2,i) = k_wall_w_ji_p
     2424                   DO  k = logc_kbounds_w_n(1,i), logc_kbounds_w_n(2,i)
     2425                      CALL pmci_define_loglaw_correction_parameters( lc, lcr,  &
     2426                           k, i, inc, wall_index, z0_topo, kb, direction,      &
     2427                           ncorr )
    22942428!
    22952429!--                   The direction of the wall-normal index is stored as the
     
    22982432                      logc_ratio_w_n(2,0:ncorr-1,k,i) = lcr(0:ncorr-1)
    22992433                      lcr(0:ncorr-1) = 1.0_wp
    2300                    ENDIF
    2301 
    2302                 ENDDO
     2434                   ENDDO
     2435                ENDIF
     2436
    23032437             ENDDO
    23042438
     
    23112445
    23122446
    2313     SUBROUTINE pmci_define_loglaw_correction_parameters( lc, lcr, k, ij, inc,   &
    2314                                         wall_index, z0_l, kb, direction, ncorr )
     2447    SUBROUTINE pmci_define_loglaw_correction_parameters( lc, lcr, k, ij, inc,  &
     2448         wall_index, z0_l, kb, direction, ncorr )
    23152449
    23162450       IMPLICIT NONE
     
    23652499                corr_index = ij + lcorr   ! In this case (direction = 2) ij is j
    23662500                IF ( lcorr == 0 )  THEN
    2367                    CALL pmci_find_logc_pivot_j( lc, logvelc1, ij, wall_index,   &
     2501                   CALL pmci_find_logc_pivot_j( lc, logvelc1, ij, wall_index,  &
    23682502                                                z0_l, inc )
    23692503                ENDIF
     
    23722506!--             valid in both directions
    23732507                IF ( inc * corr_index < inc * lc )  THEN
    2374                    lcr(alcorr) = LOG( ABS( coord_y(corr_index) + 0.5_wp * dy    &
    2375                                          - coord_y(wall_index) ) / z0_l )       &
     2508                   lcr(alcorr) = LOG( ABS( coord_y(corr_index) + 0.5_wp * dy   &
     2509                                         - coord_y(wall_index) ) / z0_l )      &
    23762510                                 / logvelc1
    23772511                   more = .TRUE.
     
    23912525                corr_index = ij + lcorr   ! In this case (direction = 3) ij is i
    23922526                IF ( lcorr == 0 )  THEN
    2393                    CALL pmci_find_logc_pivot_i( lc, logvelc1, ij, wall_index,   &
     2527                   CALL pmci_find_logc_pivot_i( lc, logvelc1, ij, wall_index,  &
    23942528                                                z0_l, inc )
    23952529                ENDIF
     
    23982532!--             valid in both directions
    23992533                IF ( inc * corr_index < inc * lc )  THEN
    2400                    lcr(alcorr) = LOG( ABS( coord_x(corr_index) + 0.5_wp * dx    &
    2401                                          - coord_x(wall_index) ) / z0_l )       &
     2534                   lcr(alcorr) = LOG( ABS( coord_x(corr_index) + 0.5_wp * dx   &
     2535                                         - coord_x(wall_index) ) / z0_l )      &
    24022536                                 / logvelc1
    24032537                   more = .TRUE.
     
    39954129                                       r1yo, r2yo, r1zo, r2zo,                 &
    39964130                                       logc_u_l, logc_ratio_u_l,               &
     4131                                       logc_kbounds_u_l,                       &
    39974132                                       nzt_topo_nestbc_l, 'l', 'u' )
    39984133
     
    40004135                                       r1yv, r2yv, r1zo, r2zo,                 &
    40014136                                       logc_v_l, logc_ratio_v_l,               &
     4137                                       logc_kbounds_v_l,                       &               
    40024138                                       nzt_topo_nestbc_l, 'l', 'v' )
    40034139
     
    40054141                                       r1yo, r2yo, r1zw, r2zw,                 &
    40064142                                       logc_w_l, logc_ratio_w_l,               &
     4143                                       logc_kbounds_w_l,                       &
    40074144                                       nzt_topo_nestbc_l, 'l', 'w' )
    40084145
    40094146             CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    40104147                                       r1yo, r2yo, r1zo, r2zo,                 &
    4011                                        logc_u_l, logc_ratio_u_l,               &
     4148                                       logc_w_l, logc_ratio_w_l,               &
     4149                                       logc_kbounds_w_l,                       &
    40124150                                       nzt_topo_nestbc_l, 'l', 'e' )
    40134151
     
    40154153                CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
    40164154                                          r1yo, r2yo, r1zo, r2zo,              &
    4017                                           logc_u_l, logc_ratio_u_l,            &
     4155                                          logc_w_l, logc_ratio_w_l,            &
     4156                                          logc_kbounds_w_l,                    &               
    40184157                                          nzt_topo_nestbc_l, 'l', 's' )
    40194158             ENDIF
     
    40234162                CALL pmci_interp_tril_lr( q, q_c, ico, jco, kco, r1xo, r2xo,   &
    40244163                                          r1yo, r2yo, r1zo, r2zo,              &
    4025                                           logc_u_l, logc_ratio_u_l,            &
     4164                                          logc_w_l, logc_ratio_w_l,            &
     4165                                          logc_kbounds_w_l,                    &
    40264166                                          nzt_topo_nestbc_l, 'l', 's' )
    40274167
    40284168                IF ( cloud_physics  .AND.  microphysics_morrison )  THEN
    4029                    CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo, r2xo,&
    4030                                              r1yo, r2yo, r1zo, r2zo,            &
    4031                                              logc_u_l,                          &
    4032                                              logc_ratio_u_l, nzt_topo_nestbc_l, &
    4033                                              'l', 's' ) 
    4034 
    4035                    CALL pmci_interp_tril_lr( nc, ncc, ico, jco, kco, r1xo, r2xo,&
    4036                                              r1yo, r2yo, r1zo, r2zo,            &
    4037                                              logc_u_l,                          &
    4038                                              logc_ratio_u_l, nzt_topo_nestbc_l, &
    4039                                              'l', 's' )         
     4169                   CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo,     &
     4170                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     4171                                             logc_w_l, logc_ratio_w_l,         &
     4172                                             logc_kbounds_w_l,                &
     4173                                             nzt_topo_nestbc_l, 'l', 's' ) 
     4174
     4175                   CALL pmci_interp_tril_lr( nc, ncc, ico, jco, kco, r1xo,     &
     4176                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     4177                                             logc_w_l, logc_ratio_w_l,         &
     4178                                             logc_kbounds_w_l,                &
     4179                                             nzt_topo_nestbc_l, 'l', 's' )         
    40404180                ENDIF
    40414181
    40424182                IF ( cloud_physics  .AND.  microphysics_seifert )  THEN
    4043                    CALL pmci_interp_tril_lr( qr, qrc, ico, jco, kco, r1xo, r2xo,&
    4044                                              r1yo, r2yo, r1zo, r2zo,            &
    4045                                              logc_u_l,                          &
    4046                                              logc_ratio_u_l, nzt_topo_nestbc_l, &
    4047                                              'l', 's' )
    4048 
    4049                    CALL pmci_interp_tril_lr( nr, nrc, ico, jco, kco, r1xo, r2xo,&
    4050                                              r1yo, r2yo, r1zo, r2zo,            &
    4051                                              logc_u_l,                          &
    4052                                              logc_ratio_u_l, nzt_topo_nestbc_l, &
    4053                                              'l', 's' )             
     4183                   CALL pmci_interp_tril_lr( qr, qrc, ico, jco, kco, r1xo,     &
     4184                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     4185                                             logc_w_l, logc_ratio_w_l,         &
     4186                                             logc_kbounds_w_l,                &
     4187                                             nzt_topo_nestbc_l, 'l', 's' )
     4188
     4189                   CALL pmci_interp_tril_lr( nr, nrc, ico, jco, kco, r1xo,     &
     4190                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
     4191                                             logc_w_l, logc_ratio_w_l,         &
     4192                                             logc_kbounds_w_l,                 &               
     4193                                             nzt_topo_nestbc_l, 'l', 's' )             
    40544194                ENDIF
    40554195
     
    40594199                CALL pmci_interp_tril_lr( s, sc, ico, jco, kco, r1xo, r2xo,    &
    40604200                                          r1yo, r2yo, r1zo, r2zo,              &
    4061                                           logc_u_l, logc_ratio_u_l,            &
     4201                                          logc_w_l, logc_ratio_w_l,            &
     4202                                          logc_kbounds_w_l,                    &
    40624203                                          nzt_topo_nestbc_l, 'l', 's' )
    40634204             ENDIF
     
    40654206             IF ( air_chemistry )  THEN
    40664207                DO  n = 1, nspec
    4067                    CALL pmci_interp_tril_lr( chem_species(n)%conc,              &
    4068                                              chem_spec_c(:,:,:,n),              &
    4069                                              ico, jco, kco, r1xo, r2xo,         &
    4070                                              r1yo, r2yo, r1zo, r2zo,            &
    4071                                              logc_u_l, logc_ratio_u_l,          &
     4208                   CALL pmci_interp_tril_lr( chem_species(n)%conc,             &
     4209                                             chem_spec_c(:,:,:,n),             &
     4210                                             ico, jco, kco, r1xo, r2xo,        &
     4211                                             r1yo, r2yo, r1zo, r2zo,           &
     4212                                             logc_w_l, logc_ratio_w_l,         &
     4213                                             logc_kbounds_w_l,                 &
    40724214                                             nzt_topo_nestbc_l, 'l', 's' )
    40734215                ENDDO
     
    41234265                                       r1yo, r2yo, r1zo, r2zo,                 &
    41244266                                       logc_u_r, logc_ratio_u_r,               &
     4267                                       logc_kbounds_u_r,                       &
    41254268                                       nzt_topo_nestbc_r, 'r', 'u' )
    41264269
     
    41284271                                       r1yv, r2yv, r1zo, r2zo,                 &
    41294272                                       logc_v_r, logc_ratio_v_r,               &
     4273                                       logc_kbounds_v_r,                       &
    41304274                                       nzt_topo_nestbc_r, 'r', 'v' )
    41314275
     
    41334277                                       r1yo, r2yo, r1zw, r2zw,                 &
    41344278                                       logc_w_r, logc_ratio_w_r,               &
     4279                                       logc_kbounds_w_r,                       &
    41354280                                       nzt_topo_nestbc_r, 'r', 'w' )
    41364281
    41374282             CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    41384283                                       r1yo,r2yo, r1zo, r2zo,                  &
    4139                                        logc_u_r, logc_ratio_u_r,               &
     4284                                       logc_w_r, logc_ratio_w_r,               &
     4285                                       logc_kbounds_w_r,                       &
    41404286                                       nzt_topo_nestbc_r, 'r', 'e' )
    41414287
     
    41444290                CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
    41454291                                          r1yo, r2yo, r1zo, r2zo,              &
    4146                                           logc_u_r, logc_ratio_u_r,            &
     4292                                          logc_w_r, logc_ratio_w_r,            &
     4293                                          logc_kbounds_w_r,                    &
    41474294                                          nzt_topo_nestbc_r, 'r', 's' )
    41484295
     
    41524299                CALL pmci_interp_tril_lr( q, q_c, ico, jco, kco, r1xo, r2xo,   &
    41534300                                          r1yo, r2yo, r1zo, r2zo,              &
    4154                                           logc_u_r, logc_ratio_u_r,            &
     4301                                          logc_w_r, logc_ratio_w_r,            &
     4302                                          logc_kbounds_w_r,                    &
    41554303                                          nzt_topo_nestbc_r, 'r', 's' )
    41564304
     
    41594307                   CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo,     &
    41604308                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4161                                              logc_u_r,                         &
    4162                                              logc_ratio_u_r, nzt_topo_nestbc_r,&
    4163                                              'r', 's' )
     4309                                             logc_w_r, logc_ratio_w_r,         &
     4310                                             logc_kbounds_w_r,                 &
     4311                                             nzt_topo_nestbc_r, 'r', 's' )
    41644312     
    41654313                   CALL pmci_interp_tril_lr( nc, ncc, ico, jco, kco, r1xo,     &
    41664314                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4167                                              logc_u_r,                         &
    4168                                              logc_ratio_u_r, nzt_topo_nestbc_r,&
    4169                                              'r', 's' )
     4315                                             logc_w_r, logc_ratio_w_r,         &
     4316                                             logc_kbounds_w_r,                 &
     4317                                             nzt_topo_nestbc_r, 'r', 's' )
    41704318
    41714319
     
    41774325                   CALL pmci_interp_tril_lr( qr, qrc, ico, jco, kco, r1xo,     &
    41784326                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4179                                              logc_u_r,                         &
    4180                                              logc_ratio_u_r, nzt_topo_nestbc_r,&
    4181                                              'r', 's' )
     4327                                             logc_w_r, logc_ratio_w_r,         &
     4328                                             logc_kbounds_w_r,                 &
     4329                                             nzt_topo_nestbc_r, 'r', 's' )
    41824330
    41834331                   CALL pmci_interp_tril_lr( nr, nrc, ico, jco, kco, r1xo,     &
    41844332                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4185                                              logc_u_r,                         &
    4186                                              logc_ratio_u_r, nzt_topo_nestbc_r,&
    4187                                              'r', 's' )
     4333                                             logc_w_r, logc_ratio_w_r,         &
     4334                                             logc_kbounds_w_r,                 &
     4335                                             nzt_topo_nestbc_r, 'r', 's' )
    41884336
    41894337                ENDIF
     
    41944342                CALL pmci_interp_tril_lr( s, sc, ico, jco, kco, r1xo, r2xo,    &
    41954343                                          r1yo, r2yo, r1zo, r2zo,              &
    4196                                           logc_u_r, logc_ratio_u_r,            &
     4344                                          logc_w_r, logc_ratio_w_r,            &
     4345                                          logc_kbounds_w_r,                    &
    41974346                                          nzt_topo_nestbc_r, 'r', 's' )
    41984347
     
    42034352                                             ico, jco, kco, r1xo, r2xo,        &
    42044353                                             r1yo, r2yo, r1zo, r2zo,           &
    4205                                              logc_u_r, logc_ratio_u_r,         &
     4354                                             logc_w_r, logc_ratio_w_r,         &
     4355                                             logc_kbounds_w_r,                 &
    42064356                                             nzt_topo_nestbc_r, 'r', 's' )
    42074357                ENDDO
     
    42544404                                       r1yo, r2yo, r1zo, r2zo,                 &
    42554405                                       logc_u_s, logc_ratio_u_s,               &
     4406                                       logc_kbounds_u_s,                       &
    42564407                                       nzt_topo_nestbc_s, 's', 'u' )
    42574408             CALL pmci_interp_tril_sn( v,  vc,  ico, jcv, kco, r1xo, r2xo,     &
    42584409                                       r1yv, r2yv, r1zo, r2zo,                 &
    42594410                                       logc_v_s, logc_ratio_v_s,               &
     4411                                       logc_kbounds_v_s,                       &
    42604412                                       nzt_topo_nestbc_s, 's', 'v' )
    42614413             CALL pmci_interp_tril_sn( w,  wc,  ico, jco, kcw, r1xo, r2xo,     &
    42624414                                       r1yo, r2yo, r1zw, r2zw,                 &
    42634415                                       logc_w_s, logc_ratio_w_s,               &
     4416                                       logc_kbounds_w_s,                       &
    42644417                                       nzt_topo_nestbc_s, 's','w' )
    42654418             CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    42664419                                       r1yo, r2yo, r1zo, r2zo,                 &
    4267                                        logc_u_s, logc_ratio_u_s,               &
     4420                                       logc_w_s, logc_ratio_w_s,               &
     4421                                       logc_kbounds_w_s,                       &
    42684422                                       nzt_topo_nestbc_s, 's', 'e' )
    42694423
     
    42714425                CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
    42724426                                          r1yo, r2yo, r1zo, r2zo,              &
    4273                                           logc_u_s, logc_ratio_u_s,            &
     4427                                          logc_w_s, logc_ratio_w_s,            &
     4428                                          logc_kbounds_w_s,                    &
    42744429                                          nzt_topo_nestbc_s, 's', 's' )
    42754430             ENDIF
     
    42784433                CALL pmci_interp_tril_sn( q, q_c, ico, jco, kco, r1xo, r2xo,   &
    42794434                                          r1yo,r2yo, r1zo, r2zo,               &
    4280                                           logc_u_s, logc_ratio_u_s,            &
     4435                                          logc_w_s, logc_ratio_w_s,            &
     4436                                          logc_kbounds_w_s,                    &
    42814437                                          nzt_topo_nestbc_s, 's', 's' )
    42824438
     
    42854441                   CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo,     &
    42864442                                             r2xo, r1yo,r2yo, r1zo, r2zo,      &
    4287                                              logc_u_s,                         &
    4288                                              logc_ratio_u_s, nzt_topo_nestbc_s,&
    4289                                              's', 's' )
     4443                                             logc_w_s, logc_ratio_w_s,         &
     4444                                             logc_kbounds_w_s,                 &
     4445                                             nzt_topo_nestbc_s, 's', 's' )
    42904446
    42914447                   CALL pmci_interp_tril_sn( nc, ncc, ico, jco, kco, r1xo,     &
    42924448                                             r2xo, r1yo,r2yo, r1zo, r2zo,      &
    4293                                              logc_u_s,                         &
    4294                                              logc_ratio_u_s, nzt_topo_nestbc_s,&
    4295                                              's', 's' )
     4449                                             logc_w_s, logc_ratio_w_s,         &
     4450                                             logc_kbounds_w_s,                 &
     4451                                             nzt_topo_nestbc_s, 's', 's' )
    42964452
    42974453                ENDIF
     
    43014457                   CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo,     &
    43024458                                             r2xo, r1yo,r2yo, r1zo, r2zo,      &
    4303                                              logc_u_s,                         &
    4304                                              logc_ratio_u_s, nzt_topo_nestbc_s,&
    4305                                              's', 's' )
     4459                                             logc_w_s, logc_ratio_w_s,         &
     4460                                             logc_kbounds_w_s,                 &
     4461                                             nzt_topo_nestbc_s, 's', 's' )
    43064462
    43074463                   CALL pmci_interp_tril_sn( nr, nrc, ico, jco, kco, r1xo,     &
    43084464                                             r2xo, r1yo,r2yo, r1zo, r2zo,      &
    4309                                              logc_u_s,                         &
    4310                                              logc_ratio_u_s, nzt_topo_nestbc_s,&
    4311                                              's', 's' )
     4465                                             logc_w_s, logc_ratio_w_s,         &
     4466                                             logc_kbounds_w_s,                 &
     4467                                             nzt_topo_nestbc_s, 's', 's' )
    43124468
    43134469                ENDIF
     
    43184474                CALL pmci_interp_tril_sn( s, sc, ico, jco, kco, r1xo, r2xo,    &
    43194475                                          r1yo,r2yo, r1zo, r2zo,               &
    4320                                           logc_u_s, logc_ratio_u_s,            &
     4476                                          logc_w_s, logc_ratio_w_s,            &
     4477                                          logc_kbounds_w_s,                    &
    43214478                                          nzt_topo_nestbc_s, 's', 's' )
    43224479             ENDIF
     
    43284485                                             ico, jco, kco, r1xo, r2xo,        &
    43294486                                             r1yo, r2yo, r1zo, r2zo,           &
    4330                                              logc_u_s, logc_ratio_u_s,         &
     4487                                             logc_w_s, logc_ratio_w_s,         &
     4488                                             logc_kbounds_w_s,                 &
    43314489                                             nzt_topo_nestbc_s, 's', 's' )
    43324490                ENDDO
     
    43794537                                       r1yo, r2yo, r1zo, r2zo,                 &
    43804538                                       logc_u_n, logc_ratio_u_n,               &
     4539                                       logc_kbounds_u_n,                       &
    43814540                                       nzt_topo_nestbc_n, 'n', 'u' )
    43824541
    43834542             CALL pmci_interp_tril_sn( v,  vc,  ico, jcv, kco, r1xo, r2xo,     &
    43844543                                       r1yv, r2yv, r1zo, r2zo,                 &
    4385                                        logc_v_n, logc_ratio_v_n,               &
     4544                                       logc_v_n, logc_ratio_v_n,               &
     4545                                       logc_kbounds_v_n,                       &
    43864546                                       nzt_topo_nestbc_n, 'n', 'v' )
    43874547
     
    43894549                                       r1yo, r2yo, r1zw, r2zw,                 &
    43904550                                       logc_w_n, logc_ratio_w_n,               &
     4551                                       logc_kbounds_w_n,                       &
    43914552                                       nzt_topo_nestbc_n, 'n', 'w' )
    43924553
    43934554             CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    43944555                                       r1yo, r2yo, r1zo, r2zo,                 &
    4395                                        logc_u_n, logc_ratio_u_n,               &
     4556                                       logc_w_n, logc_ratio_w_n,               &
     4557                                       logc_kbounds_w_n,                       &
    43964558                                       nzt_topo_nestbc_n, 'n', 'e' )
    43974559
     
    43994561                CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
    44004562                                          r1yo, r2yo, r1zo, r2zo,              &
    4401                                           logc_u_n, logc_ratio_u_n,            &
     4563                                          logc_w_n, logc_ratio_w_n,            &
     4564                                          logc_kbounds_w_n,                    &
    44024565                                          nzt_topo_nestbc_n, 'n', 's' )
    44034566             ENDIF
     
    44064569                CALL pmci_interp_tril_sn( q, q_c, ico, jco, kco, r1xo, r2xo,   &
    44074570                                          r1yo, r2yo, r1zo, r2zo,              &
    4408                                           logc_u_n, logc_ratio_u_n,            &
     4571                                          logc_w_n, logc_ratio_w_n,            &
     4572                                          logc_kbounds_w_n,                    &
    44094573                                          nzt_topo_nestbc_n, 'n', 's' )
    44104574
     
    44134577                   CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo,     &
    44144578                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4415                                              logc_u_n,                         &
    4416                                              logc_ratio_u_n, nzt_topo_nestbc_n,&
    4417                                              'n', 's' )
     4579                                             logc_w_n, logc_ratio_w_n,         &
     4580                                             logc_kbounds_w_n,                 &
     4581                                             nzt_topo_nestbc_n, 'n', 's' )
    44184582
    44194583                   CALL pmci_interp_tril_sn( nc, ncc, ico, jco, kco, r1xo,     &
    44204584                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4421                                              logc_u_n,                         &
    4422                                              logc_ratio_u_n, nzt_topo_nestbc_n,&
    4423                                              'n', 's' )
     4585                                             logc_u_n, logc_ratio_u_n,         &
     4586                                             logc_kbounds_w_n,                 &
     4587                                             nzt_topo_nestbc_n, 'n', 's' )
    44244588
    44254589                ENDIF
     
    44294593                   CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo,     &
    44304594                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4431                                              logc_u_n,                         &
    4432                                              logc_ratio_u_n, nzt_topo_nestbc_n,&
    4433                                              'n', 's' )
     4595                                             logc_w_n, logc_ratio_w_n,         &
     4596                                             logc_kbounds_w_n,                 &
     4597                                             nzt_topo_nestbc_n, 'n', 's' )
    44344598
    44354599                   CALL pmci_interp_tril_sn( nr, nrc, ico, jco, kco, r1xo,     &
    44364600                                             r2xo, r1yo, r2yo, r1zo, r2zo,     &
    4437                                              logc_u_n,                         &
    4438                                              logc_ratio_u_n, nzt_topo_nestbc_n,&
    4439                                              'n', 's' )
     4601                                             logc_w_n, logc_ratio_w_n,         &
     4602                                             logc_kbounds_w_n,                 &
     4603                                             nzt_topo_nestbc_n, 'n', 's' )
    44404604
    44414605                ENDIF
     
    44464610                CALL pmci_interp_tril_sn( s, sc, ico, jco, kco, r1xo, r2xo,    &
    44474611                                          r1yo, r2yo, r1zo, r2zo,              &
    4448                                           logc_u_n, logc_ratio_u_n,            &
     4612                                          logc_w_n, logc_ratio_w_n,            &
     4613                                          logc_kbounds_w_n,                    &
    44494614                                          nzt_topo_nestbc_n, 'n', 's' )
    44504615             ENDIF
     
    44524617             IF ( air_chemistry )  THEN
    44534618                DO  n = 1, nspec
    4454                    CALL pmci_interp_tril_sn( chem_species(n)%conc,              &
    4455                                              chem_spec_c(:,:,:,n),              &
    4456                                              ico, jco, kco, r1xo, r2xo,         &
    4457                                              r1yo, r2yo, r1zo, r2zo,            &
    4458                                              logc_u_n, logc_ratio_u_n,          &
     4619                   CALL pmci_interp_tril_sn( chem_species(n)%conc,             &
     4620                                             chem_spec_c(:,:,:,n),             &
     4621                                             ico, jco, kco, r1xo, r2xo,        &
     4622                                             r1yo, r2yo, r1zo, r2zo,           &
     4623                                             logc_w_n, logc_ratio_w_n,         &
     4624                                             logc_kbounds_w_n,                 &
    44594625                                             nzt_topo_nestbc_n, 'n', 's' )
    44604626                ENDDO
     
    46734839
    46744840
    4675    SUBROUTINE pmci_interp_tril_lr( f, fc, ic, jc, kc, r1x, r2x, r1y, r2y, r1z,  &
    4676                                    r2z, logc, logc_ratio, nzt_topo_nestbc,      &
    4677                                    edge, var )
     4841   SUBROUTINE pmci_interp_tril_lr( f, fc, ic, jc, kc, r1x, r2x, r1y, r2y, r1z, &
     4842                                   r2z, logc, logc_ratio, logc_kbounds,        &
     4843                                   nzt_topo_nestbc, edge, var )
    46784844!
    46794845!--   Interpolation of ghost-node values used as the child-domain boundary
     
    47014867      INTEGER(iwp), DIMENSION(1:2,nzb:nzt_topo_nestbc,nys:nyn),                &
    47024868                                          INTENT(IN)           ::  logc   !<
     4869      INTEGER(iwp), DIMENSION(1:2,nys:nyn), INTENT(IN)         ::  logc_kbounds !<
    47034870      INTEGER(iwp) ::  nzt_topo_nestbc   !<
    47044871
     
    48054972!--         Solid surface only on south/north side of the node                   
    48064973            DO  j = nys, nyn
    4807 !
    4808 !--            Determine vertical index of topography top at grid point (j,i)
    4809                k_wall = get_topography_top_index_ji( j, i, TRIM ( var ) )
    4810 
    4811                DO  k = k_wall+1, nzt_topo_nestbc
     4974               DO  k = logc_kbounds(1,j), logc_kbounds(2,j)   
    48124975                  IF ( ( logc(2,k,j) /= 0 )  .AND.  ( logc(1,k,j) == 0 ) )  THEN
    48134976!
     
    48304993         IF ( var == 'u' )  THEN
    48314994            DO  j = nys, nyn
    4832 !
    4833 !--            Determine vertical index of topography top at grid point (j,i)
    4834                k_wall = get_topography_top_index_ji( j, i, TRIM ( var ) )
    4835 
    4836                k = k_wall + 1
     4995               k = logc_kbounds(1,j)
    48374996               IF ( ( logc(2,k,j) /= 0 )  .AND.  ( logc(1,k,j) /= 0 ) )  THEN
    48384997                  k1   = logc(1,k,j)                 
     
    49005059
    49015060   SUBROUTINE pmci_interp_tril_sn( f, fc, ic, jc, kc, r1x, r2x, r1y, r2y, r1z, &
    4902                                    r2z, logc, logc_ratio,                   &
     5061                                   r2z, logc, logc_ratio, logc_kbounds,        &
    49035062                                   nzt_topo_nestbc, edge, var )
    49045063
     
    49285087      INTEGER(iwp), DIMENSION(1:2,nzb:nzt_topo_nestbc,nxl:nxr),                &
    49295088                                          INTENT(IN)           ::  logc  !<
     5089      INTEGER(iwp), DIMENSION(1:2,nxl:nxr), INTENT(IN)         ::  logc_kbounds  !<
    49305090      INTEGER(iwp) ::  nzt_topo_nestbc   !<
    49315091
     
    50285188         IF ( var == 'v' .OR. var == 'w' )  THEN
    50295189            DO  i = nxl, nxr
    5030 !
    5031 !--            Determine vertical index of topography top at grid point (j,i)
    5032                k_wall = get_topography_top_index_ji( j, i, TRIM( var ) )
    5033 
    5034                DO  k = k_wall, nzt_topo_nestbc
     5190               DO  k = logc_kbounds(1,i), logc_kbounds(2,i)
    50355191!
    50365192!--               Solid surface only on left/right side of the node           
     
    50555211         IF ( var == 'v' )  THEN
    50565212            DO  i = nxl, nxr
    5057 !
    5058 !--            Determine vertical index of topography top at grid point (j,i)
    5059                k_wall = get_topography_top_index_ji( j, i, TRIM( var ) )
    5060 
    5061                k = k_wall + 1
     5213               k = logc_kbounds(1,i)
    50625214               IF ( ( logc(2,k,i) /= 0 )  .AND.  ( logc(1,k,i) /= 0 ) )  THEN
    50635215                  k1   = logc(1,k,i)         
  • palm/trunk/SOURCE/surface_mod.f90

    r2805 r2812  
    2626! -----------------
    2727! $Id$
     28! Entries 'u_out', 'v_out' and 'w_out' removed from the functions
     29! get_topography_top_index and get_topography_top_index_ji 
     30!
     31! 2805 2018-02-14 17:00:09Z suehring
    2832! Bugfix in re-mapping surface elements in case of restart runs
    2933!
     
    21032107          CASE ( 's_out' )
    21042108             ibit = 24
    2105           CASE ( 'u_out' )
    2106              ibit = 26
    2107           CASE ( 'v_out' )
    2108              ibit = 27
    2109           CASE ( 'w_out' )
    2110              ibit = 28
    21112109          CASE DEFAULT
    21122110!
     
    21512149          CASE ( 's_out' )
    21522150             ibit = 24
    2153           CASE ( 'u_out' )
    2154              ibit = 26
    2155           CASE ( 'v_out' )
    2156              ibit = 27
    2157           CASE ( 'w_out' )
    2158              ibit = 28
    21592151          CASE DEFAULT
    21602152!
Note: See TracChangeset for help on using the changeset viewer.