Index: /palm/trunk/SOURCE/production_e.f90
===================================================================
--- /palm/trunk/SOURCE/production_e.f90	(revision 54)
+++ /palm/trunk/SOURCE/production_e.f90	(revision 55)
@@ -111,7 +111,7 @@
 
 !
-!--          Position neben Gebaeudewand
-!--          2 - Wird immer ausgefuehrt. 'Boden und Wand: 
-!--          u_0,v_0 und Wall functions'
+!--          Position beneath wall
+!--          (2) - Will allways be executed.
+!--          'bottom and wall: use u_0,v_0 and wall functions'
              DO  j = nys, nyn
 
@@ -167,8 +167,9 @@
 
 !
-!--                3 - Wird nur ausgefuehrt, wenn mindestens ein Niveau
-!--                zwischen 2 und 4 liegt, d.h. ab einer Gebaeudemindest-
-!--                hoehe von 2 dz. Die Wall fluxes sind in diesem Fall
-!--                schon unter (2) berechnet worden. 'Nur Wand: Wall functions'
+!--                (3) - will be executed only, if there is at least one level
+!--                between (2) and (4), i.e. the topography must have a
+!--                minimum height of 2 dz. Wall fluxes for this case have
+!--                already been calculated for (2).
+!--                'wall only: use wall functions'
 
                    DO  k = nzb_diff_s_inner(j,i), nzb_diff_s_outer(j,i)-2
@@ -217,6 +218,6 @@
 
 !
-!--          4 - Wird immer ausgefuehrt.
-!--          'Sonderfall: Freie Atmosphaere' (wie bei 0)
+!--          (4) - will allways be executed.
+!--          'special case: free atmosphere' (as for case (0))
              DO  j = nys, nyn
 
@@ -257,6 +258,7 @@
 
 !
-!--          Position ohne angrenzende Gebaeudewand
-!--          1 - Wird immer ausgefuehrt. 'Nur Boden: u_0,v_0'
+!--          Position without adjacent wall
+!--          (1) - will allways be executed. 
+!--          'bottom only: use u_0,v_0'
              DO  j = nys, nyn
 
@@ -513,8 +515,9 @@
 
           IF ( ( wall_e_x(j,i) /= 0.0 ) .OR. ( wall_e_y(j,i) /= 0.0 ) )  THEN
-!
-!--          Position neben Gebaeudewand
-!--          2 - Wird immer ausgefuehrt. 'Boden und Wand: 
-!--          u_0,v_0 und Wall functions'
+
+!
+!--          Position beneath wall
+!--          (2) - Will allways be executed.
+!--          'bottom and wall: use u_0,v_0 and wall functions'
              k = nzb_diff_s_inner(j,i)-1
 
@@ -564,8 +567,9 @@
 
 !
-!--          3 - Wird nur ausgefuehrt, wenn mindestens ein Niveau
-!--          zwischen 2 und 4 liegt, d.h. ab einer Gebaeudemindest-
-!--          hoehe von 2 dz. Di Wall fluxes sind in diesem Fall bereits vorab
-!--          unter (2) berechnet worden. 'Nur Wand: Wall functions'
+!--          (3) - will be executed only, if there is at least one level
+!--          between (2) and (4), i.e. the topography must have a
+!--          minimum height of 2 dz. Wall fluxes for this case have
+!--          already been calculated for (2).
+!--          'wall only: use wall functions'
              DO  k = nzb_diff_s_inner(j,i), nzb_diff_s_outer(j,i)-2
 
@@ -609,6 +613,6 @@
 
 !
-!--          4 - Wird immer ausgefuehrt.
-!--          'Sonderfall: Freie Atmosphaere' (wie bei 0)
+!--          (4) - will allways be executed.
+!--          'special case: free atmosphere' (as for case (0))
              k = nzb_diff_s_outer(j,i)-1
 
@@ -642,6 +646,7 @@
 
 !
-!--          Position ohne angrenzende Gebaeudewand
-!--          1 - Wird immer ausgefuehrt. 'Nur Boden: u_0,v_0'
+!--          Position without adjacent wall
+!--          (1) - will allways be executed. 
+!--          'bottom only: use u_0,v_0'
              k = nzb_diff_s_inner(j,i)-1
 
Index: /palm/trunk/SOURCE/wall_fluxes.f90
===================================================================
--- /palm/trunk/SOURCE/wall_fluxes.f90	(revision 54)
+++ /palm/trunk/SOURCE/wall_fluxes.f90	(revision 55)
@@ -190,5 +190,5 @@
 
     INTEGER ::  i, j, k, kk, nzb_w, nzt_w, wall_index
-    REAL    ::  a, b, c1, c2, h1, h2, zp
+    REAL    ::  a, b, c1, c2, h1, h2, vel_zp, zp
 
     REAL ::  rifs
@@ -224,13 +224,15 @@
 !
 !--    (5) Compute wall_flux (u'v', v'u', w'v', or w'u')
+       vel_zp = 0.5 * (       a * ( u(k,j,i) + u(k,j,i+1) ) +  &
+                              b * ( v(k,j,i) + v(k,j+1,i) ) +  &
+                        (c1+c2) * ( w(k,j,i) + w(k-1,j,i) )    &
+                      )
+
        IF ( rifs >= 0.0 )  THEN
 
 !
 !--       Stable stratification (and neutral)
-          wall_flux(k) = kappa *                                          &
-                         ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) / &
-                         (  LOG( zp / z0(j,i) ) +                         &
-                            5.0 * rifs * ( zp - z0(j,i) ) / zp            &
-                         )
+          wall_flux(k) = kappa *  vel_zp / &
+                         ( LOG( zp/z0(j,i) ) + 5.0*rifs * ( zp-z0(j,i) ) / zp )
        ELSE
 
@@ -245,12 +247,10 @@
 !--       argument of the logarithm. 
           IF ( h1 == 1.0  .OR.  h2 == 1.0 )  THEN
-             wall_flux(k) = kappa *                                          &
-                            ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) / &
+             wall_flux(k) = kappa * vel_zp /                                 &
                             ( LOG( zp / z0(j,i) ) +                          &
                               5.0 * rifs * ( zp - z0(j,i) ) / zp             &
                             )
           ELSE
-             wall_flux(k) = kappa *                                            &
-                            ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) /   &
+             wall_flux(k) = kappa * vel_zp /                                   &
                             ( LOG( (1.0+h2) / (1.0-h2) * (1.0-h1) / (1.0+h1) ) &
                               + 2.0 * ( ATAN( h2 ) - ATAN( h1 ) )              &
