Changeset 3361 for palm/trunk


Ignore:
Timestamp:
Oct 16, 2018 8:39:37 PM (6 years ago)
Author:
knoop
Message:

Introduced global constant rd_d_rv=0.622

Location:
palm/trunk/SOURCE
Files:
8 edited

Legend:

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

    r3274 r3361  
    7272    REAL(wp), PARAMETER ::  lv_d_cp = l_v / c_p   !< precomputed l_v / c_p
    7373    REAL(wp), PARAMETER ::  lv_d_rd = l_v / r_d   !< precomputed l_v / r_d
     74    REAL(wp), PARAMETER ::  rd_d_rv = 0.622_wp !r_d / r_v  !< precomputed r_d / r_v
    7475    REAL(wp), PARAMETER ::  rd_d_cp = 0.286_wp !r_d / c_p  !< precomputed r_d / c_p
    7576    REAL(wp), PARAMETER ::  cp_d_rd = 1.0_wp/0.286_wp !c_p / r_d  !< precomputed c_p / r_d
  • palm/trunk/SOURCE/biometeorology_mod.f90

    r3337 r3361  
    4545    USE arrays_3d,                                                             &
    4646        ONLY:  hyp, p, pt, q, u, v, w
     47
     48    USE basic_constants_and_equations_mod,                                     &
     49        ONLY:  rd_d_rv
    4750
    4851    USE kinds  !< to set precision of INTEGER and REAL arrays according to PALM
     
    231234                   CALL calculate_pet_static(                                      &
    232235                           pt(k,j,i) * (hyp(k) / 100000.0_wp )**0.286_wp + t_zero, &  !< Air temperature (°C)
    233                            q(k,j,i) * hyp(k) / ( q(k,j,i) + 0.622_wp ) / 100._wp,  &  !< Vapor pressure (hPa)
     236                           q(k,j,i) * hyp(k) / ( q(k,j,i) + rd_d_rv ) / 100._wp,   &  !< Vapor pressure (hPa)
    234237                           SQRT( MAX( ( ( u(k,j,i) + u(k,j,i+1) ) * 0.5_wp )**2 +  &
    235238                                      ( ( v(k,j,i) + v(k,j+1,i) ) * 0.5_wp )**2 +  &
     
    380383                    CALL calculate_pet_static(                                      &
    381384                       pt(k,j,i) * (hyp(k) / 100000.0_wp )**0.286_wp + t_zero, &  !< Air temperature (°C)
    382                        q(k,j,i) * hyp(k) / ( q(k,j,i) + 0.622_wp ) / 100.0_wp, &  !< Vapor pressure (hPa)
     385                       q(k,j,i) * hyp(k) / ( q(k,j,i) + rd_d_rv ) / 100.0_wp, &  !< Vapor pressure (hPa)
    383386                       SQRT( MAX( ( ( u(k,j,i) + u(k,j,i+1) ) * 0.5_wp )**2 +  &
    384387                                  ( ( v(k,j,i) + v(k,j+1,i) ) * 0.5_wp )**2 +  &
  • palm/trunk/SOURCE/bulk_cloud_model_mod.f90

    r3274 r3361  
    186186               molecular_weight_of_water, pi, rho_l, rho_s, r_d, r_v, vanthoff,&
    187187               exner_function, exner_function_invers, ideal_gas_law_rho,       &
    188                ideal_gas_law_rho_pt, barometric_formula
     188               ideal_gas_law_rho_pt, barometric_formula, rd_d_rv
    189189
    190190    USE control_parameters,                                                    &
     
    33083308!
    33093309!--       Computation of saturation mixing ratio:
    3310           q_s   = 0.622_wp * e_s / ( hyp(k) -  e_s )
    3311           alpha = 0.622_wp * lv_d_rd * lv_d_cp / ( t_l * t_l )
     3310          q_s   = rd_d_rv * e_s / ( hyp(k) -  e_s )
     3311          alpha = rd_d_rv * lv_d_rd * lv_d_cp / ( t_l * t_l )
    33123312          q_s   = q_s * ( 1.0_wp + alpha * q(k,j,i) ) /                        &
    33133313                        ( 1.0_wp + alpha * q_s )
     
    34233423!
    34243424!--       Computation of saturation mixing ratio:
    3425           q_s   = 0.622_wp * e_s / ( hyp(k) - e_s )
    3426           alpha = 0.622_wp * lv_d_rd * lv_d_cp / ( t_l * t_l )
     3425          q_s   = rd_d_rv * e_s / ( hyp(k) - e_s )
     3426          alpha = rd_d_rv * lv_d_rd * lv_d_cp / ( t_l * t_l )
    34273427          q_s   = q_s * ( 1.0_wp + alpha * q(k,j,i) ) /               &
    34283428                        ( 1.0_wp + alpha * q_s )
     
    38033803!
    38043804!--          Computation of saturation mixing ratio:
    3805              q_s   = 0.622_wp * e_s / ( hyp(k) - e_s )
    3806              alpha = 0.622_wp * lv_d_rd * lv_d_cp / ( t_l * t_l )
     3805             q_s   = rd_d_rv * e_s / ( hyp(k) - e_s )
     3806             alpha = rd_d_rv * lv_d_rd * lv_d_cp / ( t_l * t_l )
    38073807             q_s   = q_s * ( 1.0_wp + alpha * q(k,j,i) ) / ( 1.0_wp + alpha * q_s )
    38083808!
     
    42474247!
    42484248!--    Computation of saturation mixing ratio:
    4249        q_s   = 0.622_wp * e_s / ( hyp(k) - e_s )
     4249       q_s   = rd_d_rv * e_s / ( hyp(k) - e_s )
    42504250!
    42514251!--    Correction factor
    4252        alpha = 0.622_wp * lv_d_rd * lv_d_cp / ( t_l * t_l )
     4252       alpha = rd_d_rv * lv_d_rd * lv_d_cp / ( t_l * t_l )
    42534253!
    42544254!--    Correction of the approximated value
  • palm/trunk/SOURCE/land_surface_model_mod.f90

    r3349 r3361  
    486486
    487487    USE basic_constants_and_equations_mod,                                     &
    488         ONLY:  c_p, g, lv_d_cp, l_v, magnus, rho_l, r_d, r_v
     488        ONLY:  c_p, g, lv_d_cp, l_v, magnus, rho_l, r_d, r_v, rd_d_rv
    489489
    490490    USE calc_mean_profile_mod,                                                 &
     
    19991999!
    20002000!--       Calculate vapour pressure
    2001           e  = surf%qv1(m) * surface_pressure / ( surf%qv1(m) + 0.622_wp )
     2001          e  = surf%qv1(m) * surface_pressure / ( surf%qv1(m) + rd_d_rv )
    20022002          f3 = EXP ( - surf%g_d(m) * (e_s - e) )
    20032003       ELSE
     
    20402040!
    20412041!--    Calculate saturation water vapor mixing ratio
    2042        q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
     2042       q_s = rd_d_rv * e_s / ( surface_pressure - e_s )
    20432043!
    20442044!--    In case of dewfall, set evapotranspiration to zero
     
    20792079                       / ( surf_t_surface%var_1d(m) - 29.65_wp)**2 )
    20802080
    2081        dq_s_dt = 0.622_wp * e_s_dt / ( surface_pressure - e_s_dt )
     2081       dq_s_dt = rd_d_rv * e_s_dt / ( surface_pressure - e_s_dt )
    20822082!
    20832083!--    Calculate net radiation radiation without longwave outgoing flux because
     
    23502350!
    23512351!--       Calculate mixing ratio at saturation
    2352           q_s = 0.622_wp * e_s / ( surface_pressure - e_s )
     2352          q_s = rd_d_rv * e_s / ( surface_pressure - e_s )
    23532353
    23542354          resistance = surf%r_a(m) / ( surf%r_a(m) + surf%r_s(m) + 1E-5_wp )
  • palm/trunk/SOURCE/lpm_droplet_condensation.f90

    r3274 r3361  
    143143    USE basic_constants_and_equations_mod,                                     &
    144144        ONLY:  l_v, molecular_weight_of_solute, molecular_weight_of_water,     &
    145                magnus, pi, rho_l, rho_s, r_v, vanthoff
     145               magnus, pi, rho_l, rho_s, rd_d_rv, r_v, vanthoff
    146146
    147147    USE control_parameters,                                                    &
     
    223223!
    224224!-- Current vapor pressure
    225     e_a = q(kp,jp,ip) * hyp(kp) / ( q(kp,jp,ip) + 0.622_wp )
     225    e_a = q(kp,jp,ip) * hyp(kp) / ( q(kp,jp,ip) + rd_d_rv )
    226226!
    227227!-- Thermal conductivity for water (from Rogers and Yau, Table 7.1)
  • palm/trunk/SOURCE/lpm_init.f90

    r3294 r3361  
    10611061    USE basic_constants_and_equations_mod,                                     &
    10621062        ONLY: molecular_weight_of_solute, molecular_weight_of_water, magnus,   &
    1063               pi, rho_l, r_v, rho_s, vanthoff
     1063              pi, rd_d_rv, rho_l, r_v, rho_s, vanthoff
    10641064
    10651065    USE kinds
     
    12011201
    12021202             e_s = magnus( t_int )
    1203              e_a = q(kp,jp,ip) * hyp(kp) / ( q(kp,jp,ip) + 0.622_wp )
     1203             e_a = q(kp,jp,ip) * hyp(kp) / ( q(kp,jp,ip) + rd_d_rv )
    12041204
    12051205             sigma   = 0.0761_wp - 0.000155_wp * ( t_int - 273.15_wp )
  • palm/trunk/SOURCE/surface_layer_fluxes_mod.f90

    r3274 r3361  
    237237
    238238    USE basic_constants_and_equations_mod,                                     &
    239         ONLY:  g, kappa, lv_d_cp, pi
     239        ONLY:  g, kappa, lv_d_cp, pi, rd_d_rv
    240240
    241241    USE chem_modules,                                                          &
     
    18181818                              EXP( 0.07_wp * ( MIN(pt(k-1,j,i),pt(k,j,i))      &
    18191819                                               - 273.15_wp ) )
    1820                    q(k-1,j,i) = 0.622_wp * e_s / ( surface_pressure - e_s )
     1820                   q(k-1,j,i) = rd_d_rv * e_s / ( surface_pressure - e_s )
    18211821                ENDDO
    18221822             ENDIF
  • palm/trunk/SOURCE/turbulence_closure_mod.f90

    r3359 r3361  
    170170
    171171    USE basic_constants_and_equations_mod,                                     &
    172         ONLY:  g, kappa, lv_d_cp, lv_d_rd
     172        ONLY:  g, kappa, lv_d_cp, lv_d_rd, rd_d_rv
    173173
    174174    USE control_parameters,                                                    &
     
    30063006                         k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                  &
    30073007                                       ( q(k,j,i) - ql(k,j,i) ) *              &
    3008                               ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /       &
    3009                               ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *        &
     3008                              ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /        &
     3009                              ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *         &
    30103010                              ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    30113011                         k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    30663066                               k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *            &
    30673067                                          ( q(k,j,i) - ql(k,j,i) ) *           &
    3068                                  ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /    &
    3069                                  ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *     &
     3068                                 ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /     &
     3069                                 ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *      &
    30703070                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    30713071                               k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    31033103                            k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *               &
    31043104                                          ( q(k,j,i) - ql(k,j,i) ) *           &
    3105                                  ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /    &
    3106                                  ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *     &
     3105                                 ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /     &
     3106                                 ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *      &
    31073107                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    31083108                            k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    31393139                            k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *               &
    31403140                                          ( q(k,j,i) - ql(k,j,i) ) *           &
    3141                                  ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /    &
    3142                                  ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *     &
     3141                                 ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /     &
     3142                                 ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *      &
    31433143                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    31443144                            k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    31783178                            k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *               &
    31793179                                       ( q(k,j,i) - ql(k,j,i) ) *              &
    3180                               ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /       &
    3181                               ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *        &
     3180                              ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /        &
     3181                              ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *         &
    31823182                              ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    31833183                            k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    37943794                   k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                        &
    37953795                                 ( q(k,j,i) - ql(k,j,i) ) *                    &
    3796                         ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /             &
    3797                         ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *              &
     3796                        ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /              &
     3797                        ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *               &
    37983798                        ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    37993799                   k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    38513851                        k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                   &
    38523852                                   ( q(k,j,i) - ql(k,j,i) ) *                  &
    3853                           ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /           &
    3854                           ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *            &
     3853                          ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /            &
     3854                          ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *             &
    38553855                          ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    38563856                        k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    38883888                       k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                    &
    38893889                                     ( q(k,j,i) - ql(k,j,i) ) *                &
    3890                             ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /         &
    3891                             ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *          &
     3890                            ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /          &
     3891                            ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *           &
    38923892                            ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    38933893                       k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    39243924                       k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                    &
    39253925                                     ( q(k,j,i) - ql(k,j,i) ) *                &
    3926                             ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /         &
    3927                             ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *          &
     3926                            ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /          &
     3927                            ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *           &
    39283928                            ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    39293929                       k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
     
    39643964                      k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp *                     &
    39653965                                 ( q(k,j,i) - ql(k,j,i) ) *                    &
    3966                         ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) /             &
    3967                         ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp *              &
     3966                        ( 1.0_wp + rd_d_rv * lv_d_rd / temp ) ) /              &
     3967                        ( 1.0_wp + rd_d_rv * lv_d_rd * lv_d_cp *               &
    39683968                        ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    39693969                      k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp )
Note: See TracChangeset for help on using the changeset viewer.