Ignore:
Timestamp:
Apr 8, 2016 11:33:18 AM (8 years ago)
Author:
hoffmann
Message:

lpm_droplet_condensation improved, microphysics partially modularized

File:
1 edited

Legend:

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

    r1846 r1849  
    1919! Current revisions:
    2020! ------------------
    21 !
    22 ! 
     21! Adapted for modularization of microphysics.
     22!
    2323! Former revisions:
    2424! -----------------
     
    9898! Description:
    9999! ------------
    100 !> Calculate cloud microphysics according to the two moment bulk
    101 !> scheme by Seifert and Beheng (2006).
     100!> Calculate bilk cloud microphysics.
    102101!------------------------------------------------------------------------------!
    103102 MODULE microphysics_mod
    104  
     103
     104    USE  kinds
     105
     106    IMPLICIT NONE
     107
     108    LOGICAL ::  cloud_water_sedimentation = .FALSE.  !< cloud water sedimentation
     109    LOGICAL ::  limiter_sedimentation = .TRUE.       !< sedimentation limiter
     110    LOGICAL ::  collision_turbulence = .FALSE.       !< turbulence effects
     111    LOGICAL ::  ventilation_effect = .TRUE.          !< ventilation effect
     112
     113    REAL(wp) ::  a_1 = 8.69E-4_wp          !< coef. in turb. parametrization (cm-2 s3)
     114    REAL(wp) ::  a_2 = -7.38E-5_wp         !< coef. in turb. parametrization (cm-2 s3)
     115    REAL(wp) ::  a_3 = -1.40E-2_wp         !< coef. in turb. parametrization
     116    REAL(wp) ::  a_term = 9.65_wp          !< coef. for terminal velocity (m s-1)
     117    REAL(wp) ::  a_vent = 0.78_wp          !< coef. for ventilation effect
     118    REAL(wp) ::  b_1 = 11.45E-6_wp         !< coef. in turb. parametrization (m)
     119    REAL(wp) ::  b_2 = 9.68E-6_wp          !< coef. in turb. parametrization (m)
     120    REAL(wp) ::  b_3 = 0.62_wp             !< coef. in turb. parametrization
     121    REAL(wp) ::  b_term = 9.8_wp           !< coef. for terminal velocity (m s-1)
     122    REAL(wp) ::  b_vent = 0.308_wp         !< coef. for ventilation effect
     123    REAL(wp) ::  beta_cc = 3.09E-4_wp      !< coef. in turb. parametrization (cm-2 s3)
     124    REAL(wp) ::  c_1 = 4.82E-6_wp          !< coef. in turb. parametrization (m)
     125    REAL(wp) ::  c_2 = 4.8E-6_wp           !< coef. in turb. parametrization (m)
     126    REAL(wp) ::  c_3 = 0.76_wp             !< coef. in turb. parametrization
     127    REAL(wp) ::  c_const = 0.93_wp         !< const. in Taylor-microscale Reynolds number
     128    REAL(wp) ::  c_evap = 0.7_wp           !< constant in evaporation
     129    REAL(wp) ::  c_term = 600.0_wp         !< coef. for terminal velocity (m-1)
     130    REAL(wp) ::  diff_coeff_l = 0.23E-4_wp  !< diffusivity of water vapor (m2 s-1)
     131    REAL(wp) ::  eps_sb = 1.0E-20_wp       !< threshold in two-moments scheme
     132    REAL(wp) ::  k_cc = 9.44E09_wp         !< const. cloud-cloud kernel (m3 kg-2 s-1)
     133    REAL(wp) ::  k_cr0 = 4.33_wp           !< const. cloud-rain kernel (m3 kg-1 s-1)
     134    REAL(wp) ::  k_rr = 7.12_wp            !< const. rain-rain kernel (m3 kg-1 s-1)
     135    REAL(wp) ::  k_br = 1000.0_wp          !< const. in breakup parametrization (m-1)
     136    REAL(wp) ::  k_st = 1.2E8_wp           !< const. in drizzle parametrization (m-1 s-1)
     137    REAL(wp) ::  kappa_rr = 60.7_wp        !< const. in collision kernel (kg-1/3)
     138    REAL(wp) ::  kin_vis_air = 1.4086E-5_wp  !< kin. viscosity of air (m2 s-1)
     139    REAL(wp) ::  prec_time_const = 0.001_wp  !< coef. in Kessler scheme (s-1)
     140    REAL(wp) ::  ql_crit = 0.0005_wp       !< coef. in Kessler scheme (kg kg-1)
     141    REAL(wp) ::  schmidt_p_1d3=0.8921121_wp  !< Schmidt number**0.33333, 0.71**0.33333
     142    REAL(wp) ::  sigma_gc = 1.3_wp         !< geometric standard deviation cloud droplets
     143    REAL(wp) ::  thermal_conductivity_l = 2.43E-2_wp  !< therm. cond. air (J m-1 s-1 K-1)
     144    REAL(wp) ::  w_precipitation = 9.65_wp  !< maximum terminal velocity (m s-1)
     145    REAL(wp) ::  x0 = 2.6E-10_wp           !< separating drop mass (kg)
     146    REAL(wp) ::  xrmin = 2.6E-10_wp        !< minimum rain drop size (kg)
     147    REAL(wp) ::  xrmax = 5.0E-6_wp         !< maximum rain drop site (kg)
     148
     149    REAL(wp) ::  c_sedimentation = 2.0_wp  !< Courant number of sedimentation process
     150    REAL(wp) ::  dpirho_l                  !< 6.0 / ( pi * rho_l )
     151    REAL(wp) ::  dt_micro                  !< microphysics time step
     152    REAL(wp) ::  nc_const = 70.0E6_wp      !< cloud droplet concentration
     153    REAL(wp) ::  dt_precipitation = 100.0_wp !< timestep precipitation (s)
     154    REAL(wp) ::  sed_qc_const              !< const. for sedimentation of cloud water
     155    REAL(wp) ::  pirho_l                   !< pi * rho_l / 6.0;
     156
     157    REAL(wp), DIMENSION(:), ALLOCATABLE ::  nc_1d  !<
     158    REAL(wp), DIMENSION(:), ALLOCATABLE ::  nr_1d  !<
     159    REAL(wp), DIMENSION(:), ALLOCATABLE ::  pt_1d  !<
     160    REAL(wp), DIMENSION(:), ALLOCATABLE ::  qc_1d  !<
     161    REAL(wp), DIMENSION(:), ALLOCATABLE ::  qr_1d  !<
     162    REAL(wp), DIMENSION(:), ALLOCATABLE ::  q_1d   !<
     163
     164    SAVE
    105165
    106166    PRIVATE
    107     PUBLIC microphysics_control
     167    PUBLIC microphysics_control, microphysics_init
     168
     169    PUBLIC cloud_water_sedimentation, collision_turbulence, c_sedimentation,   &
     170           dt_precipitation, limiter_sedimentation, nc_const, sigma_gc,        &
     171           ventilation_effect
    108172
    109173    INTERFACE microphysics_control
     
    157221    END INTERFACE calc_precipitation_amount
    158222
    159 
    160223 CONTAINS
    161 
    162 
    163224!------------------------------------------------------------------------------!
    164225! Description:
    165226! ------------
    166 !> Call for all grid points
     227!> Initialization of bulk microphysics
     228!------------------------------------------------------------------------------!
     229    SUBROUTINE microphysics_init
     230
     231       USE arrays_3d,                                                          &
     232           ONLY:  dzu
     233
     234       USE constants,                                                          &
     235           ONLY:  pi
     236
     237       USE cloud_parameters,                                                   &
     238           ONLY:  rho_l
     239
     240       USE control_parameters,                                                 &
     241           ONLY:  microphysics_seifert
     242
     243       USE indices,                                                            &
     244           ONLY:  nzb, nzt
     245
     246       IMPLICIT NONE
     247
     248!
     249!--    constant for the sedimentation of cloud water (2-moment cloud physics)
     250       sed_qc_const = k_st * ( 3.0_wp / ( 4.0_wp * pi * rho_l )                &
     251                          )**( 2.0_wp / 3.0_wp ) *                             &
     252                      EXP( 5.0_wp * LOG( sigma_gc )**2 )
     253
     254!
     255!--    Calculate timestep according to precipitation
     256       IF ( microphysics_seifert )  THEN
     257          dt_precipitation = c_sedimentation * MINVAL( dzu(nzb+2:nzt) ) /      &
     258                             w_precipitation
     259       ENDIF
     260
     261!
     262!--    Pre-calculate frequently calculated fractions of pi and rho_l
     263       pirho_l  = pi * rho_l / 6.0_wp
     264       dpirho_l = 1.0_wp / pirho_l
     265
     266!
     267!--    Allocate 1D microphysics arrays
     268       ALLOCATE ( nc_1d(nzb:nzt+1), pt_1d(nzb:nzt+1), q_1d(nzb:nzt+1),         &
     269                  qc_1d(nzb:nzt+1) )
     270
     271       IF ( microphysics_seifert )  THEN
     272          ALLOCATE ( nr_1d(nzb:nzt+1), qr_1d(nzb:nzt+1) )
     273       ENDIF
     274
     275!
     276!--    Initialze nc_1d with nc_const
     277       nc_1d = nc_const
     278
     279    END SUBROUTINE microphysics_init
     280
     281
     282!------------------------------------------------------------------------------!
     283! Description:
     284! ------------
     285!> Control of microphysics for all grid points
    167286!------------------------------------------------------------------------------!
    168287    SUBROUTINE microphysics_control
    169288
    170289       USE arrays_3d,                                                          &
    171            ONLY:  hyp, pt_init, zu
     290           ONLY:  hyp, pt_init, prr, zu
    172291
    173292       USE cloud_parameters,                                                   &
    174            ONLY:  cloud_water_sedimentation, cp, hyrho, prr, pt_d_t, r_d, t_d_pt
     293           ONLY:  cp, hyrho, pt_d_t, r_d, t_d_pt
    175294
    176295       USE control_parameters,                                                 &
    177            ONLY:  call_microphysics_at_all_substeps, dt_3d, dt_micro,          &
    178                   g, intermediate_timestep_count, large_scale_forcing,         &
     296           ONLY:  call_microphysics_at_all_substeps, dt_3d, g,                 &
     297                  intermediate_timestep_count, large_scale_forcing,            &
    179298                  lsf_surf, microphysics_kessler, microphysics_seifert,        &
    180299                  pt_surface, rho_surface,surface_pressure
     
    263382
    264383       USE cloud_parameters,                                                   &
    265            ONLY:  eps_sb, xrmin, xrmax, hyrho
     384           ONLY:  hyrho
    266385
    267386       USE cpulog,                                                             &
     
    314433
    315434       USE cloud_parameters,                                                   &
    316            ONLY:  a_1, a_2, a_3, b_1, b_2, b_3, beta_cc, c_1, c_2, c_3,        &
    317                   c_const, collision_turbulence, dpirho_l, eps_sb, hyrho,      &
    318                   k_cc, kin_vis_air, nc_const, x0
     435           ONLY:  hyrho
    319436
    320437       USE control_parameters,                                                 &
    321            ONLY:  dt_micro, rho_surface
     438           ONLY:  rho_surface
    322439
    323440       USE cpulog,                                                             &
     
    446563
    447564       USE arrays_3d,                                                          &
    448            ONLY:  dzw, pt, q, qc
     565           ONLY:  dzw, pt, prr, q, qc
    449566
    450567       USE cloud_parameters,                                                   &
    451            ONLY:  l_d_cp, pt_d_t, prec_time_const, prr, ql_crit
    452 
    453        USE control_parameters,                                                 &
    454            ONLY:  dt_micro
     568           ONLY:  l_d_cp, pt_d_t
    455569
    456570       USE indices,                                                            &
     
    506620
    507621       USE cloud_parameters,                                                   &
    508            ONLY:  collision_turbulence, eps_sb, hyrho, k_cr0
     622           ONLY:  hyrho
    509623
    510624       USE control_parameters,                                                 &
    511            ONLY:  dt_micro, rho_surface
     625           ONLY:  rho_surface
    512626
    513627       USE cpulog,                                                             &
     
    587701
    588702       USE cloud_parameters,                                                   &
    589            ONLY:  dpirho_l, eps_sb, hyrho, k_br, k_rr
     703           ONLY:  hyrho
    590704
    591705       USE control_parameters,                                                 &
    592            ONLY:  dt_micro, rho_surface
     706           ONLY:  rho_surface
    593707
    594708       USE cpulog,                                                             &
     
    659773
    660774       USE cloud_parameters,                                                   &
    661            ONLY:  a_term, a_vent, b_term, b_vent, c_evap, c_term,              &
    662                   diff_coeff_l, dpirho_l, eps_sb, hyrho, kin_vis_air,          &
    663                   l_d_cp, l_d_r, l_v, r_v, schmidt_p_1d3,                      &
    664                   thermal_conductivity_l, t_d_pt, ventilation_effect
     775           ONLY:  hyrho, l_d_cp, l_d_r, l_v, r_v, t_d_pt
    665776
    666777       USE constants,                                                          &
    667778           ONLY:  pi
    668 
    669        USE control_parameters,                                                 &
    670            ONLY:  dt_micro
    671779
    672780       USE cpulog,                                                             &
     
    817925
    818926       USE arrays_3d,                                                          &
    819            ONLY:  ddzu, dzu, pt, q, qc
     927           ONLY:  ddzu, dzu, pt, prr, q, qc
    820928
    821929       USE cloud_parameters,                                                   &
    822            ONLY:  eps_sb, hyrho, l_d_cp, nc_const, prr, pt_d_t, sed_qc_const
     930           ONLY:  hyrho, l_d_cp, pt_d_t
    823931
    824932       USE control_parameters,                                                 &
    825            ONLY:  call_microphysics_at_all_substeps, dt_micro,                 &
    826                   intermediate_timestep_count
     933           ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
    827934
    828935       USE cpulog,                                                             &
     
    840947       IMPLICIT NONE
    841948
    842        INTEGER(iwp) ::  i                 !<
    843        INTEGER(iwp) ::  j                 !<
    844        INTEGER(iwp) ::  k                 !<
     949       INTEGER(iwp) ::  i             !<
     950       INTEGER(iwp) ::  j             !<
     951       INTEGER(iwp) ::  k             !<
    845952
    846953       REAL(wp), DIMENSION(nzb:nzt+1) :: sed_qc !<
     
    9001007
    9011008       USE arrays_3d,                                                          &
    902            ONLY:  ddzu, dzu, nr, pt, q, qr
     1009           ONLY:  ddzu, dzu, nr, pt, prr, q, qr
    9031010
    9041011       USE cloud_parameters,                                                   &
    905            ONLY:  a_term, b_term, c_term, dpirho_l, eps_sb, hyrho,             &
    906                   limiter_sedimentation, l_d_cp, prr, pt_d_t
     1012           ONLY:  hyrho, l_d_cp, pt_d_t
    9071013
    9081014       USE control_parameters,                                                 &
    909            ONLY:  call_microphysics_at_all_substeps, dt_micro,                 &
    910                   intermediate_timestep_count
     1015           ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
    9111016       USE cpulog,                                                             &
    9121017           ONLY:  cpu_log, log_point_s
     
    11251230    SUBROUTINE calc_precipitation_amount
    11261231
     1232       USE arrays_3d,                                                          &
     1233           ONLY:  precipitation_amount, prr
     1234
    11271235       USE cloud_parameters,                                                   &
    1128            ONLY:  hyrho, precipitation_amount, prr
     1236           ONLY:  hyrho
    11291237
    11301238       USE control_parameters,                                                 &
     
    11661274! Description:
    11671275! ------------
    1168 !> Call for grid point i,j
     1276!> Control of microphysics for grid points i,j
    11691277!------------------------------------------------------------------------------!
    11701278
     
    11721280
    11731281       USE arrays_3d,                                                          &
    1174            ONLY:  hyp, nc_1d, nr, nr_1d, pt, pt_init, pt_1d, q, q_1d, qc,      &
    1175                   qc_1d, qr, qr_1d, zu
     1282           ONLY:  hyp, nr, pt, pt_init, prr, q, qc, qr, zu
    11761283
    11771284       USE cloud_parameters,                                                   &
    1178            ONLY:  cloud_water_sedimentation, cp, hyrho, nc_const, prr, pt_d_t, &
    1179                   r_d, t_d_pt
     1285           ONLY:  cp, hyrho, pt_d_t, r_d, t_d_pt
    11801286
    11811287       USE control_parameters,                                                 &
    1182            ONLY:  call_microphysics_at_all_substeps, dt_3d, dt_micro,          &
    1183                   g, intermediate_timestep_count, large_scale_forcing,         &
     1288           ONLY:  call_microphysics_at_all_substeps, dt_3d, g,                 &
     1289                  intermediate_timestep_count, large_scale_forcing,            &
    11841290                  lsf_surf, microphysics_seifert, microphysics_kessler,        &
    11851291                  pt_surface, rho_surface, surface_pressure
     
    12861392    SUBROUTINE adjust_cloud_ij( i, j )
    12871393
    1288        USE arrays_3d,                                                          &
    1289            ONLY:  qr_1d, nr_1d
    1290 
    12911394       USE cloud_parameters,                                                   &
    1292            ONLY:  eps_sb, xrmin, xrmax, hyrho
     1395           ONLY:  hyrho
    12931396
    12941397       USE indices,                                                            &
     
    13341437
    13351438       USE arrays_3d,                                                          &
    1336            ONLY:  diss, dzu, nc_1d, nr_1d, qc_1d, qr_1d
     1439           ONLY:  diss, dzu
    13371440
    13381441       USE cloud_parameters,                                                   &
    1339            ONLY:  a_1, a_2, a_3, b_1, b_2, b_3, beta_cc, c_1, c_2, c_3,        &
    1340                   c_const, collision_turbulence, dpirho_l, eps_sb, hyrho,      &
    1341                   kin_vis_air, k_cc, x0
     1442           ONLY:  hyrho
    13421443
    13431444       USE control_parameters,                                                 &
    1344            ONLY:  dt_micro, rho_surface
     1445           ONLY:  rho_surface
    13451446
    13461447       USE grid_variables,                                                     &
     
    14541555
    14551556       USE arrays_3d,                                                          &
    1456            ONLY:  dzw, pt_1d, q_1d, qc_1d
     1557           ONLY:  dzw, prr
    14571558
    14581559       USE cloud_parameters,                                                   &
    1459            ONLY:  l_d_cp, pt_d_t, prec_time_const, prr, ql_crit
    1460 
    1461        USE control_parameters,                                                 &
    1462            ONLY:  dt_micro
     1560           ONLY:  l_d_cp, pt_d_t
    14631561
    14641562       USE indices,                                                            &
     
    15051603
    15061604       USE arrays_3d,                                                          &
    1507            ONLY:  diss, qc_1d, qr_1d
     1605           ONLY:  diss
    15081606
    15091607       USE cloud_parameters,                                                   &
    1510            ONLY:  collision_turbulence, eps_sb, hyrho, k_cr0
     1608           ONLY:  hyrho
    15111609
    15121610       USE control_parameters,                                                 &
    1513            ONLY:  dt_micro, rho_surface
     1611           ONLY:  rho_surface
    15141612
    15151613       USE indices,                                                            &
     
    15721670    SUBROUTINE selfcollection_breakup_ij( i, j )
    15731671
    1574        USE arrays_3d,                                                          &
    1575            ONLY:  nr_1d, qr_1d
    1576 
    15771672       USE cloud_parameters,                                                   &
    1578            ONLY:  dpirho_l, eps_sb, hyrho, k_br, k_rr
     1673           ONLY:  hyrho
    15791674
    15801675       USE control_parameters,                                                 &
    1581            ONLY:  dt_micro, rho_surface
     1676           ONLY:  rho_surface
    15821677
    15831678       USE indices,                                                            &
     
    16321727
    16331728       USE arrays_3d,                                                          &
    1634            ONLY:  hyp, nr_1d, pt_1d, q_1d,  qc_1d, qr_1d
     1729           ONLY:  hyp
    16351730
    16361731       USE cloud_parameters,                                                   &
    1637            ONLY:  a_term, a_vent, b_term, b_vent, c_evap, c_term, diff_coeff_l,&
    1638                   dpirho_l, eps_sb, hyrho, kin_vis_air, l_d_cp, l_d_r,         &
    1639                   l_v, r_v, schmidt_p_1d3, thermal_conductivity_l,             &
    1640                   t_d_pt, ventilation_effect
     1732           ONLY:  hyrho, l_d_cp, l_d_r, l_v, r_v, t_d_pt
    16411733
    16421734       USE constants,                                                          &
    16431735           ONLY:  pi
    1644 
    1645        USE control_parameters,                                                 &
    1646            ONLY:  dt_micro
    16471736
    16481737       USE indices,                                                            &
     
    17791868
    17801869       USE arrays_3d,                                                          &
    1781            ONLY:  ddzu, dzu, nc_1d, pt_1d, q_1d, qc_1d
     1870           ONLY:  ddzu, dzu, prr
    17821871
    17831872       USE cloud_parameters,                                                   &
    1784            ONLY:  eps_sb, hyrho, l_d_cp, prr, pt_d_t, sed_qc_const
     1873           ONLY:  hyrho, l_d_cp, pt_d_t
    17851874
    17861875       USE control_parameters,                                                 &
    1787            ONLY:  call_microphysics_at_all_substeps, dt_micro,                 &
    1788                   intermediate_timestep_count
     1876           ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
    17891877
    17901878       USE indices,                                                            &
     
    17981886       IMPLICIT NONE
    17991887
    1800        INTEGER(iwp) ::  i                 !<
    1801        INTEGER(iwp) ::  j                 !<
    1802        INTEGER(iwp) ::  k                 !<
     1888       INTEGER(iwp) ::  i             !<
     1889       INTEGER(iwp) ::  j             !<
     1890       INTEGER(iwp) ::  k             !<
    18031891
    18041892       REAL(wp), DIMENSION(nzb:nzt+1) :: sed_qc  !<
     
    18481936
    18491937       USE arrays_3d,                                                          &
    1850            ONLY:  ddzu, dzu, nr_1d, pt_1d, q_1d, qr_1d
     1938           ONLY:  ddzu, dzu, prr
    18511939
    18521940       USE cloud_parameters,                                                   &
    1853            ONLY:  a_term, b_term, c_term, dpirho_l, eps_sb, hyrho,             &
    1854                   limiter_sedimentation, l_d_cp, prr, pt_d_t
     1941           ONLY:  hyrho, l_d_cp, pt_d_t
    18551942
    18561943       USE control_parameters,                                                 &
    1857            ONLY:  call_microphysics_at_all_substeps, dt_micro,                 &
    1858                   intermediate_timestep_count
     1944           ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
    18591945
    18601946       USE indices,                                                            &
     
    20502136    SUBROUTINE calc_precipitation_amount_ij( i, j )
    20512137
     2138       USE arrays_3d,                                                          &
     2139           ONLY:  precipitation_amount, prr
     2140
    20522141       USE cloud_parameters,                                                   &
    2053            ONLY:  hyrho, precipitation_amount, prr
     2142           ONLY:  hyrho
    20542143
    20552144       USE control_parameters,                                                 &
     
    20892178!------------------------------------------------------------------------------!
    20902179    FUNCTION gamm( xx )
    2091        
    2092        USE cloud_parameters,                                                   &
    2093            ONLY:  cof, stp
    20942180
    20952181       USE kinds
     
    21062192       REAL(wp)     ::  y_gamm       !<
    21072193
    2108        x_gamm = xx
    2109        y_gamm = x_gamm
     2194
     2195       REAL(wp), PARAMETER  ::  stp = 2.5066282746310005_wp               !<
     2196       REAL(wp), PARAMETER  ::  cof(6) = (/ 76.18009172947146_wp,      &
     2197                                           -86.50532032941677_wp,      &
     2198                                            24.01409824083091_wp,      &
     2199                                            -1.231739572450155_wp,     &
     2200                                             0.1208650973866179E-2_wp, &
     2201                                            -0.5395239384953E-5_wp /)     !<
     2202
     2203       x_gamm = xx
     2204       y_gamm = x_gamm
    21102205       tmp = x_gamm + 5.5_wp
    2111        tmp = ( x_gamm + 0.5_wp ) * LOG( tmp ) - tmp 
     2206       tmp = ( x_gamm + 0.5_wp ) * LOG( tmp ) - tmp
    21122207       ser = 1.000000000190015_wp
    21132208
Note: See TracChangeset for help on using the changeset viewer.