1 #ifndef SRC_HARP_RADIATION_HPP_
2 #define SRC_HARP_RADIATION_HPP_
10 #include <athena/athena.hpp>
39 Radiation(MeshBlock *pmb, ParameterInput *pin);
47 std::shared_ptr<RadiationBand>
GetBand(
int i)
const {
return bands_[i]; }
50 std::shared_ptr<RadiationBand>
GetBandByName(std::string
const &name)
const;
76 std::vector<RadiationBandPtr>
bands_;
91 const uint64_t
Star = 1LL << 4;
AthenaArray< Real > flxdn
downward flux of all bands
Direction const & GetRayInput(int i) const
Get incoming ray by index.
Radiation(MeshBlock *pmb, ParameterInput *pin)
size_t RestartDataSizeInBytes(Mesh const *pm) const override
std::vector< Direction > rayInput_
incomming rays
std::shared_ptr< RadiationBand > GetBandByName(std::string const &name) const
Get band by name.
void CalRadiativeFlux(MeshBlock const *pmb, int k, int j, int il, int iu)
Calculate the radiative flux.
std::vector< RadiationBandPtr > bands_
all radiation bands
void DumpRestartData(char *pdst) const override
AthenaArray< Real > flxup
upward flux of all bands
std::shared_ptr< RadiationBand > GetBand(int i) const
Get band by index.
size_t LoadRestartData(char *psrt) override
size_t GetNumOutgoingRays() const
Get total number of incoming rays.
static const std::string input_key
radiation input key in the input file [radiation_config]
void CalRadiance(MeshBlock const *pmb, int k, int j)
Calculate the radiance.
void AddRadiativeFlux(Hydro *phydro, int k, int j, int il, int iu) const
Add the radiative flux to hydro energy flux.
size_t GetNumBands() const
Get number of bands.
AthenaArray< Real > radiance
radiance of all bands
const uint64_t WriteBinRadiance
const uint64_t LineByLine
const uint64_t CorrelatedK
std::vector< Direction > parse_radiation_directions(std::string str)
uint64_t parse_radiation_flags(std::string str)
void get_phase_momentum(Real *pmom, int iphas, Real gg, int npmom)
std::shared_ptr< Radiation > RadiationPtr