1 #ifndef SRC_HARP_RT_SOLVERS_HPP_
2 #define SRC_HARP_RT_SOLVERS_HPP_
8 #include <athena/athena.hpp>
11 #include <application/application.hpp>
14 #include <configure.hpp>
19 #include <cppdisort/cppdisort.hpp>
29 Application::Logger app(
"harp");
30 app->Log(
"Initialize RTSolver " +
GetName());
37 Application::Logger app(
"harp");
38 app->Log(
"Destroy RTSolver " +
GetName());
43 virtual void Prepare(MeshBlock
const *pmb,
int k,
int j) {}
46 virtual void Resize(
int nlyr,
int nstr,
int nuphi,
int numu) {}
49 virtual void CalBandFlux(MeshBlock
const *pmb,
int k,
int j,
int il,
int iu) {
67 void CalBandFlux(MeshBlock
const *pmb,
int k,
int j,
int il,
int iu)
override;
74 protected DisortWrapper {
76 RTSolverDisort(
RadiationBand *pmy_band, YAML::Node
const &rad);
80 void Prepare(MeshBlock
const *pmb,
int k,
int j)
override;
81 void Resize(
int nlyr,
int nstr,
int nuphi,
int numu)
override;
84 void CalBandFlux(MeshBlock
const *pmb,
int k,
int j,
int il,
int iu)
override;
88 void setFlagsFromNode(YAML::Node
const &flags);
90 void addDisortFlux(
Coordinates const *pcoord,
int n,
int k,
int j,
int il,
93 void addDisortRadiance(
Coordinates const *pcoord,
int n,
int k,
int j);
std::string GetName() const
void CalBandFlux(MeshBlock const *pmb, int k, int j, int il, int iu) override
RTSolverLambert(RadiationBand *pmy_band, YAML::Node const &rad)
void CalBandRadiance(MeshBlock const *pmb, int k, int j) override
virtual void Prepare(MeshBlock const *pmb, int k, int j)
Prepare and seal the solver for the current column.
virtual void Resize(int nlyr, int nstr, int nuphi, int numu)
Allocate memory for radiation solver.
virtual void CalBandRadiance(MeshBlock const *pmb, int k, int j)
RadiationBand * pmy_band_
AthenaArray< Real > farea_
virtual void CalBandFlux(MeshBlock const *pmb, int k, int j, int il, int iu)
RTSolver(RadiationBand *pmy_band, std::string name)
size_t GetNumLayers() const
Get number of phase function moments.