MIST

Here we describe the interface we provide to the MIST v1.2 library of stellar evolutionary tracks. MIST specific code is housed in the MIST submodule, which can be accessed as

using StellarTracks.MIST # load all exported methods
using StellarTracks.MIST: MISTLibrary, X, Y, Z # load specific methods

The main papers describing the MIST family of stellar models are Dotter [1] and Choi et al. [14]. The tracks as provided by the MIST team here include the equivalent evolutionary points (EEPs) necessary to support robust isochrone creation and interpolation.

The MIST library has been widely used as it covers the full range of stellar masses and metallicities relevant for most studies of stellar populations. MIST includes stars with initial stellar masses from 0.1 to 300 solar masses and initial metallicities $-4 \le [\text{M}/\text{H}] \le 0.5$. MIST includes post-MS and post-RGB evolution (when appropriate). MIST also provides rotating (vvcrit=0.4) and non-rotating (vvcrit=0.0) models.

Data Acquisition

This package handles downloading and pre-processing of the MIST stellar tracks. The main access point we provide is MISTLibrary, which will load and make available the full library of stellar tracks. The first time you call this method, you will be prompted to download the required data files. The total data volume that will be downloaded is about 1.3 GB and will total 158 MB after processing. Information on customizing the install location is available here. The data can be uninstalled by running using DataDeps; rm(datadep"MISTv1.2_vvcrit0.0"; recursive=true); rm(datadep"MISTv1.2_vvcrit0.4"; recursive=true). With all the tracks available, we are able to perform operations like interpolating isochrones at any age and metallicity within the MIST parameter space.

Table Details

The user guide for the MIST products is available here. The full MIST tracks contain 77 data columns originating from the MESA output. An description of the columns is available here. Currently, we process the raw tracks and only save the subset of columns given by StellarTracks.MIST.select_columns (see below). These columns are the ones most commonly needed for computing isochrones and applying bolometric corrections to compare against observed stellar populations. This choice is an optimization for storage space, load time, and development simplicity. If you require access to more columns, please submit an issue on the source repository and we can consider options.

using StellarTracks.MIST
MIST.select_columns # These columns are saved from raw tracks
(:star_age, :log_L, :log_Teff, :log_g, :log_surf_cell_z)

Examples

Load the full MIST library of non-rotating models vvcrit=0, which is downloaded via DataDeps.jl if not already available. MIST also provides rotating models with vvcrit=0.4 which can be loaded with MISTLibrary(0.4).

using StellarTracks.MIST
p = MISTLibrary(0.0)
Structure of interpolants for the MIST library of stellar tracks with vvcrit=0.0. Valid range of metallicities is (-4.0, 0.5).

Use the MIST.MISTLibrary to interpolate an isochrone at log10(age [yr]) = 10.05 and metallicity $[\text{M}/\text{H}] = -1.234$. The isochrone is returned as a NamedTuple.

iso = isochrone(p, 10.05, -1.234)
(eep = [248, 249, 250, 251, 252, 253, 254, 255, 256, 257  …  1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710], m_ini = [0.10025280033448683, 0.10168662186827446, 0.10353974922561122, 0.10612929089041596, 0.10909595817335888, 0.11233603774056, 0.11606609846064037, 0.12035213801026332, 0.12474538252191669, 0.1291430781742897  …  0.8342491393164231, 0.8342507315184663, 0.8342523735465877, 0.8342540740293077, 0.8342558391270521, 0.8342576617152704, 0.8342595432079075, 0.8342614859857673, 0.8342635140599843, 0.8342656218073448], logTe = [3.53373866671961, 3.5351145489458298, 3.536868609218386, 3.5392723696319384, 3.5419692031870875, 3.5448444272002115, 3.5480525429228353, 3.5515890193626363, 3.5550342902531535, 3.55828484583162  …  4.72755255567955, 4.722812923305508, 4.718045790363876, 4.713255084063041, 4.70844418528819, 4.703615181366145, 4.698769247072273, 4.693907377437686, 4.6890319432799785, 4.684144679682596], Mbol = [11.755935265529608, 11.71399151769745, 11.66046609512256, 11.58695484517987, 11.504320017963018, 11.415970136644722, 11.316877544386745, 11.206674705946163, 11.09798024950303, 10.993731089619601  …  3.67088898302782, 3.729754255709554, 3.788917170802253, 3.848275649796108, 3.9077592517693405, 3.9673159378657563, 4.026906489549238, 4.0865034349106315, 4.146098733267294, 4.205686690131054], logg = [5.335135498261987, 5.329616187429436, 5.322598139056072, 5.312998667387316, 5.3022384718547135, 5.290763150651325, 5.277926580969504, 5.263688148201607, 5.24969001370797, 5.236312070031329  …  7.610365566136191, 7.615231278014854, 7.620010091666503, 7.624711029682747, 7.6293385805548946, 7.633895105543113, 7.6383662247181, 7.64275679215676, 7.647073701043727, 7.651316766157619], logL = [-2.8063741062118432, -2.78959660707898, -2.7681864380490238, -2.7387819380719476, -2.7057280071852063, -2.670388054657888, -2.6307510177546978, -2.5866698823784655, -2.543192099801212, -2.50149243584784  …  0.4276444067888719, 0.40409829771617845, 0.3804331316790989, 0.35668974008155685, 0.332896299292264, 0.3090736248536976, 0.28523740418030485, 0.2613986260357477, 0.23756050669308257, 0.2137253239475784], log_surf_cell_z = [-3.0790987748736396, -3.0790987748746117, -3.0790987748262806, -3.0790987747027794, -3.0790987744732474, -3.079098774110238, -3.0790987735334743, -3.0790987726465158, -3.079098771475168, -3.0790987699661168  …  -3.0814487721997468, -3.0814486072553624, -3.081448437146475, -3.0814482609642604, -3.081448078067709, -3.081447889251467, -3.0814476943260916, -3.0814474930358795, -3.0814472828638992, -3.0814470644407144])

