eos module controls

The MESA/eos parameters are given default values here. The actual values as modified by your inlist are stored in the EoS_General_Info data structure. They can be accessed by code at runtime using the eos_handle to get a pointer to it.

PC EOS controls


Select whether to use the PC eos.

use_PC = .false.


Only consider isotopes in the EOS if their mass fraction is above this value.

mass_fraction_limit_for_PC = 1d-4



Blend in logRho from no PC for below logRho1_PC_limit to all PC above logRho2_PC_limit.

logRho1_PC_limit = 2.999d0 ! keep < logRho2_OPAL_SCVH_limit
logRho2_PC_limit = 2.8d0 ! must be > 2.8 or so to avoid NaN's from PC



Blend in logT from all PC for below logT1_PC_limit to no PC above logT2_PC_limit. Unused by default. See subsequent controls.

logT1_PC_limit = 7.6d0 ! okay for pure PC for logT < this (like logT_all_OPAL)
logT2_PC_limit = 7.7d0 ! don't use PC for logT > this (like logT_all_HELM)




If PC_use_Gamma_limit_instead_of_T is true, then these controls are active instead of logT1_PC_limit and logT2_PC_limit. Here, \(\Gamma_e\) is the electron Coulomb coupling parameter. Blend in log_Gamma_e from no PC for below log_Gamma_e_all_HELM to all PC above log_Gamma_e_all_PC.

PC_use_Gamma_limit_instead_of_T = .true.
log_Gamma_e_all_HELM = -1.8d0
log_Gamma_e_all_PC = -1.7d0



PC crystallization boundaries. Here, \(\Gamma\) is the mean ion Coulomb coupling parameter.

PC_Gamma_start_crystal = 170d0
PC_Gamma_full_crystal = 180d0

FreeEOS controls


Select whether to use FreeEOS.

use_FreeEOS = .true.

logQ_max_FreeEOS_hi = 5.6d0
logQ_max_FreeEOS_lo = 5.5d0
logQ_min_FreeEOS_hi = -9.9d0
logQ_min_FreeEOS_lo = -10.0d0

logRho_min_FreeEOS_hi = -18.0d0
logRho_min_FreeEOS_lo = -18.1d0
logRho_max_FreeEOS_hi = 10.1d0
logRho_max_FreeEOS_lo = 10.0d0

logT_min_FreeEOS_hi = 3.1d0
logT_min_FreeEOS_lo = 3.0d0
logT_max_FreeEOS_hi = 7.7d0 ! for cburn_inward
logT_max_FreeEOS_lo = 7.6d0

logQ_cut_FreeEOS_lo_Z_max = 0.3d0
logQ_cut_lo_Z_FreeEOS_hi = 0.5d0
logQ_cut_lo_Z_FreeEOS_lo = -0.5d0
logQ_cut_hi_Z_FreeEOS_hi = -0.5d0 ! for wd_c_core_ignition
logQ_cut_hi_Z_FreeEOS_lo = -1.5d0

logRho_cut_FreeEOS_hi = -5.5d0 ! for make_zams_low_mass, make_brown_dwarf
logRho_cut_FreeEOS_lo = -6.5d0

logT_cut_FreeEOS_hi = 6.5d0 ! for inlist_cool in make_o_ne_wd
logT_cut_FreeEOS_lo = 6.4d0

suffix_for_FreeEOS_Z(:) = ''
suffix_for_FreeEOS_Z(13) = '_CO' ! Z = 0.8
suffix_for_FreeEOS_Z(14) = '_CO' ! Z = 0.9
suffix_for_FreeEOS_Z(15) = '_CO' ! Z = 1.0

OPAL/SCVH controls


Select whether to use the OPAL/SCVH EOS. These two EOSes are pre-blended with each other.

use_OPAL_SCVH = .true.

logT_low_all_HELM = 2.2d0 ! HELM for lgT <= this
logT_low_all_SCVH = 2.3d0 ! SCVH for lgT >= this

logT_all_OPAL = 7.5d0 ! OPAL for lgT <= this
logT_all_HELM = 7.6d0 ! HELM for lgT >= this

logRho1_OPAL_SCVH_limit = 3.50d0  ! must be <= 3.7
logRho2_OPAL_SCVH_limit = 3.48d0 ! must be < logRho1_OPAL_SCVH_limit
logRho_min_OPAL_SCVH_limit = -14.299d0

logQ_max_OPAL_SCVH = 5.3d0
logQ_min_OPAL_SCVH = -8.0d0

Z_all_OPAL = 0.035d0
Z_all_HELM = 0.040d0

HELM controls

HELM is our backstop EOS. Therefore, there is no option that completely deactivates HELM.

coulomb_temp_cut_HELM = -1d99
coulomb_den_cut_HELM = -1d99
include_radiation = .true.
include_elec_pos = .true.

