Ignore:
Timestamp:
Dec 16, 2019 8:17:03 AM (4 years ago)
Author:
Giersch
Message:

Topography closed channel flow with symmetric boundaries implemented, ID tag in radiation module corrected

File:
1 edited

Legend:

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

    r4330 r4340  
    2525! -----------------
    2626! $Id$
     27! Topography closed channel flow with symmetric boundaries implemented
     28!
     29! 4330 2019-12-10 16:16:33Z knoop
    2730! Bugix: removed syntax error introduced by last commit
    2831!
     
    166169               salsa,                                                          &
    167170               scalar_advec,                                                   &
     171               symmetry_flag,                                                  &
    168172               intermediate_timestep_count,                                    &
    169173               u_gtrans,                                                       &
     
    502506                             BTEST(wall_flags_static_0(k+1,j,i),1)       .AND.     &
    503507                             BTEST(wall_flags_static_0(k,j,i),1) )       .OR.      &
    504                      k == nzt )                                                    &
     508                     ( k == nzt .AND. symmetry_flag == 0 ) )                       &
    505509                THEN                                                           
    506510                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 6 )       
     
    512516                                 BTEST(wall_flags_static_0(k+1,j,i),1)     .AND.   &
    513517                                 BTEST(wall_flags_static_0(k_pp,j,i),1)    .AND.   &
    514                            .NOT. flag_set                           .OR.           &
    515                          k == nzt - 1 )                                            &
     518                           .NOT. flag_set                                  .OR.    &
     519                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )               &
    516520                THEN                                                           
    517521                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 7 )       
     
    635639                             BTEST(wall_flags_static_0(k+1,j,i),2)          .AND.     &
    636640                             BTEST(wall_flags_static_0(k,j,i),2) )          .OR.      &
    637                      k == nzt )                                                       &
     641                     ( k == nzt .AND. symmetry_flag == 0 ) )                          &
    638642                THEN                                                           
    639643                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 15 )     
     
    646650                                 BTEST(wall_flags_static_0(k_pp,j,i),2)    .AND.      &
    647651                           .NOT. flag_set                                  .OR.       &
    648                          k == nzt - 1 )                                               &
     652                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )                  &
    649653                THEN                                                           
    650654                   advc_flags_m(k,j,i) = IBSET( advc_flags_m(k,j,i), 16 )     
     
    10821086                                                                               
    10831087                flag_set = .FALSE.                                             
    1084                 IF ( .NOT. BTEST(wall_flags_static_0(k-1,j,i),0)  .AND.               &
    1085                            BTEST(wall_flags_static_0(k,j,i),0)    .OR.                &
    1086                      .NOT. BTEST(wall_flags_static_0(k_pp,j,i),0) .AND.               &                             
    1087                            BTEST(wall_flags_static_0(k,j,i),0)    .OR.                &
    1088                      k == nzt )                                                &
     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 ) )                          &
    10891095                THEN                                                           
    10901096                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 6 )             
     
    10961102                                 BTEST(wall_flags_static_0(k+1,j,i),0)     .AND.      &
    10971103                                 BTEST(wall_flags_static_0(k_pp,j,i),0)    .AND.      &
    1098                            .NOT. flag_set                           .OR.       &
    1099                          k == nzt - 1 )                                        &
     1104                           .NOT. flag_set                                  .OR.       &
     1105                         ( k == nzt - 1 .AND. symmetry_flag == 0 ) )                  &
    11001106                THEN                                                           
    11011107                   advc_flag(k,j,i) = IBSET( advc_flag(k,j,i), 7 )             
     
    15951601       ENDDO       
    15961602       
    1597        DO  k = nzt-1, nzt
     1603       DO  k = nzt-1, nzt-symmetry_flag
    15981604          ibit8 = REAL( IBITS(advc_flag(k,j,i),8,1), KIND = wp )
    15991605          ibit7 = REAL( IBITS(advc_flag(k,j,i),7,1), KIND = wp )
     
    16381644       
    16391645!
    1640 !--    Set resolved/turbulent flux at model top to zero (w-level)
     1646!--    Set resolved/turbulent flux at model top to zero (w-level). In case that
     1647!--    a symmetric behavior between bottom and top shall be guaranteed (closed
     1648!--    channel flow), the flux at nzt is also set to zero.
     1649       IF ( symmetry_flag == 1 ) THEN
     1650          flux_t(nzt) = 0.0_wp
     1651          diss_t(nzt) = 0.0_wp
     1652       ENDIF
    16411653       flux_t(nzt+1) = 0.0_wp
    16421654       diss_t(nzt+1) = 0.0_wp
     1655       
    16431656       
    16441657       IF ( limiter )  THEN
     
    23232336       ENDDO
    23242337       
    2325        DO  k = nzt-1, nzt
     2338       DO  k = nzt-1, nzt-symmetry_flag
    23262339!
    23272340!--       k index has to be modified near bottom and top, else array
     
    23682381       
    23692382!
    2370 !--    Set resolved/turbulent flux at model top to zero (w-level)
     2383!--    Set resolved/turbulent flux at model top to zero (w-level). In case that
     2384!--    a symmetric behavior between bottom and top shall be guaranteed (closed
     2385!--    channel flow), the flux at nzt is also set to zero.
     2386       IF ( symmetry_flag == 1 ) THEN
     2387          flux_t(nzt) = 0.0_wp
     2388          diss_t(nzt) = 0.0_wp
     2389          w_comp(nzt) = 0.0_wp
     2390       ENDIF
    23712391       flux_t(nzt+1) = 0.0_wp
    23722392       diss_t(nzt+1) = 0.0_wp
     
    28872907       ENDDO
    28882908       
    2889        DO  k = nzt-1, nzt
     2909       DO  k = nzt-1, nzt-symmetry_flag
    28902910!
    28912911!--       k index has to be modified near bottom and top, else array
     
    29322952       
    29332953!
    2934 !--    Set resolved/turbulent flux at model top to zero (w-level)
     2954!--    Set resolved/turbulent flux at model top to zero (w-level). In case that
     2955!--    a symmetric behavior between bottom and top shall be guaranteed (closed
     2956!--    channel flow), the flux at nzt is also set to zero.
     2957       IF ( symmetry_flag == 1 ) THEN
     2958          flux_t(nzt) = 0.0_wp
     2959          diss_t(nzt) = 0.0_wp
     2960          w_comp(nzt) = 0.0_wp
     2961       ENDIF
    29352962       flux_t(nzt+1) = 0.0_wp
    29362963       diss_t(nzt+1) = 0.0_wp
Note: See TracChangeset for help on using the changeset viewer.