Skip to content

Commit bd8f3c0

Browse files
authored
Merge branch 'beydoun/new_cld_frac_r_default' (PR E3SM-Project#7412)
New settings for EAMxx at various resolutions as decided by group's evaluation. [non-BFB] [CC]
2 parents c037ea8 + ae01286 commit bd8f3c0

File tree

4 files changed

+17
-27
lines changed

4 files changed

+17
-27
lines changed

components/eamxx/cime_config/namelist_defaults_eamxx.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,17 +216,20 @@ be lost if SCREAM_HACK_XML is not enabled.
216216
${DIN_LOC_ROOT}/atm/scream/tables/vm_table_vals_v2.dat8
217217
</tables>
218218
<autoconversion_prefactor type="real" doc="Autoconversion linear prefactor">1350.0</autoconversion_prefactor>
219+
<autoconversion_prefactor hgrid="ne256np4.pg2">2700.0</autoconversion_prefactor>
219220
<autoconversion_qc_exponent type="real" doc="Autoconversion qc exponent">2.47</autoconversion_qc_exponent>
220221
<autoconversion_nc_exponent type="real" doc="Autoconversion nc exponent">1.79</autoconversion_nc_exponent>
221222
<autoconversion_radius type="real" doc="Autoconversion droplet radius in meter">25.0e-6</autoconversion_radius>
222223
<accretion_prefactor type="real" doc="Accretion linear prefactor">67.0</accretion_prefactor>
224+
<accretion_prefactor hgrid="ne256np4.pg2">150.0</accretion_prefactor>
223225
<accretion_qc_exponent type="real" doc="Accretion qc exponent">1.15</accretion_qc_exponent>
224226
<accretion_qr_exponent type="real" doc="Accretion qr exponent">1.15</accretion_qr_exponent>
225227
<rain_selfcollection_prefactor type="real" doc="Rain self-collection prefactor">5.78</rain_selfcollection_prefactor>
226228
<rain_selfcollection_breakup_diameter type="real" doc="Rain self-collection breakup diameter in meter">0.00028</rain_selfcollection_breakup_diameter>
227229
<constant_mu_rain type="real" doc="Constant shape parameter (mu) in the rain droplet distribution">1.0</constant_mu_rain>
228-
<spa_ccn_to_nc_factor type="real" doc="Scaling factor for turning SPA ccn into P3 nc">1.0</spa_ccn_to_nc_factor>
229-
<spa_ccn_to_nc_exponent type="real" doc="Exponent for turning SPA ccn into P3 nc">1.0</spa_ccn_to_nc_exponent>
230+
<spa_ccn_to_nc_factor type="real" doc="Scaling factor for turning SPA ccn into P3 nc">2000.0</spa_ccn_to_nc_factor>
231+
<spa_ccn_to_nc_factor hgrid="ne256np4.pg2">1000.0</spa_ccn_to_nc_factor>
232+
<spa_ccn_to_nc_exponent type="real" doc="Exponent for turning SPA ccn into P3 nc">0.55</spa_ccn_to_nc_exponent>
230233
<cldliq_to_ice_collection_factor type="real" doc="Cloud liquid to ice collection scaling factor">0.5</cldliq_to_ice_collection_factor>
231234
<rain_to_ice_collection_factor type="real" doc="Rain to ice collection scaling factor">1.0</rain_to_ice_collection_factor>
232235
<min_rime_rho type="real" doc="Minimum rime density in kg/m3">50.0</min_rime_rho>
@@ -236,8 +239,11 @@ be lost if SCREAM_HACK_XML is not enabled.
236239
<ice_sedimentation_factor type="real" doc="Ice sedimentation fall speed factor">1.0</ice_sedimentation_factor>
237240
<do_ice_production type="logical" doc="Flag to turn on ice production processes (loss processes unaffected)">true</do_ice_production>
238241
<set_cld_frac_l_to_one type="logical" doc="set P3 input liquid cloud fraction to 1 everywhere">false</set_cld_frac_l_to_one>
239-
<set_cld_frac_r_to_one type="logical" doc="set P3 input rain cloud fraction to 1 everywhere" >false</set_cld_frac_r_to_one>
240-
<set_cld_frac_i_to_one type="logical" doc="set P3 input ice cloud fraction to 1 everywhere" >false</set_cld_frac_i_to_one>
242+
<set_cld_frac_r_to_one type="logical" doc="set P3 input rain cloud fraction to 1 everywhere">false</set_cld_frac_r_to_one>
243+
<set_cld_frac_r_to_one hgrid="ne256np4.pg2">true</set_cld_frac_r_to_one>
244+
<set_cld_frac_r_to_one hgrid="ne512np4.pg2">true</set_cld_frac_r_to_one>
245+
<set_cld_frac_r_to_one hgrid="ne1024np4.pg2">true</set_cld_frac_r_to_one>
246+
<set_cld_frac_i_to_one type="logical" doc="set P3 input ice cloud fraction to 1 everywhere">false</set_cld_frac_i_to_one>
241247
<use_separate_ice_liq_frac type="logical" doc="use separate ice and liquid cloud fractions from shoc">false</use_separate_ice_liq_frac>
242248
<extra_p3_diags type="logical" doc="Extra P3 diagnostics">false</extra_p3_diags>
243249
</p3>

components/eamxx/src/physics/p3/impl/p3_autoconversion_impl.hpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,7 @@ ::cloud_water_autoconversion(
2828
runtime_options.autoconversion_nc_exponent;
2929
const Scalar autoconversion_radius = runtime_options.autoconversion_radius;
3030

31-
Scalar CONS3;
32-
// TODO: always default to second branch after BFB stuff is addressed
33-
if(autoconversion_radius == sp(25.0e-6)) {
34-
CONS3 = C::CONS3;
35-
} else {
36-
CONS3 = sp(1.0) / (C::CONS2 * pow(autoconversion_radius, sp(3.0)));
37-
}
31+
const Scalar CONS3 = sp(1.0) / (C::CONS2 * pow(autoconversion_radius, sp(3.0)));
3832

3933
if(qc_not_small.any()) {
4034
Spack sgs_var_coef;

components/eamxx/src/physics/p3/impl/p3_cloud_rain_acc_impl.hpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,10 @@ ::cloud_rain_accretion(
3636
const auto qr_and_qc_not_small = (qr_incld >= qsmall) && (qc_incld >= qsmall) && context;
3737
if(qr_and_qc_not_small.any()) {
3838
// Khroutdinov and Kogan (2000)
39-
// TODO: always default to second branch after BFB stuff is addressed
40-
if(accretion_qc_exponent == accretion_qr_exponent) {
41-
qc2qr_accret_tend.set(qr_and_qc_not_small,
42-
sgs_var_coef * accretion_prefactor *
43-
pow(qc_incld * qr_incld, accretion_qr_exponent));
44-
} else {
45-
qc2qr_accret_tend.set(qr_and_qc_not_small,
46-
sgs_var_coef * accretion_prefactor *
47-
pow(qc_incld, accretion_qc_exponent) *
48-
pow(qr_incld, accretion_qr_exponent));
49-
}
39+
qc2qr_accret_tend.set(qr_and_qc_not_small,
40+
sgs_var_coef * accretion_prefactor *
41+
pow(qc_incld, accretion_qc_exponent) *
42+
pow(qr_incld, accretion_qr_exponent));
5043
nc_accret_tend.set(qr_and_qc_not_small,
5144
qc2qr_accret_tend * nc_incld / qc_incld);
5245

components/eamxx/src/physics/p3/impl/p3_main_impl_part1.hpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,8 @@ ::p3_main_part1(
141141
// and it can be made sublinear (e.g., 2000 and 0.55).
142142
// First, scale by cld_frac_l to account for subgrid frac (if any)
143143
auto nccn_scaled = nccn_prescribed(k) / inv_cld_frac_l(k);
144-
// TODO: HACK: keep BFB, avoid roundoff diff due to pow(x, 1.0)
145-
// Second, apply the exponent, but keep strict BFB with defaults
146-
if(spa_ccn_to_nc_exponent != sp(1.0)) {
147-
nccn_scaled = pow(nccn_scaled, spa_ccn_to_nc_exponent);
148-
}
144+
// Second, apply the exponent
145+
nccn_scaled = pow(nccn_scaled, spa_ccn_to_nc_exponent);
149146
// Third, apply the factor, and retain the max
150147
nc(k).set(not_drymass,
151148
max(nc(k), spa_ccn_to_nc_factor * nccn_scaled));

0 commit comments

Comments
 (0)