+Hit fast-forward^ and agree to restart kernel, give it a minute, and then scroll down to explore model grids!
Contact me with suggestions for developing tools like this!
steven.r.goldman@nasa.gov
from ipywidgets import interactive, FloatSlider, interact, Label, IntSlider, jslink
from astropy.io.misc.hdf5 import read_table_hdf5
from IPython.display import display
import numpy as np
import matplotlib.pyplot as plt
from get_models_notebook import check_models
%matplotlib inline
grid_name = 'silicate-mix'
check_models(grid_name, respond=False);
outputs = read_table_hdf5(grid_name+'_outputs.hdf5')
spectra = read_table_hdf5(grid_name+'_models.hdf5')
def uniq(var):
out = np.array(np.unique(outputs[var]))
return out
def f(teff_val, tinner_val, odep_val, OssOrich_val, OssOdef_val):
fig = plt.figure(figsize=(8, 4))
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlabel(r'Wavelength ($\mu$m)')
ax1.set_ylabel(r'Flux (normalized)')
ax1.set_xlim(0.1, 39)
ax1.set_ylim(-0.1,0.9)
ind = np.where(
(outputs["teff"] == uniq("teff")[teff_val])
& (outputs["tinner"] == uniq("tinner")[tinner_val])
& (outputs["odep"] == uniq("odep")[odep_val])
& (outputs["OssOrich"] == uniq("OssOrich")[OssOrich_val])
& (outputs["OssOdef"] == uniq("OssOdef")[OssOdef_val])
)[0]
if len(ind) == 1:
ax1.plot(spectra["col0"][ind[0]], spectra["col1"][ind[0]], c="k", lw=0.5)
else:
ax1.annotate("No Data", (0.5, 0.5), xycoords="axes fraction", ha="center", fontsize=40)
print(r"**Greater or less than 100% of a dust mixture**")
output.layout.height = "400px"
print(r"Teff "+"\t\t" + str(uniq("teff")[teff_val])+ ' k')
print(r"Tinner "+"\t" + str(uniq("tinner")[tinner_val])+ ' k')
print(r"tau @ 10um " + "\t" + str(uniq("odep")[odep_val]))
print(r"O-rich sil. "+"\t" + str(uniq("OssOrich")[OssOrich_val])+'%')
print(r"O-def sil. "+"\t" + str(uniq('OssOdef')[OssOdef_val])+'%')
if len(ind) == 1:
print(r"Cryst. sil. "+"\t" + str(outputs['crSil'][ind[0]])+'%')
print("Iron grains \t 4%")
plt.show()
interactive_plot = interactive(
f,
teff_val=IntSlider(value=2, min=0, max=len(uniq("teff")) - 1, step=1, description="Teff", readout=False),
tinner_val=IntSlider(value=2, min=0, max=len(uniq("tinner")) - 1, step=1, description="Tinner", readout=False),
odep_val=IntSlider(value=2, min=0, max=len(uniq("odep")) - 1, step=2, description=r"$\tau_{10}$", readout=False),
OssOrich_val=IntSlider(value=3, min=0, max=len(uniq("OssOrich")) - 1, step=1, description="O-rich sil.", readout=False),
OssOdef_val=IntSlider(value=3, min=0, max=len(uniq("OssOdef")) - 1, step=1, description="O-def sil.", readout=False),
)
output = interactive_plot.children[-1]
display(interactive_plot)
interactive(children=(IntSlider(value=2, description='Teff', max=4, readout=False), IntSlider(value=2, descrip…
Teff: effective temperature
Tinner: inner dust temperature
tau @ 10um: optical depth at 10 micron
O-rich sil: Fraction (%) of oxygen-rich warm silicates from Ossenkopf et al. (1992)
O-def sil: Fraction (%) of oxygen-deficient warm silicates from Ossenkopf et al. (1992)
Cryst. sil: Fraction (%) of crystalline silicate grains from from Jaeger et al. (1994).
All grids assumed 4% iron grains from Henning et al. (1995)
outputs
grid_name | teff | tinner | OssOrich | OssOdef | FeO | crSil | grid_idx | number | odep | mdot | vexp |
---|---|---|---|---|---|---|---|---|---|---|---|
bytes12 | int64 | int64 | int64 | int64 | int64 | int64 | int64 | int16 | float64 | float64 | float64 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 1 | 0.1 | 1.32e-06 | 10.5 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 2 | 0.71 | 9.89e-06 | 8.22 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 3 | 1.32 | 1.8e-05 | 7.05 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 4 | 1.93 | 2.56e-05 | 6.31 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 5 | 2.54 | 3.28e-05 | 5.8 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 6 | 3.15 | 3.96e-05 | 5.42 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 7 | 3.76 | 4.64e-05 | 5.14 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 8 | 4.37 | 5.28e-05 | 4.9 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 9 | 4.98 | 5.91e-05 | 4.69 |
silicate-mix | 2600 | 600 | 0 | 0 | 4 | 96 | 0 | 10 | 5.59 | 6.53e-05 | 4.53 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 41 | 24.5 | 0.000125 | 7.29 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 42 | 25.1 | 0.000128 | 7.25 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 43 | 25.7 | 0.000131 | 7.21 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 44 | 26.3 | 0.000134 | 7.17 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 45 | 26.9 | 0.000138 | 7.13 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 46 | 27.6 | 0.000141 | 7.1 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 47 | 28.2 | 0.000144 | 7.06 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 48 | 28.8 | 0.000147 | 7.03 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 49 | 29.4 | 0.000151 | 7.0 |
silicate-mix | 3400 | 1200 | 80 | 0 | 4 | 16 | 2232 | 50 | 30.0 | 0.000154 | 6.96 |
Note: These mass-loss rates (mdot) and expansion velocities (vexp) scale with luminosity and assumed gas-to-dust ratio (see DUSTY manual; Ivezic & Elitzur, 1997).