The NamedTuple returned by isochrone can be converted to table types, like TypedTables.Table to simplify further use.

using TypedTables: Table
Table(iso)
Table with 7 columns and 1463 rows:
      eep  m_ini     logTe    Mbol     logg     logL      log_surf_cell_z
    ┌────────────────────────────────────────────────────────────────────
 1  │ 248  0.100253  3.53374  11.7559  5.33514  -2.80637  -3.0791
 2  │ 249  0.101687  3.53511  11.714   5.32962  -2.7896   -3.0791
 3  │ 250  0.10354   3.53687  11.6605  5.3226   -2.76819  -3.0791
 4  │ 251  0.106129  3.53927  11.587   5.313    -2.73878  -3.0791
 5  │ 252  0.109096  3.54197  11.5043  5.30224  -2.70573  -3.0791
 6  │ 253  0.112336  3.54484  11.416   5.29076  -2.67039  -3.0791
 7  │ 254  0.116066  3.54805  11.3169  5.27793  -2.63075  -3.0791
 8  │ 255  0.120352  3.55159  11.2067  5.26369  -2.58667  -3.0791
 9  │ 256  0.124745  3.55503  11.098   5.24969  -2.54319  -3.0791
 10 │ 257  0.129143  3.55828  10.9937  5.23631  -2.50149  -3.0791
 11 │ 258  0.13429   3.5618   10.8779  5.22146  -2.45515  -3.0791
 12 │ 259  0.139505  3.56503  10.7677  5.20738  -2.41108  -3.0791
 13 │ 260  0.144646  3.56784  10.6666  5.1945   -2.37066  -3.0791
 14 │ 261  0.149791  3.57025  10.5734  5.18264  -2.33338  -3.0791
 15 │ 262  0.156291  3.57292  10.465   5.16884  -2.28999  -3.0791
 16 │ 263  0.163639  3.57568  10.3511  5.15439  -2.24446  -3.0791
 17 │ 264  0.171779  3.57841  10.2347  5.13954  -2.19787  -3.0791
 ⋮  │  ⋮      ⋮         ⋮        ⋮        ⋮        ⋮             ⋮

The theoretical isochrone is plotted below.

Example block output

We can load a grid of bolometric corrections from BolometricCorrections.jl to add observational magnitudes to the theoretical isochrone. In this example, we use the MIST bolometric correction grid, which offers bolometric corrections for varying metallicities ([Fe/H]) and reddening values ($A_V$). This method returns a TypedTables.Table that contains the information from both sources. Here we evaluate an isochrone with log10(age [yr]) = 10.05, $[\text{M}/\text{H}] = -1.234$, and $A_v=0.02$ mag.

using BolometricCorrections.MIST: MISTBCGrid
m = MISTBCGrid("JWST")
iso = isochrone(p, m, 10.05, -1.234, 0.02)
Table with 36 columns and 1463 rows:
      eep  m_ini     logTe    Mbol     logg     logL      log_surf_cell_z  ⋯
    ┌───────────────────────────────────────────────────────────────────────
 1  │ 248  0.100253  3.53374  11.7559  5.33514  -2.80637  -3.0791          ⋯
 2  │ 249  0.101687  3.53511  11.714   5.32962  -2.7896   -3.0791          ⋯
 3  │ 250  0.10354   3.53687  11.6605  5.3226   -2.76819  -3.0791          ⋯
 4  │ 251  0.106129  3.53927  11.587   5.313    -2.73878  -3.0791          ⋯
 5  │ 252  0.109096  3.54197  11.5043  5.30224  -2.70573  -3.0791          ⋯
 6  │ 253  0.112336  3.54484  11.416   5.29076  -2.67039  -3.0791          ⋯
 7  │ 254  0.116066  3.54805  11.3169  5.27793  -2.63075  -3.0791          ⋯
 8  │ 255  0.120352  3.55159  11.2067  5.26369  -2.58667  -3.0791          ⋯
 9  │ 256  0.124745  3.55503  11.098   5.24969  -2.54319  -3.0791          ⋯
 10 │ 257  0.129143  3.55828  10.9937  5.23631  -2.50149  -3.0791          ⋯
 11 │ 258  0.13429   3.5618   10.8779  5.22146  -2.45515  -3.0791          ⋯
 12 │ 259  0.139505  3.56503  10.7677  5.20738  -2.41108  -3.0791          ⋯
 13 │ 260  0.144646  3.56784  10.6666  5.1945   -2.37066  -3.0791          ⋯
 14 │ 261  0.149791  3.57025  10.5734  5.18264  -2.33338  -3.0791          ⋯
 15 │ 262  0.156291  3.57292  10.465   5.16884  -2.28999  -3.0791          ⋯
 16 │ 263  0.163639  3.57568  10.3511  5.15439  -2.24446  -3.0791          ⋯
 17 │ 264  0.171779  3.57841  10.2347  5.13954  -2.19787  -3.0791          ⋯
 ⋮  │  ⋮      ⋮         ⋮        ⋮        ⋮        ⋮             ⋮         ⋱

