Ignore:
Timestamp:
Dec 18, 2019 11:55:56 AM (4 years ago)
Author:
motisi
Message:

Introduction of wall_flags_total_0, which currently sets bits based on static topography information used in wall_flags_static_0

File:
1 edited

Legend:

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

    r4340 r4346  
    2525! -----------------
    2626! $Id$
     27! Introduction of wall_flags_total_0, which currently sets bits based on static
     28! topography information used in wall_flags_static_0
     29!
     30! 4340 2019-12-16 08:17:03Z Giersch
    2731! Topography closed channel flow with symmetric boundaries implemented
    2832!
     
    196200               nzb_max,                                                        &
    197201               nzt,                                                            &
    198                wall_flags_static_0
     202               wall_flags_total_0
    199203
    200204    USE grid_variables,                                                        &
     
    418422!--             u component - x-direction
    419423!--             WS1 (0), WS3 (1), WS5 (2)
    420                 IF ( .NOT. BTEST(wall_flags_static_0(k,j,i+1),1)  .OR.         &
     424                IF ( .NOT. BTEST(wall_flags_total_0(k,j,i+1),1)  .OR.          &
    421425                         ( ( bc_dirichlet_l .OR. bc_radiation_l )              &
    422426                           .AND. i <= nxlu  )    .OR.                          &
     
    425429                THEN                                                           
    426430                    advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 0 )     
    427                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i+2),1)  .AND.  &
    428                                  BTEST(wall_flags_static_0(k,j,i+1),1)  .OR.   &
    429                            .NOT. BTEST(wall_flags_static_0(k,j,i-1),1) )       &
     431                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i+2),1)  .AND.   &
     432                                 BTEST(wall_flags_total_0(k,j,i+1),1)  .OR.    &
     433                           .NOT. BTEST(wall_flags_total_0(k,j,i-1),1) )        &
    430434                                                     .OR.                      &
    431435                         ( ( bc_dirichlet_r .OR. bc_radiation_r )              &
     
    438442!--                Clear flag for WS1                                         
    439443                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 0 )       
    440                 ELSEIF ( BTEST(wall_flags_static_0(k,j,i+1),1)  .AND.          &
    441                          BTEST(wall_flags_static_0(k,j,i+2),1)  .AND.          &
    442                          BTEST(wall_flags_static_0(k,j,i-1),1) )               &
     444                ELSEIF ( BTEST(wall_flags_total_0(k,j,i+1),1)  .AND.          &
     445                         BTEST(wall_flags_total_0(k,j,i+2),1)  .AND.          &
     446                         BTEST(wall_flags_total_0(k,j,i-1),1) )               &
    443447                THEN                                                           
    444448                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 2 )       
     
    449453!                                                                             
    450454!--             u component - y-direction                                     
    451 !--             WS1 (3), WS3 (4), WS5 (5)                                     
    452                 IF ( .NOT. BTEST(wall_flags_static_0(k,j+1,i),1)   .OR.        &
     455!--             WS1 (3), WS3 (4), WS5 (5)                                       
     456                IF ( .NOT. BTEST(wall_flags_total_0(k,j+1,i),1)   .OR.         &
    453457                         ( ( bc_dirichlet_s .OR. bc_radiation_s )              &
    454458                           .AND. j == nys   )    .OR.                          &
     
    457461                THEN                                                           
    458462                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 3 )       
    459                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j+2,i),1)  .AND.  &
    460                                  BTEST(wall_flags_static_0(k,j+1,i),1)  .OR.   &
    461                            .NOT. BTEST(wall_flags_static_0(k,j-1,i),1) )       &
     463                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j+2,i),1)  .AND.   &
     464                                 BTEST(wall_flags_total_0(k,j+1,i),1)  .OR.    &
     465                           .NOT. BTEST(wall_flags_total_0(k,j-1,i),1) )        &
    462466                                                     .OR.                      &
    463467                         ( ( bc_dirichlet_s .OR. bc_radiation_s )              &
     
    470474!--                Clear flag for WS1                                         
    471475                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 3 )       
    472                 ELSEIF ( BTEST(wall_flags_static_0(k,j+1,i),1)  .AND.          &
    473                          BTEST(wall_flags_static_0(k,j+2,i),1)  .AND.          &
    474                          BTEST(wall_flags_static_0(k,j-1,i),1) )               &
     476                ELSEIF ( BTEST(wall_flags_total_0(k,j+1,i),1)  .AND.          &
     477                         BTEST(wall_flags_total_0(k,j+2,i),1)  .AND.          &
     478                         BTEST(wall_flags_total_0(k,j-1,i),1) )               &
    475479                THEN                                                           
    476480                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 5 )       
     
    500504                                                                               
    501505                flag_set = .FALSE.                                             
    502                 IF ( ( .NOT. BTEST(wall_flags_static_0(k-1,j,i),1)       .AND.     &
    503                              BTEST(wall_flags_static_0(k,j,i),1)         .AND.     &
    504                              BTEST(wall_flags_static_0(k+1,j,i),1) )     .OR.      &
    505                      ( .NOT. BTEST(wall_flags_static_0(k_pp,j,i),1)      .AND.     &                             
    506                              BTEST(wall_flags_static_0(k+1,j,i),1)       .AND.     &
    507                              BTEST(wall_flags_static_0(k,j,i),1) )       .OR.      &
    508                      ( k == nzt .AND. symmetry_flag == 0 ) )                       &
     506                IF ( ( .NOT. BTEST(wall_flags_total_0(k-1,j,i),1)       .AND.     &
     507                             BTEST(wall_flags_total_0(k,j,i),1)         .AND.     &
     508                             BTEST(wall_flags_total_0(k+1,j,i),1) )     .OR.      &
     509                     ( .NOT. BTEST(wall_flags_total_0(k_pp,j,i),1)      .AND.     &                             
     510                             BTEST(wall_flags_total_0(k+1,j,i),1)       .AND.     &
     511                             BTEST(wall_flags_total_0(k,j,i),1) )       .OR.      &
     512                     ( k == nzt .AND. symmetry_flag == 0 ) )                      &
    509513                THEN                                                           
    510514                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 6 )       
    511515                   flag_set = .TRUE.                                           
    512                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k_mm,j,i),1)    .OR.    &
    513                            .NOT. BTEST(wall_flags_static_0(k_ppp,j,i),1) ) .AND.   &
    514                                  BTEST(wall_flags_static_0(k-1,j,i),1)     .AND.   &
    515                                  BTEST(wall_flags_static_0(k,j,i),1)       .AND.   &
    516                                  BTEST(wall_flags_static_0(k+1,j,i),1)     .AND.   &
    517                                  BTEST(wall_flags_static_0(k_pp,j,i),1)    .AND.   &
    518                            .NOT. flag_set                                  .OR.    &
    519                          ( k == nzt - 1 .AND. symmetry_flag == 0 ) )               &
     516                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k_mm,j,i),1)    .OR.    &
     517                           .NOT. BTEST(wall_flags_total_0(k_ppp,j,i),1) ) .AND.   &
     518                                 BTEST(wall_flags_total_0(k-1,j,i),1)     .AND.   &
     519                                 BTEST(wall_flags_total_0(k,j,i),1)       .AND.   &
     520                                 BTEST(wall_flags_total_0(k+1,j,i),1)     .AND.   &
     521                                 BTEST(wall_flags_total_0(k_pp,j,i),1)    .AND.   &
     522                           .NOT. flag_set                                  .OR.   &
     523                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )              &
    520524                THEN                                                           
    521525                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 7 )       
    522526                   flag_set = .TRUE.                                           
    523                 ELSEIF ( BTEST(wall_flags_static_0(k_mm,j,i),1)            .AND.   &
    524                          BTEST(wall_flags_static_0(k-1,j,i),1)             .AND.   &
    525                          BTEST(wall_flags_static_0(k,j,i),1)               .AND.   &
    526                          BTEST(wall_flags_static_0(k+1,j,i),1)             .AND.   &
    527                          BTEST(wall_flags_static_0(k_pp,j,i),1)            .AND.   &
    528                          BTEST(wall_flags_static_0(k_ppp,j,i),1)           .AND.   &
    529                          .NOT. flag_set )                                          &
     527                ELSEIF ( BTEST(wall_flags_total_0(k_mm,j,i),1)            .AND.   &
     528                         BTEST(wall_flags_total_0(k-1,j,i),1)             .AND.   &
     529                         BTEST(wall_flags_total_0(k,j,i),1)               .AND.   &
     530                         BTEST(wall_flags_total_0(k+1,j,i),1)             .AND.   &
     531                         BTEST(wall_flags_total_0(k_pp,j,i),1)            .AND.   &
     532                         BTEST(wall_flags_total_0(k_ppp,j,i),1)           .AND.   &
     533                         .NOT. flag_set )                                         &
    530534                THEN
    531535                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 8 )
     
    549553!--             v component - x-direction
    550554!--             WS1 (9), WS3 (10), WS5 (11)
    551                 IF ( .NOT. BTEST(wall_flags_static_0(k,j,i+1),2)  .OR.         &
     555                IF ( .NOT. BTEST(wall_flags_total_0(k,j,i+1),2)  .OR.          &
    552556                         ( ( bc_dirichlet_l .OR. bc_radiation_l )              &
    553557                           .AND. i == nxl   )    .OR.                          &
     
    558562!                                                                             
    559563!--             WS3                                                           
    560                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i+2),2)   .AND. &
    561                                  BTEST(wall_flags_static_0(k,j,i+1),2) ) .OR.  &
    562                            .NOT. BTEST(wall_flags_static_0(k,j,i-1),2)         &
     564                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i+2),2)   .AND. &
     565                                 BTEST(wall_flags_total_0(k,j,i+1),2) ) .OR.   &
     566                           .NOT. BTEST(wall_flags_total_0(k,j,i-1),2)          &
    563567                                                 .OR.                          &
    564568                         ( ( bc_dirichlet_r .OR. bc_radiation_r )              &
     
    571575!--                Clear flag for WS1                                         
    572576                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 9 )     
    573                 ELSEIF ( BTEST(wall_flags_static_0(k,j,i+1),2)  .AND.          &
    574                          BTEST(wall_flags_static_0(k,j,i+2),2)  .AND.          &
    575                          BTEST(wall_flags_static_0(k,j,i-1),2) )               &
     577                ELSEIF ( BTEST(wall_flags_total_0(k,j,i+1),2)  .AND.           &
     578                         BTEST(wall_flags_total_0(k,j,i+2),2)  .AND.           &
     579                         BTEST(wall_flags_total_0(k,j,i-1),2) )                &
    576580                THEN                                                           
    577581                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 11 )     
     
    583587!--             v component - y-direction                                     
    584588!--             WS1 (12), WS3 (13), WS5 (14)                                   
    585                 IF ( .NOT. BTEST(wall_flags_static_0(k,j+1,i),2) .OR.          &
     589                IF ( .NOT. BTEST(wall_flags_total_0(k,j+1,i),2) .OR.           &
    586590                         ( ( bc_dirichlet_s .OR. bc_radiation_s )              &
    587591                           .AND. j <= nysv  )    .OR.                          &
     
    590594                THEN                                                           
    591595                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 12 )     
    592                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j+2,i),2)  .AND.  &
    593                                  BTEST(wall_flags_static_0(k,j+1,i),2)  .OR.   &
    594                            .NOT. BTEST(wall_flags_static_0(k,j-1,i),2) )       &
     596                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j+2,i),2)  .AND.   &
     597                                 BTEST(wall_flags_total_0(k,j+1,i),2)  .OR.    &
     598                           .NOT. BTEST(wall_flags_total_0(k,j-1,i),2) )        &
    595599                                                     .OR.                      &
    596600                         ( (  bc_dirichlet_s .OR. bc_radiation_s )             &
     
    603607!--                Clear flag for WS1                                         
    604608                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 12 )     
    605                 ELSEIF ( BTEST(wall_flags_static_0(k,j+1,i),2)  .AND.          &
    606                          BTEST(wall_flags_static_0(k,j+2,i),2)  .AND.          &
    607                          BTEST(wall_flags_static_0(k,j-1,i),2) )               &
    608                 THEN
     609                ELSEIF ( BTEST(wall_flags_total_0(k,j+1,i),2)  .AND.           &
     610                         BTEST(wall_flags_total_0(k,j+2,i),2)  .AND.           &
     611                         BTEST(wall_flags_total_0(k,j-1,i),2) )                &
     612                THEN                                                         
    609613                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 14 )
    610614!
     
    633637               
    634638                flag_set = .FALSE.
    635                 IF ( ( .NOT. BTEST(wall_flags_static_0(k-1,j,i),2)          .AND.     &
    636                              BTEST(wall_flags_static_0(k,j,i),2)            .AND.     &
    637                              BTEST(wall_flags_static_0(k+1,j,i),2) )        .OR.      &
    638                      ( .NOT. BTEST(wall_flags_static_0(k_pp,j,i),2)         .AND.     &                             
    639                              BTEST(wall_flags_static_0(k+1,j,i),2)          .AND.     &
    640                              BTEST(wall_flags_static_0(k,j,i),2) )          .OR.      &
    641                      ( k == nzt .AND. symmetry_flag == 0 ) )                          &
     639                IF ( ( .NOT. BTEST(wall_flags_total_0(k-1,j,i),2)          .AND.   &
     640                             BTEST(wall_flags_total_0(k,j,i),2)            .AND.   &
     641                             BTEST(wall_flags_total_0(k+1,j,i),2) )        .OR.    &
     642                     ( .NOT. BTEST(wall_flags_total_0(k_pp,j,i),2)         .AND.   &                             
     643                             BTEST(wall_flags_total_0(k+1,j,i),2)          .AND.   &
     644                             BTEST(wall_flags_total_0(k,j,i),2) )          .OR.    &
     645                     ( k == nzt .AND. symmetry_flag == 0 ) )                       &
    642646                THEN                                                           
    643647                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 15 )     
    644648                   flag_set = .TRUE.                                           
    645                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k_mm,j,i),2)    .OR.       &
    646                            .NOT. BTEST(wall_flags_static_0(k_ppp,j,i),2) ) .AND.      &
    647                                  BTEST(wall_flags_static_0(k-1,j,i),2)     .AND.      &
    648                                  BTEST(wall_flags_static_0(k,j,i),2)       .AND.      &
    649                                  BTEST(wall_flags_static_0(k+1,j,i),2)     .AND.      &
    650                                  BTEST(wall_flags_static_0(k_pp,j,i),2)    .AND.      &
    651                            .NOT. flag_set                                  .OR.       &
    652                          ( k == nzt - 1 .AND. symmetry_flag == 0 ) )                  &
     649                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k_mm,j,i),2)    .OR.     &
     650                           .NOT. BTEST(wall_flags_total_0(k_ppp,j,i),2) ) .AND.    &
     651                                 BTEST(wall_flags_total_0(k-1,j,i),2)     .AND.    &
     652                                 BTEST(wall_flags_total_0(k,j,i),2)       .AND.    &
     653                                 BTEST(wall_flags_total_0(k+1,j,i),2)     .AND.    &
     654                                 BTEST(wall_flags_total_0(k_pp,j,i),2)    .AND.    &
     655                           .NOT. flag_set                                  .OR.    &
     656                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )               &
    653657                THEN                                                           
    654658                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 16 )     
    655659                   flag_set = .TRUE.                                           
    656                 ELSEIF ( BTEST(wall_flags_static_0(k_mm,j,i),2)             .AND.     &
    657                          BTEST(wall_flags_static_0(k-1,j,i),2)              .AND.     &
    658                          BTEST(wall_flags_static_0(k,j,i),2)                .AND.     &
    659                          BTEST(wall_flags_static_0(k+1,j,i),2)              .AND.     &
    660                          BTEST(wall_flags_static_0(k_pp,j,i),2)             .AND.     &
    661                          BTEST(wall_flags_static_0(k_ppp,j,i),2)            .AND.     &
    662                          .NOT. flag_set )                                             &
     660                ELSEIF ( BTEST(wall_flags_total_0(k_mm,j,i),2)             .AND.   &
     661                         BTEST(wall_flags_total_0(k-1,j,i),2)              .AND.   &
     662                         BTEST(wall_flags_total_0(k,j,i),2)                .AND.   &
     663                         BTEST(wall_flags_total_0(k+1,j,i),2)              .AND.   &
     664                         BTEST(wall_flags_total_0(k_pp,j,i),2)             .AND.   &
     665                         BTEST(wall_flags_total_0(k_ppp,j,i),2)            .AND.   &
     666                         .NOT. flag_set )                                          &
    663667                THEN
    664668                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 17 )
     
    682686!--             w component - x-direction
    683687!--             WS1 (18), WS3 (19), WS5 (20)
    684                 IF ( .NOT. BTEST(wall_flags_static_0(k,j,i+1),3) .OR.          &
     688                IF ( .NOT. BTEST(wall_flags_total_0(k,j,i+1),3) .OR.           &
    685689                         ( (  bc_dirichlet_l .OR. bc_radiation_l )             &
    686690                           .AND. i == nxl   )    .OR.                          &
     
    689693                THEN                                                           
    690694                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 18 )     
    691                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i+2),3)  .AND.  &
    692                                  BTEST(wall_flags_static_0(k,j,i+1),3)  .OR.   &
    693                            .NOT. BTEST(wall_flags_static_0(k,j,i-1),3) )       &
     695                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i+2),3)  .AND.   &
     696                                 BTEST(wall_flags_total_0(k,j,i+1),3)  .OR.    &
     697                           .NOT. BTEST(wall_flags_total_0(k,j,i-1),3) )        &
    694698                                                     .OR.                      &
    695699                         ( ( bc_dirichlet_r .OR. bc_radiation_r )              &
     
    702706!--                Clear flag for WS1                                         
    703707                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 18 )     
    704                 ELSEIF ( BTEST(wall_flags_static_0(k,j,i+1),3)  .AND.          &
    705                          BTEST(wall_flags_static_0(k,j,i+2),3)  .AND.          &
    706                          BTEST(wall_flags_static_0(k,j,i-1),3) )               &
     708                ELSEIF ( BTEST(wall_flags_total_0(k,j,i+1),3)  .AND.           &
     709                         BTEST(wall_flags_total_0(k,j,i+2),3)  .AND.           &
     710                         BTEST(wall_flags_total_0(k,j,i-1),3) )                &
    707711                THEN                                                           
    708712                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i),20 )       
     
    714718!--             w component - y-direction                                     
    715719!--             WS1 (21), WS3 (22), WS5 (23)                                   
    716                 IF ( .NOT. BTEST(wall_flags_static_0(k,j+1,i),3) .OR.          &
     720                IF ( .NOT. BTEST(wall_flags_total_0(k,j+1,i),3) .OR.           &
    717721                         ( ( bc_dirichlet_s .OR. bc_radiation_s )              &
    718722                           .AND. j == nys   )    .OR.                          &
     
    721725                THEN                                                           
    722726                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 21 )     
    723                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j+2,i),3)  .AND.  &
    724                                  BTEST(wall_flags_static_0(k,j+1,i),3)  .OR.   &
    725                            .NOT. BTEST(wall_flags_static_0(k,j-1,i),3) )       &
     727                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j+2,i),3)  .AND.   &
     728                                 BTEST(wall_flags_total_0(k,j+1,i),3)  .OR.    &
     729                           .NOT. BTEST(wall_flags_total_0(k,j-1,i),3) )        &
    726730                                                     .OR.                      &
    727731                         ( ( bc_dirichlet_s .OR. bc_radiation_s )              &
     
    733737!                                                                             
    734738!--                Clear flag for WS1                                         
    735                    advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 21 )     
    736                 ELSEIF ( BTEST(wall_flags_static_0(k,j+1,i),3)  .AND.          &
    737                          BTEST(wall_flags_static_0(k,j+2,i),3)  .AND.          &
    738                          BTEST(wall_flags_static_0(k,j-1,i),3) )               &
     739                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 21 )       
     740                ELSEIF ( BTEST(wall_flags_total_0(k,j+1,i),3)  .AND.           &
     741                         BTEST(wall_flags_total_0(k,j+2,i),3)  .AND.           &
     742                         BTEST(wall_flags_total_0(k,j-1,i),3) )                &
    739743                THEN                                                           
    740744                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 23 )
     
    765769               
    766770                flag_set = .FALSE.                                       
    767                 IF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i),3)          .AND.     &
    768                              BTEST(wall_flags_static_0(k+1,j,i),3) )      .OR.      &
    769                      ( .NOT. BTEST(wall_flags_static_0(k+1,j,i),3)        .AND.     &
    770                              BTEST(wall_flags_static_0(k,j,i),3) )        .OR.      &       
    771                      k == nzt -1 )                                                  &
     771                IF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i),3)          .AND.   &
     772                             BTEST(wall_flags_total_0(k+1,j,i),3) )      .OR.    &
     773                     ( .NOT. BTEST(wall_flags_total_0(k+1,j,i),3)        .AND.   &
     774                             BTEST(wall_flags_total_0(k,j,i),3) )        .OR.    &       
     775                     k == nzt -1 )                                               &
    772776                THEN
    773777!
     
    779783                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 24 )
    780784                   flag_set = .TRUE.
    781                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k-1,j,i),3)    .AND.     &
    782                                  BTEST(wall_flags_static_0(k,j,i),3)      .AND.     &
    783                                  BTEST(wall_flags_static_0(k+1,j,i),3)    .AND.     &
    784                                  BTEST(wall_flags_static_0(k_pp,j,i),3) ) .OR.      &
    785                          ( .NOT. BTEST(wall_flags_static_0(k_pp,j,i),3)   .AND.     &
    786                                  BTEST(wall_flags_static_0(k+1,j,i),3)    .AND.     &
    787                                  BTEST(wall_flags_static_0(k,j,i),3)      .AND.     &
    788                                  BTEST(wall_flags_static_0(k-1,j,i),3) )  .AND.     &
    789                            .NOT. flag_set                          .OR.             &
    790                          k == nzt - 2 )                                             &
     785                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k-1,j,i),3)    .AND.   &
     786                                 BTEST(wall_flags_total_0(k,j,i),3)      .AND.   &
     787                                 BTEST(wall_flags_total_0(k+1,j,i),3)    .AND.   &
     788                                 BTEST(wall_flags_total_0(k_pp,j,i),3) ) .OR.    &
     789                         ( .NOT. BTEST(wall_flags_total_0(k_pp,j,i),3)   .AND.   &
     790                                 BTEST(wall_flags_total_0(k+1,j,i),3)    .AND.   &
     791                                 BTEST(wall_flags_total_0(k,j,i),3)      .AND.   &
     792                                 BTEST(wall_flags_total_0(k-1,j,i),3) )  .AND.   &
     793                           .NOT. flag_set                          .OR.          &
     794                         k == nzt - 2 )                                          &
    791795                THEN                                                           
    792796                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 25 )     
    793797                   flag_set = .TRUE.                                           
    794                 ELSEIF ( BTEST(wall_flags_static_0(k-1,j,i),3)            .AND.     &
    795                          BTEST(wall_flags_static_0(k,j,i),3)              .AND.     &
    796                          BTEST(wall_flags_static_0(k+1,j,i),3)            .AND.     &
    797                          BTEST(wall_flags_static_0(k_pp,j,i),3)           .AND.     &
    798                          .NOT. flag_set )                                           &
     798                ELSEIF ( BTEST(wall_flags_total_0(k-1,j,i),3)            .AND.   &
     799                         BTEST(wall_flags_total_0(k,j,i),3)              .AND.   &
     800                         BTEST(wall_flags_total_0(k+1,j,i),3)            .AND.   &
     801                         BTEST(wall_flags_total_0(k_pp,j,i),3)           .AND.   &
     802                         .NOT. flag_set )                                        &
    799803                THEN                                                               
    800804                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 26 )
     
    867871          DO  j = nys, nyn
    868872             DO  k = nzb+1, nzt
    869                 IF ( .NOT.  BTEST(wall_flags_static_0(k,j,i),0) )  CYCLE
     873                IF ( .NOT.  BTEST(wall_flags_total_0(k,j,i),0) )  CYCLE
    870874!
    871875!--             scalar - x-direction
    872876!--             WS1 (0), WS3 (1), WS5 (2)
    873                 IF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i+1),0)      .OR.          &
    874                        .NOT. BTEST(wall_flags_static_0(k,j,i+2),0)      .OR.          &   
    875                        .NOT. BTEST(wall_flags_static_0(k,j,i-1),0) )    .OR.          &
    876                        ( non_cyclic_l  .AND.  i == 0  )                 .OR.          &
     877                IF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i+1),0)      .OR.      &
     878                       .NOT. BTEST(wall_flags_total_0(k,j,i+2),0)      .OR.      &   
     879                       .NOT. BTEST(wall_flags_total_0(k,j,i-1),0) )    .OR.      &
     880                       ( non_cyclic_l  .AND.  i == 0  )                .OR.      &
    877881                       ( non_cyclic_r  .AND.  i == nx ) )  THEN           
    878882                 advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 0 )             
    879                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j,i+3),0)  .AND.         &
    880                                  BTEST(wall_flags_static_0(k,j,i+1),0)  .AND.         &
    881                                  BTEST(wall_flags_static_0(k,j,i+2),0)  .AND.         &
    882                                  BTEST(wall_flags_static_0(k,j,i-1),0)                &
    883                          )                       .OR.                                 &
    884                          ( .NOT. BTEST(wall_flags_static_0(k,j,i-2),0)  .AND.         &
    885                                  BTEST(wall_flags_static_0(k,j,i+1),0)  .AND.         &
    886                                  BTEST(wall_flags_static_0(k,j,i+2),0)  .AND.         &
    887                                  BTEST(wall_flags_static_0(k,j,i-1),0)                &
    888                          )                                                            &
    889                                                  .OR.                                 &
    890                          ( non_cyclic_r  .AND.  i == nx-1 )  .OR.                     &
     883                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j,i+3),0)  .AND.     &
     884                                 BTEST(wall_flags_total_0(k,j,i+1),0)  .AND.     &
     885                                 BTEST(wall_flags_total_0(k,j,i+2),0)  .AND.     &
     886                                 BTEST(wall_flags_total_0(k,j,i-1),0)            &
     887                         )                       .OR.                            &
     888                         ( .NOT. BTEST(wall_flags_total_0(k,j,i-2),0)  .AND.     &
     889                                 BTEST(wall_flags_total_0(k,j,i+1),0)  .AND.     &
     890                                 BTEST(wall_flags_total_0(k,j,i+2),0)  .AND.     &
     891                                 BTEST(wall_flags_total_0(k,j,i-1),0)            &
     892                         )                                                       &
     893                                                 .OR.                            &
     894                         ( non_cyclic_r  .AND.  i == nx-1 )  .OR.                &
    891895                         ( non_cyclic_l  .AND.  i == 1    ) )  THEN           
    892896                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 1 )             
    893                 ELSEIF ( BTEST(wall_flags_static_0(k,j,i+1),0)           .AND.        &
    894                          BTEST(wall_flags_static_0(k,j,i+2),0)           .AND.        &
    895                          BTEST(wall_flags_static_0(k,j,i+3),0)           .AND.        &
    896                          BTEST(wall_flags_static_0(k,j,i-1),0)           .AND.        &
    897                          BTEST(wall_flags_static_0(k,j,i-2),0) )                      &
     897                ELSEIF ( BTEST(wall_flags_total_0(k,j,i+1),0)           .AND.    &
     898                         BTEST(wall_flags_total_0(k,j,i+2),0)           .AND.    &
     899                         BTEST(wall_flags_total_0(k,j,i+3),0)           .AND.    &
     900                         BTEST(wall_flags_total_0(k,j,i-1),0)           .AND.    &
     901                         BTEST(wall_flags_total_0(k,j,i-2),0) )                  &
    898902                THEN                                                           
    899903                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 2 )             
     
    902906!--             scalar - y-direction                                           
    903907!--             WS1 (3), WS3 (4), WS5 (5)                                     
    904                 IF ( ( .NOT. BTEST(wall_flags_static_0(k,j+1,i),0)        .OR.        &
    905                        .NOT. BTEST(wall_flags_static_0(k,j+2,i),0)        .OR.        &   
    906                        .NOT. BTEST(wall_flags_static_0(k,j-1,i),0))       .OR.        &
    907                      ( non_cyclic_s  .AND.  j == 0  )                     .OR.        &
     908                IF ( ( .NOT. BTEST(wall_flags_total_0(k,j+1,i),0)        .OR.    &
     909                       .NOT. BTEST(wall_flags_total_0(k,j+2,i),0)        .OR.    &   
     910                       .NOT. BTEST(wall_flags_total_0(k,j-1,i),0))       .OR.    &
     911                     ( non_cyclic_s  .AND.  j == 0  )                    .OR.    &
    908912                     ( non_cyclic_n  .AND.  j == ny ) )  THEN                                                           
    909913                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 3 )             
    910914!                                                                             
    911915!--             WS3                                                           
    912                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k,j+3,i),0)    .AND.       &
    913                                  BTEST(wall_flags_static_0(k,j+1,i),0)    .AND.       &
    914                                  BTEST(wall_flags_static_0(k,j+2,i),0)    .AND.       &
    915                                  BTEST(wall_flags_static_0(k,j-1,i),0)                &
    916                          )                       .OR.                                 &
    917                          ( .NOT. BTEST(wall_flags_static_0(k,j-2,i),0)    .AND.       &
    918                                  BTEST(wall_flags_static_0(k,j+1,i),0)    .AND.       &
    919                                  BTEST(wall_flags_static_0(k,j+2,i),0)    .AND.       &
    920                                  BTEST(wall_flags_static_0(k,j-1,i),0)                &
    921                          )                                                            &
    922                                                  .OR.                                 &
    923                          ( non_cyclic_s  .AND.  j == 1    )  .OR.                     &
     916                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k,j+3,i),0)    .AND.   &
     917                                 BTEST(wall_flags_total_0(k,j+1,i),0)    .AND.   &
     918                                 BTEST(wall_flags_total_0(k,j+2,i),0)    .AND.   &
     919                                 BTEST(wall_flags_total_0(k,j-1,i),0)            &
     920                         )                       .OR.                            &
     921                         ( .NOT. BTEST(wall_flags_total_0(k,j-2,i),0)    .AND.   &
     922                                 BTEST(wall_flags_total_0(k,j+1,i),0)    .AND.   &
     923                                 BTEST(wall_flags_total_0(k,j+2,i),0)    .AND.   &
     924                                 BTEST(wall_flags_total_0(k,j-1,i),0)            &
     925                         )                                                       &
     926                                                 .OR.                            &
     927                         ( non_cyclic_s  .AND.  j == 1    )  .OR.                &
    924928                         ( non_cyclic_n  .AND.  j == ny-1 ) )  THEN           
    925929                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 4 )             
    926930!                                                                             
    927931!--             WS5                                                           
    928                 ELSEIF ( BTEST(wall_flags_static_0(k,j+1,i),0)           .AND.        &
    929                          BTEST(wall_flags_static_0(k,j+2,i),0)           .AND.        &
    930                          BTEST(wall_flags_static_0(k,j+3,i),0)           .AND.        &
    931                          BTEST(wall_flags_static_0(k,j-1,i),0)           .AND.        &
    932                          BTEST(wall_flags_static_0(k,j-2,i),0) )                      &
     932                ELSEIF ( BTEST(wall_flags_total_0(k,j+1,i),0)           .AND.    &
     933                         BTEST(wall_flags_total_0(k,j+2,i),0)           .AND.    &
     934                         BTEST(wall_flags_total_0(k,j+3,i),0)           .AND.    &
     935                         BTEST(wall_flags_total_0(k,j-1,i),0)           .AND.    &
     936                         BTEST(wall_flags_total_0(k,j-2,i),0) )                  &
    933937                THEN                                                           
    934938                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 5 )             
     
    938942!--             for passive scalars, even if only one direction may be
    939943!--             blocked by topography. These locations will be identified
    940 !--             by wall_flags_static_0 bit 31. Note, since several modules define
     944!--             by wall_flags_total_0 bit 31. Note, since several modules define
    941945!--             advection flags but may apply different scalar boundary
    942946!--             conditions, bit 31 is temporarily stored on advc_flags.
     
    10251029!--                them again.
    10261030!--                x-direction
    1027                    IF ( ( non_cyclic_l  .AND.  i == 0  )  .OR.                 &
     1031                   IF ( ( non_cyclic_l  .AND.  i == 0  )  .OR.             &
    10281032                        ( non_cyclic_r  .AND.  i == nx ) )  THEN
    10291033                      advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 0 )
     
    10341038                   ENDIF
    10351039                   
    1036                    IF ( ( non_cyclic_l  .AND.  i == 1    )  .OR.               &
     1040                   IF ( ( non_cyclic_l  .AND.  i == 1    )  .OR.           &
    10371041                        ( non_cyclic_r  .AND.  i == nx-1 ) )  THEN
    10381042                      advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 0 )
     
    10441048!
    10451049!--                y-direction
    1046                    IF ( ( non_cyclic_n  .AND.  j == 0  )  .OR.                 &
     1050                   IF ( ( non_cyclic_n  .AND.  j == 0  )  .OR.             &
    10471051                        ( non_cyclic_s  .AND.  j == ny ) )  THEN
    10481052                      advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 3 )
     
    10531057                   ENDIF
    10541058                   
    1055                    IF ( ( non_cyclic_n  .AND.  j == 1    )  .OR.               &
     1059                   IF ( ( non_cyclic_n  .AND.  j == 1    )  .OR.           &
    10561060                        ( non_cyclic_s  .AND.  j == ny-1 ) )  THEN
    10571061                      advc_flag(k,j,i) = IBCLR( advc_flag(k,j,i), 3 )
     
    10861090                                                                               
    10871091                flag_set = .FALSE.                                             
    1088                 IF ( ( .NOT. BTEST(wall_flags_static_0(k-1,j,i),0)          .AND.     &
    1089                              BTEST(wall_flags_static_0(k,j,i),0)            .AND.     &
    1090                              BTEST(wall_flags_static_0(k+1,j,i),0) )        .OR.      &
    1091                      ( .NOT. BTEST(wall_flags_static_0(k_pp,j,i),0)         .AND.     &                             
    1092                              BTEST(wall_flags_static_0(k+1,j,i),0)          .AND.     &
    1093                              BTEST(wall_flags_static_0(k,j,i),0) )          .OR.      &
    1094                      ( k == nzt .AND. symmetry_flag == 0 ) )                          &
     1092                IF ( ( .NOT. BTEST(wall_flags_total_0(k-1,j,i),0)          .AND.  &
     1093                             BTEST(wall_flags_total_0(k,j,i),0)            .AND.  &
     1094                             BTEST(wall_flags_total_0(k+1,j,i),0) )        .OR.   &
     1095                     ( .NOT. BTEST(wall_flags_total_0(k_pp,j,i),0)         .AND.  &                             
     1096                             BTEST(wall_flags_total_0(k+1,j,i),0)          .AND.  &
     1097                             BTEST(wall_flags_total_0(k,j,i),0) )          .OR.   &
     1098                     ( k == nzt .AND. symmetry_flag == 0 ) )                      &
    10951099                THEN                                                           
    10961100                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 6 )             
    10971101                   flag_set = .TRUE.                                           
    1098                 ELSEIF ( ( .NOT. BTEST(wall_flags_static_0(k_mm,j,i),0)    .OR.       &
    1099                            .NOT. BTEST(wall_flags_static_0(k_ppp,j,i),0) ) .AND.      &
    1100                                  BTEST(wall_flags_static_0(k-1,j,i),0)     .AND.      &
    1101                                  BTEST(wall_flags_static_0(k,j,i),0)       .AND.      &
    1102                                  BTEST(wall_flags_static_0(k+1,j,i),0)     .AND.      &
    1103                                  BTEST(wall_flags_static_0(k_pp,j,i),0)    .AND.      &
    1104                            .NOT. flag_set                                  .OR.       &
    1105                          ( k == nzt - 1 .AND. symmetry_flag == 0 ) )                  &
     1102                ELSEIF ( ( .NOT. BTEST(wall_flags_total_0(k_mm,j,i),0)    .OR.    &
     1103                           .NOT. BTEST(wall_flags_total_0(k_ppp,j,i),0) ) .AND.   &
     1104                                 BTEST(wall_flags_total_0(k-1,j,i),0)     .AND.   &
     1105                                 BTEST(wall_flags_total_0(k,j,i),0)       .AND.   &
     1106                                 BTEST(wall_flags_total_0(k+1,j,i),0)     .AND.   &
     1107                                 BTEST(wall_flags_total_0(k_pp,j,i),0)    .AND.   &
     1108                           .NOT. flag_set                                  .OR.   &
     1109                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )              &
    11061110                THEN                                                           
    11071111                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 7 )             
    11081112                   flag_set = .TRUE.                                           
    1109                 ELSEIF ( BTEST(wall_flags_static_0(k_mm,j,i),0)  .AND.                &
    1110                          BTEST(wall_flags_static_0(k-1,j,i),0)   .AND.                &
    1111                          BTEST(wall_flags_static_0(k,j,i),0)     .AND.                &
    1112                          BTEST(wall_flags_static_0(k+1,j,i),0)   .AND.                &
    1113                          BTEST(wall_flags_static_0(k_pp,j,i),0)  .AND.                &
    1114                          BTEST(wall_flags_static_0(k_ppp,j,i),0) .AND.                &
    1115                         .NOT. flag_set )                                       &
     1113                ELSEIF ( BTEST(wall_flags_total_0(k_mm,j,i),0)            .AND.   &
     1114                         BTEST(wall_flags_total_0(k-1,j,i),0)             .AND.   &
     1115                         BTEST(wall_flags_total_0(k,j,i),0)               .AND.   &
     1116                         BTEST(wall_flags_total_0(k+1,j,i),0)             .AND.   &
     1117                         BTEST(wall_flags_total_0(k_pp,j,i),0)            .AND.   &
     1118                         BTEST(wall_flags_total_0(k_ppp,j,i),0)           .AND.   &
     1119                        .NOT. flag_set )                                          &
    11161120                THEN
    11171121                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 8 )
Note: See TracChangeset for help on using the changeset viewer.