Changeset 208 for palm


Ignore:
Timestamp:
Oct 20, 2008 6:02:59 AM (16 years ago)
Author:
raasch
Message:

bugfix in production_e

File:
1 edited

Legend:

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

    r198 r208  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Bugfix concerning the calculation of velocity gradients at vertical walls
     7! in case of diabatic conditions
    78!
    89! Former revisions:
     
    9293
    9394       REAL    ::  def, dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz, &
    94                    k1, k2, theta, temp
     95                   k1, k2, km_neutral, theta, temp
    9596
    9697!       REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs, vsus, wsus, wsvs
     
    166167
    167168                   IF ( wall_e_y(j,i) /= 0.0 )  THEN
     169!                     
     170!--                   Inconsistency removed: as the thermal stratification is
     171!--                   not taken into account for the evaluation of the wall
     172!--                   fluxes at vertical walls, the eddy viscosity km must not
     173!--                   be used for the evaluation of the velocity gradients dudy
     174!--                   and dwdy
     175!--                   Note: The validity of the new method has not yet been
     176!--                         shown, as so far no suitable data for a validation
     177!--                         has been available
    168178                      CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    169179                                          usvs, 1.0, 0.0, 0.0, 0.0 )
    170                       dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)
    171 !                      dudy = - wall_e_y(j,i) * usvs(k,j,i) / km(k,j,i)
    172180                      CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    173181                                          wsvs, 0.0, 0.0, 1.0, 0.0 )
    174                       dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i)
    175 !                      dwdy = - wall_e_y(j,i) * wsvs(k,j,i) / km(k,j,i)
     182                      km_neutral = kappa * ( usvs(k)**2 + wsvs(k)**2 )**0.25 * &
     183                                   0.5 * dy
     184                      dudy = - wall_e_y(j,i) * usvs(k) / km_neutral
     185                      dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral
    176186                   ELSE
    177187                      dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - &
     
    182192
    183193                   IF ( wall_e_x(j,i) /= 0.0 )  THEN
     194!                     
     195!--                   Inconsistency removed: as the thermal stratification is
     196!--                   not taken into account for the evaluation of the wall
     197!--                   fluxes at vertical walls, the eddy viscosity km must not
     198!--                   be used for the evaluation of the velocity gradients dvdx
     199!--                   and dwdx
     200!--                   Note: The validity of the new method has not yet been
     201!--                         shown, as so far no suitable data for a validation
     202!--                         has been available
    184203                      CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    185204                                          vsus, 0.0, 1.0, 0.0, 0.0 )
    186                       dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)
    187 !                      dvdx = - wall_e_x(j,i) * vsus(k,j,i) / km(k,j,i)
    188205                      CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    189206                                          wsus, 0.0, 0.0, 0.0, 1.0 )
    190                       dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i)
    191 !                      dwdx = - wall_e_x(j,i) * wsus(k,j,i) / km(k,j,i)
     207                      km_neutral = kappa * ( vsus(k)**2 + wsus(k)**2 )**0.25 * &
     208                                   0.5 * dx
     209                      dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral
     210                      dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral
    192211                   ELSE
    193212                      dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - &
     
    224243
    225244                      IF ( wall_e_y(j,i) /= 0.0 )  THEN
    226                          dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)
    227 !                         dudy = - wall_e_y(j,i) * usvs(k,j,i) / km(k,j,i)
    228                          dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i)
    229 !                         dwdy = - wall_e_y(j,i) * wsvs(k,j,i) / km(k,j,i)
     245!                     
     246!--                      Inconsistency removed: as the thermal stratification
     247!--                      is not taken into account for the evaluation of the
     248!--                      wall fluxes at vertical walls, the eddy viscosity km
     249!--                      must not be used for the evaluation of the velocity
     250!--                      gradients dudy and dwdy
     251!--                      Note: The validity of the new method has not yet
     252!--                            been shown, as so far no suitable data for a
     253!--                            validation has been available
     254                         km_neutral = kappa * ( usvs(k)**2 + &
     255                                                wsvs(k)**2 )**0.25 * 0.5 * dy
     256                         dudy = - wall_e_y(j,i) * usvs(k) / km_neutral
     257                         dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral
    230258                      ELSE
    231259                         dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - &
     
    236264
    237265                      IF ( wall_e_x(j,i) /= 0.0 )  THEN
    238                          dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)
    239 !                         dvdx = - wall_e_x(j,i) * vsus(k,j,i) / km(k,j,i)
    240                          dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i)
    241 !                         dwdx = - wall_e_x(j,i) * wsus(k,j,i) / km(k,j,i)
     266!                     
     267!--                      Inconsistency removed: as the thermal stratification
     268!--                      is not taken into account for the evaluation of the
     269!--                      wall fluxes at vertical walls, the eddy viscosity km
     270!--                      must not be used for the evaluation of the velocity
     271!--                      gradients dvdx and dwdx
     272!--                      Note: The validity of the new method has not yet
     273!--                            been shown, as so far no suitable data for a
     274!--                            validation has been available
     275                         km_neutral = kappa * ( vsus(k)**2 + &
     276                                                wsus(k)**2 )**0.25 * 0.5 * dx
     277                         dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral
     278                         dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral
    242279                      ELSE
    243280                         dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - &
     
    576613
    577614       REAL    ::  def, dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz, &
    578                    k1, k2, theta, temp
     615                   k1, k2, km_neutral, theta, temp
    579616
    580617       REAL, DIMENSION(nzb:nzt+1) ::  usvs, vsus, wsus, wsvs
     
    631668
    632669             IF ( wall_e_y(j,i) /= 0.0 )  THEN
     670!                     
     671!--             Inconsistency removed: as the thermal stratification
     672!--             is not taken into account for the evaluation of the
     673!--             wall fluxes at vertical walls, the eddy viscosity km
     674!--             must not be used for the evaluation of the velocity
     675!--             gradients dudy and dwdy
     676!--             Note: The validity of the new method has not yet
     677!--                   been shown, as so far no suitable data for a
     678!--                   validation has been available
    633679                CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    634680                                    usvs, 1.0, 0.0, 0.0, 0.0 )
    635                 dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)
    636681                CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    637682                                    wsvs, 0.0, 0.0, 1.0, 0.0 )
    638                 dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i)
     683                km_neutral = kappa * ( usvs(k)**2 + wsvs(k)**2 )**0.25 * &
     684                             0.5 * dy
     685                dudy = - wall_e_y(j,i) * usvs(k) / km_neutral
     686                dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral
    639687             ELSE
    640688                dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - &
     
    645693
    646694             IF ( wall_e_x(j,i) /= 0.0 )  THEN
     695!                     
     696!--             Inconsistency removed: as the thermal stratification
     697!--             is not taken into account for the evaluation of the
     698!--             wall fluxes at vertical walls, the eddy viscosity km
     699!--             must not be used for the evaluation of the velocity
     700!--             gradients dvdx and dwdx
     701!--             Note: The validity of the new method has not yet
     702!--                   been shown, as so far no suitable data for a
     703!--                   validation has been available
    647704                CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    648705                                    vsus, 0.0, 1.0, 0.0, 0.0 )
    649                 dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)
    650706                CALL wall_fluxes_e( i, j, k, nzb_diff_s_outer(j,i)-2, &
    651707                                    wsus, 0.0, 0.0, 0.0, 1.0 )
    652                 dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i)
     708                km_neutral = kappa * ( vsus(k)**2 + wsus(k)**2 )**0.25 * &
     709                             0.5 * dx
     710                dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral
     711                dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral
    653712             ELSE
    654713                dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - &
     
    683742
    684743                IF ( wall_e_y(j,i) /= 0.0 )  THEN
    685                    dudy = - wall_e_y(j,i) * usvs(k) / km(k,j,i)
    686                    dwdy = - wall_e_y(j,i) * wsvs(k) / km(k,j,i)
     744!                     
     745!--                Inconsistency removed: as the thermal stratification
     746!--                is not taken into account for the evaluation of the
     747!--                wall fluxes at vertical walls, the eddy viscosity km
     748!--                must not be used for the evaluation of the velocity
     749!--                gradients dudy and dwdy
     750!--                Note: The validity of the new method has not yet
     751!--                      been shown, as so far no suitable data for a
     752!--                      validation has been available
     753                   km_neutral = kappa * ( usvs(k)**2 + &
     754                                          wsvs(k)**2 )**0.25 * 0.5 * dy
     755                   dudy = - wall_e_y(j,i) * usvs(k) / km_neutral
     756                   dwdy = - wall_e_y(j,i) * wsvs(k) / km_neutral
    687757                ELSE
    688758                   dudy = 0.25 * ( u(k,j+1,i) + u(k,j+1,i+1) - &
     
    693763
    694764                IF ( wall_e_x(j,i) /= 0.0 )  THEN
    695                    dvdx = - wall_e_x(j,i) * vsus(k) / km(k,j,i)
    696                    dwdx = - wall_e_x(j,i) * wsus(k) / km(k,j,i)
     765!                     
     766!--                Inconsistency removed: as the thermal stratification
     767!--                is not taken into account for the evaluation of the
     768!--                wall fluxes at vertical walls, the eddy viscosity km
     769!--                must not be used for the evaluation of the velocity
     770!--                gradients dvdx and dwdx
     771!--                Note: The validity of the new method has not yet
     772!--                      been shown, as so far no suitable data for a
     773!--                      validation has been available
     774                   km_neutral = kappa * ( vsus(k)**2 + &
     775                                          wsus(k)**2 )**0.25 * 0.5 * dx
     776                   dvdx = - wall_e_x(j,i) * vsus(k) / km_neutral
     777                   dwdx = - wall_e_x(j,i) * wsus(k) / km_neutral
    697778                ELSE
    698779                   dvdx = 0.25 * ( v(k,j,i+1) + v(k,j+1,i+1) - &
Note: See TracChangeset for help on using the changeset viewer.