Skye controls


Select whether to use the Skye EOS.

use_Skye = .true.


Only consider isotopes in the EOS if their mass fraction is above this value.

mass_fraction_limit_for_Skye = 1d-4


If true, set neutral ground state as zero point for each ion species energy. If false, zero point assumes fully ionized.

Skye_use_ion_offsets = .true.

Skye Gamma Limits

The one-component plasma fits in Skye are only valid in certain ranges of the ion interaction parameter Gamma. Beyond these, Skye employs thermodynamic extrapolation. The default limits are set to the edges of the data that went into the fits. Only expand these ranges (lower min, raise max) if you have reason to believe the OCP fits are valid in the expanded range.

Skye_min_gamma_for_solid = 170
Skye_max_gamma_for_liquid = 200

Skye Solid Mixing Corrections

Skye computes corrections to the linear mixing rule in the solid phase using the prescription from either Ogata+1993 or Potekhin & Chabrier 2013. The former provides better agreement with calculations done at typical white dwarf charge ratios (R = Z2 / Z1 ~ 4/3 for C/O), see e.g. Blouin+2020. The latter gives better agreement with analytic expectations at large charge ratios R > 2. Select between these choices by specifying either "Ogata" or "PC".

Skye_solid_mixing_rule = "PC"

Skye Blending

replace the polygon blend with simple Rho/T blends

use_simple_Skye_blends = .false.
logRho_min_for_any_Skye = 2.3
logRho_min_for_all_Skye = 2.4
logT_min_for_any_Skye = 7.2
logT_min_for_all_Skye = 7.4

CMS controls


Select whether to use the CMS EOS. (EXPERIMENTAL)

use_CMS = .false.


Use a single table for a fixed composition. Don’t interpolate in H mass fraction.

CMS_use_fixed_composition = .false.


Integer with valid values from 0 to 10 inclusive corresponding to the table to use in the fixed composition case. A value of 0 corresponds to the pure Helium table while a value of 10 corresponds the the pure Hydrogen table.

to use table
set index
mesa-CMS_000x.data -> 0
mesa-CMS_010x.data -> 1
mesa-CMS_020x.data -> 2
mesa-CMS_030x.data -> 3
mesa-CMS_040x.data -> 4
mesa-CMS_050x.data -> 5
mesa-CMS_060x.data -> 6
mesa-CMS_070x.data -> 7
mesa-CMS_080x.data -> 8
mesa-CMS_090x.data -> 9
mesa-CMS_100x.data -> 10

CMS_fixed_composition_index = -1

max_Z_for_any_CMS = -1 max_Z_for_all_CMS = -1 logQ_max_for_any_CMS = -1 logQ_max_for_all_CMS = -1 logQ_min_for_any_CMS = -1 logQ_min_for_all_CMS = -1 logRho_max_for_all_CMS = -1 logRho_max_for_any_CMS = -1 logRho_min_for_all_CMS = -1 logRho_min_for_any_CMS = -1 logT_max_for_all_CMS = -1 logT_max_for_any_CMS = -1 logT_min_for_all_CMS = -1 logT_min_for_any_CMS = -1 logT_max_for_all_CMS_pure_He = -1 logT_max_for_any_CMS_pure_He = -1

Miscellaneous controls

eosDT_use_linear_interp_for_X = .false.
eosDT_use_linear_interp_to_HELM = .false.
eosDT_file_prefix = 'mesa'
okay_to_convert_ierr_to_skip = .true.
tiny_fuzz = 1d-6

Other EOS controls


Select whether to use the other (i.e., user-provided) EOS component. If true, the user must provide the routines other_eos_component and other_eos_frac. See eos/other/other_eos.f90 for more details.

use_other_eos_component = .false.


Select whether to call the other_eos_results hook. This provides an opportunity for the user to modify the results from the EOS right before they are returned. If true, the user must provide the routine other_eos_results. See eos/other/other_eos.f90 for more details.

use_other_eos_results = .false.

User controls

These are arrays of size(10) that can be used to pass in custom information to the eos

eos_ctrl(:) = 0d0 eos_integer_ctrl(:) = 0 eos_logical_ctrl(:) = .false. eos_character_ctrl(:) = ‘’

Debugging controls

dbg = .false.
logT_lo = -1d99
logT_hi = 1d99
logRho_lo = -1d99
logRho_hi = 1d99
X_lo = -1d99
X_hi = 1d99
Z_lo = -1d99
Z_hi = 1d99

Extra inlist controls

One can split an eos inlist into pieces using the following parameters. It works recursively, so the extras can read extras too.



If read_extra_eos_inlist(i) is true, then read &eos from the file extra_eos_inlist_name(i).

read_extra_eos_inlist(:) = .false.
extra_eos_inlist_name(:) = 'undefined'