Source code for tomso.stars

"""
Functions for loading output from the `Cambridge STARS`_ code.

.. _Cambridge STARS: http://www.ast.cam.ac.uk/~stars/index.htm
"""

import numpy as np


[docs] def load_out(filename): """Reads a STARS `out` file and returns (part of) the summaries and profiles in two structured arrays. Parameters ---------- filename: str Filename of the STARS output file to load. Returns ------- summaries: 2-d structured array Summaries of each model in the run, similar to MESA's `history` files. profiles: 3-d structured array Model profiles produced at regular intervals during the run. The first index of the array is the profile number. """ with open(filename, 'r') as f: line = f.readline() K = int(line.split()[0]) # number of points in profiles summaries = [] profiles = [] while line: line = f.readline() if len(line.split()) < 2: continue elif line.split()[0] == 'K': # found a profile dtypes = [('k','int')] + \ [(name, 'float') for name in line.split()[1:]] data = [f.readline() for i in range(K+(K-1)//10)] data = [tuple(map(float, row.split())) for row in data if row != '\n'] profiles.append(np.array(data, dtype=dtypes)) elif line.split()[1] == 'dt/age/MH/MHe': # found a summary # have to do some basic manipulation to make parsing stable summary = [int(line.split()[0])] for i in range(2): line = f.readline() summary.extend(line.replace('-',' -').replace('E -','E-').split()[1:-1]) summaries.append(np.array(tuple(summary), dtype=summary_dtypes[:len(summary)])) return np.squeeze(np.vstack(summaries)), np.vstack((profiles))
[docs] def load_plot(filename): """Reads a STARS `plot` file into a structured array. Parameters ---------- filename: str Filename of the STARS plot file to load. Returns ------- plot: 2-d structured array Data for evolutionary track, with one row per model along the track. e.g. age, effective temperature, etc. """ return np.loadtxt(filename, dtype=plot_dtypes)
summary_dtypes = [('n','int'), ('dt', 'float'), ('tn', 'float'), ('P', 'float'), ('LH', 'float'), ('Lth', 'float'), ('H1_cntr','float'), ('He4_cntr', 'float'), ('C12_cntr', 'float'), ('N14_cntr', 'float'), ('O16_cntr','float'), ('Ne20_cntr', 'float'), ('He3_cntr','float'), ('psi_cntr', 'float'), ('dens_cntr','float'), ('temp_cntr', 'float'), ('age','float'), ('tKH', 'float'),('rlf', 'float'), ('LHe','float'),('Lnu', 'float'), ('H1_srfc', 'float'), ('He4_srfc', 'float'), ('C12_srfc', 'float'), ('N14_srfc', 'float'), ('O16_srfc', 'float'), ('Ne20_srfc', 'float'), ('He3_srfc', 'float'), ('psi_srfc', 'float'), ('dens_srfc', 'float'), ('temp_srfc', 'float'), ('MH', 'float'), ('MHe','float'), ('Mb', 'float'), ('dM', 'float'), ('LC','float'), ('m', 'float'), ('H1_Tmax', 'float'), ('He4_Tmax', 'float'), ('C12_Tmax', 'float'), ('N14_Tmax', 'float'), ('O16_Tmax', 'float'), ('Ne20_Tmax', 'float'), ('He3_Tmax', 'float'), ('psi_Tmax', 'float'), ('dens_Tmax', 'float'), ('temp_Tmax', 'float')] plot_dtypes = [('n','int'), ('age', 'float'), ('logR', 'float'), ('logTeff', 'float'), ('logL', 'float'), ('M', 'float'), ('M_H','float'), ('M_He', 'float'), ('L_H', 'float'), ('L_He', 'float'), ('L_C', 'float'), ('m_conv1', 'float'), ('m_conv2','float'), ('m_conv3','float'), ('m_conv4','float'), ('m_conv5','float'), ('m_conv6','float'), ('m_conv7','float'), ('m_conv8','float'), ('m_conv9','float'), ('m_conv10','float'), ('m_conv11','float'), ('m_conv12','float'), ('m_eps_H_max', 'float'), ('m_eps_He_max', 'float'), ('logkappa', 'float'), ('dt', 'float'), ('X_Hs', 'float'), ('X_Hes', 'float'), ('H_Cs', 'float'), ('X_Ns','float'), ('X_Os', 'float'), ('X_He3s', 'float'), ('R/R_RL', 'float'), ('J_1', 'float'), ('P', 'float'), ('R_sep', 'float'), ('M1+M2','float'), ('J_orb', 'float'), ('J_1+J_2', 'float'), ('J_tot','float'), ('omega_orb', 'float'), ('omega_1', 'float'), ('I_1','float'), ('I_orb', 'float'), ('Mdot', 'float'), ('m_shell1','float'), ('m_shell2','float'), ('m_shell3','float'), ('m_shell4','float'), ('m_shell5','float'), ('m_shell6','float'), ('m_shell7','float'), ('m_shell8','float'), ('m_shell9','float'), ('m_shell10','float'), ('m_shell11','float'), ('m_shell12','float'), ('m_th1','float'), ('m_th2','float'), ('m_th3','float'), ('m_th4','float'), ('m_th5','float'), ('m_th6','float'), ('m_th7','float'), ('m_th8','float'), ('m_th9','float'), ('m_th10','float'), ('m_th11','float'), ('m_th12','float'), ('M_ce', 'float'), ('R_ce', 'float'), ('logRho_c', 'float'), ('logT_c', 'float')]