- Timestamp:
- May 14, 2020 1:41:35 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/bulk_cloud_model_mod.f90
r4521 r4532 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Calculate mean droplet radius assuming gamma distibution for condensation 28 ! 29 ! 4521 2020-05-06 11:39:49Z schwenkel 27 30 ! Rename variable 28 31 ! … … 4317 4320 CALL supersaturation_ice ( i, j, k ) 4318 4321 nucle = 0.0_wp 4319 !IF ( zu(k) >= 1500.0_wp ) CYCLE4320 4322 IF ( sat_ice >= 0.05_wp .OR. ql(k,j,i) >= 0.001E-3_wp ) THEN 4321 4323 ! 4322 4324 !-- Calculate ice nucleation 4323 4325 nucle = MAX( ( in_init - ni(k,j,i) ) / dt_micro, 0.0_wp ) 4324 !qi(k,j,i) = qi(k,j,i) + nucle * dt_micro * ximin4325 4326 ni(k,j,i) = MIN( (ni(k,j,i) + nucle * dt_micro * flag), in_init) 4326 4327 ENDIF … … 4386 4387 CALL supersaturation_ice ( i, j, k ) 4387 4388 nucle = 0.0_wp 4388 !IF ( zu(k) >= 1500.0_wp ) CYCLE4389 4389 IF ( sat_ice >= 0.05_wp .OR. ql(k,j,i) >= 0.001E-3_wp ) THEN 4390 4390 ! 4391 4391 !-- Calculate ice nucleation 4392 4392 nucle = MAX( ( in_init - ni(k,j,i) ) / dt_micro, 0.0_wp ) 4393 !qi(k,j,i) = qi(k,j,i) + nucle * dt_micro * ximin4394 4393 ni(k,j,i) = MIN( (ni(k,j,i) + nucle * dt_micro * flag), in_init) 4395 4394 ENDIF … … 4431 4430 INTEGER(iwp) :: k !< loop index 4432 4431 4432 REAL(wp) :: alpha_rc = 1.0_wp !< Tuning parameter see (Seifert and Stevens, 2010) 4433 4433 REAL(wp) :: cond !< condensation rate 4434 4434 REAL(wp) :: cond_max !< maximum condensation rate 4435 REAL(wp) :: dc !< weight avageraed diameter4436 4435 REAL(wp) :: evap !< evaporation rate 4437 4436 REAL(wp) :: flag !< flag to indicate first grid level above surface 4438 4437 REAL(wp) :: g_fac !< factor 1 / Fk + Fd 4439 REAL(wp) :: nc_0 !< integral diameter 4438 REAL(wp) :: nu = 1.0_wp !< Shape parameter of gernerlized gama distribution 4439 REAL(wp) :: rc !< mean cloud droplets radius assuming gamma distribution 4440 4440 REAL(wp) :: temp !< actual temperature 4441 REAL(wp) :: xc !< mean mass droplets4442 4441 4443 4442 CALL cpu_log( log_point_s(66), 'condensation', 'start' ) … … 4467 4466 ! 4468 4467 !-- Mean weight of cloud drops 4469 IF ( nc(k,j,i) <= 0.0_wp) CYCLE 4470 xc = MAX( (hyrho(k) * qc(k,j,i) / nc(k,j,i)), xcmin) 4471 ! 4472 !-- Weight averaged diameter of cloud drops: 4473 dc = ( xc * dpirho_l )**( 1.0_wp / 3.0_wp ) 4474 ! 4475 !-- Integral diameter of cloud drops 4476 nc_0 = nc(k,j,i) * dc 4468 IF ( nc(k,j,i) <= 0.0_wp ) CYCLE 4469 ! 4470 !-- Calculating mean radius of cloud droplets assuming gamma distribution with shape 4471 !-- parameter nu=1 (Seifert and Beheng, 2006). Tuning factor alpha_rc (intorduced 4472 !-- in Seifert and Stevens, 2010 ) is switched off. Minimum radius is set to 1µm 4473 !-- following (Seifert and Beheng, 2006, Kogan and Khairoutdinov, 2000, 4474 !-- Seifert and Stevens, 2010) 4475 rc = MAX( alpha_rc * gamma(nu + 1.33_wp) / gamma(nu + 1.0_wp) * & 4476 ( 3.0_wp * qc(k,j,i) / & 4477 ( 4.0_wp * pi * rho_l * ( nu + 2.0_wp ) * nc(k,j,i) ) & 4478 )**0.33_wp, 1.0E-6_wp ) 4477 4479 ! 4478 4480 !-- Condensation needs only to be calculated in supersaturated regions 4479 4481 IF ( sat > 0.0_wp ) THEN 4480 4482 ! 4481 !-- Condensation rate of cloud water content 4482 !-- after KK scheme.4483 !-- (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)4484 cond = 2.0_wp * pi * nc_0 * g_fac * sat/ hyrho(k)4483 !-- Condensation rate of cloud water content after KK scheme. 4484 !-- (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128, Morrison and Grabowski, 4485 !-- 2007, and Seifert and Stevens, 2010) 4486 cond = 4.0_wp * pi * nc(k,j,i) * g_fac * sat * rc / hyrho(k) 4485 4487 IF ( microphysics_seifert ) THEN 4486 4488 cond_max = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i) … … 4492 4494 qc(k,j,i) = qc(k,j,i) + cond * dt_micro * flag 4493 4495 ELSEIF ( sat < 0.0_wp ) THEN 4494 evap = 2.0_wp * pi * nc_0 * g_fac * sat/ hyrho(k)4496 evap = 4.0_wp * pi * nc(k,j,i) * g_fac * sat * rc / hyrho(k) 4495 4497 evap = MAX( evap, -qc(k,j,i) / dt_micro ) 4496 4498 … … 4522 4524 INTEGER(iwp) :: k !< loop index 4523 4525 4526 REAL(wp) :: alpha_rc = 1.0_wp !< Tuning parameter see (Seifert and Stevens, 2010) 4524 4527 REAL(wp) :: cond !< condensation rate 4525 4528 REAL(wp) :: cond_max !< maximum condensation rate 4526 REAL(wp) :: dc !< weight avageraed diameter4527 4529 REAL(wp) :: evap !< evaporation rate 4528 4530 REAL(wp) :: flag !< flag to indicate first grid level above surface 4529 4531 REAL(wp) :: g_fac !< factor 1 / Fk + Fd 4530 REAL(wp) :: nc_0 !< integral diameter 4532 REAL(wp) :: nu = 1.0_wp !< Shape parameter of gernerlized gama distribution 4533 REAL(wp) :: rc !< mean cloud droplets radius assuming gamma distribution 4531 4534 REAL(wp) :: temp !< actual temperature 4532 REAL(wp) :: xc !< mean mass droplets4533 4535 4534 4536 DO k = nzb+1, nzt … … 4555 4557 !-- Mean weight of cloud drops 4556 4558 IF ( nc(k,j,i) <= 0.0_wp) CYCLE 4557 xc = MAX( (hyrho(k) * qc(k,j,i) / nc(k,j,i)), xcmin) 4558 ! 4559 !-- Weight averaged diameter of cloud drops: 4560 dc = ( xc * dpirho_l )**( 1.0_wp / 3.0_wp ) 4561 ! 4562 !-- Integral diameter of cloud drops 4563 nc_0 = nc(k,j,i) * dc 4559 ! 4560 !-- Calculating mean radius of cloud droplets assuming gamma distribution with shape 4561 !-- parameter nu=1 (Seifert and Beheng, 2006). Tuning factor alpha_rc (intorduced 4562 !-- in Seifert and Stevens, 2010 ) is switched off. Minimum radius is set to 1µm following 4563 !-- (Seifert and Beheng, 2006, Kogan and Khairoutdinov, 2000, Seifert and Stevens, 2010) 4564 rc = MAX( alpha_rc * gamma(nu + 1.33_wp) / gamma(nu + 1.0_wp) * & 4565 ( 3.0_wp * qc(k,j,i) / ( 4.0_wp * pi * rho_l * ( nu + 2.0_wp ) * nc(k,j,i) ) & 4566 )**0.33_wp, 1.0E-6_wp ) 4564 4567 ! 4565 4568 !-- Condensation needs only to be calculated in supersaturated regions 4566 4569 IF ( sat > 0.0_wp ) THEN 4567 4570 ! 4568 !-- Condensation rate of cloud water content 4569 !-- after KK scheme.4570 !-- (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128)4571 cond = 2.0_wp * pi * nc_0 * g_fac * sat/ hyrho(k)4571 !-- Condensation rate of cloud water content after KK scheme. 4572 !-- (see: Khairoutdinov + Kogan, 2000, Mon. Wea. Rev.,128, Morrison and Grabowski, 2007 4573 !-- and Seifert and Stevens, 2010) 4574 cond = 4.0_wp * pi * nc(k,j,i) * g_fac * sat * rc / hyrho(k) 4572 4575 IF ( microphysics_seifert ) THEN 4573 4576 cond_max = q(k,j,i) - q_s - qc(k,j,i) - qr(k,j,i) … … 4579 4582 qc(k,j,i) = qc(k,j,i) + cond * dt_micro * flag 4580 4583 ELSEIF ( sat < 0.0_wp ) THEN 4581 evap = 2.0_wp * pi * nc_0 * g_fac * sat/ hyrho(k)4584 evap = 4.0_wp * pi * nc(k,j,i) * g_fac * sat * rc / hyrho(k) 4582 4585 evap = MAX( evap, -qc(k,j,i) / dt_micro ) 4583 4586
Note: See TracChangeset
for help on using the changeset viewer.