jesterTOV.eos.metamodel.MetaModel_EOS_model#

class MetaModel_EOS_model(
kappas=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
v_nq=[0.0, 0.0, 0.0, 0.0, 0.0],
b_sat=17.0,
b_sym=25.0,
nsat=0.16,
nmin_MM_nsat=0.75,
nmax_nsat=12,
ndat=200,
crust_name='DH',
max_n_crust_nsat=0.5,
min_n_crust_nsat=2e-13,
ndat_spline=10,
proton_fraction=None,
)[source]#

Bases: Interpolate_EOS_model

Meta-model equation of state for nuclear matter.

This class implements the meta-modeling approach for nuclear equation of state as described in Margueron et al. (Phys. Rev. C 103, 045803, 2021). The EOS is constructed by combining a realistic crust model with a meta-model for core densities based on nuclear empirical parameters (NEPs).

The meta-model uses a kinetic + potential energy decomposition:

\[\varepsilon(n, \delta) = \varepsilon_{\mathrm{kin}}(n, \delta) + \varepsilon_{\mathrm{pot}}(n, \delta)\]

where \(\delta = (n_n - n_p)/n\) is the isospin asymmetry parameter.

The kinetic part is based on a Thomas-Fermi gas with relativistic corrections, while the potential part uses a polynomial expansion around saturation density \(n_0\).

__init__(
kappas=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
v_nq=[0.0, 0.0, 0.0, 0.0, 0.0],
b_sat=17.0,
b_sym=25.0,
nsat=0.16,
nmin_MM_nsat=0.75,
nmax_nsat=12,
ndat=200,
crust_name='DH',
max_n_crust_nsat=0.5,
min_n_crust_nsat=2e-13,
ndat_spline=10,
proton_fraction=None,
)[source]#

Initialize the meta-model EOS with nuclear empirical parameters.

The meta-model approach parameterizes nuclear matter using empirical parameters measured from finite nuclei and infinite nuclear matter calculations. This implementation combines a realistic crust model with a meta-model description of the core using nuclear empirical parameters (NEPs).

Reference: Margueron et al., Phys. Rev. C 103, 045803 (2021)

Physical Framework: The meta-model decomposes the energy density as:

\[\varepsilon(n, \delta) = \varepsilon_{\mathrm{kin}}(n, \delta) + \varepsilon_{\mathrm{pot}}(n, \delta)\]

where \(\delta = (n_n - n_p)/n\) is the isospin asymmetry parameter.

Parameters:
  • kappas (tuple[Float, Float, Float, Float, Float, Float], optional) – Meta-model expansion coefficients \((\kappa_{\mathrm{sat}}, \kappa_{\mathrm{sat2}}, \kappa_{\mathrm{sat3}}, \kappa_{\mathrm{NM}}, \kappa_{\mathrm{NM2}}, \kappa_{\mathrm{NM3}})\). Controls the density dependence of kinetic energy corrections in the Thomas-Fermi gas approximation. These parameters modify the kinetic energy beyond the non-relativistic limit. Defaults to (0.0, 0.0, 0.0, 0.0, 0.0, 0.0).

  • v_nq (list[float], optional) – Quartic isospin coefficients \(v_{\mathrm{nq},\alpha}\) for symmetry energy expansion up to \(\delta^4\) terms. These control the high-order isospin dependence of the potential energy contribution. Defaults to [0.0, 0.0, 0.0, 0.0, 0.0].

  • b_sat (Float, optional) – Saturation parameter \(b_{\mathrm{sat}}\) controlling potential energy cutoff function. Higher values lead to sharper exponential cutoffs at high density. Defaults to 17.0.

  • b_sym (Float, optional) – Symmetry parameter \(b_{\mathrm{sym}}\) for isospin-dependent cutoff corrections. Modifies the cutoff parameter as \(b = b_{\mathrm{sat}} + b_{\mathrm{sym}} \delta^2\). Defaults to 25.0.

  • nsat (Float, optional) – Nuclear saturation density \(n_0\) [\(\mathrm{fm}^{-3}\)]. The density at which symmetric nuclear matter reaches its minimum energy per nucleon. Defaults to 0.16.

  • nmin_MM_nsat (Float, optional) – Starting density for meta-model region as fraction of \(n_0\). Must be above the crust-core transition density. Defaults to 0.75 (= 0.12/0.16).

  • nmax_nsat (Float, optional) – Maximum density for EOS construction in units of \(n_0\). Determines the high-density reach of the neutron star model. Defaults to 12.

  • ndat (Int, optional) – Number of density points for meta-model region discretization. Higher values provide smoother interpolation at computational cost. Defaults to 200.

  • crust_name (str, optional) – Crust model name (e.g., ‘DH’, ‘BPS’) or path to custom .npz file containing crust EOS data. The crust provides low-density EOS data below nuclear saturation. Defaults to ‘DH’.

  • max_n_crust_nsat (Float, optional) – Maximum crust density as fraction of \(n_0\). Defines the crust-core transition region where spline matching occurs. Defaults to 0.5.

  • ndat_spline (Int, optional) – Number of points for smooth spline interpolation across crust-core transition. Ensures thermodynamic consistency and causality preservation. Defaults to 10.

  • proton_fraction (bool | float | None, optional) –

    Proton fraction treatment strategy:

    • None: Calculate \(\beta\)-equilibrium (charge neutrality + weak equilibrium)

    • float: Use fixed proton fraction value throughout the star

    • bool: Use simplified uniform composition model

    \(\beta\)-equilibrium is the physical condition for neutron star matter. Defaults to None.

