Skip to content

Commit 938631a

Browse files
committed
accr/auto runtime
1 parent 73446d8 commit 938631a

File tree

5 files changed

+36
-13
lines changed

5 files changed

+36
-13
lines changed

components/eamxx/cime_config/namelist_defaults_scream.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,14 @@ be lost if SCREAM_HACK_XML is not enabled.
202202
${DIN_LOC_ROOT}/atm/scream/tables/vn_table_vals.dat8,
203203
${DIN_LOC_ROOT}/atm/scream/tables/vm_table_vals.dat8
204204
</tables>
205-
<p3_autoconversion_prefactor type="real" doc="P3 autoconversion_prefactor (scale factor in autoconversion)">1350.0</p3_autoconversion_prefactor>
205+
<p3_autoconversion_prefactor type="real" doc="Autoconversion linear prefactor in P3">1350.0</p3_autoconversion_prefactor>
206+
<p3_autoconversion_qc_exponent type="real" doc="Autoconversion qc exponent in P3">2.47</p3_autoconversion_qc_exponent>
207+
<p3_autoconversion_nc_exponent type="real" doc="Autoconversion nc exponent in P3">1.79</p3_autoconversion_nc_exponent>
208+
<p3_accretion_prefactor type="real" doc="Accretion linear prefactor in P3">67.0</p3_accretion_prefactor>
209+
<p3_accretion_qc_exponent type="real" doc="Accretion qc exponent in P3">1.15</p3_accretion_qc_exponent>
210+
<p3_accretion_qr_exponent type="real" doc="Accretion qr exponent in P3">1.15</p3_accretion_qr_exponent>
206211
<p3_mu_r_constant type="real" doc="P3 mu_r_constant (rain shape parameter in gamma drop-size distribution)">1.0</p3_mu_r_constant>
207212
<p3_spa_to_nc type="real" doc="P3 spa_to_nc (scaling factor for turning CCN into nc in SPA)">1.0</p3_spa_to_nc>
208-
<p3_k_accretion type="real" doc="P3 k_accretion (scaling factor on accretion)">67.0</p3_k_accretion>
209213
<p3_eci type="real" doc="P3 eci (liquid/ice collision/collection coefficient)">0.5</p3_eci>
210214
<p3_eri type="real" doc="P3 eri (ice/rain collision/collection coefficient)">1.0</p3_eri>
211215
<p3_rho_rime_min type="real" doc="P3 rho_rime_min (riming density maximum)">50.0</p3_rho_rime_min>

