Ignore:
Timestamp:
Aug 6, 2008 4:25:09 PM (16 years ago)
Author:
letzel
Message:
  • new: descriptions of plant canopy model and prandtl layer (trunk/DOC/misc)
  • changed: more consistent flux definitions; modification of the integrated version of the profile function for momentum for unstable stratification (wall_fluxes, production_e)
  • bugfix: change definition of us_wall from 1D to 2D (prandtl_fluxes, wall_fluxes)
File:
1 edited

Legend:

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

    r110 r187  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Bugfix: change definition of us_wall from 1D to 2D:
     7!         Modification of the evaluation of the vertical turbulent momentum
     8!         fluxes u'w' and v'w'; the first usws that is computed corresponds
     9!         to -u'w'/u* and not as priorily assumed to (-u'w')**0.5, the first
     10!         vsws that is computed corresponds to -v'w'/u* and not as priorily
     11!         assumed to (-v'w')**0.5. Therefore, the intermediate result for
     12!         usws has to be multiplied by -u* instead by itself in order to
     13!         get u'w'. Accordingly, the intermediate result for vsws has to be
     14!         multiplied by -u* instead by itself in order to get v'w'. As u*
     15!         is calculated for the position of a scalar an additional
     16!         interpolation of u* to the position of u and v, respectively,
     17!         is necessary. As u* is not determined for the ghost points on
     18!         each PE, an additional exchange of information from neighbouring
     19!         PEs is necessary.! 
     20! Change: Modification of the integrated version of the profile function for
     21!         momentum for unstable stratification
    722!
    823! Former revisions:
     
    8196!--             Unstable stratification
    8297                a = SQRT( 1.0 - 16.0 * rif(j,i) )
    83                 b = SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) )
    84 !
    85 !--             If a borderline case occurs, the formula for stable
    86 !--             stratification must be used anyway, or else a zero division
    87 !--             would occur in the argument of the logarithm
    88                 IF ( a == 1.0  .OR.  b == 1.0 )  THEN
    89                    ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) / (          &
    90                                      LOG( z_p / z0(j,i) ) +                   &
    91                                      5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p &
    92                                                                    )
    93                 ELSE
    94                    ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) / (          &
    95                                  LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) &
    96                                                                    )
    97                 ENDIF
     98                b = SQRT( 1.0 - 16.0 * rif(j,i) * z0(j,i) / z_p )
     99
     100                ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) /  (         &
     101                          LOG( z_p / z0(j,i) ) -                           &
     102                          2.0 * LOG( ( 1.0 + a ) / ( 1.0 + b ) ) )
    98103             ENDIF
    99104
     
    168173!
    169174!--          Unstable stratification
    170              a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif(j,i) ) )
    171              b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) )
    172 !
    173 !--          If a borderline case occurs, the formula for stable stratification
    174 !--          must be used anyway, or else a zero division would occur in the
    175 !--          argument of the logarithm.
    176              IF ( a == 1.0  .OR.  b == 1.0 )  THEN
    177                 us(j,i) = kappa * uv_total / (                                &
    178                                      LOG( z_p / z0(j,i) ) +                   &
    179                                      5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p &
    180                                              )
    181              ELSE
    182                 us(j,i) = kappa * uv_total / (                               &
    183                               LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + &
    184                               2.0 * ( ATAN( b ) - ATAN( a ) )                &
    185                                              )
    186              ENDIF
     175             a = SQRT( SQRT( 1.0 - 16.0 * rif(j,i) ) )
     176             b = SQRT( SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) )
     177
     178             us(j,i) = kappa * uv_total / (                                  &
     179                       LOG( z_p / z0(j,i) ) -                                &
     180                       LOG( ( 1.0 + a )**2 * ( 1.0 + a**2 ) / (              &
     181                            ( 1.0 + b )**2 * ( 1.0 + b**2 )   ) ) +          &
     182                            2.0 * ( ATAN( a ) - ATAN( b ) )                  &
     183                                           )
    187184          ENDIF
    188185       ENDDO
    189186    ENDDO
    190187
     188!
     189!-- Values of us at ghost point locations are needed for the evaluation of usws
     190!-- and vsws.
     191    CALL exchange_horiz_2d( us )
    191192!
    192193!-- Compute u'w' for the total model domain.
     
    212213!
    213214!--          Unstable stratification
    214              a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm ) )
    215              b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) )
    216 !
    217 !--          If a borderline case occurs, the formula for stable stratification
    218 !--          must be used anyway, or else a zero division would occur in the
    219 !--          argument of the logarithm.
    220              IF ( a == 1.0  .OR.  B == 1.0 )  THEN
    221                 usws(j,i) = kappa * u(k+1,j,i) / (                           &
    222                                         LOG( z_p / z0(j,i) ) +               &
    223                                         5.0 * rifm * ( z_p - z0(j,i) ) / z_p &
     215             a = SQRT( SQRT( 1.0 - 16.0 * rifm ) )
     216             b = SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) )
     217
     218             usws(j,i) = kappa * u(k+1,j,i) / (                           &
     219                         LOG( z_p / z0(j,i) ) -                           &
     220                         LOG( (1.0 + a )**2 * ( 1.0 + a**2 ) / (          &
     221                              (1.0 + b )**2 * ( 1.0 + b**2 )   ) ) +      &
     222                              2.0 * ( ATAN( a ) - ATAN( b ) )             &
    224223                                                 )
    225              ELSE
    226                 usws(j,i) = kappa * u(k+1,j,i) / (                           &
    227                               LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + &
    228                               2.0 * ( ATAN( b ) - ATAN( a ) )                &
    229                                                  )
    230              ENDIF
    231224          ENDIF
    232           usws(j,i) = -usws(j,i) * ABS( usws(j,i) )
     225          usws(j,i) = -usws(j,i) * 0.5 * ( us(j,i-1) + us(j,i) )
    233226       ENDDO
    234227    ENDDO
     
    257250!
    258251!--          Unstable stratification
    259              a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm ) )
    260              b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) )
    261 !
    262 !--          If a borderline case occurs, the formula for stable stratification
    263 !--          must be used anyway, or else a zero division would occur in the
    264 !--          argument of the logarithm.
    265              IF ( a == 1.0  .OR.  b == 1.0 )  THEN
    266                 vsws(j,i) = kappa * v(k+1,j,i) / (                           &
    267                                         LOG( z_p / z0(j,i) ) +               &
    268                                         5.0 * rifm * ( z_p - z0(j,i) ) / z_p &
     252             a = SQRT( SQRT( 1.0 - 16.0 * rifm ) )
     253             b = SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) )
     254
     255             vsws(j,i) = kappa * v(k+1,j,i) / (                           &
     256                         LOG( z_p / z0(j,i) ) -                           &
     257                         LOG( (1.0 + a )**2 * ( 1.0 + a**2 ) / (          &
     258                              (1.0 + b )**2 * ( 1.0 + b**2 )   ) ) +      &
     259                              2.0 * ( ATAN( a ) - ATAN( b ) )             &
    269260                                                 )
    270              ELSE
    271                 vsws(j,i) = kappa * v(k+1,j,i) / (                           &
    272                               LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + &
    273                               2.0 * ( ATAN( b ) - ATAN( a ) )                &
    274                                                  )
    275              ENDIF
    276261          ENDIF
    277           vsws(j,i) = -vsws(j,i) * ABS( vsws(j,i) )
     262          vsws(j,i) = -vsws(j,i) * 0.5 * ( us(j-1,i) + us(j,i) )
    278263       ENDDO
    279264    ENDDO
     
    317302!
    318303!--                Unstable stratification
    319                    a = SQRT( 1.0 - 16.0 * rif(j,i) )
    320                    b = SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) )
    321 !
    322 !--                If a borderline case occurs, the formula for stable
    323 !--                stratification must be used anyway, or else a zero division
    324 !--                would occur in the argument of the logarithm.
    325                    IF ( a == 1.0  .OR.  b == 1.0 )  THEN
    326                       qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) / (         &
    327                                      LOG( z_p / z0(j,i) ) +                   &
    328                                      5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p &
    329                                                                     )
    330                    ELSE
    331                       qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) / (          &
    332                                   LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) &
    333                                                                     )
    334                    ENDIF
     304                   a = SQRT( 1.0 - 16.0 * rif(j,i) )
     305                   b = SQRT( 1.0 - 16.0 * rif(j,i) * z0(j,i) / z_p )
     306 
     307                   qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) /   (   &
     308                             LOG( z_p / z0(j,i) ) -                    &
     309                              2.0 * LOG( (1.0 + a ) / ( 1.0 + b ) ) )
    335310                ENDIF
    336311
     
    341316
    342317!
    343 !-- Exchange the boundaries for u* and the momentum fluxes (fluxes only for
    344 !-- completeness's sake).
    345     CALL exchange_horiz_2d( us )
     318!-- Exchange the boundaries for the momentum fluxes (only for sake of
     319!-- completeness)
    346320    CALL exchange_horiz_2d( usws )
    347321    CALL exchange_horiz_2d( vsws )
Note: See TracChangeset for help on using the changeset viewer.