Class eos_tov_buchdahl (o2scl)

O2scl_eos : Class List

class o2scl::eos_tov_buchdahl : public o2scl::eos_tov

The Buchdahl EOS for the TOV solver.

The Buchdahl EOS is

\[ \varepsilon = 12 \sqrt{P_{*} P}- 5 P \]
which can be inverted to give
\[ P = - \frac{\varepsilon}{5} + \frac{72 P^{*}}{25} \left[1+\sqrt{1-\frac{5 \varepsilon}{36 P^{*}}} \right] \]

Physical solutions are obtained only for \( P< 25 P_{*}/144 \) (ensuring that the argument to the square root is positive) and \( \beta=G M/R<1/6 \) (ensuring that the EOS is not acausal).

The baryon chemical potential is

\[ \mu = \mu_1 \left(\sqrt{P_1}-3\sqrt{P^{*}}\right)^{1/2} \left(\sqrt{P}-3\sqrt{P^{*}}\right)^{-1/2} \]
The baryon density is
\[ n_B = n_{B,1} + 12 \frac{\sqrt{P^{*} P}}{\mu_1} \left(1 - \frac{\sqrt{P}}{3 \sqrt{P^{*}}} \right)^{3/2} \left(1 - \frac{\sqrt{P_1}}{3 \sqrt{P^{*}}}\right)^{-1/2} \]

In the case that one assumes \( \mu_1 = m_n \) and \( P_1 = 0 \), the baryon density can be simplified to

\[ n m_n = 12 \sqrt{P p_{*}} \left( 1-\frac{1}{3} \sqrt{P/p_{*}} \right)^{3/2} \]
c.f. Eq. 10 in Lattimer01.

The mass-radius curve is the solution of the equation

\[ R=\pi (1-\beta)(1-2 \beta)^{-1} A^{-1} \]
where \( \beta = GM/R \) and \( A \) (which has units of inverse km) is defined by
\[ A^2 = \frac{288 \pi G P^{*}}{1-2 \beta} \]

The central pressure and energy density are

\[ P_c = 36 p_{*} \beta^2 \]
\[ {\varepsilon}_c = 72 p_{*} \beta (1-5 \beta/2) \]

To obtain energy density and pressure profiles can be obtained by solving

\[ r=r^{\prime} \left(\frac{1-\beta+u}{1-2 \beta}\right) \]
for the new coordinate \( r^{\prime} \) where \( u \) is defined by
\[ u = \beta \frac{\sin(A r^{\prime})}{A r^{\prime}} \]
Using these, the profiles are
\[ P(r) = A^2 (1- 2 \beta) u^2 \left[ 8 \pi \left(1 - \beta+u\right)^2\right]^{-1} \]
and
\[ \varepsilon(r) = 2 A^2 (1- 2 \beta) u \left( 1 - \beta + 3 u/2\right) \left[ 8 \pi \left(1 - \beta+u\right)^2\right]^{-1} \]

Based on Lattimer01 .

Public Functions

eos_tov_buchdahl()
~eos_tov_buchdahl()
void set_baryon_density(double nb, double ed)

Set the baryon density.

double ed_from_pr(double pr)

From the pressure, return the energy density.

double pr_from_ed(double ed)

From the energy density, return the pressure.

double nb_from_ed(double ed)

From the energy density, return the baryon density.

double nb_from_pr(double pr)

From the pressure, return the baryon density.

double ed_from_nb(double nb)

From the baryon density, return the energy density.

double pr_from_nb(double nb)

From the baryon density, return the pressure.

void ed_nb_from_pr(double pr, double &ed, double &nb)

Given the pressure, produce the energy and number densities.

If the baryon density is not specified, it should be set to zero or baryon_column should be set to false

double rad_from_gm(double gm)

Given the gravitational mass, compute the radius.

double ed_from_r_gm(double r, double gm)

Compute the energy density at radius r for a fixed gravitational mass.

Idea for Future:

This function is inefficient because it solves for the radius each time. Improve this.

double pr_from_r_gm(double r, double gm)

Compute the pressure at radius r for a fixed gravitational mass.

Idea for Future:

This function is inefficient because it solves for the radius each time. Improve this.

Public Members

double Pstar

The parameter with units of pressure in units of solar masses per km cubed (default value \( 3.2 \times 10^{-5} \) )

Protected Functions

double solve_rad(double rad, double gm)

Solve for the radius at fixed gravitational mass.

double solve_rp(double rp, double r, double gm, double rad)

Solve for \( r^{\prime} \) as a function of \( r \) at fixed gravitational mass.

Protected Attributes

double nb1

The baryon density at ed1.

double ed1

The energy density for which the baryon density is known.

double pr1

The pressure at ed1.

root_brent_gsl rbg

Solver.