Bayesian Analysis of Neutron Star Mass and Radius Observations
models.h
Go to the documentation of this file.
1 /*
2  -------------------------------------------------------------------
3 
4  Copyright (C) 2012-2015, Andrew W. Steiner
5 
6  This file is part of Bamr.
7 
8  Bamr is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 3 of the License, or
11  (at your option) any later version.
12 
13  Bamr is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with Bamr. If not, see <http://www.gnu.org/licenses/>.
20 
21  -------------------------------------------------------------------
22 */
23 /** \file models.h
24  \brief Definition of EOS models
25 */
26 #ifndef MODELS_H
27 #define MODELS_H
28 
29 #include <iostream>
30 
31 #include <o2scl/nstar_cold.h>
32 #include <o2scl/eos_had_schematic.h>
33 #include <o2scl/root_brent_gsl.h>
34 #include <o2scl/cli.h>
35 #include <o2scl/prob_dens_func.h>
36 
37 #include "nstar_cold2.h"
38 #include "entry.h"
39 
40 namespace bamr {
41 
42  /** \brief Base class for an EOS parameterization
43  */
44  class model {
45 
46  public:
47 
48  /// TOV solver and storage for the EOS table
50 
51  model() {
52  cns.nb_start=0.01;
53  }
54 
55  virtual ~model() {}
56 
57  /** \brief Setup new parameters */
58  virtual void setup_params(o2scl::cli &cl) {
59  return;
60  }
61 
62  /** \brief Remove model-specific parameters */
63  virtual void remove_params(o2scl::cli &cl) {
64  return;
65  }
66 
67  /** \brief Set the lower boundaries for all the parameters,
68  masses, and radii
69  */
70  virtual void low_limits(entry &e)=0;
71 
72  /** \brief Set the upper boundaries for all the parameters,
73  masses, and radii
74  */
75  virtual void high_limits(entry &e)=0;
76 
77  /// Return the name of parameter with index \c i
78  virtual std::string param_name(size_t i)=0;
79 
80  /// Return the unit of parameter with index \c i
81  virtual std::string param_unit(size_t i)=0;
82 
83  /** \brief Compute the EOS corresponding to parameters in
84  \c e and put output in \c tab_eos
85  */
86  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)=0;
87 
88  /// Compute the M-R curve directly
89  virtual void compute_mr
90  (entry &e, std::ofstream &scr_out,
92  int &success) {
93  return;
94  }
95 
96  /** \brief A point to calibrate the baryon density with
97  */
98  virtual void baryon_density_point(double &n1, double &e1) {
99  n1=0.0;
100  e1=0.0;
101  return;
102  }
103 
104  /** \brief Function to compute the initial guess
105  */
106  virtual void first_point(entry &e) {
107  return;
108  }
109 
110  };
111 
112  /** \brief Two polytropes
113 
114  Based on the model from \ref Steiner10te. The original limits on
115  the parameters are maintained here.
116 
117  For a polytrope \f$ P = K \varepsilon^{1+1/n} \f$
118  beginning at a pressure of \f$ P_1 \f$, an energy
119  density of \f$ \varepsilon_1 \f$ and a baryon density
120  of \f$ n_{B,1} \f$, the baryon density along the polytrope
121  is
122  \f[
123  n_B = n_{B,1} \left(\frac{\varepsilon}{\varepsilon_1}\right)^{1+n}
124  \left(\frac{\varepsilon_1+P_1}{\varepsilon+P}\right)^{n} \, .
125  \f]
126  Similarly, the chemical potential is
127  \f[
128  \mu_B = \mu_{B,1} \left(1 + \frac{P_1}{\varepsilon_1}\right)^{1+n}
129  \left(1 + \frac{P}{\varepsilon}\right)^{-(1+n)} \, .
130  \f]
131  The expression for the
132  baryon density can be inverted to determine \f$ \varepsilon(n_B) \f$
133  \f[
134  \varepsilon(n_B) = \left[ \left(\frac{n_{B,1}}
135  {n_B \varepsilon_1} \right)^{1/n}
136  \left(1+\frac{P_1}{\varepsilon_1}\right)-K\right]^{-n} \, .
137  \f]
138  Sometimes the baryon susceptibility is also useful
139  \f[
140  \frac{d \mu_B}{d n_B} = \left(1+1/n\right)
141  \left( \frac{P}{\varepsilon}\right)
142  \left( \frac{\mu_B}{n_B}\right) \, .
143  \f]
144  */
145  class two_polytropes : public model {
146 
147  protected:
148 
149  /// Parameter for kinetic part of symmetry energy
151 
152  /// Low-density EOS
154 
155  /// Neutron for \ref se
157 
158  /// Proton for \ref se
160 
161  /// The fiducial baryon density
162  double nb_n1;
163 
164  /// The fiducial energy density
165  double nb_e1;
166 
167  public:
168 
169  /** \brief Setup new model parameters */
170  virtual void setup_params(o2scl::cli &cl);
171 
172  /** \brief Remove model-specific parameters */
173  virtual void remove_params(o2scl::cli &cl);
174 
175  /** \brief A point to calibrate the baryon density with
176 
177  This just returns \ref nb_n1 and \ref nb_e1, which
178  are computed in \ref compute_eos().
179  */
180  virtual void baryon_density_point(double &n1, double &e1) {
181  n1=nb_n1;
182  e1=nb_e1;
183  return;
184  }
185 
186  /// Create a model object
187  two_polytropes();
188 
189  virtual ~two_polytropes() {}
190 
191  /** \brief Set the lower boundaries for all the parameters,
192  masses, and radii
193  */
194  virtual void low_limits(entry &e);
195 
196  /** \brief Set the upper boundaries for all the parameters,
197  masses, and radii
198  */
199  virtual void high_limits(entry &e);
200 
201  /// Return the name of parameter with index \c i
202  virtual std::string param_name(size_t i);
203 
204  /// Return the unit of parameter with index \c i
205  virtual std::string param_unit(size_t i);
206 
207  /** \brief Compute the EOS corresponding to parameters in
208  \c e and put output in \c tab_eos
209  */
210  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
211 
212  /** \brief Function to compute the initial guess
213  */
214  virtual void first_point(entry &e);
215 
216  };
217 
218  /** \brief Alternate polytropes
219 
220  Referred to as Model B in \ref Steiner13tn.
221 
222  As in \ref two_polytropes, but in terms of the exponents instead
223  of the polytropic indices. The lower limit on 'exp1' is 1.5, as
224  in \ref Steiner13tn, but softer EOSs could be allowed by setting
225  this to zero. This doesn't matter much for the final results in
226  \ref Steiner13tn, because the lowest pressure EOSs came from \ref
227  bamr::fixed_pressure anyway.
228 
229  For a polytrope \f$ P = K \varepsilon^{\Gamma} \f$
230  beginning at a pressure of \f$ P_1 \f$, an energy
231  density of \f$ \varepsilon_1 \f$ and a baryon density
232  of \f$ n_{B,1} \f$, the baryon density along the polytrope
233  is
234  \f[
235  n_B = n_{B,1} \left(\frac{\varepsilon}{\varepsilon_1}
236  \right)^{\Gamma/(\Gamma-1)} \left(\frac{\varepsilon+P}
237  {\varepsilon_1+P_1}\right)^{1/(1-\Gamma)}
238  \f]
239  */
241 
242  public:
243 
244  virtual ~alt_polytropes() {}
245 
246  /** \brief Set the lower boundaries for all the parameters,
247  masses, and radii
248  */
249  virtual void low_limits(entry &e);
250 
251  /** \brief Set the upper boundaries for all the parameters,
252  masses, and radii
253  */
254  virtual void high_limits(entry &e);
255 
256  /// Return the name of parameter with index \c i
257  virtual std::string param_name(size_t i);
258 
259  /// Return the unit of parameter with index \c i
260  virtual std::string param_unit(size_t i);
261 
262  /** \brief Compute the EOS corresponding to parameters in
263  \c e and put output in \c tab_eos
264  */
265  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
266 
267  /** \brief Function to compute the initial guess
268  */
269  virtual void first_point(entry &e);
270 
271  };
272 
273  /** \brief Fix pressure on a grid of energy densities
274 
275  Referred to as Model C in \ref Steiner13tn.
276 
277  Instead of polytropes, linearly interpolate pressures on a fixed
278  grid of energy densities. The schematic EOS is used up to an
279  energy density of \f$ 1~\mathrm{fm^{-4}} \f$. The last four
280  parameters are pressures named <tt>pres1</tt> through
281  <tt>pres4</tt>. Then the line segments are defined by the points
282  \f{eqnarray*}
283  P(2~\mathrm{fm}^{-4}) - P(1~\mathrm{fm}^{-4}) = \mathrm{pres1};
284  \quad
285  P(3~\mathrm{fm}^{-4}) - P(2~\mathrm{fm}^{-4}) = \mathrm{pres2};
286  \quad
287  P(5~\mathrm{fm}^{-4}) - P(3~\mathrm{fm}^{-4}) = \mathrm{pres3};
288  \quad
289  P(7~\mathrm{fm}^{-4}) - P(5~\mathrm{fm}^{-4}) = \mathrm{pres4}
290  \f}
291  The final line segment is extrapolated up to
292  \f$ \varepsilon = 10~\mathrm{fm^{-4}} \f$
293 
294  For a linear EOS, \f$ P = P_1 + c_s^2
295  (\varepsilon-\varepsilon_1) \f$ , beginning at a pressure of \f$
296  P_1 \f$ , an energy density of \f$ \varepsilon_1 \f$ and a
297  baryon density of \f$ n_{B,1} \f$, the baryon density is
298  \f[
299  n_B = n_{B,1} \left\{ \frac{\left[\varepsilon+
300  P_1+c_s^2(\varepsilon-\varepsilon_1)\right]}
301  {\varepsilon_1+P_1} \right\}^{1/(1+c_s^2)}
302  \f]
303 
304  */
306 
307  public:
308 
309  virtual ~fixed_pressure() {}
310 
311  /** \brief Set the lower boundaries for all the parameters,
312  masses, and radii
313  */
314  virtual void low_limits(entry &e);
315 
316  /** \brief Set the upper boundaries for all the parameters,
317  masses, and radii
318  */
319  virtual void high_limits(entry &e);
320 
321  /// Return the name of parameter with index \c i
322  virtual std::string param_name(size_t i);
323 
324  /// Return the unit of parameter with index \c i
325  virtual std::string param_unit(size_t i);
326 
327  /** \brief Compute the EOS corresponding to parameters in
328  \c e and put output in \c tab_eos
329  */
330  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
331 
332  /** \brief Function to compute the initial guess
333  */
334  virtual void first_point(entry &e);
335 
336  };
337 
338  /** \brief Generic quark model
339 
340  Referred to as Model D in \ref Steiner13tn.
341 
342  This model uses \ref o2scl::eos_had_schematic near saturation,
343  a polytrope (with a uniform prior in the exponent like
344  \ref alt_polytropes) and then a generic quark matter EOS
345  at high densities.
346 
347  Alford et al. 2005 parameterizes quark matter with
348  \f[
349  P = \frac{3 b_4}{4 \pi^2} \mu^4 - \frac{3 b_2}{4 \pi^2} \mu^2 -B
350  \f]
351  where \f$ \mu \f$ is the quark chemical potential. QCD corrections
352  can be parameterized by expressing \f$ b_4 \equiv 1-c \f$ ,
353  and values of \f$ c \f$ up to 0.4 (or maybe even larger) are
354  reasonable (see discussion after Eq. 4 in Alford et al. (2005)).
355  Note that, in charge-neutral matter in beta equilibrium,
356  \f$ \sum_{i=u,d,s,e} n_i \mu_i = \mu_B n_B = \mu n_Q \f$.
357  where \f$ \mu_B \f$ and \f$ n_B \f$ are the baryon chemical
358  potential and baryon density and \f$ n_Q \f$ is the number
359  density of quarks.
360 
361  The parameter \f$ b_2 = m_s^2 - 4 \Delta^2 \f$ for CFL quark
362  matter, and can thus be positive or negative. A largest possible
363  range might be somewhere between \f$ (400~\mathrm{MeV})^2 \f$,
364  which corresponds to the situation where the gap is zero and the
365  strange quarks receive significant contributions from chiral
366  symmetry breaking, to \f$ (150~\mathrm{MeV})^2-4
367  (200~\mathrm{MeV})^2 \f$ which corresponds to a bare strange
368  quark with a large gap. In units of \f$ \mathrm{fm}^{-1} \f$ ,
369  this corresponds to a range of about \f$ -3.5 \f$ to \f$
370  4~\mathrm{fm}^{-2} \f$ . In Alford et al. (2010), they choose a
371  significantly smaller range, from \f$ -1 \f$ to \f$
372  1~\mathrm{fm}^{-2} \f$.
373 
374  Simplifying the parameterization to
375  \f[
376  P = a_4 \mu^4 +a_2 \mu^2 - B
377  \f]
378  gives the following ranges
379  \f[
380  a_4 = 0.045~\mathrm{to}~0.08
381  \f]
382  and
383  \f[
384  a_2 = -0.3~\mathrm{to}~0.3~\mathrm{fm}^{-2}
385  \f]
386  for the "largest possible range" described above or
387  \f[
388  a_2 = -0.08~\mathrm{to}~0.08~\mathrm{fm}^{-2}
389  \f]
390  for the range used by Alford et al. (2010).
391 
392  The energy density is
393  \f[
394  \varepsilon = B + a_2 \mu^2 + 3 a_4 \mu^4
395  \f]
396 
397  Note that
398  \f{eqnarray*}
399  \frac{dP}{d \mu} &=& 2 a_2 \mu + 4 a_4 \mu^3 = n_Q \nonumber \\
400  \frac{d\varepsilon}{d \mu} &=& 2 a_2 \mu + 12 a_4 \mu^3
401  \f}
402  */
404 
405  public:
406 
407  virtual ~generic_quarks() {}
408 
409  /** \brief Set the lower boundaries for all the parameters,
410  masses, and radii
411  */
412  virtual void low_limits(entry &e);
413 
414  /** \brief Set the upper boundaries for all the parameters,
415  masses, and radii
416  */
417  virtual void high_limits(entry &e);
418 
419  /// Return the name of parameter with index \c i
420  virtual std::string param_name(size_t i);
421 
422  /// Return the unit of parameter with index \c i
423  virtual std::string param_unit(size_t i);
424 
425  /** \brief Compute the EOS corresponding to parameters in
426  \c e and put output in \c tab_eos
427  */
428  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
429 
430  /** \brief Function to compute the initial guess
431  */
432  virtual void first_point(entry &e);
433 
434  };
435 
436  /** \brief A strange quark star model
437 
438  Referred to as Model E in \ref Steiner13tn.
439  */
440  class quark_star : public two_polytropes {
441 
442  public:
443 
444  /** \brief Setup new parameters */
445  virtual void setup_params(o2scl::cli &cl) {
446  return;
447  }
448 
449  /** \brief Remove model-specific parameters */
450  virtual void remove_params(o2scl::cli &cl) {
451  return;
452  }
453 
454  /// The bag constant
455  double B;
456 
457  /** \brief The paramter controlling non-perturbative corrections
458  to \f$ \mu^4 \f$
459  */
460  double c;
461 
462  /// The gap
463  double Delta;
464 
465  /// The strange quark mass
466  double ms;
467 
468  /// The solver to find the chemical potential for zero pressure
470 
471  /// An alternative root finder
473 
474  quark_star() {
475  }
476 
477  virtual ~quark_star() {}
478 
479  /// Compute the pressure as a function of the chemical potential
480  int pressure(size_t nv, const ubvector &x, ubvector &y);
481 
482  /// Compute the pressure as a function of the chemical potential
483  double pressure2(double mu);
484 
485  /** \brief Set the lower boundaries for all the parameters,
486  masses, and radii
487  */
488  virtual void low_limits(entry &e);
489 
490  /** \brief Set the upper boundaries for all the parameters,
491  masses, and radii
492  */
493  virtual void high_limits(entry &e);
494 
495  /// Return the name of parameter with index \c i
496  virtual std::string param_name(size_t i);
497 
498  /// Return the unit of parameter with index \c i
499  virtual std::string param_unit(size_t i);
500 
501  /** \brief Compute the EOS corresponding to parameters in
502  \c e and put output in \c tab_eos
503  */
504  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
505 
506  /** \brief Function to compute the initial guess
507  */
508  virtual void first_point(entry &e);
509 
510  };
511 
512  /** \brief Use QMC computations of neutron matter from
513  \ref Steiner12cn
514 
515  The original model from Steiner and Gandolfi (2012)
516  with
517  \f{eqnarray*}
518  a &=& 13 \pm 0.3~[\mathrm{MeV}] \nonumber \\
519  \alpha &=& 0.50 \pm 0.02 \nonumber \\
520  b &=& 3 \pm 2~[\mathrm{MeV}] \nonumber \\
521  \beta &=& 2.3 \pm 0.2
522  \f}
523  and polytropes similar to \ref bamr::two_polytropes. The
524  remaining 3 parameters are <tt>index1</tt>, <tt>trans1</tt>, and
525  <tt>index2</tt>. In the original paper, the polytrope indices
526  are between 0.2 and 2.0. The transition to the first polytrope
527  at is at a baryon density of \ref rho_trans and the transition
528  to the second is at the energy density in <tt>trans1</tt> which
529  is between 2.0 and 8.0 \f$ \mathrm{fm}^{-4} \f$. The upper limit
530  on polytropic indices has since been changed from 2.0 to 4.0.
531  */
532  class qmc_neut : public two_polytropes {
533 
534  public:
535 
536  qmc_neut();
537 
538  virtual ~qmc_neut();
539 
540  /// Saturation density in \f$ \mathrm{fm}^{-3} \f$
541  double rho0;
542 
543  /// Transition density (default 0.48)
544  double rho_trans;
545 
546  /// Ratio interpolator
548 
549  /// Ratio error interpolator
551 
552  /// Interpolation objects
553  ubvector ed_corr, pres_corr, pres_err;
554 
555  /// Gaussian distribution for proton correction factor
557 
558  /** \brief Set the lower boundaries for all the parameters,
559  masses, and radii
560  */
561  virtual void low_limits(entry &e);
562 
563  /** \brief Set the upper boundaries for all the parameters,
564  masses, and radii
565  */
566  virtual void high_limits(entry &e);
567 
568  /// Return the unit of parameter with index \c i
569  virtual std::string param_name(size_t i);
570 
571  /// Return the unit of parameter with index \c i
572  virtual std::string param_unit(size_t i);
573 
574  /** \brief Compute the EOS corresponding to parameters in
575  \c e and put output in \c tab_eos
576  */
577  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
578 
579  /** \brief Function to compute the initial guess
580  */
581  virtual void first_point(entry &e);
582  };
583 
584  /** \brief QMC + two polytropes for \ref Steiner15un
585 
586  This class attempts to expand the parameter distributions
587  for \f$ a \f$ and \f$ \alpha \f$ and re-cast the paramters
588  \f$ b \f$ and \f$ \beta \f$ into \f$ S \f$ and \f$ L \f$.
589  \f{eqnarray*}
590  a &=& 4~\mathrm{to}~16~[\mathrm{MeV}] \nonumber \\
591  \alpha &=& 0~\mathrm{to}~1 \nonumber \\
592  S &=& 28~\mathrm{to}~38~[\mathrm{MeV}]\nonumber \\
593  L &=& 0~\mathrm{to}~120~[\mathrm{MeV}]
594  \f}
595 
596  Polytropes are added at high density similar to \ref
597  bamr::two_polytropes, and the four parameters are
598  <tt>index1</tt>, <tt>trans1</tt>, <tt>index2</tt>, and
599  <tt>trans2</tt>. The parameter limits are a bit different, the
600  indices are allowed to be between 0.2 and 8.0 and the transition
601  densities are allowed to be between 0.75 and 8.0 \f$
602  \mathrm{fm}^{-4} \f$.
603  */
604  class qmc_twop : public two_polytropes {
605 
606  public:
607 
608  qmc_twop();
609 
610  virtual ~qmc_twop();
611 
612  /// Saturation density in \f$ \mathrm{fm}^{-3} \f$
613  double rho0;
614 
615  /// Transition density (default 0.16, different than \ref bamr::qmc_neut)
616  double rho_trans;
617 
618  /** \brief Set the lower boundaries for all the parameters,
619  masses, and radii
620  */
621  virtual void low_limits(entry &e);
622 
623  /** \brief Set the upper boundaries for all the parameters,
624  masses, and radii
625  */
626  virtual void high_limits(entry &e);
627 
628  /// Return the name of parameter with index \c i
629  virtual std::string param_name(size_t i);
630 
631  /// Return the unit of parameter with index \c i
632  virtual std::string param_unit(size_t i);
633 
634  /** \brief Compute the EOS corresponding to parameters in
635  \c e and put output in \c tab_eos
636  */
637  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
638 
639  /** \brief Function to compute the initial guess
640  */
641  virtual void first_point(entry &e);
642 
643  };
644 
645  /** \brief QMC + line segments model for \ref Steiner15un
646 
647  This is similar to \ref bamr::qmc_twop, except that the
648  high-density EOS is a set of line-segments, similar to \ref
649  bamr::fixed_pressure. The limits on the high-density EOS
650  parameters are the same as those in \ref bamr::fixed_pressure.
651  */
652  class qmc_fixp : public two_polytropes {
653 
654  public:
655 
656  qmc_fixp();
657 
658  virtual ~qmc_fixp();
659 
660  double ed1;
661  double ed2;
662  double ed3;
663  double ed4;
664 
665  /// Saturation density in \f$ \mathrm{fm}^{-3} \f$
666  double rho0;
667 
668  /// Transition density (default 0.16, different than \ref bamr::qmc_neut)
669  double rho_trans;
670 
671  /** \brief Set the lower boundaries for all the parameters,
672  masses, and radii
673  */
674  virtual void low_limits(entry &e);
675 
676  /** \brief Set the upper boundaries for all the parameters,
677  masses, and radii
678  */
679  virtual void high_limits(entry &e);
680 
681  /// Return the unit of parameter with index \c i
682  virtual std::string param_name(size_t i);
683 
684  /// Return the unit of parameter with index \c i
685  virtual std::string param_unit(size_t i);
686 
687  /** \brief Compute the EOS corresponding to parameters in
688  \c e and put output in \c tab_eos
689  */
690  virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out);
691 
692  /** \brief Function to compute the initial guess
693  */
694  virtual void first_point(entry &e);
695 
696  };
697 
698 
699 }
700 
701 #endif
double rho_trans
Transition density (default 0.16, different than bamr::qmc_neut)
Definition: models.h:616
virtual std::string param_name(size_t i)
Return the unit of parameter with index i.
virtual void remove_params(o2scl::cli &cl)
Remove model-specific parameters.
Definition: models.h:63
o2scl::prob_dens_gaussian pdg
Gaussian distribution for proton correction factor.
Definition: models.h:556
o2scl::cli::parameter_double p_kin_sym
Parameter for kinetic part of symmetry energy.
Definition: models.h:150
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual void high_limits(entry &e)=0
Set the upper boundaries for all the parameters, masses, and radii.
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)=0
Compute the EOS corresponding to parameters in e and put output in tab_eos.
A simplified version of nstar_cold.
Definition: nstar_cold2.h:50
double c
The paramter controlling non-perturbative corrections to .
Definition: models.h:460
A data class which holds the EOS parameters, the masses and the radii.
Definition: entry.h:38
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
Main namespace.
Definition: bamr.h:54
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
double Delta
The gap.
Definition: models.h:463
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
double pressure2(double mu)
Compute the pressure as a function of the chemical potential.
virtual void baryon_density_point(double &n1, double &e1)
A point to calibrate the baryon density with.
Definition: models.h:180
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
o2scl::fermion neut
Neutron for se.
Definition: models.h:156
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
virtual void first_point(entry &e)
Function to compute the initial guess.
o2scl::mroot_hybrids gmh
The solver to find the chemical potential for zero pressure.
Definition: models.h:469
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
A strange quark star model.
Definition: models.h:440
virtual std::string param_name(size_t i)=0
Return the name of parameter with index i.
two_polytropes()
Create a model object.
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
double ms
The strange quark mass.
Definition: models.h:466
QMC + two polytropes for Steiner15un.
Definition: models.h:604
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
Base class for an EOS parameterization.
Definition: models.h:44
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
double rho0
Saturation density in .
Definition: models.h:613
QMC + line segments model for Steiner15un.
Definition: models.h:652
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual void first_point(entry &e)
Function to compute the initial guess.
virtual void first_point(entry &e)
Function to compute the initial guess.
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
Definition of entry class.
o2scl::eos_had_schematic se
Low-density EOS.
Definition: models.h:153
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
double nb_n1
The fiducial baryon density.
Definition: models.h:162
o2scl::root_brent_gsl grb
An alternative root finder.
Definition: models.h:472
o2scl::interp_vec si_err
Ratio error interpolator.
Definition: models.h:550
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
o2scl::interp_vec si
Ratio interpolator.
Definition: models.h:547
virtual void first_point(entry &e)
Function to compute the initial guess.
virtual std::string param_name(size_t i)
Return the name of parameter with index i.
virtual void first_point(entry &e)
Function to compute the initial guess.
Definition: models.h:106
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void setup_params(o2scl::cli &cl)
Setup new parameters.
Definition: models.h:445
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual void first_point(entry &e)
Function to compute the initial guess.
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
virtual void setup_params(o2scl::cli &cl)
Setup new model parameters.
Definition of nstar_cold2.
Fix pressure on a grid of energy densities.
Definition: models.h:305
virtual void remove_params(o2scl::cli &cl)
Remove model-specific parameters.
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
virtual void setup_params(o2scl::cli &cl)
Setup new parameters.
Definition: models.h:58
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void first_point(entry &e)
Function to compute the initial guess.
double rho_trans
Transition density (default 0.16, different than bamr::qmc_neut)
Definition: models.h:669
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void remove_params(o2scl::cli &cl)
Remove model-specific parameters.
Definition: models.h:450
double rho0
Saturation density in .
Definition: models.h:541
ubvector ed_corr
Interpolation objects.
Definition: models.h:553
virtual void high_limits(entry &e)
Set the upper boundaries for all the parameters, masses, and radii.
virtual void low_limits(entry &e)=0
Set the lower boundaries for all the parameters, masses, and radii.
double B
The bag constant.
Definition: models.h:455
Alternate polytropes.
Definition: models.h:240
virtual std::string param_name(size_t i)
Return the unit of parameter with index i.
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
virtual void low_limits(entry &e)
Set the lower boundaries for all the parameters, masses, and radii.
Generic quark model.
Definition: models.h:403
virtual void first_point(entry &e)
Function to compute the initial guess.
virtual std::string param_unit(size_t i)=0
Return the unit of parameter with index i.
virtual void first_point(entry &e)
Function to compute the initial guess.
double rho_trans
Transition density (default 0.48)
Definition: models.h:544
virtual void baryon_density_point(double &n1, double &e1)
A point to calibrate the baryon density with.
Definition: models.h:98
Two polytropes.
Definition: models.h:145
nstar_cold2 cns
TOV solver and storage for the EOS table.
Definition: models.h:49
double rho0
Saturation density in .
Definition: models.h:666
double nb_e1
The fiducial energy density.
Definition: models.h:165
virtual std::string param_unit(size_t i)
Return the unit of parameter with index i.
Use QMC computations of neutron matter from Steiner12cn.
Definition: models.h:532
virtual void compute_eos(entry &e, int &success, std::ofstream &scr_out)
Compute the EOS corresponding to parameters in e and put output in tab_eos.
int pressure(size_t nv, const ubvector &x, ubvector &y)
Compute the pressure as a function of the chemical potential.
virtual void compute_mr(entry &e, std::ofstream &scr_out, o2scl::o2_shared_ptr< o2scl::table_units<> >::type tab_mvsr, int &success)
Compute the M-R curve directly.
Definition: models.h:90
o2scl::fermion prot
Proton for se.
Definition: models.h:159

Documentation generated with Doxygen. Bamr documentation is under the GNU Free Documentation License.