Note

The meta-model uses a Thomas-Fermi kinetic energy approximation with relativistic corrections controlled by the \(\kappa\) parameters, combined with a potential energy expansion around saturation density with an exponential cutoff at high densities. This approach provides a flexible framework for exploring nuclear physics uncertainties in neutron star structure calculations.

Methods

__init__([kappas, v_nq, b_sat, b_sym, nsat, ...])

Initialize the meta-model EOS with nuclear empirical parameters.

compute_b(delta)

compute_cs2(n, p, e, x, delta, f_1, f_star, ...)

compute_energy(x, f_1, f_star, f_star2, ...)

compute_f_1(delta)

compute_f_star(delta)

compute_f_star2(delta)

compute_f_star3(delta)

compute_pressure(x, f_1, f_star, f_star2, ...)

compute_proton_fraction(coefficient_sym, n)

Compute proton fraction from beta-equilibrium condition.

compute_v(v_sat, v_sym2, delta)

compute_x(n)

construct_eos(params)

Construct the complete equation of state from nuclear empirical parameters.

esym(coefficient_sym, x)

get_required_parameters()

Return list of nuclear empirical parameters required by MetaModel.

interpolate_eos(n, p, e)

Convert physical EOS quantities to geometric units and compute auxiliary quantities.

u(x, b, alpha)

compute_b(delta)[source]#
compute_cs2(n, p, e, x, delta, f_1, f_star, f_star2, f_star3, b, v)[source]#
compute_energy(x, f_1, f_star, f_star2, f_star3, b, v)[source]#
Return type:

Array

compute_f_1(delta)[source]#
compute_f_star(delta)[source]#
compute_f_star2(delta)[source]#
compute_f_star3(delta)[source]#
compute_pressure(x, f_1, f_star, f_star2, f_star3, b, v)[source]#
Return type:

Array

compute_proton_fraction(coefficient_sym, n)[source]#

Compute proton fraction from beta-equilibrium condition.

This method solves the beta-equilibrium condition:

\[\mu_e + \mu_p - \mu_n = 0\]

where the chemical potentials are related to the EOS through:

\[\mu_p - \mu_n = \frac{\partial \varepsilon}{\partial x_p} = -4 E_{\mathrm{sym}} (1 - 2x_p)\]

and the electron chemical potential is \(\mu_e = \hbar c (3\pi^2 x_p n)^{1/3}\).

Parameters:
  • coefficient_sym (list) – Symmetry energy expansion coefficients.

  • n (Float[Array, "n_points"]) – Number density [\(\mathrm{fm}^{-3}\)].

Return type:

Float[Array, 'n_points']

Returns:

Float[Array, “n_points”] – Proton fraction \(x_p = n_p/n\) as a function of density.

compute_v(v_sat, v_sym2, delta)[source]#
Return type:

Array

compute_x(n)[source]#
construct_eos(params)[source]#

Construct the complete equation of state from nuclear empirical parameters.

This method builds the full EOS by combining the crust model with the meta-model core, ensuring thermodynamic consistency and causality.

Parameters:

params (dict[str, float]) –

Nuclear empirical parameters including:

  • E_sat: Saturation energy per nucleon [\(\mathrm{MeV}\)] (default: -16.0)

  • K_sat: Incompressibility at saturation [\(\mathrm{MeV}\)]

  • Q_sat, Z_sat: Higher-order saturation parameters [\(\mathrm{MeV}\)]

  • E_sym: Symmetry energy [\(\mathrm{MeV}\)]

  • L_sym: Symmetry energy slope [\(\mathrm{MeV}\)]

  • K_sym, Q_sym, Z_sym: Higher-order symmetry parameters [\(\mathrm{MeV}\)]

Return type:

EOSData

Returns:

EOSData – Complete EOS with all required arrays

esym(coefficient_sym, x)[source]#
get_required_parameters()[source]#

Return list of nuclear empirical parameters required by MetaModel.

Return type:

list[str]

Returns:

list[str] – [“E_sat”, “K_sat”, “Q_sat”, “Z_sat”, “E_sym”, “L_sym”, “K_sym”, “Q_sym”, “Z_sym”]

u(x, b, alpha)[source]#