Skip to content

Commit 69a3d39

Browse files
authored
Merge pull request #3112 from bogensch/add_fixed_solar_constant
Automatically merged using mergify PR title: Add option to prescribe an invariant solar constant PR author: bogensch PR labels: ['BFB', 'radiation', 'DP-SCREAM', 'CI: automerge']
2 parents f7a7ad6 + 86abc7a commit 69a3d39

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

components/eamxx/cime_config/namelist_defaults_scream.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,11 @@ be lost if SCREAM_HACK_XML is not enabled.
491491
<orbital_obliquity COMPSET=".*SCREAM%AQUA.*">0.0</orbital_obliquity>
492492
<orbital_mvelp type="real">-9999.0</orbital_mvelp>
493493
<orbital_mvelp COMPSET=".*SCREAM%AQUA.*">0.0</orbital_mvelp>
494+
495+
<!-- Option for prescribing an invariant solar constant -->
496+
<fixed_total_solar_irradiance>-9999.0</fixed_total_solar_irradiance>
497+
<fixed_total_solar_irradiance COMPSET=".*SCREAM%RCE.*">551.58</fixed_total_solar_irradiance>
498+
494499
<rad_frequency hgrid="ne4np4">1</rad_frequency>
495500
<rad_frequency hgrid="ne30np4">2</rad_frequency>
496501
<rad_frequency hgrid="ne120np4">4</rad_frequency>

components/eamxx/src/physics/rrtmgp/eamxx_rrtmgp_process_interface.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,10 @@ void RRTMGPRadiation::initialize_impl(const RunType /* run_type */) {
620620
m_orbital_obliq = m_params.get<double>("orbital_obliquity" ,-9999);
621621
m_orbital_mvelp = m_params.get<double>("orbital_mvelp" ,-9999);
622622

623+
// Value for prescribing an invariant solar constant (i.e. total solar irradiance at
624+
// TOA). Used for idealized experiments such as RCE. Disabled when value is less than 0.
625+
m_fixed_total_solar_irradiance = m_params.get<double>("fixed_total_solar_irradiance", -9999);
626+
623627
// Determine whether or not we are using a fixed solar zenith angle (positive value)
624628
m_fixed_solar_zenith_angle = m_params.get<double>("Fixed Solar Zenith Angle", -9999);
625629

@@ -840,6 +844,12 @@ void RRTMGPRadiation::run_impl (const double dt) {
840844
shr_orb_decl_c2f(calday, eccen, mvelpp, lambm0,
841845
obliqr, &delta, &eccf);
842846

847+
// Overwrite eccf if using a fixed solar constant.
848+
auto fixed_total_solar_irradiance = m_fixed_total_solar_irradiance;
849+
if (fixed_total_solar_irradiance >= 0){
850+
eccf = fixed_total_solar_irradiance/1360.9;
851+
}
852+
843853
// Precompute VMR for all gases, on all cols, before starting the chunks loop
844854
//
845855
// h2o is taken from qv

components/eamxx/src/physics/rrtmgp/eamxx_rrtmgp_process_interface.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ class RRTMGPRadiation : public AtmosphereProcess {
9595
Real m_orbital_obliq; // Obliquity
9696
Real m_orbital_mvelp; // Vernal Equinox Mean Longitude of Perihelion
9797

98+
// Value for prescribing an invariant solar constant (i.e. total solar irradiance
99+
// at TOA). Used for idealized experiments such as RCE. This is only used when a
100+
// positive value is supplied.
101+
Real m_fixed_total_solar_irradiance;
102+
98103
// Fixed solar zenith angle to use for shortwave calculations
99104
// This is only used if a positive value is supplied
100105
Real m_fixed_solar_zenith_angle;

0 commit comments

Comments
 (0)