All available columns in the isochrone can be obtained with TypedTables.columnnames.

using TypedTables: columnnames
columnnames(iso)
(:eep, :m_ini, :logTe, :Mbol, :logg, :logL, :log_surf_cell_z, :F070W, :F090W, :F115W, :F140M, :F150W2, :F150W, :F162M, :F164N, :F182M, :F187N, :F200W, :F210M, :F212N, :F250M, :F277W, :F300M, :F322W2, :F323N, :F335M, :F356W, :F360M, :F405N, :F410M, :F430M, :F444W, :F460M, :F466N, :F470N, :F480M)

A color-magnitude diagram constructed from the isochrone is plotted below.

Example block output

Chemistry API

We re-export the BolometricCorrections.MIST.MISTChemistry type defined in BolometricCorrections.jl that can be used to access information on the chemical mixture assumed for the MIST models. All models have scaled-solar chemical compositions.

Library API

StellarTracks.MIST.MISTLibraryType
MISTLibrary(vvcrit::Number=0)

MISTLibrary implements the AbstractTrackLibrary interface for the MIST stellar evolution library. Instances can be constructed by providing a supported vvcrit argument for the rotation parameter, which must be equal to either 0 (no rotation) or 0.4. We set vvcrit=0 by default. If you construct an instance as p = MISTLibrary(0.0), it is callable as p(mh::Number, M::Number) which returns an InterpolatedTrack that interpolates between tracks to a specific metallicity ([M/H]) and initial stellar mass (M).

This type also supports isochrone construction (see isochrone).

Examples

julia> p = MISTLibrary(0.0)
Structure of interpolants for the MIST library of stellar tracks with vvcrit=0.0. Valid range of metallicities is (-4.0, 0.5).

julia> isochrone(p, 10.05, -2) isa NamedTuple
true

julia> p(-2.05, 1.05)
InterpolatedTrack with M_ini=1.05, MH=-2.05, Z=0.0001327966689875739, Y=0.249199427865246, X=0.7506677754657665.
source
StellarTracks.isochroneMethod
isochrone(p::MISTLibrary, logAge::Number, mh::Number)

Interpolates properties of the stellar tracks in the library at the requested logarithmic age (logAge = log10(age [yr])) and logarithmic metallicity [M/H] = mh. Returns a NamedTuple containing the properties listed below:

  • eep: Equivalent evolutionary points
  • m_ini: Initial stellar masses, in units of solar masses.
  • logTe: Base-10 logarithm of the effective temperature [K] of the stellar model.
  • Mbol: Bolometric luminosity of the stellar model.
  • logg: Surface gravity of the stellar model.
  • log_surf_cell_z: Base-10 logarithm of the surface metal mass fraction (Z).
source

Track Set API

StellarTracks.MIST.MISTTrackSetType
MISTTrackSet(mh::Number, vvcrit::Number=0)

MISTTrackSet implements the AbstractTrackSet interface for the MIST stellar evolution library.

julia> ts = StellarTracks.MIST.MISTTrackSet(0.0, 0.0)
MISTTrackSet with MH=0.0, vvcrit=0.0, Z=0.0142014201420142, Y=0.2703270327032703, 1710 EEPs and 196 initial stellar mass points.

julia> ts(1.01) # Interpolate track at new initial mass
MISTTrack with M_ini=1.01, MH=0.0, vvcrit=0.0, Z=0.0142014201420142, Y=0.2703270327032703, X=0.7154715471547155.

julia> isochrone(ts, 10.0) isa NamedTuple # Interpolate isochrone at `log10(age [yr]) = 10`
true
source

Individual Tracks API

StellarTracks.MIST.MISTTrackType
MISTTrack(mh::Number, mass::Number, vvcrit::Number=0)

MISTTrack implements the AbstractTrack interface for the MIST stellar evolution library.

julia> track = StellarTracks.MIST.MISTTrack(-2, 0.15, 0.0)
MISTTrack with M_ini=0.15, MH=-2, vvcrit=0.0, Z=0.00014899227095992976, Y=0.24922374966753474, X=0.7506272580615054.

julia> track(7.0) # interpolate track at log10(age [yr]) = 7
(log_L = -1.5293719450743, log_Teff = 3.587337261741102, log_g = 4.447603584617846, log_surf_cell_z = -3.8450984758441953)
source

PARSEC References

This page cites the following references: