Changeset 2608 for palm/trunk/SOURCE/microphysics_mod.f90
- Timestamp:
- Nov 13, 2017 2:04:26 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/microphysics_mod.f90
r2522 r2608 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Calculation of supersaturation in external module (diagnostic_quantities_mod). 28 ! Change: correct calculation of saturation specific humidity to saturation 29 ! mixing ratio (the factor of 0.378 vanishes). 30 ! 31 ! 2522 2017-10-05 14:20:37Z schwenkel 27 32 ! Minor bugfix 28 33 ! … … 548 553 ONLY: cpu_log, log_point_s 549 554 555 USE diagnostic_quantities_mod, & 556 ONLY: e_s, magnus, q_s, sat, supersaturation, t_l 557 550 558 USE indices, & 551 559 ONLY: nxlg, nxrg, nysg, nyng, nzb, nzt … … 564 572 REAL(wp) :: activ !< 565 573 REAL(wp) :: afactor !< 566 REAL(wp) :: alpha !<567 574 REAL(wp) :: beta_act !< 568 575 REAL(wp) :: bfactor !< 569 REAL(wp) :: e_s !<570 576 REAL(wp) :: k_act !< 571 577 REAL(wp) :: n_act !< 572 578 REAL(wp) :: n_ccn !< 573 REAL(wp) :: q_s !<574 579 REAL(wp) :: s_0 !< 575 REAL(wp) :: sat !<576 580 REAL(wp) :: sat_max !< 577 581 REAL(wp) :: sigma !< 578 582 REAL(wp) :: sigma_act !< 579 REAL(wp) :: t_int !<580 REAL(wp) :: t_l !<581 583 582 584 CALL cpu_log( log_point_s(65), 'activation', 'start' ) … … 587 589 588 590 ! 589 !-- Actual liquid water temperature: 590 t_l = t_d_pt(k) * pt(k,j,i) 591 592 ! 593 !-- Calculate actual temperature 594 t_int = pt(k,j,i) * ( hyp(k) / 100000.0_wp )**0.286_wp 595 ! 596 !-- Saturation vapor pressure at t_l: 597 e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) / & 598 ( t_l - 35.86_wp ) & 599 ) 600 ! 601 !-- Computation of saturation humidity: 602 q_s = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s ) 603 alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l ) 604 q_s = q_s * ( 1.0_wp + alpha * q(k,j,i) ) / & 605 ( 1.0_wp + alpha * q_s ) 606 607 !-- Supersaturation: 608 sat = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp 609 591 !-- Call calculation of supersaturation located 592 !-- in diagnostic_quantities_mod 593 CALL supersaturation ( i, j, k ) 610 594 ! 611 595 !-- Prescribe parameters for activation … … 636 620 !-- Curvature effect (afactor) with surface tension 637 621 !-- parameterization by Straka (2009) 638 sigma = 0.0761_wp - 0.000155_wp * ( t_ int- 273.15_wp )639 afactor = 2.0_wp * sigma / ( rho_l * r_v * t_ int)622 sigma = 0.0761_wp - 0.000155_wp * ( t_l - 273.15_wp ) 623 afactor = 2.0_wp * sigma / ( rho_l * r_v * t_l ) 640 624 ! 641 625 !-- Solute effect (bfactor) … … 695 679 ONLY: cpu_log, log_point_s 696 680 681 USE diagnostic_quantities_mod, & 682 ONLY: e_s, magnus, q_s, sat, supersaturation, t_l 683 697 684 USE indices, & 698 685 ONLY: nxlg, nxrg, nysg, nyng, nzb, nzt … … 709 696 INTEGER(iwp) :: k !< 710 697 711 REAL(wp) :: alpha !<712 698 REAL(wp) :: cond !< 713 699 REAL(wp) :: cond_max !< 714 700 REAL(wp) :: dc !< 715 REAL(wp) :: e_s !<716 701 REAL(wp) :: evap !< 717 702 REAL(wp) :: evap_nc !< 718 703 REAL(wp) :: g_fac !< 719 704 REAL(wp) :: nc_0 !< 720 REAL(wp) :: q_s !<721 REAL(wp) :: sat !<722 REAL(wp) :: t_l !<723 705 REAL(wp) :: temp !< 724 706 REAL(wp) :: xc !< … … 730 712 DO k = nzb+1, nzt 731 713 ! 732 !-- Actual liquid water temperature: 733 t_l = t_d_pt(k) * pt(k,j,i) 734 ! 735 !-- Saturation vapor pressure at t_l: 736 e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) / & 737 ( t_l - 35.86_wp ) & 738 ) 739 ! 740 !-- Computation of saturation humidity: 741 q_s = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s ) 742 alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l ) 743 q_s = q_s * ( 1.0_wp + alpha * q(k,j,i) ) / & 744 ( 1.0_wp + alpha * q_s ) 745 746 !-- Supersaturation: 747 sat = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp 748 714 !-- Call calculation of supersaturation located 715 !-- in diagnostic_quantities_mod 716 CALL supersaturation ( i, j, k ) 749 717 ! 750 718 !-- Actual temperature: … … 1200 1168 ONLY: cpu_log, log_point_s 1201 1169 1170 USE diagnostic_quantities_mod, & 1171 ONLY: e_s, magnus, q_s, sat, supersaturation, t_l 1172 1202 1173 USE indices, & 1203 1174 ONLY: nxlg, nxrg, nyng, nysg, nzb, nzt, wall_flags_0 … … 1211 1182 INTEGER(iwp) :: k !< 1212 1183 1213 REAL(wp) :: alpha !<1214 1184 REAL(wp) :: dr !< 1215 REAL(wp) :: e_s !<1216 1185 REAL(wp) :: evap !< 1217 1186 REAL(wp) :: evap_nr !< … … 1224 1193 REAL(wp) :: mu_r_5d2 !< 1225 1194 REAL(wp) :: nr_0 !< 1226 REAL(wp) :: q_s !<1227 REAL(wp) :: sat !<1228 REAL(wp) :: t_l !<1229 1195 REAL(wp) :: temp !< 1230 1196 REAL(wp) :: xr !< … … 1240 1206 1241 1207 IF ( qr(k,j,i) > eps_sb ) THEN 1242 ! 1243 !-- Actual liquid water temperature: 1244 t_l = t_d_pt(k) * pt(k,j,i) 1245 ! 1246 !-- Saturation vapor pressure at t_l: 1247 e_s = 610.78_wp * EXP( 17.269_wp * ( t_l - 273.16_wp ) / & 1248 ( t_l - 35.86_wp ) & 1249 ) 1250 ! 1251 !-- Computation of saturation humidity: 1252 q_s = 0.622_wp * e_s / ( hyp(k) - 0.378_wp * e_s ) 1253 alpha = 0.622_wp * l_d_r * l_d_cp / ( t_l * t_l ) 1254 q_s = q_s * ( 1.0_wp + alpha * q(k,j,i) ) / & 1255 ( 1.0_wp + alpha * q_s ) 1256 ! 1257 !-- Supersaturation: 1258 sat = ( q(k,j,i) - qr(k,j,i) - qc(k,j,i) ) / q_s - 1.0_wp 1208 1209 ! 1210 !-- Call calculation of supersaturation located 1211 !-- in diagnostic_quantities_mod 1212 CALL supersaturation ( i, j, k ) 1259 1213 ! 1260 1214 !-- Evaporation needs only to be calculated in subsaturated regions
Note: See TracChangeset
for help on using the changeset viewer.