components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,13 @@ void P3Microphysics::initialize_impl (const RunType /* run_type */)
222222
// Gather runtime options
223223
runtime_options.max_total_ni = m_params.get<double>("max_total_ni", 740.0e3);
224224
runtime_options.p3_autoconversion_prefactor = m_params.get<double>("p3_autoconversion_prefactor", 1350.0);
225+
runtime_options.p3_autoconversion_qc_exponent = m_params.get<double>("p3_autoconversion_qc_exponent", 2.47);
226+
runtime_options.p3_autoconversion_nc_exponent = m_params.get<double>("p3_autoconversion_nc_exponent", 1.79);
227+
runtime_options.p3_accretion_prefactor = m_params.get<double>("p3_accretion_prefactor", 67.0);
228+
runtime_options.p3_accretion_qc_exponent = m_params.get<double>("p3_accretion_qc_exponent", 1.15);
229+
runtime_options.p3_accretion_qr_exponent = m_params.get<double>("p3_accretion_qr_exponent", 1.15);
225230
runtime_options.p3_mu_r_constant = m_params.get<double>("p3_mu_r_constant", 1.0);
226231
runtime_options.p3_spa_to_nc = m_params.get<double>("p3_spa_to_nc", 1.0);
227-
runtime_options.p3_k_accretion = m_params.get<double>("p3_k_accretion", 67.0);
228232
runtime_options.p3_eci = m_params.get<double>("p3_eci", 0.5);
229233
runtime_options.p3_eri = m_params.get<double>("p3_eri", 1.0);
230234
runtime_options.p3_rho_rime_min = m_params.get<double>("p3_rho_rime_min", 50.0);

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,23 @@ ::cloud_water_autoconversion(
2222
constexpr Scalar CONS3 = C::CONS3;
2323

2424
const Scalar p3_autoconversion_prefactor = runtime_options.p3_autoconversion_prefactor;
25+
const Scalar p3_autoconversion_qc_exponent = runtime_options.p3_autoconversion_qc_exponent;
26+
const Scalar p3_autoconversion_nc_exponent = runtime_options.p3_autoconversion_nc_exponent;
2527

26-
if(qc_not_small.any()){
28+
if(qc_not_small.any()) {
2729
Spack sgs_var_coef;
2830
// sgs_var_coef = subgrid_variance_scaling(inv_qc_relvar, sp(2.47) );
2931
sgs_var_coef = 1;
3032

31-
qc2qr_autoconv_tend.set(qc_not_small,
32-
sgs_var_coef*p3_autoconversion_prefactor*pow(qc_incld,sp(2.47))*pow(nc_incld*sp(1.e-6)*rho,sp(-1.79)));
33+
qc2qr_autoconv_tend.set(
34+
qc_not_small, sgs_var_coef * p3_autoconversion_prefactor *
35+
pow(qc_incld, sp(p3_autoconversion_qc_exponent)) *
36+
pow(nc_incld * sp(1.e-6) * rho,
37+
sp(-1 * p3_autoconversion_nc_exponent)));
3338
// note: ncautr is change in Nr; nc2nr_autoconv_tend is change in Nc
34-
ncautr.set(qc_not_small, qc2qr_autoconv_tend*CONS3);
35-
nc2nr_autoconv_tend.set(qc_not_small, qc2qr_autoconv_tend*nc_incld/qc_incld);
39+
ncautr.set(qc_not_small, qc2qr_autoconv_tend * CONS3);
40+
nc2nr_autoconv_tend.set(qc_not_small,
41+
qc2qr_autoconv_tend * nc_incld / qc_incld);
3642
}
3743

3844
nc2nr_autoconv_tend.set(qc2qr_autoconv_tend == 0 && context, 0);

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,23 @@ ::cloud_rain_accretion(
2525
{
2626
constexpr Scalar qsmall = C::QSMALL;
2727

28-
const Scalar p3_k_accretion = runtime_options.p3_k_accretion;;
28+
const Scalar p3_accretion_prefactor = runtime_options.p3_accretion_prefactor;
29+
const Scalar p3_accretion_qc_exponent = runtime_options.p3_accretion_qc_exponent;
30+
const Scalar p3_accretion_qr_exponent = runtime_options.p3_accretion_qr_exponent;
2931

3032
Spack sgs_var_coef;
3133
// sgs_var_coef = subgrid_variance_scaling(inv_qc_relvar, sp(1.15) );
3234
sgs_var_coef = 1;
3335

3436
const auto qr_and_qc_not_small = (qr_incld >= qsmall) && (qc_incld >= qsmall) && context;
35-
if (qr_and_qc_not_small.any()) {
37+
if(qr_and_qc_not_small.any()) {
3638
// Khroutdinov and Kogan (2000)
3739
qc2qr_accret_tend.set(qr_and_qc_not_small,
38-
sgs_var_coef * sp(p3_k_accretion) * pow(qc_incld * qr_incld, sp(1.15)));
39-
nc_accret_tend.set(qr_and_qc_not_small, qc2qr_accret_tend * nc_incld / qc_incld);
40+
sgs_var_coef * sp(p3_accretion_prefactor) *
41+
pow(qc_incld, sp(p3_accretion_qc_exponent)) *
42+
pow(qr_incld, sp(p3_accretion_qr_exponent)));
43+
nc_accret_tend.set(qr_and_qc_not_small,
44+
qc2qr_accret_tend * nc_incld / qc_incld);
4045

4146
qc2qr_accret_tend.set(nc_accret_tend == 0 && context, 0);
4247
nc_accret_tend.set(qc2qr_accret_tend == 0 && context, 0);

components/eamxx/src/physics/p3/p3_functions.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,13 @@ struct Functions
111111
struct P3Runtime {
112112
Scalar max_total_ni = 740.0e3;
113113
Scalar p3_autoconversion_prefactor = 1350.0;
114+
Scalar p3_autoconversion_qc_exponent = 2.47;
115+
Scalar p3_autoconversion_nc_exponent = 1.79;
116+
Scalar p3_accretion_prefactor = 67.0;
117+
Scalar p3_accretion_qc_exponent = 1.15;
118+
Scalar p3_accretion_qr_exponent = 1.15;
114119
Scalar p3_mu_r_constant = 1.0;
115120
Scalar p3_spa_to_nc = 1.0;
116-
Scalar p3_k_accretion = 67.0;
117121
Scalar p3_eci = 0.5;
118122
Scalar p3_eri = 1.0;
119123
Scalar p3_rho_rime_min = 50.0;

0 commit comments

Comments
 (0)