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/synthetic_turbulence_generator_mod.f90

    r4335 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! 4335 2019-12-12 16:39:05Z suehring
    2731! Commentation of last commit
    2832!
     
    204208               nyng,                                                           &
    205209               nysg,                                                           &
    206                wall_flags_static_0
     210               wall_flags_total_0
    207211
    208212    USE kinds
     
    986990       nr_non_topo_yz_l(1) = SUM(                                              &
    987991                          MERGE( 1, 0,                                         &
    988                                  BTEST( wall_flags_static_0(nzb:nzt,nys:nyn,i), 1 ) ) )
     992                          BTEST( wall_flags_total_0(nzb:nzt,nys:nyn,i), 1 ) ) )
    989993!
    990994!--    Number of grid points where perturbations are imposed on v and w                                   
     
    994998       nr_non_topo_yz_l(2) = SUM(                                              &
    995999                          MERGE( 1, 0,                                         &
    996                                  BTEST( wall_flags_static_0(nzb:nzt,nysv:nyn,i), 2 ) ) )
     1000                          BTEST( wall_flags_total_0(nzb:nzt,nysv:nyn,i), 2 ) ) )
    9971001       nr_non_topo_yz_l(3) = SUM(                                              &
    9981002                          MERGE( 1, 0,                                         &
    999                                  BTEST( wall_flags_static_0(nzb:nzt,nys:nyn,i), 3 ) ) )
     1003                          BTEST( wall_flags_total_0(nzb:nzt,nys:nyn,i), 3 ) ) )
    10001004                                   
    10011005#if defined( __parallel )
     
    10151019       nr_non_topo_xz_l(2) = SUM(                                              &
    10161020                          MERGE( 1, 0,                                         &
    1017                                  BTEST( wall_flags_static_0(nzb:nzt,j,nxl:nxr), 2 ) ) )
     1021                          BTEST( wall_flags_total_0(nzb:nzt,j,nxl:nxr), 2 ) ) )
    10181022!
    10191023!--    Number of grid points where perturbations are imposed on u and w
     
    10231027       nr_non_topo_xz_l(1) = SUM(                                              &
    10241028                          MERGE( 1, 0,                                         &
    1025                                  BTEST( wall_flags_static_0(nzb:nzt,j,nxlu:nxr), 1 ) ) )
     1029                          BTEST( wall_flags_total_0(nzb:nzt,j,nxlu:nxr), 1 ) ) )
    10261030       nr_non_topo_xz_l(3) = SUM(                                              &
    10271031                          MERGE( 1, 0,                                         &
    1028                                  BTEST( wall_flags_static_0(nzb:nzt,j,nxl:nxr), 3 ) ) )
     1032                          BTEST( wall_flags_total_0(nzb:nzt,j,nxl:nxr), 3 ) ) )
    10291033                                   
    10301034#if defined( __parallel )
     
    13511355                dist_yz(k,j,1) = MIN( a11(k) * fu_yz(k,j), 3.0_wp ) *          &
    13521356                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1353                                            BTEST( wall_flags_static_0(k,j,i), 1 ) )
     1357                                    BTEST( wall_flags_total_0(k,j,i), 1 ) )
    13541358             ENDDO
    13551359          ENDDO
     
    13681372                                         + a22(k) * fv_yz(k,j) ), 3.0_wp ) *   &
    13691373                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1370                                            BTEST( wall_flags_static_0(k,j,i), 2 ) )   
     1374                                        BTEST( wall_flags_total_0(k,j,i), 2 ) )   
    13711375                dist_yz(k,j,3) = MIN( ( SQRT(a33(k) / MAXVAL(a33) )            &
    13721376                                      * 1.3_wp )                               &
     
    13751379                                        + a33(k) * fw_yz(k,j) ), 3.0_wp )  *   &
    13761380                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1377                                            BTEST( wall_flags_static_0(k,j,i), 3 ) )
     1381                                        BTEST( wall_flags_total_0(k,j,i), 3 ) )
    13781382             ENDDO
    13791383          ENDDO
     
    13981402          mc_factor_l(1) = SUM( dist_yz(nzb:nzt,nys:nyn,1)                     &
    13991403                         * MERGE( 1.0_wp, 0.0_wp,                              &
    1400                                   BTEST( wall_flags_static_0(nzb:nzt,nys:nyn,i), 1 ) ) )
     1404                           BTEST( wall_flags_total_0(nzb:nzt,nys:nyn,i), 1 ) ) )
    14011405       
    14021406          IF ( myidx == id_stg_left  )  i = nxl-1
     
    14051409          mc_factor_l(2) = SUM( dist_yz(nzb:nzt,nysv:nyn,2)                    &
    14061410                          * MERGE( 1.0_wp, 0.0_wp,                             &
    1407                                    BTEST( wall_flags_static_0(nzb:nzt,nysv:nyn,i), 2 ) ) )
     1411                            BTEST( wall_flags_total_0(nzb:nzt,nysv:nyn,i), 2 ) ) )
    14081412          mc_factor_l(3) = SUM( dist_yz(nzb:nzt,nys:nyn,3)                     &
    14091413                          * MERGE( 1.0_wp, 0.0_wp,                             &
    1410                                    BTEST( wall_flags_static_0(nzb:nzt,nys:nyn,i), 3 ) ) )
     1414                            BTEST( wall_flags_total_0(nzb:nzt,nys:nyn,i), 3 ) ) )
    14111415         
    14121416#if defined( __parallel )
     
    14251429          dist_yz(:,:,1) = ( dist_yz(:,:,1) - mc_factor(1) )                   &
    14261430                        * MERGE( 1.0_wp, 0.0_wp,                               &
    1427                                  BTEST( wall_flags_static_0(:,:,i), 1 ) )             
     1431                          BTEST( wall_flags_total_0(:,:,i), 1 ) )             
    14281432                                                                               
    14291433                                                                               
     
    14331437          dist_yz(:,:,2) = ( dist_yz(:,:,2) - mc_factor(2) )                   &
    14341438                        * MERGE( 1.0_wp, 0.0_wp,                               &
    1435                                  BTEST( wall_flags_static_0(:,:,i), 2 ) )             
     1439                          BTEST( wall_flags_total_0(:,:,i), 2 ) )             
    14361440                                                                               
    14371441          dist_yz(:,:,3) = ( dist_yz(:,:,3) - mc_factor(3) )                   &
    14381442                        * MERGE( 1.0_wp, 0.0_wp,                               &
    1439                                  BTEST( wall_flags_static_0(:,:,i), 3 ) )
     1443                          BTEST( wall_flags_total_0(:,:,i), 3 ) )
    14401444!     
    14411445!--       Add disturbances
     
    14531457                                           dist_yz(k,j,1)             )        &
    14541458                                   * MERGE( 1.0_wp, 0.0_wp,                    &
    1455                                             BTEST( wall_flags_static_0(k,j,0), 1 ) ) 
     1459                                     BTEST( wall_flags_total_0(k,j,0), 1 ) ) 
    14561460                      v(k,j,-nbgp:-1)  = ( mean_inflow_profiles(k,2) +         &
    14571461                                           dist_yz(k,j,2)             )        &
    14581462                                   * MERGE( 1.0_wp, 0.0_wp,                    &
    1459                                             BTEST( wall_flags_static_0(k,j,-1), 2 ) )
     1463                                     BTEST( wall_flags_total_0(k,j,-1), 2 ) )
    14601464                      w(k,j,-nbgp:-1)  =   dist_yz(k,j,3)                      &
    14611465                                   * MERGE( 1.0_wp, 0.0_wp,                    &
    1462                                             BTEST( wall_flags_static_0(k,j,-1), 3 ) )
     1466                                     BTEST( wall_flags_total_0(k,j,-1), 3 ) )
    14631467                   ENDDO
    14641468                ENDDO
     
    14691473                      u(k,j,0)   = ( u(k,j,0) + dist_yz(k,j,1) )               &
    14701474                                 * MERGE( 1.0_wp, 0.0_wp,                      &
    1471                                           BTEST( wall_flags_static_0(k,j,0), 1 ) )
     1475                                   BTEST( wall_flags_total_0(k,j,0), 1 ) )
    14721476                      u(k,j,-1)  = u(k,j,0)
    14731477                      v(k,j,-1)  = ( v(k,j,-1)  + dist_yz(k,j,2)  )            &
    14741478                                 * MERGE( 1.0_wp, 0.0_wp,                      &
    1475                                           BTEST( wall_flags_static_0(k,j,-1), 2 ) )
     1479                                   BTEST( wall_flags_total_0(k,j,-1), 2 ) )
    14761480                      w(k,j,-1)  = ( w(k,j,-1)  + dist_yz(k,j,3) )             &
    14771481                                 * MERGE( 1.0_wp, 0.0_wp,                      &
    1478                                           BTEST( wall_flags_static_0(k,j,-1), 3 ) )
     1482                                   BTEST( wall_flags_total_0(k,j,-1), 3 ) )
    14791483                   ENDDO
    14801484                ENDDO
     
    14861490                   u(k,j,nxr+1) = ( u(k,j,nxr+1) + dist_yz(k,j,1) )            &
    14871491                                  * MERGE( 1.0_wp, 0.0_wp,                     &
    1488                                            BTEST( wall_flags_static_0(k,j,nxr+1), 1 ) )
     1492                                    BTEST( wall_flags_total_0(k,j,nxr+1), 1 ) )
    14891493                   v(k,j,nxr+1) = ( v(k,j,nxr+1) + dist_yz(k,j,2) )            &
    14901494                                  * MERGE( 1.0_wp, 0.0_wp,                     &
    1491                                            BTEST( wall_flags_static_0(k,j,nxr+1), 2 ) )
     1495                                    BTEST( wall_flags_total_0(k,j,nxr+1), 2 ) )
    14921496                   w(k,j,nxr+1) = ( w(k,j,nxr+1) + dist_yz(k,j,3) )            &
    14931497                                  * MERGE( 1.0_wp, 0.0_wp,                     &
    1494                                            BTEST( wall_flags_static_0(k,j,nxr+1), 3 ) )
     1498                                    BTEST( wall_flags_total_0(k,j,nxr+1), 3 ) )
    14951499                ENDDO
    14961500             ENDDO
     
    15511555                                         + a22(k) * fv_xz(k,i) ), 3.0_wp ) *   &
    15521556                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1553                                            BTEST( wall_flags_static_0(k,j,i), 2 ) )
     1557                                    BTEST( wall_flags_total_0(k,j,i), 2 ) )
    15541558             ENDDO
    15551559          ENDDO
     
    15641568                dist_xz(k,i,1) = MIN( a11(k) * fu_xz(k,i), 3.0_wp ) *          &
    15651569                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1566                                            BTEST( wall_flags_static_0(k,j,i), 1 ) )   
     1570                                    BTEST( wall_flags_total_0(k,j,i), 1 ) )   
    15671571         
    15681572                dist_xz(k,i,3) = MIN( ( SQRT(a33(k) / MAXVAL(a33) )            &
     
    15721576                                        + a33(k) * fw_xz(k,i) ), 3.0_wp )  *   &
    15731577                                    MERGE( 1.0_wp, 0.0_wp,                     &
    1574                                            BTEST( wall_flags_static_0(k,j,i), 3 ) )
     1578                                    BTEST( wall_flags_total_0(k,j,i), 3 ) )
    15751579             ENDDO
    15761580          ENDDO
     
    15931597          mc_factor_l(2) = SUM( dist_xz(nzb:nzt,nxl:nxr,2)                     &
    15941598                         * MERGE( 1.0_wp, 0.0_wp,                              &
    1595                                   BTEST( wall_flags_static_0(nzb:nzt,j,nxl:nxr), 2 ) ) )
     1599                           BTEST( wall_flags_total_0(nzb:nzt,j,nxl:nxr), 2 ) ) )
    15961600         
    15971601          IF ( myidy == id_stg_south  ) j = nys-1
     
    16001604          mc_factor_l(1) = SUM( dist_xz(nzb:nzt,nxlu:nxr,1)                    &
    16011605                         * MERGE( 1.0_wp, 0.0_wp,                              &
    1602                                   BTEST( wall_flags_static_0(nzb:nzt,j,nxlu:nxr), 1 ) ) )
     1606                           BTEST( wall_flags_total_0(nzb:nzt,j,nxlu:nxr), 1 ) ) )
    16031607          mc_factor_l(3) = SUM( dist_xz(nzb:nzt,nxl:nxr,3)                     &
    16041608                         * MERGE( 1.0_wp, 0.0_wp,                              &
    1605                                   BTEST( wall_flags_static_0(nzb:nzt,j,nxl:nxr), 3 ) ) )
     1609                           BTEST( wall_flags_total_0(nzb:nzt,j,nxl:nxr), 3 ) ) )
    16061610         
    16071611#if defined( __parallel )
     
    16191623          dist_xz(:,:,2)   = ( dist_xz(:,:,2) - mc_factor(2) )                 &
    16201624                           * MERGE( 1.0_wp, 0.0_wp,                            &
    1621                                     BTEST( wall_flags_static_0(:,j,:), 2 ) )         
     1625                             BTEST( wall_flags_total_0(:,j,:), 2 ) )         
    16221626                                                                               
    16231627                                                                               
     
    16271631          dist_xz(:,:,1)   = ( dist_xz(:,:,1) - mc_factor(1) )                 &
    16281632                           * MERGE( 1.0_wp, 0.0_wp,                            &
    1629                                     BTEST( wall_flags_static_0(:,j,:), 1 ) )         
     1633                             BTEST( wall_flags_total_0(:,j,:), 1 ) )         
    16301634                                                                               
    16311635          dist_xz(:,:,3)   = ( dist_xz(:,:,3) - mc_factor(3) )                 &
    16321636                           * MERGE( 1.0_wp, 0.0_wp,                            &
    1633                                     BTEST( wall_flags_static_0(:,j,:), 3 ) )     
     1637                             BTEST( wall_flags_total_0(:,j,:), 3 ) )     
    16341638!         
    16351639!--       Add disturbances
     
    16391643                   u(k,-1,i) = ( u(k,-1,i) + dist_xz(k,i,1) )                  &
    16401644                                        * MERGE( 1.0_wp, 0.0_wp,               &
    1641                                                  BTEST( wall_flags_static_0(k,-1,i), 1 ) )
     1645                                          BTEST( wall_flags_total_0(k,-1,i), 1 ) )
    16421646                   v(k,0,i)  = ( v(k,0,i)  + dist_xz(k,i,2)  )                 &
    16431647                                        * MERGE( 1.0_wp, 0.0_wp,               &
    1644                                                  BTEST( wall_flags_static_0(k,0,i), 2 ) )
     1648                                          BTEST( wall_flags_total_0(k,0,i), 2 ) )
    16451649                   v(k,-1,i) = v(k,0,i)
    16461650                   w(k,-1,i) = ( w(k,-1,i) + dist_xz(k,i,3)  )                 &
    16471651                                        * MERGE( 1.0_wp, 0.0_wp,               &
    1648                                                  BTEST( wall_flags_static_0(k,-1,i), 3 ) )
     1652                                          BTEST( wall_flags_total_0(k,-1,i), 3 ) )
    16491653                ENDDO
    16501654             ENDDO
     
    16561660                   u(k,nyn+1,i) = ( u(k,nyn+1,i) + dist_xz(k,i,1) )            &
    16571661                                     * MERGE( 1.0_wp, 0.0_wp,                  &
    1658                                              BTEST( wall_flags_static_0(k,nyn+1,i), 1 ) )
     1662                                       BTEST( wall_flags_total_0(k,nyn+1,i), 1 ) )
    16591663                   v(k,nyn+1,i) = ( v(k,nyn+1,i) + dist_xz(k,i,2) )            &
    16601664                                     * MERGE( 1.0_wp, 0.0_wp,                  &
    1661                                               BTEST( wall_flags_static_0(k,nyn+1,i), 2 ) )
     1665                                       BTEST( wall_flags_total_0(k,nyn+1,i), 2 ) )
    16621666                   w(k,nyn+1,i) = ( w(k,nyn+1,i) + dist_xz(k,i,3) )            &
    16631667                                     * MERGE( 1.0_wp, 0.0_wp,                  &
    1664                                               BTEST( wall_flags_static_0(k,nyn+1,i), 3 ) )
     1668                                       BTEST( wall_flags_total_0(k,nyn+1,i), 3 ) )
    16651669                ENDDO
    16661670             ENDDO
Note: See TracChangeset for help on using the changeset viewer.