Ignore:
Timestamp:
Jun 20, 2017 9:51:42 AM (7 years ago)
Author:
schwenkel
Message:

implementation of new bulk microphysics scheme

File:
1 edited

Legend:

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

    r2233 r2292  
    2525! -----------------
    2626! $Id$
     27! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
     28! includes two more prognostic equations for cloud drop concentration (nc) 
     29! and cloud water content (qc).
     30! - The process of activation is parameterized with a simple Twomey
     31!   activion scheme or with considering solution and curvature
     32!   effects (Khvorostyanov and Curry ,2006).
     33! - The saturation adjustment scheme is replaced by the parameterization
     34!   of condensation rates (Khairoutdinov and Kogan, 2000, Mon. Wea. Rev.,128).
     35! - All other microphysical processes of Seifert and Beheng are used.
     36!   Additionally, in those processes the reduction of cloud number concentration
     37!   is considered.
     38!
     39! 2233 2017-05-30 18:08:54Z suehring
    2740!
    2841! 2232 2017-05-30 17:47:52Z suehring
     
    123136    IMPLICIT NONE
    124137
    125     LOGICAL ::  cloud_water_sedimentation = .FALSE.  !< cloud water sedimentation
    126     LOGICAL ::  limiter_sedimentation = .TRUE.       !< sedimentation limiter
    127     LOGICAL ::  collision_turbulence = .FALSE.       !< turbulence effects
    128     LOGICAL ::  ventilation_effect = .TRUE.          !< ventilation effect
     138    LOGICAL ::  cloud_water_sedimentation = .FALSE.       !< cloud water sedimentation
     139    LOGICAL ::  curvature_solution_effects_bulk = .FALSE. !< flag for considering koehler theory
     140    LOGICAL ::  limiter_sedimentation = .TRUE.            !< sedimentation limiter
     141    LOGICAL ::  collision_turbulence = .FALSE.            !< turbulence effects
     142    LOGICAL ::  ventilation_effect = .TRUE.               !< ventilation effect
    129143
    130144    REAL(wp) ::  a_1 = 8.69E-4_wp          !< coef. in turb. parametrization (cm-2 s3)
     
    147161    REAL(wp) ::  diff_coeff_l = 0.23E-4_wp  !< diffusivity of water vapor (m2 s-1)
    148162    REAL(wp) ::  eps_sb = 1.0E-10_wp       !< threshold in two-moments scheme
     163    REAL(wp) ::  eps_mr = 0.0_wp           !< threshold for morrison scheme
    149164    REAL(wp) ::  k_cc = 9.44E09_wp         !< const. cloud-cloud kernel (m3 kg-2 s-1)
    150165    REAL(wp) ::  k_cr0 = 4.33_wp           !< const. cloud-rain kernel (m3 kg-1 s-1)
     
    161176    REAL(wp) ::  w_precipitation = 9.65_wp  !< maximum terminal velocity (m s-1)
    162177    REAL(wp) ::  x0 = 2.6E-10_wp           !< separating drop mass (kg)
     178    REAL(wp) ::  xamin = 5.24E-19_wp       !< average aerosol mass (kg) (~ 0.05µm)
     179    REAL(wp) ::  xcmin = 4.18E-15_wp       !< minimum cloud drop size (kg) (~ 1µm)
     180    REAL(wp) ::  xcmax = 2.6E-10_wp        !< maximum cloud drop size (kg) (~ 40µm)
    163181    REAL(wp) ::  xrmin = 2.6E-10_wp        !< minimum rain drop size (kg)
    164182    REAL(wp) ::  xrmax = 5.0E-6_wp         !< maximum rain drop site (kg)
     
    167185    REAL(wp) ::  dpirho_l                  !< 6.0 / ( pi * rho_l )
    168186    REAL(wp) ::  dt_micro                  !< microphysics time step
     187    REAL(wp) ::  na_init = 100.0E6_wp      !< Total particle/aerosol concentration (cm-3)
    169188    REAL(wp) ::  nc_const = 70.0E6_wp      !< cloud droplet concentration
    170189    REAL(wp) ::  dt_precipitation = 100.0_wp !< timestep precipitation (s)
     
    184203    PUBLIC microphysics_control, microphysics_init
    185204
    186     PUBLIC cloud_water_sedimentation, collision_turbulence, c_sedimentation,   &
    187            dt_precipitation, limiter_sedimentation, nc_const, sigma_gc,        &
     205    PUBLIC cloud_water_sedimentation, collision_turbulence,                    &
     206           curvature_solution_effects_bulk, c_sedimentation, dt_precipitation, &
     207           limiter_sedimentation, na_init, nc_const, sigma_gc,                 &
    188208           ventilation_effect
     209           
    189210
    190211    INTERFACE microphysics_control
     
    198219    END INTERFACE adjust_cloud
    199220
     221    INTERFACE activation
     222       MODULE PROCEDURE activation
     223       MODULE PROCEDURE activation_ij
     224    END INTERFACE activation
     225
     226    INTERFACE condensation
     227       MODULE PROCEDURE condensation
     228       MODULE PROCEDURE condensation_ij
     229    END INTERFACE condensation
     230
    200231    INTERFACE autoconversion
    201232       MODULE PROCEDURE autoconversion
     
    256287
    257288       USE control_parameters,                                                 &
    258            ONLY:  microphysics_seifert
     289           ONLY:  microphysics_morrison, microphysics_seifert
    259290
    260291       USE indices,                                                            &
     
    283314!
    284315!--    Allocate 1D microphysics arrays
    285        ALLOCATE ( nc_1d(nzb:nzt+1), pt_1d(nzb:nzt+1), q_1d(nzb:nzt+1),         &
     316       ALLOCATE ( pt_1d(nzb:nzt+1), q_1d(nzb:nzt+1),         &
    286317                  qc_1d(nzb:nzt+1) )
     318
     319       IF ( microphysics_morrison .OR. microphysics_seifert ) THEN
     320          ALLOCATE ( nc_1d(nzb:nzt+1) )
     321       ENDIF
    287322
    288323       IF ( microphysics_seifert )  THEN
     
    290325       ENDIF
    291326
    292 !
    293 !--    Initialze nc_1d with nc_const
    294        nc_1d = nc_const
    295 
    296327    END SUBROUTINE microphysics_init
    297328
     
    313344           ONLY:  call_microphysics_at_all_substeps, dt_3d, g,                 &
    314345                  intermediate_timestep_count, large_scale_forcing,            &
    315                   lsf_surf, microphysics_kessler, microphysics_seifert,        &
    316                   pt_surface, rho_surface,surface_pressure
     346                  lsf_surf, microphysics_kessler, microphysics_morrison,       &
     347                  microphysics_seifert, pt_surface,                            &
     348                  rho_surface,surface_pressure
    317349
    318350       USE indices,                                                            &
     
    373405
    374406          CALL adjust_cloud
     407          IF ( microphysics_morrison )  CALL activation
     408          IF ( microphysics_morrison )  CALL condensation
    375409          CALL autoconversion
    376410          CALL accretion
     
    396430
    397431       USE arrays_3d,                                                          &
    398            ONLY:  qr, nr
     432           ONLY:  qc, nc, qr, nr
    399433
    400434       USE cloud_parameters,                                                   &
    401435           ONLY:  hyrho
     436
     437       USE control_parameters,                                                 &
     438           ONLY:  microphysics_morrison
    402439
    403440       USE cpulog,                                                             &
     
    434471                   ENDIF
    435472                ENDIF
     473                IF ( microphysics_morrison ) THEN
     474                   IF ( qc(k,j,i) <= eps_sb )  THEN
     475                      qc(k,j,i) = 0.0_wp
     476                      nc(k,j,i) = 0.0_wp
     477                   ELSE
     478                      IF ( nc(k,j,i) * xcmin > qc(k,j,i) * hyrho(k) )  THEN
     479                         nc(k,j,i) = qc(k,j,i) * hyrho(k) / xcmin *            &
     480                                          MERGE( 1.0_wp, 0.0_wp,               &           
     481                                              BTEST( wall_flags_0(k,j,i), 0 ) )
     482                      ENDIF
     483                   ENDIF
     484                ENDIF
    436485             ENDDO
    437486          ENDDO
     
    442491    END SUBROUTINE adjust_cloud
    443492
     493!------------------------------------------------------------------------------!
     494! Description:
     495! ------------
     496!> Calculate number of activated condensation nucleii after simple activation
     497!> scheme of Twomey, 1959.
     498!------------------------------------------------------------------------------!
     499    SUBROUTINE activation
     500
     501       USE arrays_3d,                                                          &
     502           ONLY:  hyp, nc, nr, pt, q,  qc, qr
     503
     504       USE cloud_parameters,                                                   &
     505           ONLY:  hyrho, l_d_cp, l_d_r, l_v, rho_l, r_v, t_d_pt
     506
     507       USE constants,                                                          &
     508           ONLY:  pi
     509
     510       USE cpulog,                                                             &
     511           ONLY:  cpu_log, log_point_s
     512
     513       USE indices,                                                            &
     514           ONLY:  nxlg, nxrg, nysg, nyng, nzb, nzt
     515
     516       USE kinds
     517
     518       USE control_parameters,                                                 &
     519          ONLY: simulated_time
     520
     521       USE particle_attributes,                                                &
     522          ONLY:  molecular_weight_of_solute, molecular_weight_of_water, rho_s, &
     523              s1, s2, s3, vanthoff
     524
     525       IMPLICIT NONE
     526
     527       INTEGER(iwp) ::  i                 !<
     528       INTEGER(iwp) ::  j                 !<
     529       INTEGER(iwp) ::  k                 !<
     530
     531       REAL(wp)     ::  activ             !<
     532       REAL(wp)     ::  afactor           !<
     533       REAL(wp)     ::  alpha             !<
     534       REAL(wp)     ::  beta_act          !<
     535       REAL(wp)     ::  bfactor           !<
     536       REAL(wp)     ::  e_s               !<
     537       REAL(wp)     ::  k_act             !<
     538       REAL(wp)     ::  n_act             !<
     539       REAL(wp)     ::  n_ccn             !<
     540       REAL(wp)     ::  q_s               !<
     541       REAL(wp)     ::  rd0               !<
     542       REAL(wp)     ::  s_0               !<
     543       REAL(wp)     ::  sat               !<
     544       REAL(wp)     ::  sat_max           !<
     545       REAL(wp)     ::  sigma             !<
     546       REAL(wp)     ::  t_int             !<
     547       REAL(wp)     ::  t_l               !<
     548
     549       CALL cpu_log( log_point_s(65), 'activation', 'start' )
     550
     551       DO  i = nxlg, nxrg
     552          DO  j = nysg, nyng
     553             DO  k = nzb+1, nzt
     554
     555!
     556!--             Actual liquid water temperature:
     557                t_l = t_d_pt(k) * pt(k,j,i)
     558
     559!
     560!--             Calculate actual temperature
     561                t_int = pt(k,j,i) * ( hyp(k) / 100000.0_wp )**0.286_wp
     562!
     563!--             Saturation vapor pressure at t_l:
     564                e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) /    &
     565                                       ( t_l - 35.86_wp )                   &
     566                                     )
     567!
     568!--             Computation of saturation humidity:
     569                q_s   = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s )
     570                alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l )
     571                q_s   = q_s * ( 1.0_wp + alpha * q(k,j,i) ) /               &
     572                        ( 1.0_wp + alpha * q_s )
     573
     574!--             Supersaturation:
     575                sat   = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp
     576
     577!
     578!--             Prescribe parameters for activation
     579!--             (see: Bott + Trautmann, 2002, Atm. Res., 64)
     580                k_act  = 0.7_wp
     581
     582                IF ( sat >= 0.0 .AND. .NOT. curvature_solution_effects_bulk ) THEN
     583!
     584!--                Compute the number of activated Aerosols
     585!--                (see: Twomey, 1959, Pure and applied Geophysics, 43)
     586                   n_act     = na_init * sat**k_act
     587!
     588!--                Compute the number of cloud droplets
     589!--                (see: Morrison + Grabowski, 2007, JAS, 64)
     590!                  activ = MAX( n_act - nc(k,j,i), 0.0_wp) / dt_micro
     591
     592!
     593!--                Compute activation rate after Khairoutdinov and Kogan
     594!--                (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev., 128)   
     595                   sat_max = 1.0_wp / 100.0_wp                 
     596                   activ   = MAX( 0.0_wp, ( (na_init + nc(k,j,i) ) * MIN       &
     597                      ( 1.0_wp, ( sat / sat_max )**k_act) - nc(k,j,i) ) ) /    &
     598                       dt_micro
     599                ELSEIF ( sat >= 0.0 .AND. curvature_solution_effects_bulk ) THEN
     600!
     601!--                Curvature effect (afactor) with surface tension
     602!--                parameterization by Straka (2009)
     603                   sigma = 0.0761_wp - 0.000155_wp * ( t_int - 273.15_wp )
     604                   afactor = 2.0_wp * sigma / ( rho_l * r_v * t_int )
     605!
     606!--                Solute effect (bfactor)
     607                   bfactor = vanthoff * molecular_weight_of_water *            &
     608                       rho_s / ( molecular_weight_of_solute * rho_l )
     609
     610!
     611!--                Prescribe power index that describes the soluble fraction
     612!--                of an aerosol particle (beta) and mean geometric radius of
     613!--                dry aerosol spectrum
     614!--                (see: Morrison + Grabowski, 2007, JAS, 64)
     615                   beta_act = 0.5_wp
     616                   rd0      = 0.05E-6_wp
     617!
     618!--                Calculate mean geometric supersaturation (s_0) with
     619!--                parameterization by Khvorostyanov and Curry (2006)
     620                   s_0   = rd0 **(- ( 1.0_wp + beta_act ) ) *                  &
     621                       ( 4.0_wp * afactor**3 / ( 27.0_wp * bfactor ) )**0.5_wp
     622
     623!
     624!--                Calculate number of activated CCN as a function of
     625!--                supersaturation and taking Koehler theory into account
     626!--                (see: Khvorostyanov + Curry, 2006, J. Geo. Res., 111)       
     627                   n_ccn = ( na_init / 2.0_wp ) * ( 1.0_wp - ERF(              &
     628                      LOG( s_0 / sat ) / ( SQRT(2.0_wp) * LOG(s1) ) ) )     
     629                   activ = MAX( ( n_ccn - nc(k,j,i) ) / dt_micro, 0.0_wp )
     630                ENDIF
     631
     632                nc(k,j,i) = MIN( (nc(k,j,i) + activ * dt_micro), na_init)
     633
     634             ENDDO
     635          ENDDO
     636       ENDDO
     637
     638       CALL cpu_log( log_point_s(65), 'activation', 'stop' )
     639
     640    END SUBROUTINE activation
     641
     642
     643!------------------------------------------------------------------------------!
     644! Description:
     645! ------------
     646!> Calculate condensation rate for cloud water content (after Khairoutdinov and 
     647!> Kogan, 2000).
     648!------------------------------------------------------------------------------!
     649    SUBROUTINE condensation
     650
     651       USE arrays_3d,                                                          &
     652           ONLY:  hyp, nr, pt, q,  qc, qr, nc
     653
     654       USE cloud_parameters,                                                   &
     655           ONLY:  hyrho, l_d_cp, l_d_r, l_v, r_v, t_d_pt
     656
     657       USE constants,                                                          &
     658           ONLY:  pi
     659
     660       USE cpulog,                                                             &
     661           ONLY:  cpu_log, log_point_s
     662
     663       USE indices,                                                            &
     664           ONLY:  nxlg, nxrg, nysg, nyng, nzb, nzt
     665
     666       USE kinds
     667
     668       USE control_parameters,                                                 &
     669          ONLY: simulated_time
     670
     671       IMPLICIT NONE
     672
     673       INTEGER(iwp) ::  i                 !<
     674       INTEGER(iwp) ::  j                 !<
     675       INTEGER(iwp) ::  k                 !<
     676
     677       REAL(wp)     ::  alpha             !<
     678       REAL(wp)     ::  cond              !<
     679       REAL(wp)     ::  cond_max          !<
     680       REAL(wp)     ::  dc                !<
     681       REAL(wp)     ::  e_s               !<
     682       REAL(wp)     ::  evap              !<
     683       REAL(wp)     ::  evap_nc           !<
     684       REAL(wp)     ::  g_fac             !<
     685       REAL(wp)     ::  nc_0              !<
     686       REAL(wp)     ::  q_s               !<
     687       REAL(wp)     ::  sat               !<
     688       REAL(wp)     ::  t_l               !<
     689       REAL(wp)     ::  temp              !<
     690       REAL(wp)     ::  xc                !<
     691
     692       CALL cpu_log( log_point_s(66), 'condensation', 'start' )
     693
     694       DO  i = nxlg, nxrg
     695          DO  j = nysg, nyng
     696             DO  k = nzb+1, nzt
     697!
     698!--             Actual liquid water temperature:
     699                t_l = t_d_pt(k) * pt(k,j,i)
     700!
     701!--             Saturation vapor pressure at t_l:
     702                e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) /       &
     703                                       ( t_l - 35.86_wp )                      &
     704                                     )
     705!
     706!--             Computation of saturation humidity:
     707                q_s   = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s )
     708                alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l )
     709                q_s   = q_s * ( 1.0_wp + alpha * q(k,j,i) ) /                  &
     710                        ( 1.0_wp + alpha * q_s )
     711
     712!--             Supersaturation:
     713                sat   = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp
     714
     715!
     716!--             Actual temperature:
     717                temp = t_l + l_d_cp * ( qc(k,j,i) + qr(k,j,i) )
     718
     719                g_fac  = 1.0_wp / ( ( l_v / ( r_v * temp ) - 1.0_wp ) *        &
     720                                    l_v / ( thermal_conductivity_l * temp )    &
     721                                    + r_v * temp / ( diff_coeff_l * e_s )      &
     722                                    )
     723!
     724!--             Mean weight of cloud drops
     725                IF ( nc(k,j,i) <= 0.0_wp) CYCLE
     726                xc = MAX( (hyrho(k) * qc(k,j,i) / nc(k,j,i)), xcmin)               
     727!
     728!--             Weight averaged diameter of cloud drops:
     729                dc   = ( xc * dpirho_l )**( 1.0_wp / 3.0_wp )
     730!
     731!--             Integral diameter of cloud drops
     732                nc_0 = nc(k,j,i) * dc               
     733!
     734!--             Condensation needs only to be calculated in supersaturated regions
     735                IF ( sat > 0.0_wp )  THEN
     736!
     737!--                Condensation rate of cloud water content
     738!--                after KK scheme.
     739!--                (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)
     740                   cond      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
     741                   cond_max  = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i)
     742                   cond      = MIN( cond, cond_max / dt_micro )
     743               
     744                   qc(k,j,i) = qc(k,j,i) + cond * dt_micro
     745                ELSEIF ( sat < 0.0_wp ) THEN
     746                   evap      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
     747                   evap      = MAX( evap, -qc(k,j,i) / dt_micro )
     748
     749                   qc(k,j,i) = qc(k,j,i) + evap * dt_micro
     750                ENDIF
     751                IF ( nc(k,j,i) * xcmin > qc(k,j,i) * hyrho(k) )  THEN
     752                   nc(k,j,i) = qc(k,j,i) * hyrho(k) / xcmin
     753                ENDIF
     754             ENDDO
     755          ENDDO
     756       ENDDO
     757
     758       CALL cpu_log( log_point_s(66), 'condensation', 'stop' )
     759
     760    END SUBROUTINE condensation
     761
    444762
    445763!------------------------------------------------------------------------------!
     
    451769
    452770       USE arrays_3d,                                                          &
    453            ONLY:  diss, dzu, nr, qc, qr
     771           ONLY:  diss, dzu, nc, nr, qc, qr
    454772
    455773       USE cloud_parameters,                                                   &
     
    457775
    458776       USE control_parameters,                                                 &
    459            ONLY:  rho_surface
     777           ONLY:  microphysics_morrison, rho_surface
    460778
    461779       USE cpulog,                                                             &
     
    482800       REAL(wp)     ::  k_au              !<
    483801       REAL(wp)     ::  l_mix             !<
     802       REAL(wp)     ::  nc_auto           !<
    484803       REAL(wp)     ::  nu_c              !<
    485804       REAL(wp)     ::  phi_au            !<
     
    500819                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
    501820
     821                nc_auto = MERGE( nc(k,j,i), nc_const, microphysics_morrison )
     822
    502823                IF ( qc(k,j,i) > eps_sb )  THEN
    503824
     
    518839!
    519840!--                Mean weight of cloud droplets:
    520                    xc = hyrho(k) * qc(k,j,i) / nc_const
     841                   xc = hyrho(k) * qc(k,j,i) / nc_auto
    521842!
    522843!--                Parameterized turbulence effects on autoconversion (Seifert,
     
    569890                   nr(k,j,i) = nr(k,j,i) + autocon / x0 * hyrho(k) * dt_micro  &
    570891                                                              * flag
     892                   IF ( microphysics_morrison ) THEN
     893                      nc(k,j,i) = nc(k,j,i) - MIN( nc(k,j,i), 2.0_wp *         &
     894                                    autocon / x0 * hyrho(k) * dt_micro * flag )
     895                   ENDIF
    571896
    572897                ENDIF
     
    654979
    655980       USE arrays_3d,                                                          &
    656            ONLY:  diss, qc, qr
     981           ONLY:  diss, qc, qr, nc
    657982
    658983       USE cloud_parameters,                                                   &
     
    660985
    661986       USE control_parameters,                                                 &
    662            ONLY:  rho_surface
     987           ONLY:  microphysics_morrison, rho_surface
    663988
    664989       USE cpulog,                                                             &
     
    6791004       REAL(wp)     ::  flag              !< flag to mask topography grid points
    6801005       REAL(wp)     ::  k_cr              !<
     1006       REAL(wp)     ::  nc_accr           !<
    6811007       REAL(wp)     ::  phi_ac            !<
    6821008       REAL(wp)     ::  tau_cloud         !<
     1009       REAL(wp)     ::  xc                !<
     1010
    6831011
    6841012       CALL cpu_log( log_point_s(56), 'accretion', 'start' )
     
    6911019                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
    6921020
    693                 IF ( ( qc(k,j,i) > eps_sb )  .AND.  ( qr(k,j,i) > eps_sb ) )  THEN
     1021                nc_accr = MERGE( nc(k,j,i), nc_const, microphysics_morrison )
     1022
     1023                IF ( ( qc(k,j,i) > eps_sb )  .AND.  ( qr(k,j,i) > eps_sb )    &
     1024                                             .AND.  ( nc_accr > eps_mr ) ) THEN
    6941025!
    6951026!--                Intern time scale of coagulation (Seifert and Beheng, 2006):
     
    6991030!--                Beheng, 2001):
    7001031                   phi_ac = ( tau_cloud / ( tau_cloud + 5.0E-5_wp ) )**4
     1032
     1033!
     1034!--                Mean weight of cloud drops
     1035                   xc = MAX( (hyrho(k) * qc(k,j,i) / nc_accr), xcmin)     
    7011036!
    7021037!--                Parameterized turbulence effects on autoconversion (Seifert,
     
    7191054                   qr(k,j,i) = qr(k,j,i) + accr * dt_micro * flag
    7201055                   qc(k,j,i) = qc(k,j,i) - accr * dt_micro * flag
     1056                   IF ( microphysics_morrison )  THEN
     1057                      nc(k,j,i) = nc(k,j,i) - MIN( nc(k,j,i),                  &
     1058                                         accr / xc * hyrho(k) * dt_micro * flag)
     1059                   ENDIF
    7211060
    7221061                ENDIF
     
    9761315
    9771316       USE arrays_3d,                                                          &
    978            ONLY:  ddzu, dzu, pt, prr, q, qc
     1317           ONLY:  ddzu, dzu, nc, pt, prr, q, qc
    9791318
    9801319       USE cloud_parameters,                                                   &
     
    9821321
    9831322       USE control_parameters,                                                 &
    984            ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
     1323           ONLY:  call_microphysics_at_all_substeps,                           &
     1324                  intermediate_timestep_count, microphysics_morrison
    9851325
    9861326       USE cpulog,                                                             &
     
    10021342       INTEGER(iwp) ::  k             !<
    10031343
    1004        REAL(wp)                       ::  flag   !< flag to mask topography grid points
     1344       REAL(wp) ::  flag              !< flag to mask topography grid points
     1345       REAL(wp) ::  nc_sedi           !<
     1346
    10051347       REAL(wp), DIMENSION(nzb:nzt+1) ::  sed_qc !<
     1348       REAL(wp), DIMENSION(nzb:nzt+1) ::  sed_nc !<
     1349
    10061350
    10071351       CALL cpu_log( log_point_s(59), 'sed_cloud', 'start' )
     
    10151359!--             Predetermine flag to mask topography
    10161360                flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
     1361                nc_sedi = MERGE ( nc(k,j,i), nc_const, microphysics_morrison )
     1362
     1363!
     1364!--             Sedimentation fluxes for number concentration are only calculated
     1365!--             for cloud_scheme = 'morrison'
     1366                IF ( microphysics_morrison ) THEN
     1367                   IF ( qc(k,j,i) > eps_sb  .AND.  nc(k,j,i) > eps_mr )  THEN
     1368                      sed_nc(k) = sed_qc_const *                               &
     1369                              ( qc(k,j,i) * hyrho(k) )**( 2.0_wp / 3.0_wp ) *  &
     1370                              ( nc(k,j,i) )**( 1.0_wp / 3.0_wp )
     1371                   ELSE
     1372                      sed_nc(k) = 0.0_wp
     1373                   ENDIF
     1374
     1375                   sed_nc(k) = MIN( sed_nc(k), hyrho(k) * dzu(k+1) *           &
     1376                                    nc(k,j,i) / dt_micro + sed_nc(k+1)         &
     1377                                  ) * flag
     1378
     1379                   nc(k,j,i) = nc(k,j,i) + ( sed_nc(k+1) - sed_nc(k) ) *       &
     1380                                         ddzu(k+1) / hyrho(k) * dt_micro * flag
     1381                ENDIF
    10171382
    10181383                IF ( qc(k,j,i) > eps_sb )  THEN
    1019                    sed_qc(k) = sed_qc_const * nc_const**( -2.0_wp / 3.0_wp ) * &
     1384                   sed_qc(k) = sed_qc_const * nc_sedi**( -2.0_wp / 3.0_wp ) * &
    10201385                               ( qc(k,j,i) * hyrho(k) )**( 5.0_wp / 3.0_wp ) * &
    10211386                                                                           flag
     
    13891754
    13901755       USE arrays_3d,                                                          &
    1391            ONLY:  hyp, nr, pt, pt_init, prr, q, qc, qr, zu
     1756           ONLY:  hyp, nc, nr, pt, pt_init, prr, q, qc, qr, zu
    13921757
    13931758       USE cloud_parameters,                                                   &
     
    13971762           ONLY:  call_microphysics_at_all_substeps, dt_3d, g,                 &
    13981763                  intermediate_timestep_count, large_scale_forcing,            &
    1399                   lsf_surf, microphysics_seifert, microphysics_kessler,        &
    1400                   pt_surface, rho_surface, surface_pressure
     1764                  lsf_surf, microphysics_morrison, microphysics_seifert,       &
     1765                  microphysics_kessler, pt_surface, rho_surface,               &
     1766                  surface_pressure
    14011767
    14021768       USE indices,                                                            &
     
    14481814       pt_1d(:) = pt(:,j,i)
    14491815       qc_1d(:) = qc(:,j,i)
    1450        nc_1d(:) = nc_const
    14511816       IF ( microphysics_seifert )  THEN
    14521817          qr_1d(:) = qr(:,j,i)
    14531818          nr_1d(:) = nr(:,j,i)
    14541819       ENDIF
     1820       IF ( microphysics_morrison )  THEN
     1821          nc_1d(:) = nc(:,j,i)
     1822       ENDIF
     1823
    14551824
    14561825!
     
    14681837
    14691838          CALL adjust_cloud( i,j )
     1839          IF ( microphysics_morrison ) CALL activation( i,j )
     1840          IF ( microphysics_morrison ) CALL condensation( i,j )
    14701841          CALL autoconversion( i,j )
    14711842          CALL accretion( i,j )
     
    14831854       q(:,j,i)  = q_1d(:)
    14841855       pt(:,j,i) = pt_1d(:)
     1856       IF ( microphysics_morrison ) THEN
     1857          qc(:,j,i) = qc_1d(:)
     1858          nc(:,j,i) = nc_1d(:)
     1859       ENDIF
    14851860       IF ( microphysics_seifert )  THEN
    14861861          qr(:,j,i) = qr_1d(:)
     
    15031878       USE cloud_parameters,                                                   &
    15041879           ONLY:  hyrho
     1880
     1881       USE control_parameters,                                                 &
     1882           ONLY: microphysics_morrison
    15051883
    15061884       USE indices,                                                            &
     
    15381916          ENDIF
    15391917
     1918          IF ( microphysics_morrison ) THEN
     1919             IF ( qc_1d(k) <= eps_sb )  THEN
     1920                qc_1d(k) = 0.0_wp
     1921                nc_1d(k) = 0.0_wp
     1922             ELSE
     1923                IF ( nc_1d(k) * xcmin > qc_1d(k) * hyrho(k) )  THEN
     1924                   nc_1d(k) = qc_1d(k) * hyrho(k) / xamin * flag
     1925                ENDIF
     1926             ENDIF
     1927          ENDIF
     1928
    15401929       ENDDO
    15411930
    15421931    END SUBROUTINE adjust_cloud_ij
     1932
     1933!------------------------------------------------------------------------------!
     1934! Description:
     1935! ------------
     1936!> Calculate number of activated condensation nucleii after simple activation
     1937!> scheme of Twomey, 1959.
     1938!------------------------------------------------------------------------------!
     1939    SUBROUTINE activation_ij( i, j )
     1940
     1941       USE arrays_3d,                                                          &
     1942           ONLY:  hyp, nr, pt, q,  qc, qr, nc
     1943
     1944       USE cloud_parameters,                                                   &
     1945           ONLY:  hyrho, l_d_cp, l_d_r, l_v, rho_l, r_v, t_d_pt
     1946
     1947       USE constants,                                                          &
     1948           ONLY:  pi
     1949
     1950       USE cpulog,                                                             &
     1951           ONLY:  cpu_log, log_point_s
     1952
     1953       USE indices,                                                            &
     1954           ONLY:  nxlg, nxrg, nysg, nyng, nzb, nzt
     1955
     1956       USE kinds
     1957
     1958       USE control_parameters,                                                 &
     1959          ONLY: simulated_time
     1960
     1961       USE particle_attributes,                                                &
     1962          ONLY:  molecular_weight_of_solute, molecular_weight_of_water, rho_s, &
     1963              s1, s2, s3, vanthoff
     1964
     1965       IMPLICIT NONE
     1966
     1967       INTEGER(iwp) ::  i                 !<
     1968       INTEGER(iwp) ::  j                 !<
     1969       INTEGER(iwp) ::  k                 !<
     1970
     1971       REAL(wp)     ::  activ             !<
     1972       REAL(wp)     ::  afactor           !<
     1973       REAL(wp)     ::  alpha             !<
     1974       REAL(wp)     ::  beta_act          !<
     1975       REAL(wp)     ::  bfactor           !<
     1976       REAL(wp)     ::  e_s               !<
     1977       REAL(wp)     ::  k_act             !<
     1978       REAL(wp)     ::  n_act             !<
     1979       REAL(wp)     ::  n_ccn             !<
     1980       REAL(wp)     ::  q_s               !<
     1981       REAL(wp)     ::  rd0               !<
     1982       REAL(wp)     ::  s_0               !<
     1983       REAL(wp)     ::  sat               !<
     1984       REAL(wp)     ::  sat_max           !<
     1985       REAL(wp)     ::  sigma             !<
     1986       REAL(wp)     ::  t_int             !<
     1987       REAL(wp)     ::  t_l               !<
     1988
     1989       DO  k = nzb+1, nzt
     1990!
     1991!--       Actual liquid water temperature:
     1992          t_l = t_d_pt(k) * pt_1d(k)
     1993
     1994!
     1995!--       Calculate actual temperature
     1996          t_int = pt_1d(k) * ( hyp(k) / 100000.0_wp )**0.286_wp
     1997!
     1998!--             Saturation vapor pressure at t_l:
     1999          e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) /             &
     2000                                 ( t_l - 35.86_wp )                            &
     2001                                 )
     2002!
     2003!--       Computation of saturation humidity:
     2004          q_s   = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s )
     2005          alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l )
     2006          q_s   = q_s * ( 1.0_wp + alpha * q_1d(k) ) /                         &
     2007                        ( 1.0_wp + alpha * q_s )
     2008
     2009!--       Supersaturation:
     2010          sat   = ( q_1d(k) - qr_1d(k) - qc_1d(k) ) / q_s - 1.0_wp
     2011
     2012!
     2013!--       Prescribe parameters for activation
     2014!--       (see: Bott + Trautmann, 2002, Atm. Res., 64)
     2015          k_act  = 0.7_wp
     2016
     2017          IF ( sat >= 0.0 .AND. .NOT. curvature_solution_effects_bulk )  THEN
     2018!
     2019!--          Compute the number of activated Aerosols
     2020!--          (see: Twomey, 1959, Pure and applied Geophysics, 43)
     2021             n_act     = na_init * sat**k_act
     2022!
     2023!--          Compute the number of cloud droplets
     2024!--          (see: Morrison + Grabowski, 2007, JAS, 64)
     2025!            activ = MAX( n_act - nc_d1(k), 0.0_wp) / dt_micro
     2026
     2027!
     2028!--          Compute activation rate after Khairoutdinov and Kogan
     2029!--          (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev., 128)   
     2030             sat_max = 0.8_wp / 100.0_wp                 
     2031             activ   = MAX( 0.0_wp, ( (na_init + nc_1d(k) ) * MIN              &
     2032                 ( 1.0_wp, ( sat / sat_max )**k_act) - nc_1d(k) ) ) /          &
     2033                  dt_micro
     2034
     2035             nc_1d(k) = MIN( (nc_1d(k) + activ * dt_micro), na_init)
     2036          ELSEIF ( sat >= 0.0 .AND. curvature_solution_effects_bulk )  THEN
     2037!
     2038!--          Curvature effect (afactor) with surface tension
     2039!--          parameterization by Straka (2009)
     2040             sigma = 0.0761_wp - 0.000155_wp * ( t_int - 273.15_wp )
     2041             afactor = 2.0_wp * sigma / ( rho_l * r_v * t_int )
     2042!
     2043!--          Solute effect (bfactor)
     2044             bfactor = vanthoff * molecular_weight_of_water *                  &
     2045                  rho_s / ( molecular_weight_of_solute * rho_l )
     2046
     2047!
     2048!--          Prescribe power index that describes the soluble fraction
     2049!--          of an aerosol particle (beta) and mean geometric radius of
     2050!--          dry aerosol spectrum
     2051!--          (see: Morrison + Grabowski, 2007, JAS, 64)
     2052             beta_act = 0.5_wp
     2053             rd0      = 0.05E-6_wp
     2054!
     2055!--          Calculate mean geometric supersaturation (s_0) with
     2056!--          parameterization by Khvorostyanov and Curry (2006)
     2057             s_0   = rd0 **(- ( 1.0_wp + beta_act ) ) *                        &
     2058               ( 4.0_wp * afactor**3 / ( 27.0_wp * bfactor ) )**0.5_wp
     2059
     2060!
     2061!--          Calculate number of activated CCN as a function of
     2062!--          supersaturation and taking Koehler theory into account
     2063!--          (see: Khvorostyanov + Curry, 2006, J. Geo. Res., 111)
     2064             n_ccn = ( na_init / 2.0_wp ) * ( 1.0_wp - ERF(                     &
     2065                LOG( s_0 / sat ) / ( SQRT(2.0_wp) * LOG(s1) ) ) )     
     2066             activ = MAX( ( n_ccn ) / dt_micro, 0.0_wp )
     2067                                     
     2068             nc_1d(k) = MIN( (nc_1d(k) + activ * dt_micro), na_init)                   
     2069          ENDIF
     2070
     2071       ENDDO
     2072
     2073    END SUBROUTINE activation_ij
     2074
     2075!------------------------------------------------------------------------------!
     2076! Description:
     2077! ------------
     2078!> Calculate condensation rate for cloud water content (after Khairoutdinov and 
     2079!> Kogan, 2000).
     2080!------------------------------------------------------------------------------!
     2081    SUBROUTINE condensation_ij( i, j )
     2082
     2083       USE arrays_3d,                                                          &
     2084           ONLY:  hyp, nr, pt, q,  qc, qr, nc
     2085
     2086       USE cloud_parameters,                                                   &
     2087           ONLY:  hyrho, l_d_cp, l_d_r, l_v, r_v, t_d_pt
     2088
     2089       USE constants,                                                          &
     2090           ONLY:  pi
     2091
     2092       USE cpulog,                                                             &
     2093           ONLY:  cpu_log, log_point_s
     2094
     2095       USE indices,                                                            &
     2096           ONLY:  nxlg, nxrg, nysg, nyng, nzb, nzt
     2097
     2098       USE kinds
     2099
     2100       USE control_parameters,                                                 &
     2101          ONLY: simulated_time
     2102
     2103       IMPLICIT NONE
     2104
     2105       INTEGER(iwp) ::  i                 !<
     2106       INTEGER(iwp) ::  j                 !<
     2107       INTEGER(iwp) ::  k                 !<
     2108
     2109       REAL(wp)     ::  alpha             !<
     2110       REAL(wp)     ::  cond              !<
     2111       REAL(wp)     ::  cond_max          !<
     2112       REAL(wp)     ::  dc                !<
     2113       REAL(wp)     ::  e_s               !<
     2114       REAL(wp)     ::  evap              !<
     2115       REAL(wp)     ::  evap_nc           !<
     2116       REAL(wp)     ::  g_fac             !<
     2117       REAL(wp)     ::  nc_0              !<
     2118       REAL(wp)     ::  q_s               !<
     2119       REAL(wp)     ::  sat               !<
     2120       REAL(wp)     ::  t_l               !<
     2121       REAL(wp)     ::  temp              !<
     2122       REAL(wp)     ::  xc                !<
     2123
     2124
     2125       DO  k = nzb+1, nzt
     2126!
     2127!--       Actual liquid water temperature:
     2128          t_l = t_d_pt(k) * pt_1d(k)
     2129!
     2130!--             Saturation vapor pressure at t_l:
     2131          e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) /    &
     2132                                 ( t_l - 35.86_wp )                   &
     2133                                 )
     2134!
     2135!--       Computation of saturation humidity:
     2136          q_s   = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s )
     2137          alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l )
     2138          q_s   = q_s * ( 1.0_wp + alpha * q_1d(k) ) /               &
     2139                        ( 1.0_wp + alpha * q_s )
     2140
     2141!--       Supersaturation:
     2142          sat   = ( q_1d(k) - qr_1d(k) - qc_1d(k) ) / q_s - 1.0_wp
     2143
     2144
     2145!
     2146!--       Actual temperature:
     2147          temp = t_l + l_d_cp * ( qc_1d(k) + qr_1d(k) )
     2148
     2149          g_fac  = 1.0_wp / ( ( l_v / ( r_v * temp ) - 1.0_wp ) *        &
     2150                              l_v / ( thermal_conductivity_l * temp )    &
     2151                              + r_v * temp / ( diff_coeff_l * e_s )      &
     2152                            )
     2153!
     2154!--       Mean weight of cloud drops
     2155          IF ( nc_1d(k) <= 0.0_wp) CYCLE
     2156          xc = MAX( (hyrho(k) * qc_1d(k) / nc_1d(k)), xcmin)               
     2157!
     2158!--       Weight averaged diameter of cloud drops:
     2159          dc   = ( xc * dpirho_l )**( 1.0_wp / 3.0_wp )
     2160!
     2161!--       Integral diameter of cloud drops
     2162          nc_0 = nc_1d(k) * dc               
     2163!
     2164!--       Condensation needs only to be calculated in supersaturated regions
     2165          IF ( sat > 0.0_wp )  THEN
     2166!
     2167!--          Condensation rate of cloud water content
     2168!--          after KK scheme.
     2169!--          (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)
     2170             cond      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
     2171             cond_max  = q_1d(k) - q_s - qc_1d(k) - qr_1d(k)
     2172             cond      = MIN( cond, cond_max / dt_micro )
     2173               
     2174             qc_1d(k) = qc_1d(k) + cond * dt_micro
     2175          ELSEIF ( sat < 0.0_wp ) THEN
     2176             evap      = 2.0_wp * pi * nc_0 * g_fac * sat / hyrho(k)
     2177             evap      = MAX( evap, -qc_1d(k) / dt_micro )
     2178
     2179             qc_1d(k) = qc_1d(k) + evap * dt_micro
     2180          ENDIF
     2181       ENDDO
     2182
     2183    END SUBROUTINE condensation_ij
    15432184
    15442185
     
    15572198
    15582199       USE control_parameters,                                                 &
    1559            ONLY:  rho_surface
     2200           ONLY:  microphysics_morrison, rho_surface
    15602201
    15612202       USE grid_variables,                                                     &
     
    15792220       REAL(wp)     ::  k_au              !<
    15802221       REAL(wp)     ::  l_mix             !<
     2222       REAL(wp)     ::  nc_auto           !<
    15812223       REAL(wp)     ::  nu_c              !<
    15822224       REAL(wp)     ::  phi_au            !<
     
    15922234!--       Predetermine flag to mask topography
    15932235          flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
     2236          nc_auto = MERGE ( nc_1d(k), nc_const, microphysics_morrison )
    15942237
    15952238          IF ( qc_1d(k) > eps_sb )  THEN
     
    16102253!
    16112254!--          Mean weight of cloud droplets:
    1612              xc = hyrho(k) * qc_1d(k) / nc_1d(k)
     2255             xc = hyrho(k) * qc_1d(k) / nc_auto
    16132256!
    16142257!--          Parameterized turbulence effects on autoconversion (Seifert,
     
    16582301             qc_1d(k) = qc_1d(k) - autocon * dt_micro                 * flag
    16592302             nr_1d(k) = nr_1d(k) + autocon / x0 * hyrho(k) * dt_micro * flag
     2303             IF ( microphysics_morrison ) THEN
     2304                nc_1d(k) = nc_1d(k) - MIN( nc_1d(k), 2.0_wp *                &
     2305                                    autocon / x0 * hyrho(k) * dt_micro * flag )
     2306             ENDIF
    16602307
    16612308          ENDIF
     
    17382385
    17392386       USE control_parameters,                                                 &
    1740            ONLY:  rho_surface
     2387           ONLY:  microphysics_morrison, rho_surface
    17412388
    17422389       USE indices,                                                            &
     
    17542401       REAL(wp)     ::  flag              !< flag to indicate first grid level above surface
    17552402       REAL(wp)     ::  k_cr              !<
     2403       REAL(wp)     ::  nc_accr           !<
    17562404       REAL(wp)     ::  phi_ac            !<
    17572405       REAL(wp)     ::  tau_cloud         !<
     2406       REAL(wp)     ::  xc                !<
     2407
    17582408
    17592409       DO  k = nzb+1, nzt
     
    17612411!--       Predetermine flag to mask topography
    17622412          flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
    1763 
    1764           IF ( ( qc_1d(k) > eps_sb )  .AND.  ( qr_1d(k) > eps_sb ) )  THEN
     2413          nc_accr = MERGE ( nc_1d(k), nc_const, microphysics_morrison )
     2414
     2415          IF ( ( qc_1d(k) > eps_sb )  .AND.  ( qr_1d(k) > eps_sb )  .AND.  &
     2416               ( nc_accr > eps_mr ) )  THEN
    17652417!
    17662418!--          Intern time scale of coagulation (Seifert and Beheng, 2006):
     
    17702422!--          (Seifert and Beheng, 2001):
    17712423             phi_ac = ( tau_cloud / ( tau_cloud + 5.0E-5_wp ) )**4
     2424
     2425!
     2426!--          Mean weight of cloud drops
     2427             xc = MAX( (hyrho(k) * qc_1d(k) / nc_accr), xcmin)     
    17722428!
    17732429!--          Parameterized turbulence effects on autoconversion (Seifert,
     
    17842440!
    17852441!--          Accretion rate (Seifert and Beheng, 2006):
    1786              accr = k_cr * qc_1d(k) * qr_1d(k) * phi_ac * SQRT( rho_surface * hyrho(k) )
     2442             accr = k_cr * qc_1d(k) * qr_1d(k) * phi_ac *                      &
     2443                    SQRT( rho_surface * hyrho(k) )
    17872444             accr = MIN( accr, qc_1d(k) / dt_micro )
    17882445
    17892446             qr_1d(k) = qr_1d(k) + accr * dt_micro * flag
    17902447             qc_1d(k) = qc_1d(k) - accr * dt_micro * flag
     2448             IF ( microphysics_morrison )  THEN
     2449                nc_1d(k) = nc_1d(k) - MIN( nc_1d(k), accr / xc *               &
     2450                                             hyrho(k) * dt_micro * flag        &
     2451                                         )
     2452             ENDIF
     2453
    17912454
    17922455          ENDIF
     
    20182681
    20192682       USE control_parameters,                                                 &
    2020            ONLY:  call_microphysics_at_all_substeps, intermediate_timestep_count
     2683           ONLY:  call_microphysics_at_all_substeps,                           &
     2684                  intermediate_timestep_count, microphysics_morrison
    20212685
    20222686       USE indices,                                                            &
     
    20342698       INTEGER(iwp) ::  k             !<
    20352699
    2036        REAL(wp)                       ::  flag    !< flag to indicate first grid level above surface
     2700       REAL(wp)     ::  flag    !< flag to indicate first grid level above surface
     2701       REAL(wp)     ::  nc_sedi !<
     2702
     2703       REAL(wp), DIMENSION(nzb:nzt+1) ::  sed_nc  !<
    20372704       REAL(wp), DIMENSION(nzb:nzt+1) ::  sed_qc  !<
    20382705
     
    20432710!--       Predetermine flag to mask topography
    20442711          flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
     2712          nc_sedi = MERGE( nc_1d(k), nc_const, microphysics_morrison )
     2713!
     2714!--       Sedimentation fluxes for number concentration are only calculated
     2715!--       for cloud_scheme = 'morrison'
     2716          IF ( microphysics_morrison ) THEN
     2717             IF ( qc_1d(k) > eps_sb  .AND.  nc_1d(k) > eps_mr )  THEN
     2718                sed_nc(k) = sed_qc_const *                                     &
     2719                            ( qc_1d(k) * hyrho(k) )**( 2.0_wp / 3.0_wp ) *     &
     2720                            ( nc_1d(k) )**( 1.0_wp / 3.0_wp )
     2721             ELSE
     2722                sed_nc(k) = 0.0_wp
     2723             ENDIF
     2724
     2725             sed_nc(k) = MIN( sed_nc(k), hyrho(k) * dzu(k+1) *                 &
     2726                              nc_1d(k) / dt_micro + sed_nc(k+1)                &
     2727                            ) * flag
     2728
     2729             nc_1d(k) = nc_1d(k) + ( sed_nc(k+1) - sed_nc(k) ) *               &
     2730                                         ddzu(k+1) / hyrho(k) * dt_micro * flag
     2731          ENDIF
    20452732
    20462733          IF ( qc_1d(k) > eps_sb )  THEN
    2047              sed_qc(k) = sed_qc_const * nc_1d(k)**( -2.0_wp / 3.0_wp ) *       &
     2734             sed_qc(k) = sed_qc_const * nc_sedi**( -2.0_wp / 3.0_wp ) *        &
    20482735                         ( qc_1d(k) * hyrho(k) )**( 5.0_wp / 3.0_wp )  * flag
    20492736          ELSE
Note: See TracChangeset for help on using the changeset viewer.