Skip to content

Commit

Permalink
refactor loading runtime options from file
Browse files Browse the repository at this point in the history
  • Loading branch information
mahf708 committed Oct 15, 2024
1 parent 630cf31 commit 0021003
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 38 deletions.
40 changes: 2 additions & 38 deletions components/eamxx/src/physics/p3/eamxx_p3_process_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,44 +219,8 @@ void P3Microphysics::init_buffers(const ATMBufferManager &buffer_manager)
// =========================================================================================
void P3Microphysics::initialize_impl (const RunType /* run_type */)
{
// Gather runtime options
runtime_options.max_total_ni = m_params.get<double>("max_total_ni", 740.0e3);
runtime_options.autoconversion_prefactor =
m_params.get<double>("autoconversion_prefactor", 1350.0);
runtime_options.autoconversion_qc_exponent =
m_params.get<double>("autoconversion_qc_exponent", 2.47);
runtime_options.autoconversion_nc_exponent =
m_params.get<double>("autoconversion_nc_exponent", 1.79);
runtime_options.autoconversion_radius =
m_params.get<double>("autoconversion_radius", 25.0e-6);
runtime_options.accretion_prefactor =
m_params.get<double>("accretion_prefactor", 67.0);
runtime_options.accretion_qc_exponent =
m_params.get<double>("accretion_qc_exponent", 1.15);
runtime_options.accretion_qr_exponent =
m_params.get<double>("accretion_qr_exponent", 1.15);
runtime_options.rain_selfcollection_prefactor =
m_params.get<double>("rain_selfcollection_prefactor", 5.78);
runtime_options.rain_selfcollection_breakup_diameter =
m_params.get<double>("rain_selfcollection_breakup_diameter", 0.00028);
runtime_options.constant_mu_rain =
m_params.get<double>("constant_mu_rain", 1.0);
runtime_options.spa_ccn_to_nc_factor =
m_params.get<double>("spa_ccn_to_nc_factor", 1.0);
runtime_options.cldliq_to_ice_collection_factor =
m_params.get<double>("cldliq_to_ice_collection_factor", 0.5);
runtime_options.rain_to_ice_collection_factor =
m_params.get<double>("rain_to_ice_collection_factor", 1.0);
runtime_options.min_rime_rho = m_params.get<double>("min_rime_rho", 50.0);
runtime_options.max_rime_rho = m_params.get<double>("max_rime_rho", 900.0);
runtime_options.immersion_freezing_exponent =
m_params.get<double>("immersion_freezing_exponent", 0.65);
runtime_options.deposition_nucleation_exponent =
m_params.get<double>("deposition_nucleation_exponent", 0.304);
runtime_options.ice_sedimentation_factor =
m_params.get<double>("ice_sedimentation_factor", 1.0);
runtime_options.do_ice_production =
m_params.get<bool>("do_ice_production", true);
// Gather runtime options from file
runtime_options.load_runtime_options_from_file(m_params);

// Set property checks for fields in this process
add_invariant_check<FieldWithinIntervalCheck>(get_field_out("T_mid"),m_grid,100.0,500.0,false);
Expand Down
25 changes: 25 additions & 0 deletions components/eamxx/src/physics/p3/p3_functions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

#include "ekat/ekat_pack_kokkos.hpp"
#include "ekat/ekat_workspace.hpp"
#include "ekat/ekat_parameter_list.hpp"

namespace scream {
namespace p3 {
Expand Down Expand Up @@ -129,6 +130,30 @@ struct Functions
Scalar deposition_nucleation_exponent = 0.304;
Scalar ice_sedimentation_factor = 1.0;
bool do_ice_production = true;

void load_runtime_options_from_file(ekat::ParameterList& m_params) {
max_total_ni = m_params.get<double>("max_total_ni", 740.0e3);
autoconversion_prefactor = m_params.get<double>("autoconversion_prefactor", 1350.0);
autoconversion_qc_exponent = m_params.get<double>("autoconversion_qc_exponent", 2.47);
autoconversion_nc_exponent = m_params.get<double>("autoconversion_nc_exponent", 1.79);
autoconversion_radius = m_params.get<double>("autoconversion_radius", 25.0e-6);
accretion_prefactor = m_params.get<double>("accretion_prefactor", 67.0);
accretion_qc_exponent = m_params.get<double>("accretion_qc_exponent", 1.15);
accretion_qr_exponent = m_params.get<double>("accretion_qr_exponent", 1.15);
rain_selfcollection_prefactor = m_params.get<double>("rain_selfcollection_prefactor", 5.78);
rain_selfcollection_breakup_diameter = m_params.get<double>("rain_selfcollection_breakup_diameter", 0.00028);
constant_mu_rain = m_params.get<double>("constant_mu_rain", 1.0);
spa_ccn_to_nc_factor = m_params.get<double>("spa_ccn_to_nc_factor", 1.0);
cldliq_to_ice_collection_factor = m_params.get<double>("cldliq_to_ice_collection_factor", 0.5);
rain_to_ice_collection_factor = m_params.get<double>("rain_to_ice_collection_factor", 1.0);
min_rime_rho = m_params.get<double>("min_rime_rho", 50.0);
max_rime_rho = m_params.get<double>("max_rime_rho", 900.0);
immersion_freezing_exponent = m_params.get<double>("immersion_freezing_exponent", 0.65);
deposition_nucleation_exponent = m_params.get<double>("deposition_nucleation_exponent", 0.304);
ice_sedimentation_factor = m_params.get<double>("ice_sedimentation_factor", 1.0);
do_ice_production = m_params.get<bool>("do_ice_production", true);
}

};

// This struct stores prognostic variables evolved by P3.
Expand Down

0 comments on commit 0021003

Please sign in to comment.