Ignore:
Timestamp:
Dec 14, 2017 5:12:51 PM (4 years ago)
Author:
kanani
Message:

Merge of branch palm4u into trunk

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/coriolis.f90

    r2233 r2696  
    11!> @file coriolis.f90
    22!------------------------------------------------------------------------------!
    3 ! This file is part of PALM.
     3! This file is part of the PALM model system.
    44!
    55! PALM is free software: you can redistribute it and/or modify it under the
     
    2525! -----------------
    2626! $Id$
     27! Forcing implemented, preliminary (MS)
     28!
     29! 2233 2017-05-30 18:08:54Z suehring
    2730!
    2831! 2232 2017-05-30 17:47:52Z suehring
     
    102105           
    103106       USE control_parameters,                                                 &
    104            ONLY:  f, fs, message_string
     107           ONLY:  f, forcing, fs, message_string
    105108           
    106109       USE indices,                                                            &
     
    117120
    118121       REAL(wp)     ::  flag       !< flag to mask topography
     122       REAL(wp)     ::  flag_force !< flag to mask large-scale pressure gradient in case larger-scale forcing is applied
     123
     124       flag_force = MERGE( 0.0_wp, 1.0_wp, forcing )
    119125!
    120126!--    Compute Coriolis terms for the three velocity components
     
    128134                   DO  k = nzb+1, nzt
    129135!
    130 !--                    Predetermine flag to mask topography
     136!--                   Predetermine flag to mask topography
    131137                      flag = MERGE( 1.0_wp, 0.0_wp,                            &
    132138                                    BTEST( wall_flags_0(k,j,i), 1 ) )
     
    134140                      tend(k,j,i) = tend(k,j,i) + f  *    ( 0.25_wp *          &
    135141                                   ( v(k,j,i-1) + v(k,j,i) + v(k,j+1,i-1) +    &
    136                                      v(k,j+1,i) ) - vg(k)   ) * flag           &
     142                                     v(k,j+1,i) ) - vg(k) * flag_force         &
     143                                                          ) * flag           &
    137144                                                - fs *    ( 0.25_wp *          &
    138145                                   ( w(k-1,j,i-1) + w(k-1,j,i) + w(k,j,i-1) +  &
    139146                                     w(k,j,i)   )                              &
    140                                                           )   * flag
     147                                                          ) * flag
    141148                   ENDDO
    142149                ENDDO
     
    149156                DO  j = nysv, nyn
    150157                   DO  k = nzb+1, nzt
     158!
     159!--                   Predetermine flag to mask topography
     160                      flag = MERGE( 1.0_wp, 0.0_wp,                            &
     161                                    BTEST( wall_flags_0(k,j,i), 2 ) )
     162
    151163                      tend(k,j,i) = tend(k,j,i) - f *     ( 0.25_wp *          &
    152164                                   ( u(k,j-1,i) + u(k,j,i) + u(k,j-1,i+1) +    &
    153                                      u(k,j,i+1) ) - ug(k) ) *                  &
    154                                       MERGE( 1.0_wp, 0.0_wp,                   &
    155                                              BTEST( wall_flags_0(k,j,i), 2 ) )
     165                                     u(k,j,i+1) ) - ug(k) * flag_force         &
     166                                                          ) * flag
    156167                   ENDDO
    157168                ENDDO
     
    164175                DO  j = nys, nyn
    165176                   DO  k = nzb+1, nzt
     177!
     178!--                   Predetermine flag to mask topography
     179                      flag = MERGE( 1.0_wp, 0.0_wp,                            &
     180                                    BTEST( wall_flags_0(k,j,i), 3 ) )
     181
    166182                      tend(k,j,i) = tend(k,j,i) + fs * 0.25_wp *               &
    167183                                   ( u(k,j,i) + u(k+1,j,i) + u(k,j,i+1) +      &
    168                                      u(k+1,j,i+1) ) *                          &
    169                                       MERGE( 1.0_wp, 0.0_wp,                   &
    170                                              BTEST( wall_flags_0(k,j,i), 3 ) )
     184                                     u(k+1,j,i+1) ) * flag
    171185                   ENDDO
    172186                ENDDO
     
    194208           
    195209       USE control_parameters,                                                 &
    196            ONLY:  f, fs, message_string
     210           ONLY:  f, forcing, fs, message_string
    197211           
    198212       USE indices,                                                            &
     
    209223
    210224       REAL(wp)     ::  flag       !< flag to mask topography
    211 
     225       REAL(wp)     ::  flag_force !< flag to mask large-scale pressure gradient in case larger-scale forcing is applied
     226
     227       flag_force = MERGE( 0.0_wp, 1.0_wp, forcing )
    212228!
    213229!--    Compute Coriolis terms for the three velocity components
     
    224240                tend(k,j,i) = tend(k,j,i) + f  *     ( 0.25_wp *               &
    225241                                ( v(k,j,i-1) + v(k,j,i) + v(k,j+1,i-1) +       &
    226                                   v(k,j+1,i) ) - vg(k) ) * flag                &
    227                                           - fs *    ( 0.25_wp *                &
     242                                  v(k,j+1,i) ) - vg(k) * flag_force            &
     243                                                     ) * flag                  &
     244                                          - fs *     ( 0.25_wp *               &
    228245                                ( w(k-1,j,i-1) + w(k-1,j,i) + w(k,j,i-1) +     &
    229                                   w(k,j,i)   )      ) * flag
     246                                  w(k,j,i)   )       ) * flag
    230247             ENDDO
    231248
     
    234251          CASE ( 2 )
    235252             DO  k = nzb+1, nzt
     253!
     254!--             Predetermine flag to mask topography
     255                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 2 ) )
     256
    236257                tend(k,j,i) = tend(k,j,i) - f *        ( 0.25_wp *             &
    237258                                ( u(k,j-1,i) + u(k,j,i) + u(k,j-1,i+1) +       &
    238                                   u(k,j,i+1) ) - ug(k) ) *                     &
    239                                       MERGE( 1.0_wp, 0.0_wp,                   &
    240                                              BTEST( wall_flags_0(k,j,i), 2 ) )
     259                                  u(k,j,i+1) ) - ug(k)   * flag_force          &
     260                                                       ) * flag
    241261             ENDDO
    242262
     
    245265          CASE ( 3 )
    246266             DO  k = nzb+1, nzt
     267!
     268!--             Predetermine flag to mask topography
     269                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 3 ) )
     270
    247271                tend(k,j,i) = tend(k,j,i) + fs * 0.25_wp *                     &
    248272                                ( u(k,j,i) + u(k+1,j,i) + u(k,j,i+1) +         &
    249                                   u(k+1,j,i+1) ) *                             &
    250                                       MERGE( 1.0_wp, 0.0_wp,                   &
    251                                              BTEST( wall_flags_0(k,j,i), 3 ) )
     273                                  u(k+1,j,i+1) ) * flag
    252274             ENDDO
    253275
Note: See TracChangeset for help on using the changeset viewer.