Source code for pystellibs.tlusty

import numpy as np
from .stellib import AtmosphereLib
from .config import libsdir
from .simpletable import SimpleTable
try:
    from astropy.io import fits as pyfits
except ImportError:
    import pyfits


[docs]class Tlusty(AtmosphereLib): """ Tlusty O and B stellar atmospheres * NLTE * Parallel Planes * line blanketing References ---------- Hubeny 1988 for initial reference Lanz, T., & Hubeny, I. (2003) for more recent (NL TE) developments * **OSTAR2002 Grid**: O-type stars, 27500 K <= Teff <= 55000 K * Reference: Lanz & Hubeny (2003) * **BSTAR2006 Grid**: Early B-type stars, 15000 K <= Teff <= 30000 K * Reference: Lanz & Hubeny (2007) files are available at: http://nova.astro.umd.edu/Tlusty2002/database/ O and B stars rebinned to nearly 20,000 frequency points (for CLOUDY usage) http://nova.astro.umd.edu/Tlusty2002/database/obstar_merged_3d.ascii.gz """ def __init__(self, *args, **kwargs): self.name = 'Tlusty' self.source = libsdir + '/tlusty.lowres.grid.fits' self._load_() AtmosphereLib.__init__(self, *args, **kwargs) def _load_(self): with pyfits.open(self.source) as f: # load data self._getWaveLength_(f) self._getTGZ_(f) self._getSpectra_(f) self._getWaveLength_units(f) def _getWaveLength_units(self, f): self.wavelength_unit = 'angstrom' def _getWaveLength_(self, f): self._wavelength = f[0].data[-1] def _getTGZ_(self, f): self.grid = SimpleTable(f[1].data) self.grid.header.update(f[1].header.items()) self.grid.header['NAME'] = 'TGZ' def _getSpectra_(self, f): self.spectra = f[0].data[:-1]
[docs] def bbox(self, dlogT=0.05, dlogg=0.25): """ Boundary of Tlusty library Parameters ---------- dlogT: float log-temperature tolerance before extrapolation limit dlogg: float log-g tolerance before extrapolation limit Returns ------- bbox: ndarray (logT, logg) edges of the bounding polygon """ bbox = [(4.176 - dlogT, 4.749 + dlogg), (4.176 - dlogT, 1.750 - dlogg), (4.176 + dlogT, 1.750 - dlogg), (4.255 + dlogT, 2.000 - dlogg), (4.447 + dlogT, 2.750 - dlogg), (4.478 + dlogT, 3.000 - dlogg), (4.544 + dlogT, 3.250 - dlogg), (4.740 + dlogT, 4.000 - dlogg), (4.740 + dlogT, 4.749 + dlogg), (4.176 - dlogT, 4.749 + dlogg) ] return np.array(bbox)
@property def logT(self): return self.grid['logT'] @property def logg(self): return self.grid['logg'] @property def Teff(self): return self.grid['Teff'] @property def Z(self): return self.grid['Z'] @property def logZ(self): return np.log10(self.Z)