30 {8.321743e+09, 2.286790e-05},
31 {1.248261e+10, 4.744500e-05},
32 {1.872392e+10, 9.843610e-05},
33 {2.304483e+10, 1.430450e-04},
34 {2.723480e+10, 1.932250e-04},
35 {4.048416e+10, 3.944150e-04},
36 {5.991655e+10, 7.987750e-04},
37 {8.559507e+10, 1.517920e-03},
38 {8.942755e+10, 1.642440e-03},
39 {1.097373e+11, 2.373980e-03},
40 {1.152241e+11, 2.591900e-03},
41 {1.331476e+11, 3.362340e-03},
42 {1.497914e+11, 4.156390e-03},
43 {1.997218e+11, 6.975990e-03},
44 {2.304483e+11, 9.025520e-03},
45 {2.995828e+11, 1.369980e-02},
46 {4.279754e+11, 2.569960e-02},
47 {5.991655e+11, 5.039920e-02},
48 {8.559507e+11, 1.009980e-01},
49 {1.325589e+12, 2.169970e-01},
50 {1.621122e+12, 3.076000e-01},
51 {1.890111e+12, 4.066510e-01},
52 {2.204437e+12, 5.256380e-01},
53 {2.569312e+12, 6.786530e-01},
54 {2.995828e+12, 8.649890e-01},
55 {3.492859e+12, 1.180770e+00},
56 {4.072078e+12, 1.581190e+00},
57 {4.747743e+12, 2.109970e+00},
58 {5.535526e+12, 2.798060e+00},
59 {6.453742e+12, 3.866420e+00},
60 {6.968660e+12, 4.210170e+00},
61 {7.525308e+12, 4.269800e+00},
136 std::map<std::string, manticore::tableType>
148 void printModels(std::vector<mu::CommandLine::Option> &opts,
char name)
151 for (
auto &entry: opts) {
152 if (entry.shortName == name) {
153 entry.helpText +=
"\n(Available models:";
154 for (
auto &model:
modelMap) { entry.helpText +=
" " + model.first; }
155 entry.helpText +=
")";
166 const char *
const fn =
"Dust::setModel";
170 MU_ERROR(fn,
"Unknown dust model '%s', using '%s'", model, mp->first);
176 auto table = mp->second;
178 double scale = 100.0/
rho;
179 for (
auto &entry: table) { entry.second *= scale; }
199 snprintf(
name,
sizeof(
name),
"beta=%.6g", beta);
225 return exp(gsl_spline_eval(
spline_, nu,
nullptr));
#define MU_ERROR(src, msg,...)
Log a message at level Log::ERROR.
gsl_spline * initSpline(const tableType &table, bool ln)
Initializes cubic spline interpolator.
const std::string & name() const noexcept
Current model name.
void setModel(const std::string &model, double rho=100.0)
Set dust properties model (table-based).
Fixed power-law opacity parameters.
std::string name_
Current model name.
void printModels(std::vector< mu::CommandLine::Option > &opts, char name)
Add available dust model names to options summary.
constexpr double c_light
Speed of light (cm/s).
double kappa(double nu) const
Gas/dust extinction opacity (cm^2/g).
std::map< std::string, manticore::tableType > modelMap
double rho_
Current model gas-to-dust ratio.
const manticore::tableType modelOH5
OH5 model.
std::vector< std::pair< double, double > > tableType
Basic table data.
gsl_spline * spline_
Table interpolator.
Opacity opacity_
Fixed power law.
double rho() const noexcept
Current model gas-to-dust ratio.