Ignore:
Timestamp:
Sep 19, 2012 2:30:36 PM (9 years ago)
Author:
franke
Message:

Bugfixes


Missing calculation of mean particle weighting factor for output added. (data_output_2d, data_output_3d, data_output_mask, sum_up_3d_data)
Calculation of mean particle radius for output now considers the weighting factor. (data_output_mask)
Calculation of sugrid-scale buoyancy flux for humidity and cloud droplets corrected. (flow_statistics)
Factor in calculation of enhancement factor for collision efficencies corrected. (lpm_collision_kernels)
Calculation of buoyancy production now considers the liquid water mixing ratio in case of cloud droplets. (production_e)

Changes


Calculation of buoyancy flux for humidity in case of WS-scheme is now using turbulent fluxes of WS-scheme. (flow_statistics)
Calculation of the collision kernels now in SI units. (lpm_collision_kernels)

File:
1 edited

Legend:

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

    r802 r1007  
    44! Current revisions:
    55! -----------------
     6! Calculation of buoyancy flux for humidity in case of WS-scheme is now using
     7! turbulent fluxes of WS-scheme
     8! Bugfix: Calculation of subgridscale buoyancy flux for humidity and cloud
     9! droplets at nzb and nzt added
    610!
    711! Former revisions:
     
    151155                        'timestep'
    152156       CALL message( 'flow_statistics', 'PA0190', 1, 2, 0, 6, 0 )
    153      
     157
    154158    ENDIF
    155159
     
    176180       IF ( ws_scheme_mom .AND. sr == 0 )  THEN
    177181
    178 !       
     182!
    179183!--       According to the Neumann bc for the horizontal velocity components,
    180184!--       the corresponding fluxes has to satisfiy the same bc.
    181185          IF ( ocean )  THEN
    182186             sums_us2_ws_l(nzt+1,:) = sums_us2_ws_l(nzt,:)
    183              sums_vs2_ws_l(nzt+1,:) = sums_vs2_ws_l(nzt,:)   
     187             sums_vs2_ws_l(nzt+1,:) = sums_vs2_ws_l(nzt,:)
    184188          ENDIF
    185189
    186190          DO  i = 0, threads_per_task-1
    187 !         
     191!
    188192!--          Swap the turbulent quantities evaluated in advec_ws.
    189193             sums_l(:,13,i) = sums_wsus_ws_l(:,i)       ! w*u*
     
    453457                                  ( q(k,j,i)-hom(k,1,41,sr) )**2 * rmask(j,i,sr)
    454458                ENDIF
    455                
     459
    456460!
    457461!--             Higher moments
     
    578582                                               * ( q(k+1,j,i) - q(k,j,i) )     &
    579583                                               * ddzu(k+1) * rmask(j,i,sr)
     584
    580585                   IF ( cloud_physics ) THEN
    581586                      sums_l(k,51,tn) = sums_l(k,51,tn)                        &
     
    618623                   sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + &
    619624                                       qsws(j,i) * rmask(j,i,sr)  ! w"q" (w"qv")
     625                   sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (           &
     626                                       ( 1.0 + 0.61 * q(nzb,j,i) ) *   &
     627                                       shf(j,i) + 0.61 * pt(nzb,j,i) * &
     628                                                  qsws(j,i) )
     629                   IF ( cloud_droplets )  THEN
     630                      sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (        &
     631                                         ( 1.0 + 0.61 * q(nzb,j,i) -   &
     632                                           ql(nzb,j,i) ) * shf(j,i) +  &
     633                                           0.61 * pt(nzb,j,i) * qsws(j,i) )
     634                   ENDIF
    620635                   IF ( cloud_physics )  THEN
    621                       sums_l(nzb,45,tn) = sums_l(nzb,45,tn) + (           &
    622                                           ( 1.0 + 0.61 * q(nzb,j,i) ) *   &
    623                                           shf(j,i) + 0.61 * pt(nzb,j,i) * &
    624                                                      qsws(j,i)            &
    625                                                               )
    626636!
    627637!--                   Formula does not work if ql(nzb) /= 0.0
     
    657667                   sums_l(nzt,48,tn) = sums_l(nzt,48,tn) + &
    658668                                       qswst(j,i) * rmask(j,i,sr) ! w"q" (w"qv")
     669                   sums_l(nzt,45,tn) = sums_l(nzt,45,tn) + (             &
     670                                       ( 1.0 + 0.61 * q(nzt,j,i) ) *     &
     671                                       tswst(j,i) + 0.61 * pt(nzt,j,i) * &
     672                                                  qswst(j,i) )
     673                   IF ( cloud_droplets )  THEN
     674                      sums_l(nzt,45,tn) = sums_l(nzt,45,tn) + (           &
     675                                          ( 1.0 + 0.61 * q(nzt,j,i) -     &
     676                                            ql(nzt,j,i) ) * tswst(j,i) +  &
     677                                            0.61 * pt(nzt,j,i) * qswst(j,i) )
     678                   ENDIF
    659679                   IF ( cloud_physics )  THEN
    660                       sums_l(nzt,45,tn) = sums_l(nzt,45,tn) + (           &
    661                                           ( 1.0 + 0.61 * q(nzt,j,i) ) *   &
    662                                           tswst(j,i) + 0.61 * pt(nzt,j,i) * &
    663                                                      qsws(j,i)            &
    664                                                               )
    665680!
    666681!--                   Formula does not work if ql(nzb) /= 0.0
     
    714729!--             content
    715730                IF ( humidity )  THEN
    716                    pts = 0.5 * ( vpt(k,j,i)   - hom(k,1,44,sr) + &
    717                                  vpt(k+1,j,i) - hom(k+1,1,44,sr) )
    718                    sums_l(k,46,tn) = sums_l(k,46,tn) + pts * w(k,j,i) * &
    719                                                        rmask(j,i,sr)
    720 
    721                    IF ( cloud_physics  .OR.  cloud_droplets )  THEN
    722                       pts = 0.5 *                                            &
    723                              ( ( q(k,j,i)   - ql(k,j,i)   ) - hom(k,1,42,sr) &
    724                              + ( q(k+1,j,i) - ql(k+1,j,i) ) - hom(k+1,1,42,sr) )
    725                       sums_l(k,52,tn) = sums_l(k,52,tn) + pts * w(k,j,i) * &
     731                   IF ( cloud_physics .OR. cloud_droplets )  THEN
     732                      pts = 0.5 * ( vpt(k,j,i)   - hom(k,1,44,sr) + &
     733                                    vpt(k+1,j,i) - hom(k+1,1,44,sr) )
     734                      sums_l(k,46,tn) = sums_l(k,46,tn) + pts * w(k,j,i) * &
    726735                                                          rmask(j,i,sr)
    727736                      sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * &
    728737                                                          rmask(j,i,sr)
    729                    ENDIF
    730                 ENDIF
    731 
     738                   ELSE
     739                      IF( .NOT. ws_scheme_sca .OR. sr /= 0 )  THEN
     740                         pts = 0.5 * ( vpt(k,j,i)   - hom(k,1,44,sr) + &
     741                                       vpt(k+1,j,i) - hom(k+1,1,44,sr) )
     742                         sums_l(k,46,tn) = sums_l(k,46,tn) + pts * w(k,j,i) * &
     743                                                             rmask(j,i,sr)
     744                      ELSE IF ( ws_scheme_sca .AND. sr == 0 )  THEN
     745                         sums_l(k,46,tn) = ( 1.0 + 0.61 * hom(k,1,41,sr) ) * &
     746                                             sums_l(k,17,tn) +      &
     747                                          0.61 * hom(k,1,4,sr) * sums_l(k,49,tn)
     748                      END IF
     749                   END IF
     750                ENDIF
    732751!
    733752!--             Passive scalar flux
     
    762781                  vst = 0.5 * ( v(k,j,i)   - hom(k,1,2,sr) + &
    763782                              v(k+1,j,i) - hom(k+1,1,2,sr) )
    764 !                             
     783!
    765784!--               Momentum flux w*u*
    766785                  sums_l(k,13,tn) = sums_l(k,13,tn) + 0.5 *                   &
     
    10021021          ENDDO
    10031022       ENDIF
     1023
    10041024!
    10051025!--    Collect horizontal average in hom.
Note: See TracChangeset for help on using the changeset viewer.