Ignore:
Timestamp:
Aug 3, 2017 2:24:56 PM (7 years ago)
Author:
knoop
Message:

Bugfix for topography usage with anelastic approximation and boussinesq approximation with air density != 1

File:
1 edited

Legend:

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

    r2233 r2329  
    2525! -----------------
    2626! $Id$
     27! Bugfix: added division by density as kinematic fluxes are needed
     28!
     29! 2233 2017-05-30 18:08:54Z suehring
    2730!
    2831! 2232 2017-05-30 17:47:52Z suehring
     
    135138
    136139       USE arrays_3d,                                                          &
    137            ONLY:  ddzw, dd2zu, kh, km, prho, pt, q, ql, tend, u, v, vpt, w
     140           ONLY:  ddzw, dd2zu, drho_air_zw, kh, km, prho, pt, q, ql, tend, u,  &
     141                  v, vpt, w
    138142
    139143       USE cloud_parameters,                                                   &
     
    531535                                  k = surf_def_h(l)%k(m)
    532536                                  tend(k,j,i) = tend(k,j,i) + g / pt_reference &
     537                                                         * drho_air_zw(k-1)    &
    533538                                                         * surf_def_h(l)%shf(m)   
    534539                               ENDDO   
     
    541546                               k = surf_lsm_h%k(m)
    542547                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     548                                                         * drho_air_zw(k-1)    &
    543549                                                         * surf_lsm_h%shf(m)   
    544550                            ENDDO
     
    550556                               k = surf_usm_h%k(m)
    551557                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     558                                                         * drho_air_zw(k-1)    &
    552559                                                         * surf_usm_h%shf(m)   
    553560                            ENDDO                         
     
    559566                            DO  m = surf_s, surf_e
    560567                               k = surf_def_h(2)%k(m)
    561                                tend(k,j,i) = tend(k,j,i) + g / pt_reference *     &
    562                                                            surf_def_h(2)%shf(m)
     568                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     569                                                         * drho_air_zw(k-1)    &
     570                                                         * surf_def_h(2)%shf(m)
    563571                            ENDDO
    564572                         ENDIF
     
    613621                                  k = surf_def_h(l)%k(m)
    614622                                  tend(k,j,i) = tend(k,j,i) + g / pt_reference &
     623                                                         * drho_air_zw(k-1)    &
    615624                                                         * surf_def_h(l)%shf(m)   
    616625                               ENDDO 
     
    623632                               k = surf_lsm_h%k(m)
    624633                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     634                                                         * drho_air_zw(k-1)    &
    625635                                                         * surf_lsm_h%shf(m)   
    626636                            ENDDO 
     
    632642                               k = surf_usm_h%k(m)
    633643                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     644                                                         * drho_air_zw(k-1)    &
    634645                                                         * surf_usm_h%shf(m)   
    635646                            ENDDO 
     
    641652                            DO  m = surf_s, surf_e
    642653                               k = surf_def_h(2)%k(m)
    643                                tend(k,j,i) = tend(k,j,i) + g / pt_reference *     &
    644                                                            surf_def_h(2)%shf(m)
     654                               tend(k,j,i) = tend(k,j,i) + g / pt_reference    &
     655                                                         * drho_air_zw(k-1)    &
     656                                                         * surf_def_h(2)%shf(m)
    645657                            ENDDO
    646658                         ENDIF
     
    754766                            tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *       &
    755767                                               ( k1 * surf_def_h(l)%shf(m) +   &
    756                                                  k2 * surf_def_h(l)%qsws(m) )
     768                                                 k2 * surf_def_h(l)%qsws(m)       &
     769                                               ) * drho_air_zw(k-1)
    757770                         ENDDO
    758771                      ENDDO
     
    788801                         tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *          &
    789802                                               ( k1 * surf_lsm_h%shf(m) +      &
    790                                                  k2 * surf_lsm_h%qsws(m) )
     803                                                 k2 * surf_lsm_h%qsws(m)       &
     804                                               ) * drho_air_zw(k-1)
    791805                      ENDDO
    792806!
     
    821835                         tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *          &
    822836                                               ( k1 * surf_usm_h%shf(m) +      &
    823                                                  k2 * surf_usm_h%qsws(m) )
     837                                                 k2 * surf_usm_h%qsws(m)       &
     838                                               ) * drho_air_zw(k-1)
    824839                      ENDDO
    825840
     
    861876                         tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *          &
    862877                                               ( k1 * surf_def_h(2)%shf(m) +   &
    863                                                  k2 * surf_def_h(2)%qsws(m) )
     878                                                 k2 * surf_def_h(2)%qsws(m)       &
     879                                               ) * drho_air_zw(k-1)
    864880
    865881                      ENDDO
     
    886902
    887903       USE arrays_3d,                                                          &
    888            ONLY:  ddzw, dd2zu, kh, km, prho, pt, q, ql, tend, u, v, vpt, w
     904           ONLY:  ddzw, dd2zu, drho_air_zw, kh, km, prho, pt, q, ql, tend, u,  &
     905                  v, vpt, w
    889906
    890907       USE cloud_parameters,                                                   &
     
    12541271                            k = surf_def_h(l)%k(m)
    12551272                            tend(k,j,i) = tend(k,j,i) + g / pt_reference *     &
    1256                                                            surf_def_h(l)%shf(m)
     1273                                                           drho_air_zw(k-1) *  &
     1274                                                           surf_def_h(l)%shf(m)
    12571275                         ENDDO
    12581276                      ENDDO
     
    12641282                         k = surf_lsm_h%k(m)
    12651283                         tend(k,j,i) = tend(k,j,i) + g / pt_reference *        &
     1284                                                           drho_air_zw(k-1) *  &
    12661285                                                           surf_lsm_h%shf(m)
    12671286                      ENDDO
     
    12731292                         k = surf_usm_h%k(m)
    12741293                         tend(k,j,i) = tend(k,j,i) + g / pt_reference *        &
     1294                                                           drho_air_zw(k-1) *  &
    12751295                                                           surf_usm_h%shf(m)
    12761296                      ENDDO
     
    12831303                         k = surf_def_h(2)%k(m)
    12841304                         tend(k,j,i) = tend(k,j,i) + g / pt_reference *        &
     1305                                                           drho_air_zw(k-1) *  &
    12851306                                                           surf_def_h(2)%shf(m)
    12861307                      ENDDO
     
    13311352                            k = surf_def_h(l)%k(m)
    13321353                            tend(k,j,i) = tend(k,j,i) + g / pt_reference       &
    1333                                                    * surf_def_h(l)%shf(m)   
     1354                                                   * drho_air_zw(k-1)          &
     1355                                                   * surf_def_h(l)%shf(m)
    13341356                         ENDDO 
    13351357                      ENDDO
     
    13411363                         k = surf_lsm_h%k(m)
    13421364                         tend(k,j,i) = tend(k,j,i) + g / pt_reference          &
    1343                                                      * surf_lsm_h%shf(m)   
     1365                                                     * drho_air_zw(k-1)        &
     1366                                                     * surf_lsm_h%shf(m)
    13441367                      ENDDO 
    13451368!
     
    13501373                         k = surf_usm_h%k(m)
    13511374                         tend(k,j,i) = tend(k,j,i) + g / pt_reference          &
    1352                                                      * surf_usm_h%shf(m)   
     1375                                                     * drho_air_zw(k-1)        &
     1376                                                     * surf_usm_h%shf(m)
    13531377                      ENDDO
    13541378                   ENDIF
     
    13601384                         k = surf_def_h(2)%k(m)
    13611385                         tend(k,j,i) = tend(k,j,i) + g / pt_reference *        &
    1362                                                            surf_def_h(2)%shf(m)
     1386                                                           drho_air_zw(k-1) *  &
     1387                                                           surf_def_h(2)%shf(m)
    13631388                      ENDDO
    13641389                   ENDIF
     
    14611486                      tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *             &
    14621487                                         ( k1 * surf_def_h(l)%shf(m) +         &
    1463                                            k2 * surf_def_h(l)%qsws(m) )
     1488                                           k2 * surf_def_h(l)%qsws(m)          &
     1489                                         ) * drho_air_zw(k-1)
    14641490                   ENDDO
    14651491                ENDDO
     
    14951521                   tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *                &
    14961522                                            ( k1 * surf_lsm_h%shf(m) +         &
    1497                                               k2 * surf_lsm_h%qsws(m) )
     1523                                              k2 * surf_lsm_h%qsws(m)          &
     1524                                            ) * drho_air_zw(k-1)
    14981525                ENDDO
    14991526!
     
    15281555                   tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *                &
    15291556                                            ( k1 * surf_usm_h%shf(m) +         &
    1530                                               k2 * surf_usm_h%qsws(m) )
     1557                                              k2 * surf_usm_h%qsws(m)          &
     1558                                            ) * drho_air_zw(k-1)
    15311559                ENDDO
    15321560
     
    15651593                   tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) *                &
    15661594                               ( k1* surf_def_h(2)%shf(m) +                    &
    1567                                  k2 * surf_def_h(2)%qsws(m) )
     1595                                 k2 * surf_def_h(2)%qsws(m)                    &
     1596                               ) * drho_air_zw(k-1)
    15681597                ENDDO
    15691598
     
    15851614
    15861615       USE arrays_3d,                                                          &
    1587            ONLY:  kh, km, u, v, zu
     1616           ONLY:  kh, km, drho_air_zw, u, v, zu
    15881617
    15891618       USE control_parameters,                                                 &
     
    16301659!--          effect of this error is negligible.
    16311660             surf_def_h(0)%u_0(m) = u(k+1,j,i) + surf_def_h(0)%usws(m) *       &
     1661                                        drho_air_zw(k-1) *                     &
    16321662                                        ( zu(k+1)    - zu(k-1)    )  /         &
    16331663                                        ( km(k,j,i)  + 1.0E-20_wp ) 
    16341664             surf_def_h(0)%v_0(m) = v(k+1,j,i) + surf_def_h(0)%vsws(m) *       &
     1665                                        drho_air_zw(k-1) *                     &
    16351666                                        ( zu(k+1)    - zu(k-1)    )  /         &
    16361667                                        ( km(k,j,i)  + 1.0E-20_wp ) 
     
    16611692!--          between u_0 and u(k-1).
    16621693             surf_def_h(1)%u_0(m) = u(k-1,j,i) - surf_def_h(1)%usws(m) *       &
     1694                                        drho_air_zw(k-1) *                     &
    16631695                                        ( zu(k+1)    - zu(k-1)    )  /         &
    16641696                                        ( km(k,j,i)  + 1.0E-20_wp ) 
    16651697             surf_def_h(1)%v_0(m) = v(k-1,j,i) - surf_def_h(1)%vsws(m) *       &
     1698                                        drho_air_zw(k-1) *                     &
    16661699                                        ( zu(k+1)    - zu(k-1)    )  /         &
    16671700                                        ( km(k,j,i)  + 1.0E-20_wp ) 
     
    16901723!--          effect of this error is negligible.
    16911724             surf_lsm_h%u_0(m) = u(k+1,j,i) + surf_lsm_h%usws(m)      *        &
     1725                                           drho_air_zw(k-1) *                  &
    16921726                                           ( zu(k+1)   - zu(k-1)    )  /       &
    16931727                                           ( km(k,j,i) + 1.0E-20_wp ) 
    16941728             surf_lsm_h%v_0(m) = v(k+1,j,i) + surf_lsm_h%vsws(m)      *        &
     1729                                           drho_air_zw(k-1) *                  &
    16951730                                           ( zu(k+1)   - zu(k-1)    )  /       &
    16961731                                           ( km(k,j,i) + 1.0E-20_wp )
     
    17191754!--          effect of this error is negligible.
    17201755             surf_usm_h%u_0(m) = u(k+1,j,i) + surf_usm_h%usws(m)      *        &
     1756                                           drho_air_zw(k-1) *                  &
    17211757                                           ( zu(k+1)   - zu(k-1)    )  /       &
    17221758                                           ( km(k,j,i) + 1.0E-20_wp ) 
    17231759             surf_usm_h%v_0(m) = v(k+1,j,i) + surf_usm_h%vsws(m)      *        &
     1760                                           drho_air_zw(k-1) *                  &
    17241761                                           ( zu(k+1)   - zu(k-1)    )  /       &
    17251762                                           ( km(k,j,i) + 1.0E-20_wp )
Note: See TracChangeset for help on using the changeset viewer.