Changeset 4324 for palm/trunk/SOURCE


Ignore:
Timestamp:
Dec 6, 2019 7:11:33 AM (5 years ago)
Author:
Giersch
Message:

Vertical fluxes of w are now set to zero at nzt and nzt+1, setting of advection flags for fluxes in z-direction revised, comments extended

File:
1 edited

Legend:

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

    r4318 r4324  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! Vertical fluxes of w are now set to zero at nzt and nzt+1, setting of
     23! advection flags for fluxes in z-direction revised, comments extended
    2324!
    2425! Former revisions:
     
    459460                ENDIF                                                         
    460461!                                                                             
    461 !--             u component - z-direction. Fluxes are calculated on w-grid level                                     
     462!--             u component - z-direction. Fluxes are calculated on w-grid                                     
     463!--             level. Boundary u-values at/within walls aren't used.
    462464!--             WS1 (6), WS3 (7), WS5 (8)                                     
    463465                IF ( k == nzb+1 )  THEN                                       
     
    478480                                                                               
    479481                flag_set = .FALSE.                                             
    480                 IF ( .NOT. BTEST(wall_flags_0(k-1,j,i),1)  .AND.               &
    481                            BTEST(wall_flags_0(k,j,i),1)    .OR.                &
    482                      .NOT. BTEST(wall_flags_0(k_pp,j,i),1) .AND.               &                             
    483                            BTEST(wall_flags_0(k,j,i),1)    .OR.                &
     482                IF ( ( .NOT. BTEST(wall_flags_0(k-1,j,i),1)   .AND.            &
     483                             BTEST(wall_flags_0(k,j,i),1)     .AND.            &
     484                             BTEST(wall_flags_0(k+1,j,i),1) ) .OR.             &
     485                     ( .NOT. BTEST(wall_flags_0(k_pp,j,i),1)  .AND.            &                             
     486                             BTEST(wall_flags_0(k+1,j,i),1)   .AND.            &
     487                             BTEST(wall_flags_0(k,j,i),1) )   .OR.             &
    484488                     k == nzt )                                                &
    485489                THEN                                                           
     
    491495                                 BTEST(wall_flags_0(k,j,i),1)       .AND.      &
    492496                                 BTEST(wall_flags_0(k+1,j,i),1)     .AND.      &
    493                                  BTEST(wall_flags_0(k_pp,j,i),1)    .OR.       &
     497                                 BTEST(wall_flags_0(k_pp,j,i),1)    .AND.      &
     498                           .NOT. flag_set                           .OR.       &
    494499                         k == nzt - 1 )                                        &
    495500                THEN                                                           
     
    587592                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 12 )
    588593                ENDIF
    589 !
    590 !--             v component - z-direction. Fluxes are calculated on w-grid level
     594!                                                             
     595!--             v component - z-direction. Fluxes are calculated on w-grid                                     
     596!--             level. Boundary v-values at/within walls aren't used.
    591597!--             WS1 (15), WS3 (16), WS5 (17)
    592598                IF ( k == nzb+1 )  THEN
     
    607613               
    608614                flag_set = .FALSE.
    609                 IF ( .NOT. BTEST(wall_flags_0(k-1,j,i),2)  .AND.               &
    610                            BTEST(wall_flags_0(k,j,i),2)    .OR.                &
    611                      .NOT. BTEST(wall_flags_0(k_pp,j,i),2) .AND.               &                             
    612                            BTEST(wall_flags_0(k,j,i),2)    .OR.                &
     615                IF ( ( .NOT. BTEST(wall_flags_0(k-1,j,i),2)   .AND.            &
     616                             BTEST(wall_flags_0(k,j,i),2)     .AND.            &
     617                             BTEST(wall_flags_0(k+1,j,i),2) ) .OR.             &
     618                     ( .NOT. BTEST(wall_flags_0(k_pp,j,i),2)  .AND.            &                             
     619                             BTEST(wall_flags_0(k+1,j,i),2)   .AND.            &
     620                             BTEST(wall_flags_0(k,j,i),2) )   .OR.             &
    613621                     k == nzt )                                                &
    614622                THEN                                                           
     
    620628                                 BTEST(wall_flags_0(k,j,i),2)       .AND.      &
    621629                                 BTEST(wall_flags_0(k+1,j,i),2)     .AND.      &
    622                                  BTEST(wall_flags_0(k_pp,j,i),2)    .OR.       &
     630                                 BTEST(wall_flags_0(k_pp,j,i),2)    .AND.      &
     631                           .NOT. flag_set                           .OR.       &
    623632                         k == nzt - 1 )                                        &
    624633                THEN                                                           
     
    714723                   advc_flags_m(k,j,i) = IBCLR( advc_flags_m(k,j,i), 21 )
    715724                ENDIF
    716 !
     725!                                                                             
    717726!--             w component - z-direction. Fluxes are calculated on scalar grid
    718 !--             level. WS1 (24), WS3 (25), WS5 (26)
     727!--             level. Boundary w-values at walls are used. Flux at k=i is 
     728!--             defined at scalar position k=i+1 with i being an integer.
     729!--             WS1 (24), WS3 (25), WS5 (26)
    719730                IF ( k == nzb+1 )  THEN
    720731                   k_mm = nzb
     
    755766                                 BTEST(wall_flags_0(k-1,j,i),3)     .AND.      &
    756767                                 BTEST(wall_flags_0(k,j,i),3)       .AND.      &
    757                                  BTEST(wall_flags_0(k+1,j,i),3)     .OR.       &
     768                                 BTEST(wall_flags_0(k+1,j,i),3)     .AND.      &
     769                           .NOT. flag_set                           .OR.       &
    758770                         k == nzt - 1 )                                        &
    759771                THEN                                                           
     
    10361048               
    10371049!                                                                             
    1038 !--             scalar - z-direction. Fluxes are calculated on w-grid level                                           
     1050!--             scalar - z-direction. Fluxes are calculated on w-grid                                     
     1051!--             level. Boundary values at/within walls aren't used.                                           
    10391052!--             WS1 (6), WS3 (7), WS5 (8)                                     
    10401053                IF ( k == nzb+1 )  THEN                                       
     
    10681081                                 BTEST(wall_flags_0(k,j,i),0)       .AND.      &
    10691082                                 BTEST(wall_flags_0(k+1,j,i),0)     .AND.      &
    1070                                  BTEST(wall_flags_0(k_pp,j,i),0)    .OR.       &   
     1083                                 BTEST(wall_flags_0(k_pp,j,i),0)    .AND.      &
     1084                           .NOT. flag_set                           .OR.       &
    10711085                         k == nzt - 1 )                                        &
    10721086                THEN                                                           
     
    34663480                                                          )
    34673481       ENDDO
     3482       
     3483!
     3484!--    Set resolved/turbulent flux at model top to zero (w-level). Hint: The
     3485!--    flux at nzt is defined at the scalar grid point nzt+1. Therefore, the
     3486!--    flux at nzt+1 is already outside of the model domain
     3487       flux_t(nzt) = 0.0_wp
     3488       diss_t(nzt) = 0.0_wp
     3489       w_comp(nzt) = 0.0_wp
     3490       
     3491       flux_t(nzt+1) = 0.0_wp
     3492       diss_t(nzt+1) = 0.0_wp
     3493       w_comp(nzt+1) = 0.0_wp
    34683494       
    34693495       DO  k = nzb+1, nzb_max_l
Note: See TracChangeset for help on using the changeset viewer.