1 #ifndef SRC_INVERSION_INVERSION_HPP_
2 #define SRC_INVERSION_INVERSION_HPP_
13 #include <athena/athena.hpp>
16 #include <configure.hpp>
34 Inversion(MeshBlock *pmb, ParameterInput *pin, std::string name);
38 Real
const *par, Real *val,
44 int k,
int j)
const {}
48 virtual void UpdateHydro(Hydro *phydro, ParameterInput *pin)
const {}
void InitializeChain(int nstep, int nwalker, int ndim, int nvalue)
void LoadFITSOutputData(OutputType *pod, int *num_vars) const override
void MakeMCMCOutputs(std::string fname)
Real GetLogProbability(int k) const
virtual void CalculateFitTarget(Radiation const *prad, Real *val, int nvalue, int k, int j) const
bool ShouldFITSOutput(std::string variable_name) const override
MeshOutputGroup functions.
Inversion(MeshBlock *pmb, ParameterInput *pin, std::string name)
Constructor and destructor.
virtual void UpdateHydro(Hydro *phydro, ParameterInput *pin) const
virtual void InitializePositions()
void MCMCSave(Hydro *phydro)
void MCMCInit(Radiation *prad, Hydro *phydro)
void SetLogProbability(int k, Real lnp)
virtual Real LogPosteriorProbability(Radiation *prad, Hydro *phydro, Real const *par, Real *val, int k) const
void MCMCMove(Radiation *prad, Hydro *phydro)
virtual int getX2Span() const
MeshBlock const * pmy_block_
pointer to parent MeshBlock
static AllInversions Create(MeshBlock *pmb, ParameterInput *pin)
std::shared_ptr< Inversion > InversionPtr
std::vector< std::shared_ptr< Inversion > > AllInversions
This file contains data structure and subroutines implementing Markov Chain Monte Carlo sampler.
void read_observation_file(Eigen::VectorXd *target, Eigen::MatrixXd *icov, std::string fname)
void gather_probability(std::vector< Inversion * > const &fitq)