ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
IRadiation Class Referenceabstract

#include <ERF_RadiationInterface.H>

Inheritance diagram for IRadiation:
Collaboration diagram for IRadiation:

Public Member Functions

virtual ~IRadiation ()=default
 
virtual void Init (const amrex::Geometry &geom, const amrex::BoxArray &ba, amrex::MultiFab *cons_in)=0
 
virtual void Run (int &level, int &step, double &time, const double &dt, const amrex::BoxArray &ba, amrex::Geometry &geom, amrex::MultiFab *cons_in, amrex::iMultiFab *lmask, amrex::MultiFab *t_surf, const amrex::Vector< const amrex::MultiFab * > &lsm_input_ptrs, const amrex::Vector< amrex::MultiFab * > &lsm_output_ptrs, amrex::MultiFab *qheating_rates, amrex::MultiFab *rad_fluxes, amrex::MultiFab *z_phys, amrex::MultiFab *lat, amrex::MultiFab *lon, const bool updated_lsm, amrex::Real &declin, amrex::Real &calday)=0
 
virtual bool radiation_updated () const
 Reports whether the last radiation call updated its outputs. More...
 
virtual void WriteDataLog (const double &time)=0
 
virtual amrex::Vector< std::string > get_lsm_input_varnames ()
 
virtual amrex::Vector< std::string > get_lsm_output_varnames ()
 
virtual bool is_nested_patch () const
 
void setupDataLog ()
 
void setDataLogFrequency (const int nstep)
 
bool hasDatalog ()
 

Protected Attributes

std::unique_ptr< std::fstream > datalog = nullptr
 
std::string datalogname
 
int datalog_int = -1
 

Private Member Functions

void setRecordDataInfo (const std::string &filename)
 

Constructor & Destructor Documentation

◆ ~IRadiation()

virtual IRadiation::~IRadiation ( )
virtualdefault

Member Function Documentation

◆ get_lsm_input_varnames()

virtual amrex::Vector<std::string> IRadiation::get_lsm_input_varnames ( )
inlinevirtual

Reimplemented in Radiation.

60  {
61  amrex::Vector<std::string> empty = {" "};
62  return empty;
63  }

◆ get_lsm_output_varnames()

virtual amrex::Vector<std::string> IRadiation::get_lsm_output_varnames ( )
inlinevirtual

Reimplemented in Radiation.

69  {
70  amrex::Vector<std::string> empty = {" "};
71  return empty;
72  }

◆ hasDatalog()

bool IRadiation::hasDatalog ( )
inline
99 { return (datalog != nullptr && datalog->good()); }
std::unique_ptr< std::fstream > datalog
Definition: ERF_RadiationInterface.H:102

◆ Init()

virtual void IRadiation::Init ( const amrex::Geometry &  geom,
const amrex::BoxArray &  ba,
amrex::MultiFab *  cons_in 
)
pure virtual

Implemented in RadiationSimple, and Radiation.

◆ is_nested_patch()

virtual bool IRadiation::is_nested_patch ( ) const
inlinevirtual

Reimplemented in Radiation.

78  {
79  return false; // Default: not a nested patch
80  }

◆ radiation_updated()

virtual bool IRadiation::radiation_updated ( ) const
inlinevirtual

Reports whether the last radiation call updated its outputs.

Returns
True when the radiation kernel wrote output fields.

Reimplemented in Radiation.

50 { return true; }

◆ Run()

virtual void IRadiation::Run ( int &  level,
int &  step,
double &  time,
const double &  dt,
const amrex::BoxArray &  ba,
amrex::Geometry &  geom,
amrex::MultiFab *  cons_in,
amrex::iMultiFab *  lmask,
amrex::MultiFab *  t_surf,
const amrex::Vector< const amrex::MultiFab * > &  lsm_input_ptrs,
const amrex::Vector< amrex::MultiFab * > &  lsm_output_ptrs,
amrex::MultiFab *  qheating_rates,
amrex::MultiFab *  rad_fluxes,
amrex::MultiFab *  z_phys,
amrex::MultiFab *  lat,
amrex::MultiFab *  lon,
const bool  updated_lsm,
amrex::Real &  declin,
amrex::Real &  calday 
)
pure virtual

Implemented in Radiation, and RadiationSimple.

◆ setDataLogFrequency()

void IRadiation::setDataLogFrequency ( const int  nstep)
inline
94  {
95  datalog_int = nstep;
96  }
int datalog_int
Definition: ERF_RadiationInterface.H:105

◆ setRecordDataInfo()

void IRadiation::setRecordDataInfo ( const std::string &  filename)
inlineprivate
110  {
111  datalog = std::make_unique<std::fstream>();
112  if (amrex::ParallelDescriptor::IOProcessor())
113  {
114  datalog->open(filename.c_str(),std::ios::out|std::ios::app);
115  if (!datalog->good()) {
116  amrex::FileOpenFailed(filename);
117  }
118  datalogname = filename;
119  }
120  amrex::ParallelDescriptor::Barrier("ERF::Radiation::setRecordDataInfo");
121  }
std::string datalogname
Definition: ERF_RadiationInterface.H:103

Referenced by setupDataLog().

Here is the caller graph for this function:

◆ setupDataLog()

void IRadiation::setupDataLog ( )
inline
84  {
85  amrex::ParmParse pp("erf.rad");
86  if (pp.contains("datalog")) {
87  pp.queryAdd("datalog", datalogname);
88 
90  }
91  }
ParmParse pp("prob")
void setRecordDataInfo(const std::string &filename)
Definition: ERF_RadiationInterface.H:109
Here is the call graph for this function:

◆ WriteDataLog()

virtual void IRadiation::WriteDataLog ( const double &  time)
pure virtual

Implemented in RadiationSimple, and Radiation.

Member Data Documentation

◆ datalog

std::unique_ptr<std::fstream> IRadiation::datalog = nullptr
protected

Referenced by hasDatalog(), and setRecordDataInfo().

◆ datalog_int

int IRadiation::datalog_int = -1
protected

Referenced by setDataLogFrequency().

◆ datalogname

std::string IRadiation::datalogname
protected

Referenced by setRecordDataInfo(), and setupDataLog().


The documentation for this class was generated from the following file: