1 #ifndef ERF_TWO_STREAM_RADIATION_H_
2 #define ERF_TWO_STREAM_RADIATION_H_
7 #include <AMReX_BoxArray.H>
8 #include <AMReX_DistributionMapping.H>
9 #include <AMReX_Geometry.H>
10 #include <AMReX_MultiFab.H>
11 #include <AMReX_REAL.H>
12 #include <AMReX_Vector.H>
47 void resize (
int nlevs_max);
62 const amrex::BoxArray& ba2d,
63 const amrex::DistributionMapping& dm);
103 const std::string& call_site,
104 const amrex::MultiFab& cons_old,
105 const amrex::MultiFab* z_phys_nd,
106 const amrex::Geometry& geom,
108 amrex::MultiFab* qheating,
109 amrex::MultiFab* rad_fluxes,
110 const amrex::MultiFab* t_surf,
111 const amrex::MultiFab* lat_m,
112 const amrex::MultiFab* lon_m,
153 std::unique_ptr<RadiationDiagnostics>
m_diag;
156 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_alb_sw;
158 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_t_sfc;
163 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_hfx_sfc;
164 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_lh_sfc;
166 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_q_sfc;
167 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_t_deep;
168 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_q_deep;
constexpr amrex::Real RdoCp
Definition: ERF_Constants.H:41
const Real rdOcp
Definition: ERF_InitCustomPert_ABL.H:72
Radiation model type and control parameters.
Radiation module diagnostic output and CSV logging.
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Wrapper class for managing land surface models across AMR levels.
Definition: ERF_LandSurface.H:19
The two-stream radiation model (erf.radiation_model = TwoStream).
Definition: ERF_TwoStreamRadiation.H:42
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_q_sfc
Definition: ERF_TwoStreamRadiation.H:166
TwoStreamRadiation()=default
void read_checkpoint(int lev, const std::string &restart_chkfile)
Read it back when the checkpoint carries it; else keep defaults.
Definition: ERF_TwoStreamRadiation.cpp:279
void define_level(int lev, const RadChoice &rad_choice, amrex::Real rdOcp, const amrex::BoxArray &ba2d, const amrex::DistributionMapping &dm)
Allocate the 2D surface fields of one level on the given horizontal BoxArray and fill them with the s...
Definition: ERF_TwoStreamRadiation.cpp:222
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_grdflx_sfc
Definition: ERF_TwoStreamRadiation.H:165
void write_checkpoint(int lev, const std::string &checkpointname) const
Write the prognostic surface state of one level (SEB on).
Definition: ERF_TwoStreamRadiation.cpp:263
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_lw_flux_sfc
Definition: ERF_TwoStreamRadiation.H:162
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_q_deep
Definition: ERF_TwoStreamRadiation.H:168
amrex::Real m_rdOcp
Definition: ERF_TwoStreamRadiation.H:148
amrex::Vector< FluxDiag > m_flux_diag
Definition: ERF_TwoStreamRadiation.H:170
bool active() const
True once a level has been defined with the model selected.
Definition: ERF_TwoStreamRadiation.H:50
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_emiss_lw
Definition: ERF_TwoStreamRadiation.H:157
void resize(int nlevs_max)
Size the per-level containers; no allocation happens here.
Definition: ERF_TwoStreamRadiation.cpp:205
std::unique_ptr< RadiationDiagnostics > m_diag
Definition: ERF_TwoStreamRadiation.H:153
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_t_sfc
Definition: ERF_TwoStreamRadiation.H:158
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_lh_sfc
Definition: ERF_TwoStreamRadiation.H:164
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_alb_sw
Definition: ERF_TwoStreamRadiation.H:156
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_sw_flux_sfc
Definition: ERF_TwoStreamRadiation.H:161
OrbitalCache m_orbit
Definition: ERF_TwoStreamRadiation.H:149
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_t_deep
Definition: ERF_TwoStreamRadiation.H:167
void advance(int lev, int nstep, amrex::Real time, amrex::Real dt_step, const std::string &call_site, const amrex::MultiFab &cons_old, const amrex::MultiFab *z_phys_nd, const amrex::Geometry &geom, LandSurface &lsm, amrex::MultiFab *qheating, amrex::MultiFab *rad_fluxes, const amrex::MultiFab *t_surf, const amrex::MultiFab *lat_m, const amrex::MultiFab *lon_m, double epoch_time, bool have_datetime)
One radiation call at one level.
Definition: ERF_TwoStreamRadiation.cpp:297
const RadChoice * m_rad
Definition: ERF_TwoStreamRadiation.H:147
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_hfx_sfc
Definition: ERF_TwoStreamRadiation.H:163
Container holding radiation-related choices and parameters.
Definition: ERF_RadStruct.H:70
bool enabled
True when erf.radiation_model = TwoStream. Set by init_params from the model SolverChoice read; the e...
Definition: ERF_RadStruct.H:76
Definition: ERF_TwoStreamRadiation.H:138
amrex::Real LW_net_surface
Definition: ERF_TwoStreamRadiation.H:142
amrex::Real SW_TOA
Definition: ERF_TwoStreamRadiation.H:140
amrex::Real SW_surface
Definition: ERF_TwoStreamRadiation.H:139
amrex::Real heating_rate_max
Definition: ERF_TwoStreamRadiation.H:144
amrex::Real LW_up_TOA
Definition: ERF_TwoStreamRadiation.H:143
amrex::Real SW_up_TOA
Definition: ERF_TwoStreamRadiation.H:141
Definition: ERF_TwoStreamRadiation.H:126
bool noted_unscaled
Definition: ERF_TwoStreamRadiation.H:132
double obliqr
Definition: ERF_TwoStreamRadiation.H:129
int year
Definition: ERF_TwoStreamRadiation.H:127
double lambm0
Definition: ERF_TwoStreamRadiation.H:130
double mvelpp
Definition: ERF_TwoStreamRadiation.H:131
double eccen
Definition: ERF_TwoStreamRadiation.H:128