Ignore:
Timestamp:
May 30, 2017 5:47:52 PM (4 years ago)
Author:
suehring
Message:

Adjustments according new topography and surface-modelling concept implemented

File:
1 edited

Legend:

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

    r2201 r2232  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! Rename wall_flags_0 and wall_flags_00 into advc_flags_1 and advc_flags_2,
     23! respectively.
     24! Set advc_flags_1/2 on basis of wall_flags_0/00 instead of nzb_s/u/v/w_inner.
     25! Setting advc_flags_1/2 also for downward-facing walls
    2326!
    2427! Former revisions:
     
    147150! vector version.
    148151! Degradation of the applied order of scheme is now steered by multiplying with
    149 ! Integer wall_flags_0. 2nd order scheme, WS3 and WS5 are calculated on each
     152! Integer advc_flags_1. 2nd order scheme, WS3 and WS5 are calculated on each
    150153! grid point and mulitplied with the appropriate flag.
    151154! 2nd order numerical dissipation term changed. Now the appropriate 2nd order
     
    406409
    407410       USE indices,                                                            &
    408            ONLY:  nbgp, nxl, nxlu, nxr, nyn, nys, nysv, nzb, nzb_s_inner,      &
    409                   nzb_u_inner, nzb_v_inner, nzb_w_inner, nzt, wall_flags_0,    &
    410                   wall_flags_00
     411           ONLY:  advc_flags_1, advc_flags_2, nbgp, nxl, nxlu, nxr, nyn, nys,  &
     412                  nysv, nzb, nzt, wall_flags_0
    411413
    412414       USE kinds
     
    414416       IMPLICIT NONE
    415417
    416        INTEGER(iwp) ::  i  !< index variable along x
    417        INTEGER(iwp) ::  j  !< index variable along y
    418        INTEGER(iwp) ::  k  !< index variable along z
    419 
     418       INTEGER(iwp) ::  i     !< index variable along x
     419       INTEGER(iwp) ::  j     !< index variable along y
     420       INTEGER(iwp) ::  k     !< index variable along z
     421       INTEGER(iwp) ::  k_mm  !< dummy index along z
     422       INTEGER(iwp) ::  k_pp  !< dummy index along z
     423       INTEGER(iwp) ::  k_ppp !< dummy index along z
     424       
    420425       LOGICAL      ::  flag_set !< steering variable for advection flags
    421426   
     
    425430!--       Set flags to steer the degradation of the advection scheme in advec_ws
    426431!--       near topography, inflow- and outflow boundaries as well as bottom and
    427 !--       top of model domain. wall_flags_0 remains zero for all non-prognostic
     432!--       top of model domain. advc_flags_1 remains zero for all non-prognostic
    428433!--       grid points.
    429434          DO  i = nxl, nxr
    430435             DO  j = nys, nyn
    431                 DO  k = nzb_s_inner(j,i)+1, nzt
     436                DO  k = nzb+1, nzt
    432437!
    433438!--                scalar - x-direction
    434439!--                WS1 (0), WS3 (1), WS5 (2)
    435                    IF ( ( k <= nzb_s_inner(j,i+1) .OR. k <= nzb_s_inner(j,i+2) &   
    436                      .OR. k <= nzb_s_inner(j,i-1) )                            &
    437                        .OR. ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
    438                               .AND. i == nxl   )    .OR.                       &
     440                   IF ( ( .NOT. BTEST(wall_flags_0(k,j,i+1),0)                 &
     441                    .OR.  .NOT. BTEST(wall_flags_0(k,j,i+2),0)                 &   
     442                    .OR.  .NOT. BTEST(wall_flags_0(k,j,i-1),0) )               &
     443                      .OR.  ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
     444                            .AND.  i == nxl   )                                &
     445                      .OR.  ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )    &
     446                            .AND.  i == nxr   ) )                              &
     447                   THEN
     448                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 0 )
     449                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j,i+3),0)             &
     450                       .AND.        BTEST(wall_flags_0(k,j,i+1),0)             &
     451                       .AND.        BTEST(wall_flags_0(k,j,i+2),0)             &
     452                       .AND.        BTEST(wall_flags_0(k,j,i-1),0)             &
     453                            )                       .OR.                       &
     454                            ( .NOT. BTEST(wall_flags_0(k,j,i-2),0)             &
     455                       .AND.        BTEST(wall_flags_0(k,j,i+1),0)             &
     456                       .AND.        BTEST(wall_flags_0(k,j,i+2),0)             &
     457                       .AND.        BTEST(wall_flags_0(k,j,i-1),0)             &
     458                            )                                                  &
     459                                                    .OR.                       &
    439460                            ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )    &
    440                               .AND. i == nxr   ) )                             &
     461                              .AND. i == nxr-1 )    .OR.                       &
     462                            ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
     463                              .AND. i == nxlu  ) )                             &
    441464                   THEN
    442                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 0 )
    443                    ELSEIF ( ( k <= nzb_s_inner(j,i+3) .AND. k > nzb_s_inner(j,i+1)&
    444                                                       .AND. k > nzb_s_inner(j,i+2)&
    445                                                       .AND. k > nzb_s_inner(j,i-1)&
    446                             )                       .OR.                          &
    447                             ( k <= nzb_s_inner(j,i-2) .AND. k > nzb_s_inner(j,i+1)&
    448                                                       .AND. k > nzb_s_inner(j,i+2)&
    449                                                       .AND. k > nzb_s_inner(j,i-1)&
    450                             )                                                     &
    451                                                     .OR.                          &
    452                             ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )       &
    453                               .AND. i == nxr-1 )    .OR.                          &
    454                             ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )       &
    455                               .AND. i == nxlu  ) )                                &
    456                    THEN
    457                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 1 )
    458                    ELSEIF ( k > nzb_s_inner(j,i+1) .AND. k > nzb_s_inner(j,i+2)&
    459                       .AND. k > nzb_s_inner(j,i+3) .AND. k > nzb_s_inner(j,i-1)&
    460                       .AND. k > nzb_s_inner(j,i-2) )                           &
     465                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 1 )
     466                   ELSEIF ( BTEST(wall_flags_0(k,j,i+1),0)                     &
     467                      .AND. BTEST(wall_flags_0(k,j,i+2),0)                     &
     468                      .AND. BTEST(wall_flags_0(k,j,i+3),0)                     &
     469                      .AND. BTEST(wall_flags_0(k,j,i-1),0)                     &
     470                      .AND. BTEST(wall_flags_0(k,j,i-2),0) )                   &
    461471                   THEN
    462                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 2 )
     472                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 2 )
    463473                   ENDIF
    464474!
    465475!--                scalar - y-direction
    466476!--                WS1 (3), WS3 (4), WS5 (5)
    467                    IF ( ( k <= nzb_s_inner(j+1,i)  .OR. k <= nzb_s_inner(j+2,i)   &   
    468                                                    .OR. k <= nzb_s_inner(j-1,i) ) &
    469                                                     .OR.                          &
    470                             ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )       &
    471                               .AND. j == nys   )    .OR.                          &
    472                             ( ( inflow_n .OR. outflow_n .OR. nest_bound_n )       &
    473                               .AND. j == nyn   ) )                                &
     477                   IF ( ( .NOT. BTEST(wall_flags_0(k,j+1,i),0)                 &
     478                    .OR.  .NOT. BTEST(wall_flags_0(k,j+2,i),0)                 &   
     479                    .OR.  .NOT. BTEST(wall_flags_0(k,j-1,i),0))                &
     480                      .OR.  ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
     481                            .AND.  j == nys   )                                &
     482                      .OR.  ( ( inflow_n .OR. outflow_n .OR. nest_bound_n )    &
     483                            .AND.  j == nyn   ) )                              &
    474484                   THEN
    475                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 3 )
     485                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 3 )
    476486!
    477487!--                WS3
    478                    ELSEIF ( ( k <= nzb_s_inner(j+3,i) .AND. k > nzb_s_inner(j+1,i)&
    479                                                       .AND. k > nzb_s_inner(j+2,i)&
    480                                                       .AND. k > nzb_s_inner(j-1,i)&
    481                             )                           .OR.                      &
    482                             ( k <= nzb_s_inner(j-2,i) .AND. k > nzb_s_inner(j+1,i)&
    483                                                       .AND. k > nzb_s_inner(j+2,i)&
    484                                                       .AND. k > nzb_s_inner(j-1,i)&
    485                             )                                                     &
    486                                                         .OR.                      &
    487                             ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )       &
    488                               .AND. j == nysv  )    .OR.                          &
    489                             ( ( inflow_n .OR. outflow_n .OR. nest_bound_n )       &
    490                               .AND. j == nyn-1 ) )                                &
     488                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j+3,i),0)             &
     489                       .AND.        BTEST(wall_flags_0(k,j+1,i),0)             &
     490                       .AND.        BTEST(wall_flags_0(k,j+2,i),0)             &
     491                       .AND.        BTEST(wall_flags_0(k,j-1,i),0)             &
     492                            )                       .OR.                       &
     493                            ( .NOT. BTEST(wall_flags_0(k,j-2,i),0)             &
     494                       .AND.        BTEST(wall_flags_0(k,j+1,i),0)             &
     495                       .AND.        BTEST(wall_flags_0(k,j+2,i),0)             &
     496                       .AND.        BTEST(wall_flags_0(k,j-1,i),0)             &
     497                            )                                                  &
     498                                                    .OR.                       &
     499                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
     500                              .AND. j == nysv  )    .OR.                       &
     501                            ( ( inflow_n .OR. outflow_n .OR. nest_bound_n )    &
     502                              .AND. j == nyn-1 ) )                             &         
    491503                   THEN
    492                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 4 )
     504                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 4 )
    493505!
    494506!--                WS5
    495                    ELSEIF ( k > nzb_s_inner(j+1,i) .AND. k > nzb_s_inner(j+2,i)&
    496                       .AND. k > nzb_s_inner(j+3,i) .AND. k > nzb_s_inner(j-1,i)&
    497                       .AND. k > nzb_s_inner(j-2,i) )                           &
     507                   ELSEIF ( BTEST(wall_flags_0(k,j+1,i),0)                     &
     508                      .AND. BTEST(wall_flags_0(k,j+2,i),0)                     &
     509                      .AND. BTEST(wall_flags_0(k,j+3,i),0)                     &
     510                      .AND. BTEST(wall_flags_0(k,j-1,i),0)                     &
     511                      .AND. BTEST(wall_flags_0(k,j-2,i),0) )                   &
    498512                   THEN
    499                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 5 )
     513                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 5 )
    500514                   ENDIF
    501515!
    502516!--                scalar - z-direction
    503517!--                WS1 (6), WS3 (7), WS5 (8)
     518                   IF ( k == nzb+1 )  THEN
     519                      k_mm = nzb
     520                   ELSE
     521                      k_mm = k - 2
     522                   ENDIF
     523                   IF ( k > nzt-1 )  THEN
     524                      k_pp = nzt+1
     525                   ELSE
     526                      k_pp = k + 2
     527                   ENDIF
     528                   IF ( k > nzt-2 )  THEN
     529                      k_ppp = nzt+1
     530                   ELSE
     531                      k_ppp = k + 3
     532                   ENDIF
     533
    504534                   flag_set = .FALSE.
    505                    IF ( k == nzb_s_inner(j,i) + 1 .OR. k == nzt )  THEN
    506                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 6 )
     535                   IF ( .NOT. BTEST(wall_flags_0(k-1,j,i),0)  .AND.            &
     536                              BTEST(wall_flags_0(k,j,i),0)    .OR.             &
     537                        .NOT. BTEST(wall_flags_0(k_pp,j,i),0) .AND.            &                             
     538                              BTEST(wall_flags_0(k,j,i),0)    .OR.             &
     539                        k == nzt )                                             &
     540                   THEN
     541                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 6 )
    507542                      flag_set = .TRUE.
    508                    ELSEIF ( k == nzb_s_inner(j,i) + 2 .OR. k == nzt - 1 )  THEN
    509                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 7 )
     543                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k_mm,j,i),0)    .OR.    &
     544                              .NOT. BTEST(wall_flags_0(k_ppp,j,i),0) ) .AND.   &
     545                                  BTEST(wall_flags_0(k-1,j,i),0)  .AND.        &
     546                                  BTEST(wall_flags_0(k,j,i),0)    .AND.        &
     547                                  BTEST(wall_flags_0(k+1,j,i),0)  .AND.        &
     548                                  BTEST(wall_flags_0(k_pp,j,i),0) .OR.         &   
     549                            k == nzt - 1 )                                     &
     550                   THEN
     551                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 7 )
    510552                      flag_set = .TRUE.
    511                    ELSEIF ( k > nzb_s_inner(j,i) .AND. .NOT. flag_set )  THEN
    512                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 8 )
     553                   ELSEIF ( BTEST(wall_flags_0(k_mm,j,i),0)                    &
     554                     .AND.  BTEST(wall_flags_0(k-1,j,i),0)                     &
     555                     .AND.  BTEST(wall_flags_0(k,j,i),0)                       &
     556                     .AND.  BTEST(wall_flags_0(k+1,j,i),0)                     &
     557                     .AND.  BTEST(wall_flags_0(k_pp,j,i),0)                    &
     558                     .AND.  BTEST(wall_flags_0(k_ppp,j,i),0)                   &
     559                     .AND. .NOT. flag_set )                                    &
     560                   THEN
     561                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 8 )
    513562                   ENDIF
    514563
     
    520569       IF ( momentum_advec == 'ws-scheme' )  THEN
    521570!
    522 !--       Set wall_flags_0 to steer the degradation of the advection scheme in advec_ws
     571!--       Set advc_flags_1 to steer the degradation of the advection scheme in advec_ws
    523572!--       near topography, inflow- and outflow boundaries as well as bottom and
    524 !--       top of model domain. wall_flags_0 remains zero for all non-prognostic
     573!--       top of model domain. advc_flags_1 remains zero for all non-prognostic
    525574!--       grid points.
    526575          DO  i = nxl, nxr
     
    532581!--                in order to handle the left/south flux.
    533582!--                near vertical walls.
    534                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
    535                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
     583                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 9 )
     584                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 12 )
    536585!
    537586!--                u component - x-direction
    538587!--                WS1 (9), WS3 (10), WS5 (11)
    539                    IF ( k <= nzb_u_inner(j,i+1)     .OR.                       &
     588                   IF ( .NOT. BTEST(wall_flags_0(k,j,i+1),1)  .OR.             &
    540589                            ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
    541590                              .AND. i <= nxlu  )    .OR.                       &
     
    543592                              .AND. i == nxr   ) )                             &
    544593                   THEN
    545                        wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 9 )
    546                    ELSEIF ( ( k <= nzb_u_inner(j,i+2) .AND.                    &
    547                               k >  nzb_u_inner(j,i+1) ) .OR.                   &
    548                               k <= nzb_u_inner(j,i-1)                          &
     594                       advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 9 )
     595                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j,i+2),1)  .AND.      &
     596                                    BTEST(wall_flags_0(k,j,i+1),1)  .OR.       &
     597                              .NOT. BTEST(wall_flags_0(k,j,i-1),1) )           &
    549598                                                        .OR.                   &
    550599                            ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )    &
     
    553602                              .AND. i == nxlu+1) )                             &
    554603                   THEN
    555                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 10 )
     604                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 10 )
    556605!
    557606!--                   Clear flag for WS1
    558                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 9 )
    559                    ELSEIF ( k > nzb_u_inner(j,i+1) .AND. k > nzb_u_inner(j,i+2)   &
    560                                                    .AND. k > nzb_u_inner(j,i-1) ) &
     607                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 9 )
     608                   ELSEIF ( BTEST(wall_flags_0(k,j,i+1),1)  .AND.              &
     609                            BTEST(wall_flags_0(k,j,i+2),1)  .AND.              &
     610                            BTEST(wall_flags_0(k,j,i-1),1) )                   &
    561611                   THEN   
    562                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 11 )
     612                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 11 )
    563613!
    564614!--                   Clear flag for WS1
    565                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 9 )
     615                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 9 )
    566616                   ENDIF
    567617!
    568618!--                u component - y-direction
    569619!--                WS1 (12), WS3 (13), WS5 (14)
    570                    IF ( k <= nzb_u_inner(j+1,i) .OR.                           &
     620                   IF ( .NOT. BTEST(wall_flags_0(k,j+1,i),1)   .OR.            &
    571621                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
    572622                              .AND. j == nys   )    .OR.                       &
     
    574624                              .AND. j == nyn   ) )                             &
    575625                   THEN
    576                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 12 )
    577                    ELSEIF ( ( k <= nzb_u_inner(j+2,i) .AND.                    &
    578                               k >  nzb_u_inner(j+1,i) ) .OR.                   &
    579                               k <= nzb_u_inner(j-1,i)                          &
     626                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 12 )
     627                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j+2,i),1)  .AND.      &
     628                                    BTEST(wall_flags_0(k,j+1,i),1)  .OR.       &
     629                              .NOT. BTEST(wall_flags_0(k,j-1,i),1) )           &
    580630                                                        .OR.                   &
    581631                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
     
    584634                              .AND. j == nyn-1 ) )                             &
    585635                   THEN
    586                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 13 )
     636                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 13 )
    587637!
    588638!--                   Clear flag for WS1
    589                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 12 )
    590                    ELSEIF ( k > nzb_u_inner(j+1,i) .AND. k > nzb_u_inner(j+2,i)   &
    591                                                    .AND. k > nzb_u_inner(j-1,i) ) &
     639                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 12 )
     640                   ELSEIF ( BTEST(wall_flags_0(k,j+1,i),1)  .AND.              &
     641                            BTEST(wall_flags_0(k,j+2,i),1)  .AND.              &
     642                            BTEST(wall_flags_0(k,j-1,i),1) )                   &
    592643                   THEN
    593                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 14 )
     644                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 14 )
    594645!
    595646!--                   Clear flag for WS1
    596                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 12 )
     647                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 12 )
    597648                   ENDIF
    598649!
    599650!--                u component - z-direction
    600651!--                WS1 (15), WS3 (16), WS5 (17)
     652                   IF ( k == nzb+1 )  THEN
     653                      k_mm = nzb
     654                   ELSE
     655                      k_mm = k - 2
     656                   ENDIF
     657                   IF ( k > nzt-1 )  THEN
     658                      k_pp = nzt+1
     659                   ELSE
     660                      k_pp = k + 2
     661                   ENDIF
     662                   IF ( k > nzt-2 )  THEN
     663                      k_ppp = nzt+1
     664                   ELSE
     665                      k_ppp = k + 3
     666                   ENDIF                   
     667
    601668                   flag_set = .FALSE.
    602                    IF ( k == nzb_u_inner(j,i) + 1 .OR. k == nzt )  THEN
    603                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 15 )
     669                   IF ( .NOT. BTEST(wall_flags_0(k-1,j,i),1)  .AND.            &
     670                              BTEST(wall_flags_0(k,j,i),1)    .OR.             &
     671                        .NOT. BTEST(wall_flags_0(k_pp,j,i),1) .AND.            &                             
     672                              BTEST(wall_flags_0(k,j,i),1)    .OR.             &
     673                        k == nzt )                                             &
     674                   THEN
     675                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 15 )
     676                      flag_set = .TRUE.                     
     677                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k_mm,j,i),1)    .OR.    &
     678                              .NOT. BTEST(wall_flags_0(k_ppp,j,i),1) ) .AND.   &
     679                                  BTEST(wall_flags_0(k-1,j,i),1)  .AND.        &
     680                                  BTEST(wall_flags_0(k,j,i),1)    .AND.        &
     681                                  BTEST(wall_flags_0(k+1,j,i),1)  .AND.        &
     682                                  BTEST(wall_flags_0(k_pp,j,i),1) .OR.         &
     683                                  k == nzt - 1 )                               &
     684                   THEN
     685                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 16 )
    604686                      flag_set = .TRUE.
    605                    ELSEIF ( k == nzb_u_inner(j,i) + 2 .OR. k == nzt - 1 )  THEN
    606                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 16 )
    607                       flag_set = .TRUE.
    608                    ELSEIF ( k > nzb_u_inner(j,i) .AND. .NOT. flag_set )  THEN
    609                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 17 )
     687                   ELSEIF ( BTEST(wall_flags_0(k_mm,j,i),1)  .AND.             &
     688                            BTEST(wall_flags_0(k-1,j,i),1)   .AND.             &
     689                            BTEST(wall_flags_0(k,j,i),1)     .AND.             &
     690                            BTEST(wall_flags_0(k+1,j,i),1)   .AND.             &
     691                            BTEST(wall_flags_0(k_pp,j,i),1)  .AND.             &
     692                            BTEST(wall_flags_0(k_ppp,j,i),1) .AND.             &
     693                            .NOT. flag_set )                                   &
     694                   THEN
     695                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 17 )
    610696                   ENDIF
    611697
     
    621707!--                Since fluxes are swapped in advec_ws.f90, this is necessary to
    622708!--                in order to handle the left/south flux.
    623                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
    624                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
     709                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 18 )
     710                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 21 )
    625711!
    626712!--                v component - x-direction
    627713!--                WS1 (18), WS3 (19), WS5 (20)
    628                    IF ( k <= nzb_v_inner(j,i+1) .OR.                           &
     714                   IF ( .NOT. BTEST(wall_flags_0(k,j,i+1),2)  .OR.             &
    629715                            ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
    630716                              .AND. i == nxl   )    .OR.                       &
     
    632718                              .AND. i == nxr   ) )                             &
    633719                  THEN
    634                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 18 )
     720                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 18 )
    635721!
    636722!--                WS3
    637                    ELSEIF ( ( k <= nzb_v_inner(j,i+2) .AND.                    &
    638                               k >  nzb_v_inner(j,i+1) ) .OR.                   &
    639                               k <= nzb_v_inner(j,i-1)                          &
     723                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j,i+2),2)   .AND.     &
     724                                    BTEST(wall_flags_0(k,j,i+1),2) ) .OR.      &
     725                              .NOT. BTEST(wall_flags_0(k,j,i-1),2)             &
    640726                                                    .OR.                       &
    641727                            ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )    &
     
    644730                              .AND. i == nxlu  ) )                             &
    645731                   THEN
    646                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 19 )
     732                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 19 )
    647733!
    648734!--                   Clear flag for WS1
    649                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 18 )
    650                    ELSEIF ( k > nzb_v_inner(j,i+1) .AND. k > nzb_v_inner(j,i+2)   &
    651                                                    .AND. k > nzb_v_inner(j,i-1) ) &
     735                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 18 )
     736                   ELSEIF ( BTEST(wall_flags_0(k,j,i+1),2)  .AND.              &
     737                            BTEST(wall_flags_0(k,j,i+2),2)  .AND.              &
     738                            BTEST(wall_flags_0(k,j,i-1),2) )                   &
    652739                   THEN
    653                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 20 )
     740                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 20 )
    654741!
    655742!--                   Clear flag for WS1
    656                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 18 )
     743                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 18 )
    657744                   ENDIF
    658745!
    659746!--                v component - y-direction
    660747!--                WS1 (21), WS3 (22), WS5 (23)
    661                    IF ( k <= nzb_v_inner(j+1,i) .OR.                           &
     748                   IF ( .NOT. BTEST(wall_flags_0(k,j+1,i),2) .OR.              &
    662749                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
    663750                              .AND. j <= nysv  )    .OR.                       &
     
    665752                              .AND. j == nyn   ) )                             &
    666753                   THEN
    667                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 21 )
    668                    ELSEIF ( ( k <= nzb_v_inner(j+2,i) .AND.                    &
    669                               k >  nzb_v_inner(j+1,i) ) .OR.                   &
    670                               k <= nzb_v_inner(j-1,i)                          &
     754                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 21 )
     755                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j+2,i),2)  .AND.      &
     756                                    BTEST(wall_flags_0(k,j+1,i),2)  .OR.       &
     757                              .NOT. BTEST(wall_flags_0(k,j-1,i),2) )           &
    671758                                                        .OR.                   &
    672759                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
     
    675762                              .AND. j == nyn-1 ) )                             &
    676763                   THEN
    677                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 22 )
     764                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 22 )
    678765!
    679766!--                   Clear flag for WS1
    680                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 21 )
    681                    ELSEIF ( k > nzb_v_inner(j+1,i) .AND. k > nzb_v_inner(j+2,i)   &
    682                                                    .AND. k > nzb_v_inner(j-1,i) ) &
     767                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 21 )
     768                   ELSEIF ( BTEST(wall_flags_0(k,j+1,i),2)  .AND.              &
     769                            BTEST(wall_flags_0(k,j+2,i),2)  .AND.              &
     770                            BTEST(wall_flags_0(k,j-1,i),2) )                   &
    683771                   THEN
    684                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 23 )
     772                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 23 )
    685773!
    686774!--                   Clear flag for WS1
    687                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 21 )
     775                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 21 )
    688776                   ENDIF
    689777!
    690778!--                v component - z-direction
    691779!--                WS1 (24), WS3 (25), WS5 (26)
     780                   IF ( k == nzb+1 )  THEN
     781                      k_mm = nzb
     782                   ELSE
     783                      k_mm = k - 2
     784                   ENDIF
     785                   IF ( k > nzt-1 )  THEN
     786                      k_pp = nzt+1
     787                   ELSE
     788                      k_pp = k + 2
     789                   ENDIF
     790                   IF ( k > nzt-2 )  THEN
     791                      k_ppp = nzt+1
     792                   ELSE
     793                      k_ppp = k + 3
     794                   ENDIF 
     795                   
    692796                   flag_set = .FALSE.
    693                    IF ( k == nzb_v_inner(j,i) + 1 .OR. k == nzt )  THEN
    694                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 24 )
     797                   IF ( .NOT. BTEST(wall_flags_0(k-1,j,i),2)  .AND.            &
     798                              BTEST(wall_flags_0(k,j,i),2)    .OR.             &
     799                        .NOT. BTEST(wall_flags_0(k_pp,j,i),2) .AND.            &                             
     800                              BTEST(wall_flags_0(k,j,i),2)    .OR.             &
     801                        k == nzt )                                             &
     802                   THEN
     803                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 24 )
    695804                      flag_set = .TRUE.
    696                    ELSEIF ( k == nzb_v_inner(j,i) + 2 .OR. k == nzt - 1 )  THEN
    697                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 25 )
     805                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k_mm,j,i),2)    .OR.    &
     806                              .NOT. BTEST(wall_flags_0(k_ppp,j,i),2) ) .AND.   &
     807                                  BTEST(wall_flags_0(k-1,j,i),2)  .AND.        &
     808                                  BTEST(wall_flags_0(k,j,i),2)    .AND.        &
     809                                  BTEST(wall_flags_0(k+1,j,i),2)  .AND.        &
     810                                  BTEST(wall_flags_0(k_pp,j,i),2)  .OR.        &
     811                                  k == nzt - 1 )                               &
     812                   THEN
     813                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 25 )
    698814                      flag_set = .TRUE.
    699                    ELSEIF ( k > nzb_v_inner(j,i) .AND. .NOT. flag_set )  THEN
    700                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 26 )
     815                   ELSEIF ( BTEST(wall_flags_0(k_mm,j,i),2)  .AND.             &
     816                            BTEST(wall_flags_0(k-1,j,i),2)   .AND.             &
     817                            BTEST(wall_flags_0(k,j,i),2)     .AND.             &
     818                            BTEST(wall_flags_0(k+1,j,i),2)   .AND.             &
     819                            BTEST(wall_flags_0(k_pp,j,i),2)  .AND.             &
     820                            BTEST(wall_flags_0(k_ppp,j,i),2) .AND.             &
     821                            .NOT. flag_set )                                   &
     822                   THEN
     823                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 26 )
    701824                   ENDIF
    702825
     
    711834!--                Since fluxes are swapped in advec_ws.f90, this is necessary to
    712835!--                in order to handle the left/south flux.
    713                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
    714                    wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
     836                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 27 )
     837                   advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 30 )
    715838!
    716839!--                w component - x-direction
    717840!--                WS1 (27), WS3 (28), WS5 (29)
    718                    IF ( k <= nzb_w_inner(j,i+1) .OR.                           &
     841                   IF ( .NOT. BTEST(wall_flags_0(k,j,i+1),3) .OR.              &
    719842                            ( ( inflow_l .OR. outflow_l .OR. nest_bound_l )    &
    720843                              .AND. i == nxl   )    .OR.                       &
     
    722845                              .AND. i == nxr   ) )                             &
    723846                   THEN
    724                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 27 )
    725                    ELSEIF ( ( k <= nzb_w_inner(j,i+2) .AND.                    &
    726                               k >  nzb_w_inner(j,i+1) ) .OR.                   &
    727                               k <= nzb_w_inner(j,i-1)                          &
     847                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 27 )
     848                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j,i+2),3)  .AND.      &
     849                                    BTEST(wall_flags_0(k,j,i+1),3)  .OR.       &
     850                              .NOT. BTEST(wall_flags_0(k,j,i-1),3) )           &
    728851                                                        .OR.                   &
    729852                            ( ( inflow_r .OR. outflow_r .OR. nest_bound_r )    &
     
    732855                              .AND. i == nxlu  ) )                             &
    733856                   THEN
    734                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 28 )
     857                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 28 )
    735858!   
    736859!--                   Clear flag for WS1
    737                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 27 )
    738                    ELSEIF ( k > nzb_w_inner(j,i+1) .AND. k > nzb_w_inner(j,i+2)   &
    739                                                    .AND. k > nzb_w_inner(j,i-1) ) &
     860                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 27 )
     861                   ELSEIF ( BTEST(wall_flags_0(k,j,i+1),3)  .AND.              &
     862                            BTEST(wall_flags_0(k,j,i+2),3)  .AND.              &
     863                            BTEST(wall_flags_0(k,j,i-1),3) )                   &
    740864                   THEN
    741                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i),29 )
     865                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i),29 )
    742866!   
    743867!--                   Clear flag for WS1
    744                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 27 )
     868                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 27 )
    745869                   ENDIF
    746870!
    747871!--                w component - y-direction
    748872!--                WS1 (30), WS3 (31), WS5 (32)
    749                    IF ( k <= nzb_w_inner(j+1,i) .OR.                           &
     873                   IF ( .NOT. BTEST(wall_flags_0(k,j+1,i),3) .OR.              &
    750874                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
    751875                              .AND. j == nys   )    .OR.                       &
     
    753877                              .AND. j == nyn   ) )                             &
    754878                   THEN
    755                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 30 )
    756                    ELSEIF ( ( k <= nzb_w_inner(j+2,i) .AND.                    &
    757                               k >  nzb_w_inner(j+1,i) ) .OR.                   &
    758                                k <= nzb_w_inner(j-1,i)                         &
     879                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 30 )
     880                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k,j+2,i),3)  .AND.      &
     881                                    BTEST(wall_flags_0(k,j+1,i),3)  .OR.       &
     882                              .NOT. BTEST(wall_flags_0(k,j-1,i),3) )           &
    759883                                                        .OR.                   &
    760884                            ( ( inflow_s .OR. outflow_s .OR. nest_bound_s )    &
     
    763887                              .AND. j == nyn-1 ) )                             &
    764888                   THEN
    765                       wall_flags_0(k,j,i) = IBSET( wall_flags_0(k,j,i), 31 )
     889                      advc_flags_1(k,j,i) = IBSET( advc_flags_1(k,j,i), 31 )
    766890!
    767891!--                   Clear flag for WS1
    768                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 30 )
    769                    ELSEIF ( k > nzb_w_inner(j+1,i) .AND. k > nzb_w_inner(j+2,i)   &
    770                                                    .AND. k > nzb_w_inner(j-1,i) ) &
     892                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 30 )
     893                   ELSEIF ( BTEST(wall_flags_0(k,j+1,i),3)  .AND.              &
     894                            BTEST(wall_flags_0(k,j+2,i),3)  .AND.              &
     895                            BTEST(wall_flags_0(k,j-1,i),3) )                   &
    771896                   THEN
    772                       wall_flags_00(k,j,i) = IBSET( wall_flags_00(k,j,i), 0 )
     897                      advc_flags_2(k,j,i) = IBSET( advc_flags_2(k,j,i), 0 )
    773898!
    774899!--                   Clear flag for WS1
    775                       wall_flags_0(k,j,i) = IBCLR( wall_flags_0(k,j,i), 30 )
     900                      advc_flags_1(k,j,i) = IBCLR( advc_flags_1(k,j,i), 30 )
    776901                   ENDIF
    777902!
     
    779904!--                WS1 (33), WS3 (34), WS5 (35)
    780905                   flag_set = .FALSE.
    781                    IF ( k == nzb_w_inner(j,i) .OR. k == nzb_w_inner(j,i) + 1   &
    782                                               .OR. k == nzt )  THEN
     906                   IF ( k == nzb+1 )  THEN
     907                      k_mm = nzb
     908                   ELSE
     909                      k_mm = k - 2
     910                   ENDIF
     911                   IF ( k > nzt-1 )  THEN
     912                      k_pp = nzt+1
     913                   ELSE
     914                      k_pp = k + 2
     915                   ENDIF
     916                   IF ( k > nzt-2 )  THEN
     917                      k_ppp = nzt+1
     918                   ELSE
     919                      k_ppp = k + 3
     920                   ENDIF 
     921                   
     922                   IF ( ( .NOT. BTEST(wall_flags_0(k-1,j,i),3)  .AND.          &
     923                          .NOT. BTEST(wall_flags_0(k,j,i),3)    .AND.          &
     924                                BTEST(wall_flags_0(k+1,j,i),3) )  .OR.         &
     925                        ( .NOT. BTEST(wall_flags_0(k-1,j,i),3)  .AND.          &
     926                                BTEST(wall_flags_0(k,j,i),3) )  .OR.           &
     927                        ( .NOT. BTEST(wall_flags_0(k+1,j,i),3)  .AND.          &
     928                                BTEST(wall_flags_0(k,j,i),3) )  .OR.           &       
     929                        k == nzt )                                             &
     930                   THEN
    783931!
    784932!--                   Please note, at k == nzb_w_inner(j,i) a flag is explictely
     
    787935!--                   because flux_t(nzb_w_inner(j,i)) is used for the tendency
    788936!--                   at k == nzb_w_inner(j,i)+1.
    789                       wall_flags_00(k,j,i) = IBSET( wall_flags_00(k,j,i), 1 )
     937                      advc_flags_2(k,j,i) = IBSET( advc_flags_2(k,j,i), 1 )
    790938                      flag_set = .TRUE.
    791                    ELSEIF ( k == nzb_w_inner(j,i) + 2 .OR. k == nzt - 1 )  THEN
    792                       wall_flags_00(k,j,i) = IBSET( wall_flags_00(k,j,i), 2 )
     939                   ELSEIF ( ( .NOT. BTEST(wall_flags_0(k_mm,j,i),3)     .OR.   &
     940                              .NOT. BTEST(wall_flags_0(k_ppp,j,i),3) ) .AND.   &
     941                                    BTEST(wall_flags_0(k-1,j,i),3)  .AND.      &
     942                                    BTEST(wall_flags_0(k,j,i),3)    .AND.      &
     943                                    BTEST(wall_flags_0(k+1,j,i),3)  .OR.       &
     944                            k == nzt - 1 )                                     &
     945                   THEN
     946                      advc_flags_2(k,j,i) = IBSET( advc_flags_2(k,j,i), 2 )
    793947                      flag_set = .TRUE.
    794                    ELSEIF ( k > nzb_w_inner(j,i) .AND. .NOT. flag_set )  THEN
    795                       wall_flags_00(k,j,i) = IBSET( wall_flags_00(k,j,i), 3 )
     948                   ELSEIF ( BTEST(wall_flags_0(k_mm,j,i),3)  .AND.             &
     949                            BTEST(wall_flags_0(k-1,j,i),3)   .AND.             &
     950                            BTEST(wall_flags_0(k,j,i),3)     .AND.             &
     951                            BTEST(wall_flags_0(k+1,j,i),3)   .AND.             &
     952                            BTEST(wall_flags_0(k_pp,j,i),3)  .AND.             &
     953                            BTEST(wall_flags_0(k_ppp,j,i),3) .AND.             &
     954                            .NOT. flag_set )                                   &
     955                   THEN
     956                      advc_flags_2(k,j,i) = IBSET( advc_flags_2(k,j,i), 3 )
    796957                   ENDIF
    797958
     
    809970!
    810971!--       Exchange ghost points for advection flags
    811           CALL exchange_horiz_int( wall_flags_0, nbgp )
    812           CALL exchange_horiz_int( wall_flags_00, nbgp )
     972          CALL exchange_horiz_int( advc_flags_1, nbgp )
     973          CALL exchange_horiz_int( advc_flags_2, nbgp )
    813974!
    814975!--       Set boundary flags at inflow and outflow boundary in case of
    815976!--       non-cyclic boundary conditions.
    816977         IF ( inflow_l .OR. outflow_l .OR. nest_bound_l )  THEN
    817              wall_flags_0(:,:,nxl-1)  = wall_flags_0(:,:,nxl)
    818              wall_flags_00(:,:,nxl-1) = wall_flags_00(:,:,nxl)
     978             advc_flags_1(:,:,nxl-1) = advc_flags_1(:,:,nxl)
     979             advc_flags_2(:,:,nxl-1) = advc_flags_2(:,:,nxl)
    819980         ENDIF
    820981
    821982         IF ( inflow_r .OR. outflow_r .OR. nest_bound_r )  THEN
    822             wall_flags_0(:,:,nxr+1)  = wall_flags_0(:,:,nxr)
    823             wall_flags_00(:,:,nxr+1) = wall_flags_00(:,:,nxr)
     983            advc_flags_1(:,:,nxr+1) = advc_flags_1(:,:,nxr)
     984            advc_flags_2(:,:,nxr+1) = advc_flags_2(:,:,nxr)
    824985          ENDIF
    825986
    826987          IF ( inflow_n .OR. outflow_n .OR. nest_bound_n )  THEN
    827              wall_flags_0(:,nyn+1,:)  = wall_flags_0(:,nyn,:)
    828              wall_flags_00(:,nyn+1,:) = wall_flags_00(:,nyn,:)
     988             advc_flags_1(:,nyn+1,:) = advc_flags_1(:,nyn,:)
     989             advc_flags_2(:,nyn+1,:) = advc_flags_2(:,nyn,:)
    829990          ENDIF
    830991
    831992          IF ( inflow_s .OR. outflow_s  .OR. nest_bound_s )  THEN
    832              wall_flags_0(:,nys-1,:)  = wall_flags_0(:,nys,:)
    833              wall_flags_00(:,nys-1,:) = wall_flags_00(:,nys,:)
     993             advc_flags_1(:,nys-1,:) = advc_flags_1(:,nys,:)
     994             advc_flags_2(:,nys-1,:) = advc_flags_2(:,nys,:)
    834995          ENDIF
    835996 
     
    9101071       USE indices,                                                            &
    9111072           ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzb_max,    &
    912                   nzt, wall_flags_0
     1073                  nzt, advc_flags_1
    9131074
    9141075       USE kinds
     
    9761137          DO  k = nzb+1, nzb_max
    9771138
    978              ibit5 = IBITS(wall_flags_0(k,j-1,i),5,1)
    979              ibit4 = IBITS(wall_flags_0(k,j-1,i),4,1)
    980              ibit3 = IBITS(wall_flags_0(k,j-1,i),3,1)
     1139             ibit5 = IBITS(advc_flags_1(k,j-1,i),5,1)
     1140             ibit4 = IBITS(advc_flags_1(k,j-1,i),4,1)
     1141             ibit3 = IBITS(advc_flags_1(k,j-1,i),3,1)
    9811142
    9821143             v_comp                  = v(k,j,i) - v_gtrans
     
    10371198          DO  k = nzb+1, nzb_max
    10381199
    1039              ibit2 = IBITS(wall_flags_0(k,j,i-1),2,1)
    1040              ibit1 = IBITS(wall_flags_0(k,j,i-1),1,1)
    1041              ibit0 = IBITS(wall_flags_0(k,j,i-1),0,1)
     1200             ibit2 = IBITS(advc_flags_1(k,j,i-1),2,1)
     1201             ibit1 = IBITS(advc_flags_1(k,j,i-1),1,1)
     1202             ibit0 = IBITS(advc_flags_1(k,j,i-1),0,1)
    10421203
    10431204             u_comp                     = u(k,j,i) - u_gtrans
     
    11061267!--       flux at the end.
    11071268
    1108           ibit2 = IBITS(wall_flags_0(k,j,i),2,1)
    1109           ibit1 = IBITS(wall_flags_0(k,j,i),1,1)
    1110           ibit0 = IBITS(wall_flags_0(k,j,i),0,1)
     1269          ibit2 = IBITS(advc_flags_1(k,j,i),2,1)
     1270          ibit1 = IBITS(advc_flags_1(k,j,i),1,1)
     1271          ibit0 = IBITS(advc_flags_1(k,j,i),0,1)
    11111272
    11121273          u_comp    = u(k,j,i+1) - u_gtrans
     
    11411302                                       )
    11421303
    1143           ibit5 = IBITS(wall_flags_0(k,j,i),5,1)
    1144           ibit4 = IBITS(wall_flags_0(k,j,i),4,1)
    1145           ibit3 = IBITS(wall_flags_0(k,j,i),3,1)
     1304          ibit5 = IBITS(advc_flags_1(k,j,i),5,1)
     1305          ibit4 = IBITS(advc_flags_1(k,j,i),4,1)
     1306          ibit3 = IBITS(advc_flags_1(k,j,i),3,1)
    11461307
    11471308          v_comp    = v(k,j+1,i) - v_gtrans
     
    11781339!--       k index has to be modified near bottom and top, else array
    11791340!--       subscripts will be exceeded.
    1180           ibit8 = IBITS(wall_flags_0(k,j,i),8,1)
    1181           ibit7 = IBITS(wall_flags_0(k,j,i),7,1)
    1182           ibit6 = IBITS(wall_flags_0(k,j,i),6,1)
     1341          ibit8 = IBITS(advc_flags_1(k,j,i),8,1)
     1342          ibit7 = IBITS(advc_flags_1(k,j,i),7,1)
     1343          ibit6 = IBITS(advc_flags_1(k,j,i),6,1)
    11831344
    11841345          k_ppp = k + 3 * ibit8
     
    12201381!--       by a not sufficient reduction of divergences near topography.
    12211382          div         =   ( u(k,j,i+1) * ( ibit0 + ibit1 + ibit2 )             &
    1222                           - u(k,j,i)   * ( IBITS(wall_flags_0(k,j,i-1),0,1)    &
    1223                                          + IBITS(wall_flags_0(k,j,i-1),1,1)    &
    1224                                          + IBITS(wall_flags_0(k,j,i-1),2,1)    &
     1383                          - u(k,j,i)   * ( IBITS(advc_flags_1(k,j,i-1),0,1)    &
     1384                                         + IBITS(advc_flags_1(k,j,i-1),1,1)    &
     1385                                         + IBITS(advc_flags_1(k,j,i-1),2,1)    &
    12251386                                         )                                     &
    12261387                          ) * rho_air(k) * ddx                                 &
    12271388                        + ( v(k,j+1,i) * ( ibit3 + ibit4 + ibit5 )             &
    1228                           - v(k,j,i)   * ( IBITS(wall_flags_0(k,j-1,i),3,1)    &
    1229                                          + IBITS(wall_flags_0(k,j-1,i),4,1)    &
    1230                                          + IBITS(wall_flags_0(k,j-1,i),5,1)    &
     1389                          - v(k,j,i)   * ( IBITS(advc_flags_1(k,j-1,i),3,1)    &
     1390                                         + IBITS(advc_flags_1(k,j-1,i),4,1)    &
     1391                                         + IBITS(advc_flags_1(k,j-1,i),5,1)    &
    12311392                                         )                                     &
    12321393                          ) * rho_air(k) * ddy                                 &
     
    12341395                                         ( ibit6 + ibit7 + ibit8 )             &
    12351396                          - w(k-1,j,i) * rho_air_zw(k-1) *                     &
    1236                                          ( IBITS(wall_flags_0(k-1,j,i),6,1)    &
    1237                                          + IBITS(wall_flags_0(k-1,j,i),7,1)    &
    1238                                          + IBITS(wall_flags_0(k-1,j,i),8,1)    &
     1397                                         ( IBITS(advc_flags_1(k-1,j,i),6,1)    &
     1398                                         + IBITS(advc_flags_1(k-1,j,i),7,1)    &
     1399                                         + IBITS(advc_flags_1(k-1,j,i),8,1)    &
    12391400                                         )                                     &     
    12401401                          ) * ddzw(k)
     
    12871448!--       k index has to be modified near bottom and top, else array
    12881449!--       subscripts will be exceeded.
    1289           ibit8 = IBITS(wall_flags_0(k,j,i),8,1)
    1290           ibit7 = IBITS(wall_flags_0(k,j,i),7,1)
    1291           ibit6 = IBITS(wall_flags_0(k,j,i),6,1)
     1450          ibit8 = IBITS(advc_flags_1(k,j,i),8,1)
     1451          ibit7 = IBITS(advc_flags_1(k,j,i),7,1)
     1452          ibit6 = IBITS(advc_flags_1(k,j,i),6,1)
    12921453
    12931454          k_ppp = k + 3 * ibit8
     
    14501611
    14511612       USE indices,                                                           &
    1452            ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, wall_flags_0
     1613           ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, advc_flags_1
    14531614
    14541615       USE kinds
     
    15021663          DO  k = nzb+1, nzb_max
    15031664
    1504              ibit14 = IBITS(wall_flags_0(k,j-1,i),14,1)
    1505              ibit13 = IBITS(wall_flags_0(k,j-1,i),13,1)
    1506              ibit12 = IBITS(wall_flags_0(k,j-1,i),12,1)
     1665             ibit14 = IBITS(advc_flags_1(k,j-1,i),14,1)
     1666             ibit13 = IBITS(advc_flags_1(k,j-1,i),13,1)
     1667             ibit12 = IBITS(advc_flags_1(k,j-1,i),12,1)
    15071668
    15081669             v_comp      = v(k,j,i) + v(k,j,i-1) - gv
     
    15601721          DO  k = nzb+1, nzb_max
    15611722
    1562              ibit11 = IBITS(wall_flags_0(k,j,i-1),11,1)
    1563              ibit10 = IBITS(wall_flags_0(k,j,i-1),10,1)
    1564              ibit9  = IBITS(wall_flags_0(k,j,i-1),9,1)
     1723             ibit11 = IBITS(advc_flags_1(k,j,i-1),11,1)
     1724             ibit10 = IBITS(advc_flags_1(k,j,i-1),10,1)
     1725             ibit9  = IBITS(advc_flags_1(k,j,i-1),9,1)
    15651726
    15661727             u_comp_l         = u(k,j,i) + u(k,j,i-1) - gu
     
    16221783       DO  k = nzb+1, nzb_max
    16231784
    1624           ibit11 = IBITS(wall_flags_0(k,j,i),11,1)
    1625           ibit10 = IBITS(wall_flags_0(k,j,i),10,1)
    1626           ibit9  = IBITS(wall_flags_0(k,j,i),9,1)
     1785          ibit11 = IBITS(advc_flags_1(k,j,i),11,1)
     1786          ibit10 = IBITS(advc_flags_1(k,j,i),10,1)
     1787          ibit9  = IBITS(advc_flags_1(k,j,i),9,1)
    16271788
    16281789          u_comp(k) = u(k,j,i+1) + u(k,j,i)
     
    16571818                                                )
    16581819
    1659           ibit14 = IBITS(wall_flags_0(k,j,i),14,1)
    1660           ibit13 = IBITS(wall_flags_0(k,j,i),13,1)
    1661           ibit12 = IBITS(wall_flags_0(k,j,i),12,1)
     1820          ibit14 = IBITS(advc_flags_1(k,j,i),14,1)
     1821          ibit13 = IBITS(advc_flags_1(k,j,i),13,1)
     1822          ibit12 = IBITS(advc_flags_1(k,j,i),12,1)
    16621823
    16631824          v_comp    = v(k,j+1,i) + v(k,j+1,i-1) - gv
     
    16941855!--       k index has to be modified near bottom and top, else array
    16951856!--       subscripts will be exceeded.
    1696           ibit17 = IBITS(wall_flags_0(k,j,i),17,1)
    1697           ibit16 = IBITS(wall_flags_0(k,j,i),16,1)
    1698           ibit15 = IBITS(wall_flags_0(k,j,i),15,1)
     1857          ibit17 = IBITS(advc_flags_1(k,j,i),17,1)
     1858          ibit16 = IBITS(advc_flags_1(k,j,i),16,1)
     1859          ibit15 = IBITS(advc_flags_1(k,j,i),15,1)
    16991860
    17001861          k_ppp = k + 3 * ibit17
     
    17381899          div = ( ( u_comp(k)       * ( ibit9 + ibit10 + ibit11 )             &
    17391900                - ( u(k,j,i)   + u(k,j,i-1)   )                               &
    1740                                     * ( IBITS(wall_flags_0(k,j,i-1),9,1)      &
    1741                                       + IBITS(wall_flags_0(k,j,i-1),10,1)     &
    1742                                       + IBITS(wall_flags_0(k,j,i-1),11,1)     &
     1901                                    * ( IBITS(advc_flags_1(k,j,i-1),9,1)      &
     1902                                      + IBITS(advc_flags_1(k,j,i-1),10,1)     &
     1903                                      + IBITS(advc_flags_1(k,j,i-1),11,1)     &
    17431904                                      )                                       &
    17441905                  ) * rho_air(k) * ddx                                        &
    17451906               +  ( ( v_comp + gv ) * ( ibit12 + ibit13 + ibit14 )            &
    17461907                  - ( v(k,j,i)   + v(k,j,i-1 )  )                             &
    1747                                     * ( IBITS(wall_flags_0(k,j-1,i),12,1)     &
    1748                                       + IBITS(wall_flags_0(k,j-1,i),13,1)     &
    1749                                       + IBITS(wall_flags_0(k,j-1,i),14,1)     &
     1908                                    * ( IBITS(advc_flags_1(k,j-1,i),12,1)     &
     1909                                      + IBITS(advc_flags_1(k,j-1,i),13,1)     &
     1910                                      + IBITS(advc_flags_1(k,j-1,i),14,1)     &
    17501911                                      )                                       &
    17511912                  ) * rho_air(k) * ddy                                        &
    17521913               +  ( w_comp * rho_air_zw(k) * ( ibit15 + ibit16 + ibit17 )     &
    17531914                - ( w(k-1,j,i) + w(k-1,j,i-1) ) * rho_air_zw(k-1)             &
    1754                                     * ( IBITS(wall_flags_0(k-1,j,i),15,1)     &
    1755                                       + IBITS(wall_flags_0(k-1,j,i),16,1)     &
    1756                                       + IBITS(wall_flags_0(k-1,j,i),17,1)     &
     1915                                    * ( IBITS(advc_flags_1(k-1,j,i),15,1)     &
     1916                                      + IBITS(advc_flags_1(k-1,j,i),16,1)     &
     1917                                      + IBITS(advc_flags_1(k-1,j,i),17,1)     &
    17571918                                      )                                       & 
    17581919                  ) * ddzw(k)   &
     
    18231984!--       k index has to be modified near bottom and top, else array
    18241985!--       subscripts will be exceeded.
    1825           ibit17 = IBITS(wall_flags_0(k,j,i),17,1)
    1826           ibit16 = IBITS(wall_flags_0(k,j,i),16,1)
    1827           ibit15 = IBITS(wall_flags_0(k,j,i),15,1)
     1986          ibit17 = IBITS(advc_flags_1(k,j,i),17,1)
     1987          ibit16 = IBITS(advc_flags_1(k,j,i),16,1)
     1988          ibit15 = IBITS(advc_flags_1(k,j,i),15,1)
    18281989
    18291990          k_ppp = k + 3 * ibit17
     
    19422103
    19432104       USE indices,                                                            &
    1944            ONLY:  nxl, nxr, nyn, nys, nysv, nzb, nzb_max, nzt, wall_flags_0
     2105           ONLY:  nxl, nxr, nyn, nys, nysv, nzb, nzb_max, nzt, advc_flags_1
    19452106
    19462107       USE kinds
     
    19952156          DO  k = nzb+1, nzb_max
    19962157
    1997              ibit20 = IBITS(wall_flags_0(k,j,i-1),20,1)
    1998              ibit19 = IBITS(wall_flags_0(k,j,i-1),19,1)
    1999              ibit18 = IBITS(wall_flags_0(k,j,i-1),18,1)
     2158             ibit20 = IBITS(advc_flags_1(k,j,i-1),20,1)
     2159             ibit19 = IBITS(advc_flags_1(k,j,i-1),19,1)
     2160             ibit18 = IBITS(advc_flags_1(k,j,i-1),18,1)
    20002161
    20012162             u_comp           = u(k,j-1,i) + u(k,j,i) - gu
     
    20532214          DO  k = nzb+1, nzb_max
    20542215
    2055              ibit23 = IBITS(wall_flags_0(k,j-1,i),23,1)
    2056              ibit22 = IBITS(wall_flags_0(k,j-1,i),22,1)
    2057              ibit21 = IBITS(wall_flags_0(k,j-1,i),21,1)
     2216             ibit23 = IBITS(advc_flags_1(k,j-1,i),23,1)
     2217             ibit22 = IBITS(advc_flags_1(k,j-1,i),22,1)
     2218             ibit21 = IBITS(advc_flags_1(k,j-1,i),21,1)
    20582219
    20592220             v_comp_l       = v(k,j,i) + v(k,j-1,i) - gv
     
    21152276       DO  k = nzb+1, nzb_max
    21162277
    2117           ibit20 = IBITS(wall_flags_0(k,j,i),20,1)
    2118           ibit19 = IBITS(wall_flags_0(k,j,i),19,1)
    2119           ibit18 = IBITS(wall_flags_0(k,j,i),18,1)
     2278          ibit20 = IBITS(advc_flags_1(k,j,i),20,1)
     2279          ibit19 = IBITS(advc_flags_1(k,j,i),19,1)
     2280          ibit18 = IBITS(advc_flags_1(k,j,i),18,1)
    21202281 
    21212282          u_comp    = u(k,j-1,i+1) + u(k,j,i+1) - gu
     
    21502311                                        )
    21512312
    2152           ibit23 = IBITS(wall_flags_0(k,j,i),23,1)
    2153           ibit22 = IBITS(wall_flags_0(k,j,i),22,1)
    2154           ibit21 = IBITS(wall_flags_0(k,j,i),21,1)
     2313          ibit23 = IBITS(advc_flags_1(k,j,i),23,1)
     2314          ibit22 = IBITS(advc_flags_1(k,j,i),22,1)
     2315          ibit21 = IBITS(advc_flags_1(k,j,i),21,1)
    21552316
    21562317
     
    21882349!--       k index has to be modified near bottom and top, else array
    21892350!--       subscripts will be exceeded.
    2190           ibit26 = IBITS(wall_flags_0(k,j,i),26,1)
    2191           ibit25 = IBITS(wall_flags_0(k,j,i),25,1)
    2192           ibit24 = IBITS(wall_flags_0(k,j,i),24,1)
     2351          ibit26 = IBITS(advc_flags_1(k,j,i),26,1)
     2352          ibit25 = IBITS(advc_flags_1(k,j,i),25,1)
     2353          ibit24 = IBITS(advc_flags_1(k,j,i),24,1)
    21932354
    21942355          k_ppp = k + 3 * ibit26
     
    22332394                                       * ( ibit18 + ibit19 + ibit20 )         &
    22342395                  - ( u(k,j-1,i) + u(k,j,i) )                                 &
    2235                                        * ( IBITS(wall_flags_0(k,j,i-1),18,1)  &
    2236                                          + IBITS(wall_flags_0(k,j,i-1),19,1)  &
    2237                                          + IBITS(wall_flags_0(k,j,i-1),20,1)  &
     2396                                       * ( IBITS(advc_flags_1(k,j,i-1),18,1)  &
     2397                                         + IBITS(advc_flags_1(k,j,i-1),19,1)  &
     2398                                         + IBITS(advc_flags_1(k,j,i-1),20,1)  &
    22382399                                         )                                    &
    22392400                  ) * rho_air(k) * ddx                                        &
     
    22412402                                       * ( ibit21 + ibit22 + ibit23 )         &
    22422403                - ( v(k,j,i)     + v(k,j-1,i) )                               &
    2243                                        * ( IBITS(wall_flags_0(k,j-1,i),21,1)  &
    2244                                          + IBITS(wall_flags_0(k,j-1,i),22,1)  &
    2245                                          + IBITS(wall_flags_0(k,j-1,i),23,1)  &
     2404                                       * ( IBITS(advc_flags_1(k,j-1,i),21,1)  &
     2405                                         + IBITS(advc_flags_1(k,j-1,i),22,1)  &
     2406                                         + IBITS(advc_flags_1(k,j-1,i),23,1)  &
    22462407                                         )                                    &
    22472408                  ) * rho_air(k) * ddy                                        &
    22482409               +  ( w_comp * rho_air_zw(k) * ( ibit24 + ibit25 + ibit26 )     &
    22492410                - ( w(k-1,j-1,i) + w(k-1,j,i) ) * rho_air_zw(k-1)             &
    2250                                        * ( IBITS(wall_flags_0(k-1,j,i),24,1)  &
    2251                                          + IBITS(wall_flags_0(k-1,j,i),25,1)  &
    2252                                          + IBITS(wall_flags_0(k-1,j,i),26,1)  &
     2411                                       * ( IBITS(advc_flags_1(k-1,j,i),24,1)  &
     2412                                         + IBITS(advc_flags_1(k-1,j,i),25,1)  &
     2413                                         + IBITS(advc_flags_1(k-1,j,i),26,1)  &
    22532414                                         )                                    &
    22542415                   ) * ddzw(k)   &
     
    23242485!--       k index has to be modified near bottom and top, else array
    23252486!--       subscripts will be exceeded.
    2326           ibit26 = IBITS(wall_flags_0(k,j,i),26,1)
    2327           ibit25 = IBITS(wall_flags_0(k,j,i),25,1)
    2328           ibit24 = IBITS(wall_flags_0(k,j,i),24,1)
     2487          ibit26 = IBITS(advc_flags_1(k,j,i),26,1)
     2488          ibit25 = IBITS(advc_flags_1(k,j,i),25,1)
     2489          ibit24 = IBITS(advc_flags_1(k,j,i),24,1)
    23292490
    23302491          k_ppp = k + 3 * ibit26
     
    24432604
    24442605       USE indices,                                                           &
    2445            ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, wall_flags_0,        &
    2446                   wall_flags_00
     2606           ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, advc_flags_1,        &
     2607                  advc_flags_2
    24472608
    24482609       USE kinds
     
    24952656
    24962657          DO  k = nzb+1, nzb_max
    2497              ibit32 = IBITS(wall_flags_00(k,j-1,i),0,1)
    2498              ibit31 = IBITS(wall_flags_0(k,j-1,i),31,1)
    2499              ibit30 = IBITS(wall_flags_0(k,j-1,i),30,1)
     2658             ibit32 = IBITS(advc_flags_2(k,j-1,i),0,1)
     2659             ibit31 = IBITS(advc_flags_1(k,j-1,i),31,1)
     2660             ibit30 = IBITS(advc_flags_1(k,j-1,i),30,1)
    25002661
    25012662             v_comp         = v(k+1,j,i) + v(k,j,i) - gv
     
    25532714          DO  k = nzb+1, nzb_max
    25542715
    2555              ibit29 = IBITS(wall_flags_0(k,j,i-1),29,1)
    2556              ibit28 = IBITS(wall_flags_0(k,j,i-1),28,1)
    2557              ibit27 = IBITS(wall_flags_0(k,j,i-1),27,1)
     2716             ibit29 = IBITS(advc_flags_1(k,j,i-1),29,1)
     2717             ibit28 = IBITS(advc_flags_1(k,j,i-1),28,1)
     2718             ibit27 = IBITS(advc_flags_1(k,j,i-1),27,1)
    25582719
    25592720             u_comp           = u(k+1,j,i) + u(k,j,i) - gu
     
    26082769!--    The lower flux has to be calculated explicetely for the tendency at
    26092770!--    the first w-level. For topography wall this is done implicitely by
    2610 !--    wall_flags_0.
     2771!--    advc_flags_1.
    26112772       k         = nzb + 1
    26122773       w_comp    = w(k,j,i) + w(k-1,j,i)
     
    26202781       DO  k = nzb+1, nzb_max
    26212782
    2622           ibit29 = IBITS(wall_flags_0(k,j,i),29,1)
    2623           ibit28 = IBITS(wall_flags_0(k,j,i),28,1)
    2624           ibit27 = IBITS(wall_flags_0(k,j,i),27,1)
     2783          ibit29 = IBITS(advc_flags_1(k,j,i),29,1)
     2784          ibit28 = IBITS(advc_flags_1(k,j,i),28,1)
     2785          ibit27 = IBITS(advc_flags_1(k,j,i),27,1)
    26252786
    26262787          u_comp    = u(k+1,j,i+1) + u(k,j,i+1) - gu
     
    26552816                                        )
    26562817
    2657           ibit32 = IBITS(wall_flags_00(k,j,i),0,1)
    2658           ibit31 = IBITS(wall_flags_0(k,j,i),31,1)
    2659           ibit30 = IBITS(wall_flags_0(k,j,i),30,1)
     2818          ibit32 = IBITS(advc_flags_2(k,j,i),0,1)
     2819          ibit31 = IBITS(advc_flags_1(k,j,i),31,1)
     2820          ibit30 = IBITS(advc_flags_1(k,j,i),30,1)
    26602821
    26612822          v_comp    = v(k+1,j+1,i) + v(k,j+1,i) - gv
     
    26922853!--       k index has to be modified near bottom and top, else array
    26932854!--       subscripts will be exceeded.
    2694           ibit35 = IBITS(wall_flags_00(k,j,i),3,1)
    2695           ibit34 = IBITS(wall_flags_00(k,j,i),2,1)
    2696           ibit33 = IBITS(wall_flags_00(k,j,i),1,1)
     2855          ibit35 = IBITS(advc_flags_2(k,j,i),3,1)
     2856          ibit34 = IBITS(advc_flags_2(k,j,i),2,1)
     2857          ibit33 = IBITS(advc_flags_2(k,j,i),1,1)
    26972858
    26982859          k_ppp = k + 3 * ibit35
     
    27372898          div = ( ( ( u_comp + gu ) * ( ibit27 + ibit28 + ibit29 )            &
    27382899                  - ( u(k+1,j,i) + u(k,j,i)   )                               &
    2739                                     * ( IBITS(wall_flags_0(k,j,i-1),27,1)     &
    2740                                       + IBITS(wall_flags_0(k,j,i-1),28,1)     &
    2741                                       + IBITS(wall_flags_0(k,j,i-1),29,1)     &
     2900                                    * ( IBITS(advc_flags_1(k,j,i-1),27,1)     &
     2901                                      + IBITS(advc_flags_1(k,j,i-1),28,1)     &
     2902                                      + IBITS(advc_flags_1(k,j,i-1),29,1)     &
    27422903                                      )                                       &
    27432904                  ) * rho_air_zw(k) * ddx                                     &
    27442905              +   ( ( v_comp + gv ) * ( ibit30 + ibit31 + ibit32 )            &
    27452906                  - ( v(k+1,j,i) + v(k,j,i)   )                               &
    2746                                     * ( IBITS(wall_flags_0(k,j-1,i),30,1)     &
    2747                                       + IBITS(wall_flags_0(k,j-1,i),31,1)     &
    2748                                       + IBITS(wall_flags_00(k,j-1,i),0,1)     &
     2907                                    * ( IBITS(advc_flags_1(k,j-1,i),30,1)     &
     2908                                      + IBITS(advc_flags_1(k,j-1,i),31,1)     &
     2909                                      + IBITS(advc_flags_2(k,j-1,i),0,1)      &
    27492910                                      )                                       &
    27502911                  ) * rho_air_zw(k) * ddy                                     &
    27512912              +   ( w_comp * rho_air(k+1) * ( ibit33 + ibit34 + ibit35 )      &
    27522913                - ( w(k,j,i)   + w(k-1,j,i)   ) * rho_air(k)                  &
    2753                                     * ( IBITS(wall_flags_00(k-1,j,i),1,1)     &
    2754                                       + IBITS(wall_flags_00(k-1,j,i),2,1)     &
    2755                                       + IBITS(wall_flags_00(k-1,j,i),3,1)     &
     2914                                    * ( IBITS(advc_flags_2(k-1,j,i),1,1)      &
     2915                                      + IBITS(advc_flags_2(k-1,j,i),2,1)      &
     2916                                      + IBITS(advc_flags_2(k-1,j,i),3,1)      &
    27562917                                      )                                       &
    27572918                  ) * ddzu(k+1)   &
     
    28142975!--       k index has to be modified near bottom and top, else array
    28152976!--       subscripts will be exceeded.
    2816           ibit35 = IBITS(wall_flags_00(k,j,i),3,1)
    2817           ibit34 = IBITS(wall_flags_00(k,j,i),2,1)
    2818           ibit33 = IBITS(wall_flags_00(k,j,i),1,1)
     2977          ibit35 = IBITS(advc_flags_2(k,j,i),3,1)
     2978          ibit34 = IBITS(advc_flags_2(k,j,i),2,1)
     2979          ibit33 = IBITS(advc_flags_2(k,j,i),1,1)
    28192980
    28202981          k_ppp = k + 3 * ibit35
     
    29193080       USE indices,                                                           &
    29203081           ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzb_max,   &
    2921                   nzt, wall_flags_0
     3082                  nzt, advc_flags_1
    29223083           
    29233084       USE kinds
     
    29833144          DO  k = nzb+1, nzb_max
    29843145
    2985              ibit2 = IBITS(wall_flags_0(k,j,i-1),2,1)
    2986              ibit1 = IBITS(wall_flags_0(k,j,i-1),1,1)
    2987              ibit0 = IBITS(wall_flags_0(k,j,i-1),0,1)
     3146             ibit2 = IBITS(advc_flags_1(k,j,i-1),2,1)
     3147             ibit1 = IBITS(advc_flags_1(k,j,i-1),1,1)
     3148             ibit0 = IBITS(advc_flags_1(k,j,i-1),0,1)
    29883149
    29893150             u_comp                 = u(k,j,i) - u_gtrans
     
    30443205          DO  k = nzb+1, nzb_max
    30453206
    3046              ibit5 = IBITS(wall_flags_0(k,j-1,i),5,1)
    3047              ibit4 = IBITS(wall_flags_0(k,j-1,i),4,1)
    3048              ibit3 = IBITS(wall_flags_0(k,j-1,i),3,1)
     3207             ibit5 = IBITS(advc_flags_1(k,j-1,i),5,1)
     3208             ibit4 = IBITS(advc_flags_1(k,j-1,i),4,1)
     3209             ibit3 = IBITS(advc_flags_1(k,j-1,i),3,1)
    30493210
    30503211             v_comp               = v(k,j,i) - v_gtrans
     
    31073268             DO  k = nzb+1, nzb_max
    31083269
    3109                 ibit2 = IBITS(wall_flags_0(k,j,i),2,1)
    3110                 ibit1 = IBITS(wall_flags_0(k,j,i),1,1)
    3111                 ibit0 = IBITS(wall_flags_0(k,j,i),0,1)
     3270                ibit2 = IBITS(advc_flags_1(k,j,i),2,1)
     3271                ibit1 = IBITS(advc_flags_1(k,j,i),1,1)
     3272                ibit0 = IBITS(advc_flags_1(k,j,i),0,1)
    31123273
    31133274                u_comp    = u(k,j,i+1) - u_gtrans
     
    31423303                                             )
    31433304
    3144                 ibit5 = IBITS(wall_flags_0(k,j,i),5,1)
    3145                 ibit4 = IBITS(wall_flags_0(k,j,i),4,1)
    3146                 ibit3 = IBITS(wall_flags_0(k,j,i),3,1)
     3305                ibit5 = IBITS(advc_flags_1(k,j,i),5,1)
     3306                ibit4 = IBITS(advc_flags_1(k,j,i),4,1)
     3307                ibit3 = IBITS(advc_flags_1(k,j,i),3,1)
    31473308
    31483309                v_comp    = v(k,j+1,i) - v_gtrans
     
    31793340!--             k index has to be modified near bottom and top, else array
    31803341!--             subscripts will be exceeded.
    3181                 ibit8 = IBITS(wall_flags_0(k,j,i),8,1)
    3182                 ibit7 = IBITS(wall_flags_0(k,j,i),7,1)
    3183                 ibit6 = IBITS(wall_flags_0(k,j,i),6,1)
     3342                ibit8 = IBITS(advc_flags_1(k,j,i),8,1)
     3343                ibit7 = IBITS(advc_flags_1(k,j,i),7,1)
     3344                ibit6 = IBITS(advc_flags_1(k,j,i),6,1)
    31843345
    31853346                k_ppp = k + 3 * ibit8
     
    32213382!--             by a not sufficient reduction of divergences near topography.
    32223383                div   =   ( u(k,j,i+1) * ( ibit0 + ibit1 + ibit2 )             &
    3223                           - u(k,j,i)   * ( IBITS(wall_flags_0(k,j,i-1),0,1)    &
    3224                                          + IBITS(wall_flags_0(k,j,i-1),1,1)    &
    3225                                          + IBITS(wall_flags_0(k,j,i-1),2,1)    &
     3384                          - u(k,j,i)   * ( IBITS(advc_flags_1(k,j,i-1),0,1)    &
     3385                                         + IBITS(advc_flags_1(k,j,i-1),1,1)    &
     3386                                         + IBITS(advc_flags_1(k,j,i-1),2,1)    &
    32263387                                         )                                     &
    32273388                          ) * rho_air(k) * ddx                                 &
    32283389                        + ( v(k,j+1,i) * ( ibit3 + ibit4 + ibit5 )             &
    3229                           - v(k,j,i)   * ( IBITS(wall_flags_0(k,j-1,i),3,1)    &
    3230                                          + IBITS(wall_flags_0(k,j-1,i),4,1)    &
    3231                                          + IBITS(wall_flags_0(k,j-1,i),5,1)    &
     3390                          - v(k,j,i)   * ( IBITS(advc_flags_1(k,j-1,i),3,1)    &
     3391                                         + IBITS(advc_flags_1(k,j-1,i),4,1)    &
     3392                                         + IBITS(advc_flags_1(k,j-1,i),5,1)    &
    32323393                                         )                                     &
    32333394                          ) * rho_air(k) * ddy                                 &
     
    32353396                                         ( ibit6 + ibit7 + ibit8 )             &
    32363397                          - w(k-1,j,i) * rho_air_zw(k-1) *                     &
    3237                                          ( IBITS(wall_flags_0(k-1,j,i),6,1)    &
    3238                                          + IBITS(wall_flags_0(k-1,j,i),7,1)    &
    3239                                          + IBITS(wall_flags_0(k-1,j,i),8,1)    &
     3398                                         ( IBITS(advc_flags_1(k-1,j,i),6,1)    &
     3399                                         + IBITS(advc_flags_1(k-1,j,i),7,1)    &
     3400                                         + IBITS(advc_flags_1(k-1,j,i),8,1)    &
    32403401                                         )                                     &     
    32413402                          ) * ddzw(k)
     
    32853446!--             k index has to be modified near bottom and top, else array
    32863447!--             subscripts will be exceeded.
    3287                 ibit8 = IBITS(wall_flags_0(k,j,i),8,1)
    3288                 ibit7 = IBITS(wall_flags_0(k,j,i),7,1)
    3289                 ibit6 = IBITS(wall_flags_0(k,j,i),6,1)
     3448                ibit8 = IBITS(advc_flags_1(k,j,i),8,1)
     3449                ibit7 = IBITS(advc_flags_1(k,j,i),7,1)
     3450                ibit6 = IBITS(advc_flags_1(k,j,i),6,1)
    32903451
    32913452                k_ppp = k + 3 * ibit8
     
    34293590
    34303591
    3431 
    34323592!------------------------------------------------------------------------------!
    34333593! Description:
     
    34503610
    34513611       USE indices,                                                            &
    3452            ONLY:  nxl, nxlu, nxr, nyn, nys, nzb, nzb_max, nzt, wall_flags_0
     3612           ONLY:  nxl, nxlu, nxr, nyn, nys, nzb, nzb_max, nzt, advc_flags_1
    34533613           
    34543614       USE kinds
     
    35073667          DO  k = nzb+1, nzb_max
    35083668
    3509              ibit11 = IBITS(wall_flags_0(k,j,i-1),11,1)
    3510              ibit10 = IBITS(wall_flags_0(k,j,i-1),10,1)
    3511              ibit9  = IBITS(wall_flags_0(k,j,i-1),9,1)
     3669             ibit11 = IBITS(advc_flags_1(k,j,i-1),11,1)
     3670             ibit10 = IBITS(advc_flags_1(k,j,i-1),10,1)
     3671             ibit9  = IBITS(advc_flags_1(k,j,i-1),9,1)
    35123672
    35133673             u_comp(k)                = u(k,j,i) + u(k,j,i-1) - gu
     
    35653725          DO  k = nzb+1, nzb_max
    35663726
    3567              ibit14 = IBITS(wall_flags_0(k,j-1,i),14,1)
    3568              ibit13 = IBITS(wall_flags_0(k,j-1,i),13,1)
    3569              ibit12 = IBITS(wall_flags_0(k,j-1,i),12,1)
     3727             ibit14 = IBITS(advc_flags_1(k,j-1,i),14,1)
     3728             ibit13 = IBITS(advc_flags_1(k,j-1,i),13,1)
     3729             ibit12 = IBITS(advc_flags_1(k,j-1,i),12,1)
    35703730
    35713731             v_comp                 = v(k,j,i) + v(k,j,i-1) - gv
     
    36263786             DO  k = nzb+1, nzb_max
    36273787
    3628                 ibit11 = IBITS(wall_flags_0(k,j,i),11,1)
    3629                 ibit10 = IBITS(wall_flags_0(k,j,i),10,1)
    3630                 ibit9  = IBITS(wall_flags_0(k,j,i),9,1)
     3788                ibit11 = IBITS(advc_flags_1(k,j,i),11,1)
     3789                ibit10 = IBITS(advc_flags_1(k,j,i),10,1)
     3790                ibit9  = IBITS(advc_flags_1(k,j,i),9,1)
    36313791
    36323792                u_comp(k) = u(k,j,i+1) + u(k,j,i)
     
    36613821                                                     )
    36623822
    3663                 ibit14 = IBITS(wall_flags_0(k,j,i),14,1)
    3664                 ibit13 = IBITS(wall_flags_0(k,j,i),13,1)
    3665                 ibit12 = IBITS(wall_flags_0(k,j,i),12,1)
     3823                ibit14 = IBITS(advc_flags_1(k,j,i),14,1)
     3824                ibit13 = IBITS(advc_flags_1(k,j,i),13,1)
     3825                ibit12 = IBITS(advc_flags_1(k,j,i),12,1)
    36663826
    36673827                v_comp    = v(k,j+1,i) + v(k,j+1,i-1) - gv
     
    36983858!--             k index has to be modified near bottom and top, else array
    36993859!--             subscripts will be exceeded.
    3700                 ibit17 = IBITS(wall_flags_0(k,j,i),17,1)
    3701                 ibit16 = IBITS(wall_flags_0(k,j,i),16,1)
    3702                 ibit15 = IBITS(wall_flags_0(k,j,i),15,1)
     3860                ibit17 = IBITS(advc_flags_1(k,j,i),17,1)
     3861                ibit16 = IBITS(advc_flags_1(k,j,i),16,1)
     3862                ibit15 = IBITS(advc_flags_1(k,j,i),15,1)
    37033863
    37043864                k_ppp = k + 3 * ibit17
     
    37423902                div = ( ( u_comp(k) * ( ibit9 + ibit10 + ibit11 )             &
    37433903                - ( u(k,j,i)   + u(k,j,i-1)   )                               &
    3744                                     * ( IBITS(wall_flags_0(k,j,i-1),9,1)      &
    3745                                       + IBITS(wall_flags_0(k,j,i-1),10,1)     &
    3746                                       + IBITS(wall_flags_0(k,j,i-1),11,1)     &
     3904                                    * ( IBITS(advc_flags_1(k,j,i-1),9,1)      &
     3905                                      + IBITS(advc_flags_1(k,j,i-1),10,1)     &
     3906                                      + IBITS(advc_flags_1(k,j,i-1),11,1)     &
    37473907                                      )                                       &
    37483908                  ) * rho_air(k) * ddx                                        &
    37493909               +  ( ( v_comp + gv ) * ( ibit12 + ibit13 + ibit14 )            &
    37503910                  - ( v(k,j,i)   + v(k,j,i-1 )  )                             &
    3751                                     * ( IBITS(wall_flags_0(k,j-1,i),12,1)     &
    3752                                       + IBITS(wall_flags_0(k,j-1,i),13,1)     &
    3753                                       + IBITS(wall_flags_0(k,j-1,i),14,1)     &
     3911                                    * ( IBITS(advc_flags_1(k,j-1,i),12,1)     &
     3912                                      + IBITS(advc_flags_1(k,j-1,i),13,1)     &
     3913                                      + IBITS(advc_flags_1(k,j-1,i),14,1)     &
    37543914                                      )                                       &
    37553915                  ) * rho_air(k) * ddy                                        &
    37563916               +  ( w_comp * rho_air_zw(k) * ( ibit15 + ibit16 + ibit17 )     &
    37573917                - ( w(k-1,j,i) + w(k-1,j,i-1) ) * rho_air_zw(k-1)             &
    3758                                     * ( IBITS(wall_flags_0(k-1,j,i),15,1)     &
    3759                                       + IBITS(wall_flags_0(k-1,j,i),16,1)     &
    3760                                       + IBITS(wall_flags_0(k-1,j,i),17,1)     &
     3918                                    * ( IBITS(advc_flags_1(k-1,j,i),15,1)     &
     3919                                      + IBITS(advc_flags_1(k-1,j,i),16,1)     &
     3920                                      + IBITS(advc_flags_1(k-1,j,i),17,1)     &
    37613921                                      )                                       & 
    37623922                  ) * ddzw(k)   &
     
    38293989!--             k index has to be modified near bottom and top, else array
    38303990!--             subscripts will be exceeded.
    3831                 ibit17 = IBITS(wall_flags_0(k,j,i),17,1)
    3832                 ibit16 = IBITS(wall_flags_0(k,j,i),16,1)
    3833                 ibit15 = IBITS(wall_flags_0(k,j,i),15,1)
     3991                ibit17 = IBITS(advc_flags_1(k,j,i),17,1)
     3992                ibit16 = IBITS(advc_flags_1(k,j,i),16,1)
     3993                ibit15 = IBITS(advc_flags_1(k,j,i),15,1)
    38343994
    38353995                k_ppp = k + 3 * ibit17
     
    39254085    END SUBROUTINE advec_u_ws
    39264086   
    3927    
     4087
    39284088!------------------------------------------------------------------------------!
    39294089! Description:
     
    39464106
    39474107       USE indices,                                                            &
    3948            ONLY:  nxl, nxr, nyn, nys, nysv, nzb, nzb_max, nzt, wall_flags_0
     4108           ONLY:  nxl, nxr, nyn, nys, nysv, nzb, nzb_max, nzt, advc_flags_1
    39494109
    39504110       USE kinds
     
    40034163          DO  k = nzb+1, nzb_max
    40044164
    4005              ibit20 = IBITS(wall_flags_0(k,j,i-1),20,1)
    4006              ibit19 = IBITS(wall_flags_0(k,j,i-1),19,1)
    4007              ibit18 = IBITS(wall_flags_0(k,j,i-1),18,1)
     4165             ibit20 = IBITS(advc_flags_1(k,j,i-1),20,1)
     4166             ibit19 = IBITS(advc_flags_1(k,j,i-1),19,1)
     4167             ibit18 = IBITS(advc_flags_1(k,j,i-1),18,1)
    40084168
    40094169             u_comp                   = u(k,j-1,i) + u(k,j,i) - gu
     
    40614221          DO  k = nzb+1, nzb_max
    40624222
    4063              ibit23 = IBITS(wall_flags_0(k,j-1,i),23,1)
    4064              ibit22 = IBITS(wall_flags_0(k,j-1,i),22,1)
    4065              ibit21 = IBITS(wall_flags_0(k,j-1,i),21,1)
     4223             ibit23 = IBITS(advc_flags_1(k,j-1,i),23,1)
     4224             ibit22 = IBITS(advc_flags_1(k,j-1,i),22,1)
     4225             ibit21 = IBITS(advc_flags_1(k,j-1,i),21,1)
    40664226
    40674227             v_comp(k)              = v(k,j,i) + v(k,j-1,i) - gv
     
    41214281             DO  k = nzb+1, nzb_max
    41224282
    4123                 ibit20 = IBITS(wall_flags_0(k,j,i),20,1)
    4124                 ibit19 = IBITS(wall_flags_0(k,j,i),19,1)
    4125                 ibit18 = IBITS(wall_flags_0(k,j,i),18,1)
     4283                ibit20 = IBITS(advc_flags_1(k,j,i),20,1)
     4284                ibit19 = IBITS(advc_flags_1(k,j,i),19,1)
     4285                ibit18 = IBITS(advc_flags_1(k,j,i),18,1)
    41264286
    41274287                u_comp    = u(k,j-1,i+1) + u(k,j,i+1) - gu
     
    41564316                                              )
    41574317
    4158                 ibit23 = IBITS(wall_flags_0(k,j,i),23,1)
    4159                 ibit22 = IBITS(wall_flags_0(k,j,i),22,1)
    4160                 ibit21 = IBITS(wall_flags_0(k,j,i),21,1)
     4318                ibit23 = IBITS(advc_flags_1(k,j,i),23,1)
     4319                ibit22 = IBITS(advc_flags_1(k,j,i),22,1)
     4320                ibit21 = IBITS(advc_flags_1(k,j,i),21,1)
    41614321
    41624322                v_comp(k) = v(k,j+1,i) + v(k,j,i)
     
    41934353!--             k index has to be modified near bottom and top, else array
    41944354!--             subscripts will be exceeded.
    4195                 ibit26 = IBITS(wall_flags_0(k,j,i),26,1)
    4196                 ibit25 = IBITS(wall_flags_0(k,j,i),25,1)
    4197                 ibit24 = IBITS(wall_flags_0(k,j,i),24,1)
     4355                ibit26 = IBITS(advc_flags_1(k,j,i),26,1)
     4356                ibit25 = IBITS(advc_flags_1(k,j,i),25,1)
     4357                ibit24 = IBITS(advc_flags_1(k,j,i),24,1)
    41984358
    41994359                k_ppp = k + 3 * ibit26
     
    42384398                                       * ( ibit18 + ibit19 + ibit20 )         &
    42394399                - ( u(k,j-1,i)   + u(k,j,i) )                                 &
    4240                                        * ( IBITS(wall_flags_0(k,j,i-1),18,1)  &
    4241                                          + IBITS(wall_flags_0(k,j,i-1),19,1)  &
    4242                                          + IBITS(wall_flags_0(k,j,i-1),20,1)  &
     4400                                       * ( IBITS(advc_flags_1(k,j,i-1),18,1)  &
     4401                                         + IBITS(advc_flags_1(k,j,i-1),19,1)  &
     4402                                         + IBITS(advc_flags_1(k,j,i-1),20,1)  &
    42434403                                         )                                    &
    42444404                  ) * rho_air(k) * ddx                                        &
     
    42464406                                       * ( ibit21 + ibit22 + ibit23 )         &
    42474407                - ( v(k,j,i)     + v(k,j-1,i) )                               &
    4248                                        * ( IBITS(wall_flags_0(k,j-1,i),21,1)  &
    4249                                          + IBITS(wall_flags_0(k,j-1,i),22,1)  &
    4250                                          + IBITS(wall_flags_0(k,j-1,i),23,1)  &
     4408                                       * ( IBITS(advc_flags_1(k,j-1,i),21,1)  &
     4409                                         + IBITS(advc_flags_1(k,j-1,i),22,1)  &
     4410                                         + IBITS(advc_flags_1(k,j-1,i),23,1)  &
    42514411                                         )                                    &
    42524412                  ) * rho_air(k) * ddy                                        &
     
    42544414                                       * ( ibit24 + ibit25 + ibit26 )         &
    42554415                - ( w(k-1,j-1,i) + w(k-1,j,i) ) * rho_air_zw(k-1)             &
    4256                                        * ( IBITS(wall_flags_0(k-1,j,i),24,1)  &
    4257                                          + IBITS(wall_flags_0(k-1,j,i),25,1)  &
    4258                                          + IBITS(wall_flags_0(k-1,j,i),26,1)  &
     4416                                       * ( IBITS(advc_flags_1(k-1,j,i),24,1)  &
     4417                                         + IBITS(advc_flags_1(k-1,j,i),25,1)  &
     4418                                         + IBITS(advc_flags_1(k-1,j,i),26,1)  &
    42594419                                         )                                    &
    42604420                   ) * ddzw(k)   &
     
    43324492!--             k index has to be modified near bottom and top, else array
    43334493!--             subscripts will be exceeded.
    4334                 ibit26 = IBITS(wall_flags_0(k,j,i),26,1)
    4335                 ibit25 = IBITS(wall_flags_0(k,j,i),25,1)
    4336                 ibit24 = IBITS(wall_flags_0(k,j,i),24,1)
     4494                ibit26 = IBITS(advc_flags_1(k,j,i),26,1)
     4495                ibit25 = IBITS(advc_flags_1(k,j,i),25,1)
     4496                ibit24 = IBITS(advc_flags_1(k,j,i),24,1)
    43374497
    43384498                k_ppp = k + 3 * ibit26
     
    44334593   
    44344594   
    4435    
    4436    
    44374595!------------------------------------------------------------------------------!
    44384596! Description:
     
    44554613
    44564614       USE indices,                                                            &
    4457            ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, wall_flags_0,         &
    4458                   wall_flags_00
     4615           ONLY:  nxl, nxr, nyn, nys, nzb, nzb_max, nzt, advc_flags_1,         &
     4616                  advc_flags_2
    44594617
    44604618       USE kinds
     
    45124670          DO  k = nzb+1, nzb_max
    45134671
    4514              ibit29 = IBITS(wall_flags_0(k,j,i-1),29,1)
    4515              ibit28 = IBITS(wall_flags_0(k,j,i-1),28,1)
    4516              ibit27 = IBITS(wall_flags_0(k,j,i-1),27,1)
     4672             ibit29 = IBITS(advc_flags_1(k,j,i-1),29,1)
     4673             ibit28 = IBITS(advc_flags_1(k,j,i-1),28,1)
     4674             ibit27 = IBITS(advc_flags_1(k,j,i-1),27,1)
    45174675
    45184676             u_comp                   = u(k+1,j,i) + u(k,j,i) - gu
     
    45704728          DO  k = nzb+1, nzb_max
    45714729
    4572              ibit32 = IBITS(wall_flags_00(k,j-1,i),0,1)
    4573              ibit31 = IBITS(wall_flags_0(k,j-1,i),31,1)
    4574              ibit30 = IBITS(wall_flags_0(k,j-1,i),30,1)
     4730             ibit32 = IBITS(advc_flags_2(k,j-1,i),0,1)
     4731             ibit31 = IBITS(advc_flags_1(k,j-1,i),31,1)
     4732             ibit30 = IBITS(advc_flags_1(k,j-1,i),30,1)
    45754733
    45764734             v_comp                 = v(k+1,j,i) + v(k,j,i) - gv
     
    46264784!--          The lower flux has to be calculated explicetely for the tendency
    46274785!--          at the first w-level. For topography wall this is done implicitely
    4628 !--          by wall_flags_0.
     4786!--          by advc_flags_1.
    46294787             k         = nzb + 1
    46304788             w_comp    = w(k,j,i) + w(k-1,j,i)
     
    46364794             DO  k = nzb+1, nzb_max
    46374795
    4638                 ibit29 = IBITS(wall_flags_0(k,j,i),29,1)
    4639                 ibit28 = IBITS(wall_flags_0(k,j,i),28,1)
    4640                 ibit27 = IBITS(wall_flags_0(k,j,i),27,1)
     4796                ibit29 = IBITS(advc_flags_1(k,j,i),29,1)
     4797                ibit28 = IBITS(advc_flags_1(k,j,i),28,1)
     4798                ibit27 = IBITS(advc_flags_1(k,j,i),27,1)
    46414799
    46424800                u_comp    = u(k+1,j,i+1) + u(k,j,i+1) - gu
     
    46714829                                              )
    46724830
    4673                 ibit32 = IBITS(wall_flags_00(k,j,i),0,1)
    4674                 ibit31 = IBITS(wall_flags_0(k,j,i),31,1)
    4675                 ibit30 = IBITS(wall_flags_0(k,j,i),30,1)
     4831                ibit32 = IBITS(advc_flags_2(k,j,i),0,1)
     4832                ibit31 = IBITS(advc_flags_1(k,j,i),31,1)
     4833                ibit30 = IBITS(advc_flags_1(k,j,i),30,1)
    46764834
    46774835                v_comp    = v(k+1,j+1,i) + v(k,j+1,i) - gv
     
    47084866!--             k index has to be modified near bottom and top, else array
    47094867!--             subscripts will be exceeded.
    4710                 ibit35 = IBITS(wall_flags_00(k,j,i),3,1)
    4711                 ibit34 = IBITS(wall_flags_00(k,j,i),2,1)
    4712                 ibit33 = IBITS(wall_flags_00(k,j,i),1,1)
     4868                ibit35 = IBITS(advc_flags_2(k,j,i),3,1)
     4869                ibit34 = IBITS(advc_flags_2(k,j,i),2,1)
     4870                ibit33 = IBITS(advc_flags_2(k,j,i),1,1)
    47134871
    47144872                k_ppp = k + 3 * ibit35
     
    47524910                div = ( ( ( u_comp + gu ) * ( ibit27 + ibit28 + ibit29 )      &
    47534911                  - ( u(k+1,j,i) + u(k,j,i)   )                               &
    4754                                     * ( IBITS(wall_flags_0(k,j,i-1),27,1)     &
    4755                                       + IBITS(wall_flags_0(k,j,i-1),28,1)     &
    4756                                       + IBITS(wall_flags_0(k,j,i-1),29,1)     &
     4912                                    * ( IBITS(advc_flags_1(k,j,i-1),27,1)     &
     4913                                      + IBITS(advc_flags_1(k,j,i-1),28,1)     &
     4914                                      + IBITS(advc_flags_1(k,j,i-1),29,1)     &
    47574915                                      )                                       &
    47584916                  ) * rho_air_zw(k) * ddx                                     &
    47594917              +   ( ( v_comp + gv ) * ( ibit30 + ibit31 + ibit32 )            &
    47604918                  - ( v(k+1,j,i) + v(k,j,i)   )                               &
    4761                                     * ( IBITS(wall_flags_0(k,j-1,i),30,1)     &
    4762                                       + IBITS(wall_flags_0(k,j-1,i),31,1)     &
    4763                                       + IBITS(wall_flags_00(k,j-1,i),0,1)     &
     4919                                    * ( IBITS(advc_flags_1(k,j-1,i),30,1)     &
     4920                                      + IBITS(advc_flags_1(k,j-1,i),31,1)     &
     4921                                      + IBITS(advc_flags_2(k,j-1,i),0,1)      &
    47644922                                      )                                       &
    47654923                  ) * rho_air_zw(k) * ddy                                     &
    47664924              +   ( w_comp * rho_air(k+1) * ( ibit33 + ibit34 + ibit35 )      &
    47674925                - ( w(k,j,i)   + w(k-1,j,i)   ) * rho_air(k)                  &
    4768                                     * ( IBITS(wall_flags_00(k-1,j,i),1,1)     &
    4769                                       + IBITS(wall_flags_00(k-1,j,i),2,1)     &
    4770                                       + IBITS(wall_flags_00(k-1,j,i),3,1)     &
     4926                                    * ( IBITS(advc_flags_2(k-1,j,i),1,1)      &
     4927                                      + IBITS(advc_flags_2(k-1,j,i),2,1)      &
     4928                                      + IBITS(advc_flags_2(k-1,j,i),3,1)      &
    47714929                                      )                                       &
    47724930                  ) * ddzu(k+1)   &
     
    48314989!--             k index has to be modified near bottom and top, else array
    48324990!--             subscripts will be exceeded.
    4833                 ibit35 = IBITS(wall_flags_00(k,j,i),3,1)
    4834                 ibit34 = IBITS(wall_flags_00(k,j,i),2,1)
    4835                 ibit33 = IBITS(wall_flags_00(k,j,i),1,1)
     4991                ibit35 = IBITS(advc_flags_2(k,j,i),3,1)
     4992                ibit34 = IBITS(advc_flags_2(k,j,i),2,1)
     4993                ibit33 = IBITS(advc_flags_2(k,j,i),1,1)
    48364994
    48374995                k_ppp = k + 3 * ibit35
     
    49165074    END SUBROUTINE advec_w_ws
    49175075
    4918 
    49195076 END MODULE advec_ws
Note: See TracChangeset for help on using the changeset viewer.