From 540f8e0ecaa63267f7a33b03d114cb7699c72a8e Mon Sep 17 00:00:00 2001 From: mahf708 Date: Fri, 11 Oct 2024 14:45:38 -0700 Subject: [PATCH] add autoconversion radius to namelist --- .../eamxx/cime_config/namelist_defaults_scream.xml | 1 + .../src/physics/p3/eamxx_p3_process_interface.cpp | 1 + .../src/physics/p3/impl/p3_autoconversion_impl.hpp | 10 +++++++++- components/eamxx/src/physics/p3/p3_functions.hpp | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/components/eamxx/cime_config/namelist_defaults_scream.xml b/components/eamxx/cime_config/namelist_defaults_scream.xml index 5344f04618d..d60646e423a 100644 --- a/components/eamxx/cime_config/namelist_defaults_scream.xml +++ b/components/eamxx/cime_config/namelist_defaults_scream.xml @@ -205,6 +205,7 @@ be lost if SCREAM_HACK_XML is not enabled. 1350.0 2.47 1.79 + 25.0e-6 67.0 1.15 1.15 diff --git a/components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp b/components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp index e25922df3a1..49b196286d3 100644 --- a/components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp +++ b/components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp @@ -224,6 +224,7 @@ void P3Microphysics::initialize_impl (const RunType /* run_type */) runtime_options.p3_autoconversion_prefactor = m_params.get("p3_autoconversion_prefactor", 1350.0); runtime_options.p3_autoconversion_qc_exponent = m_params.get("p3_autoconversion_qc_exponent", 2.47); runtime_options.p3_autoconversion_nc_exponent = m_params.get("p3_autoconversion_nc_exponent", 1.79); + runtime_options.p3_autoconversion_radius = m_params.get("p3_autoconversion_radius", 25.0e-6); runtime_options.p3_accretion_prefactor = m_params.get("p3_accretion_prefactor", 67.0); runtime_options.p3_accretion_qc_exponent = m_params.get("p3_accretion_qc_exponent", 1.15); runtime_options.p3_accretion_qr_exponent = m_params.get("p3_accretion_qr_exponent", 1.15); diff --git a/components/eamxx/src/physics/p3/impl/p3_autoconversion_impl.hpp b/components/eamxx/src/physics/p3/impl/p3_autoconversion_impl.hpp index 76cfbf4e439..b52913ba7c9 100644 --- a/components/eamxx/src/physics/p3/impl/p3_autoconversion_impl.hpp +++ b/components/eamxx/src/physics/p3/impl/p3_autoconversion_impl.hpp @@ -19,11 +19,19 @@ ::cloud_water_autoconversion( // Khroutdinov and Kogan (2000) const auto qc_not_small = qc_incld >= 1e-8 && context; - constexpr Scalar CONS3 = C::CONS3; const Scalar p3_autoconversion_prefactor = runtime_options.p3_autoconversion_prefactor; const Scalar p3_autoconversion_qc_exponent = runtime_options.p3_autoconversion_qc_exponent; const Scalar p3_autoconversion_nc_exponent = runtime_options.p3_autoconversion_nc_exponent; + const Scalar p3_autoconversion_radius = runtime_options.p3_autoconversion_radius; + + // TODO: remove this conditional (and keep CONS3 defined as in else) once BFB reqs are satisfied + Scalar CONS3; + if(p3_autoconversion_radius == 25.0e-6) { + CONS3 = C::CONS3; + } else { + CONS3 = sp(1.0) / (C::CONS2 * pow(p3_autoconversion_radius, sp(3.0))); + } if(qc_not_small.any()) { Spack sgs_var_coef; diff --git a/components/eamxx/src/physics/p3/p3_functions.hpp b/components/eamxx/src/physics/p3/p3_functions.hpp index fc362717b17..d15100e3f56 100644 --- a/components/eamxx/src/physics/p3/p3_functions.hpp +++ b/components/eamxx/src/physics/p3/p3_functions.hpp @@ -113,6 +113,7 @@ struct Functions Scalar p3_autoconversion_prefactor = 1350.0; Scalar p3_autoconversion_qc_exponent = 2.47; Scalar p3_autoconversion_nc_exponent = 1.79; + Scalar p3_autoconversion_radius = 25.0e-6; Scalar p3_accretion_prefactor = 67.0; Scalar p3_accretion_qc_exponent = 1.15; Scalar p3_accretion_qr_exponent = 1.15;