Created
February 21, 2020 19:50
-
-
Save Pabla007/95faeb41f379d3aaa8e3ba521e48d59b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/jasims/tardis/tardis/io/util.py:14: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n", | |
" from tqdm.autonotebook import tqdm\n" | |
] | |
} | |
], | |
"source": [ | |
"from tardis import run_tardis\n", | |
"from tardis.io.atom_data.util import download_atom_data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.io.atom_data.atom_web_download\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Downloading atomic data from https://media.githubusercontent.com/media/tardis-sn/tardis-refdata/master/atom_data/kurucz_cd23_chianti_H_He.h5 to /home/jasims/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5 (\u001b[1matom_web_download.py\u001b[0m:37)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.io.atom_data.atom_web_download:Downloading atomic data from https://media.githubusercontent.com/media/tardis-sn/tardis-refdata/master/atom_data/kurucz_cd23_chianti_H_He.h5 to /home/jasims/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5\n" | |
] | |
} | |
], | |
"source": [ | |
"# the data is automatically downloaded\n", | |
"download_atom_data('kurucz_cd23_chianti_H_He')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.plasma.standard_plasmas\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Reading Atomic Data from /home/jasims/tardis/docs/examples/kurucz_cd23_chianti_H_He.h5 (\u001b[1mstandard_plasmas.py\u001b[0m:76)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.plasma.standard_plasmas:Reading Atomic Data from /home/jasims/tardis/docs/examples/kurucz_cd23_chianti_H_He.h5\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3331: PerformanceWarning: indexing past lexsort depth may impact performance.\n", | |
" exec(code_obj, self.user_global_ns, self.user_ns)\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3331: PerformanceWarning: indexing past lexsort depth may impact performance.\n", | |
" exec(code_obj, self.user_global_ns, self.user_ns)\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.io.atom_data.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Read Atom Data with UUID=6f7b09e887a311e7a06b246e96350010 and MD5=864f1753714343c41f99cb065710cace. (\u001b[1mbase.py\u001b[0m:175)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.io.atom_data.base:Read Atom Data with UUID=6f7b09e887a311e7a06b246e96350010 and MD5=864f1753714343c41f99cb065710cace.\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.io.atom_data.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Non provided atomic data: synpp_refs, ion_cx_th_data, ion_cx_sp_data (\u001b[1mbase.py\u001b[0m:178)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.io.atom_data.base:Non provided atomic data: synpp_refs, ion_cx_th_data, ion_cx_sp_data\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/tardis/tardis/plasma/properties/ion_population.py:59: FutureWarning: \n", | |
"Passing list-likes to .loc or [] with any missing label will raise\n", | |
"KeyError in the future, you can use .reindex() as an alternative.\n", | |
"\n", | |
"See the documentation here:\n", | |
"https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n", | |
" partition_function.index].dropna())\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/tardis/tardis/plasma/properties/ion_population.py:59: FutureWarning: \n", | |
"Passing list-likes to .loc or [] with any missing label will raise\n", | |
"KeyError in the future, you can use .reindex() as an alternative.\n", | |
"\n", | |
"See the documentation here:\n", | |
"https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n", | |
" partition_function.index].dropna())\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/equivalencies.py:124: RuntimeWarning: divide by zero encountered in double_scalars\n", | |
" (si.m, si.Hz, lambda x: _si.c.value / x),\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/equivalencies.py:124: RuntimeWarning: divide by zero encountered in double_scalars\n", | |
" (si.m, si.Hz, lambda x: _si.c.value / x),\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 1/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 1/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 7.96915e+42 erg / s Luminosity absorbed = 2.63370e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 7.96915e+42 erg / s Luminosity absorbed = 2.63370e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 9926.501965 10171.209103 0.400392 0.500372\n", | |
"\t5 9852.611678 10306.111379 0.211205 0.191331\n", | |
"\t10 9779.813302 10174.379204 0.142695 0.116864\n", | |
"\t15 9708.082813 9910.442275 0.104556 0.085962\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 9926.501965 10171.209103 0.400392 0.500372\n", | |
"\t5 9852.611678 10306.111379 0.211205 0.191331\n", | |
"\t10 9779.813302 10174.379204 0.142695 0.116864\n", | |
"\t15 9708.082813 9910.442275 0.104556 0.085962\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 9933.952 K -- next t_inner 11453.040 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 9933.952 K -- next t_inner 11453.040 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/tardis/tardis/plasma/properties/ion_population.py:59: FutureWarning: \n", | |
"Passing list-likes to .loc or [] with any missing label will raise\n", | |
"KeyError in the future, you can use .reindex() as an alternative.\n", | |
"\n", | |
"See the documentation here:\n", | |
"https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n", | |
" partition_function.index].dropna())\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/tardis/tardis/plasma/properties/ion_population.py:59: FutureWarning: \n", | |
"Passing list-likes to .loc or [] with any missing label will raise\n", | |
"KeyError in the future, you can use .reindex() as an alternative.\n", | |
"\n", | |
"See the documentation here:\n", | |
"https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n", | |
" partition_function.index].dropna())\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 2/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 2/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.40398e+43 erg / s Luminosity absorbed = 4.68639e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.40398e+43 erg / s Luminosity absorbed = 4.68639e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10171.209103 11518.516702 0.500372 0.538298\n", | |
"\t5 10306.111379 11554.412119 0.191331 0.217946\n", | |
"\t10 10174.379204 11373.574056 0.116864 0.132935\n", | |
"\t15 9910.442275 11040.788763 0.085962 0.099700\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10171.209103 11518.516702 0.500372 0.538298\n", | |
"\t5 10306.111379 11554.412119 0.191331 0.217946\n", | |
"\t10 10174.379204 11373.574056 0.116864 0.132935\n", | |
"\t15 9910.442275 11040.788763 0.085962 0.099700\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11453.040 K -- next t_inner 9948.201 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11453.040 K -- next t_inner 9948.201 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 3/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 3/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.16814e+42 erg / s Luminosity absorbed = 2.50161e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.16814e+42 erg / s Luminosity absorbed = 2.50161e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11518.516702 10501.129902 0.538298 0.438591\n", | |
"\t5 11554.412119 10869.940791 0.217946 0.160809\n", | |
"\t10 11373.574056 10558.269547 0.132935 0.103807\n", | |
"\t15 11040.788763 10185.648701 0.099700 0.079165\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11518.516702 10501.129902 0.538298 0.438591\n", | |
"\t5 11554.412119 10869.940791 0.217946 0.160809\n", | |
"\t10 11373.574056 10558.269547 0.132935 0.103807\n", | |
"\t15 11040.788763 10185.648701 0.099700 0.079165\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 9948.201 K -- next t_inner 11328.896 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 9948.201 K -- next t_inner 11328.896 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 4/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 4/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.34487e+43 erg / s Luminosity absorbed = 4.47931e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.34487e+43 erg / s Luminosity absorbed = 4.47931e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10501.129902 11527.008679 0.438591 0.512509\n", | |
"\t5 10869.940791 11706.138980 0.160809 0.196458\n", | |
"\t10 10558.269547 11444.208532 0.103807 0.124092\n", | |
"\t15 10185.648701 11085.857161 0.079165 0.093694\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10501.129902 11527.008679 0.438591 0.512509\n", | |
"\t5 10869.940791 11706.138980 0.160809 0.196458\n", | |
"\t10 10558.269547 11444.208532 0.103807 0.124092\n", | |
"\t15 10185.648701 11085.857161 0.079165 0.093694\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11328.896 K -- next t_inner 10054.300 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11328.896 K -- next t_inner 10054.300 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 5/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 5/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.44348e+42 erg / s Luminosity absorbed = 2.68000e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.44348e+42 erg / s Luminosity absorbed = 2.68000e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11527.008679 10659.382763 0.512509 0.433573\n", | |
"\t5 11706.138980 11038.244897 0.196458 0.158494\n", | |
"\t10 11444.208532 10790.696726 0.124092 0.099660\n", | |
"\t15 11085.857161 10450.666394 0.093694 0.074550\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11527.008679 10659.382763 0.512509 0.433573\n", | |
"\t5 11706.138980 11038.244897 0.196458 0.158494\n", | |
"\t10 11444.208532 10790.696726 0.124092 0.099660\n", | |
"\t15 11085.857161 10450.666394 0.093694 0.074550\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10054.300 K -- next t_inner 11261.489 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10054.300 K -- next t_inner 11261.489 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 6/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 6/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.32492e+43 erg / s Luminosity absorbed = 4.26229e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.32492e+43 erg / s Luminosity absorbed = 4.26229e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10659.382763 11507.437689 0.433573 0.499441\n", | |
"\t5 11038.244897 11634.568776 0.158494 0.197953\n", | |
"\t10 10790.696726 11418.594559 0.099660 0.124085\n", | |
"\t15 10450.666394 10999.619473 0.074550 0.094676\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10659.382763 11507.437689 0.433573 0.499441\n", | |
"\t5 11038.244897 11634.568776 0.158494 0.197953\n", | |
"\t10 10790.696726 11418.594559 0.099660 0.124085\n", | |
"\t15 10450.666394 10999.619473 0.074550 0.094676\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11261.489 K -- next t_inner 10069.444 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11261.489 K -- next t_inner 10069.444 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 7/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 7/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.49858e+42 erg / s Luminosity absorbed = 2.69247e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.49858e+42 erg / s Luminosity absorbed = 2.69247e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11507.437689 10679.650246 0.499441 0.431088\n", | |
"\t5 11634.568776 11048.266431 0.197953 0.157179\n", | |
"\t10 11418.594559 10825.714870 0.124085 0.098608\n", | |
"\t15 10999.619473 10506.321595 0.094676 0.073794\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11507.437689 10679.650246 0.499441 0.431088\n", | |
"\t5 11634.568776 11048.266431 0.197953 0.157179\n", | |
"\t10 11418.594559 10825.714870 0.124085 0.098608\n", | |
"\t15 10999.619473 10506.321595 0.094676 0.073794\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10069.444 K -- next t_inner 11241.826 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10069.444 K -- next t_inner 11241.826 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 8/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 8/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.30632e+43 erg / s Luminosity absorbed = 4.31719e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.30632e+43 erg / s Luminosity absorbed = 4.31719e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10679.650246 11459.828312 0.431088 0.506176\n", | |
"\t5 11048.266431 11688.139012 0.157179 0.193468\n", | |
"\t10 10825.714870 11441.768967 0.098608 0.122412\n", | |
"\t15 10506.321595 11099.449886 0.073794 0.090915\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10679.650246 11459.828312 0.431088 0.506176\n", | |
"\t5 11048.266431 11688.139012 0.157179 0.193468\n", | |
"\t10 10825.714870 11441.768967 0.098608 0.122412\n", | |
"\t15 10506.321595 11099.449886 0.073794 0.090915\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11241.826 K -- next t_inner 10123.177 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11241.826 K -- next t_inner 10123.177 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 9/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 9/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.68357e+42 erg / s Luminosity absorbed = 2.75015e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.68357e+42 erg / s Luminosity absorbed = 2.75015e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11459.828312 10666.223660 0.506176 0.445097\n", | |
"\t5 11688.139012 11000.288585 0.193468 0.163424\n", | |
"\t10 11441.768967 10822.884326 0.122412 0.101641\n", | |
"\t15 11099.449886 10384.181273 0.090915 0.078432\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11459.828312 10666.223660 0.506176 0.445097\n", | |
"\t5 11688.139012 11000.288585 0.193468 0.163424\n", | |
"\t10 11441.768967 10822.884326 0.122412 0.101641\n", | |
"\t15 11099.449886 10384.181273 0.090915 0.078432\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10123.177 K -- next t_inner 11180.783 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10123.177 K -- next t_inner 11180.783 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 10/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 10/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.28170e+43 erg / s Luminosity absorbed = 4.19511e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.28170e+43 erg / s Luminosity absorbed = 4.19511e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10666.223660 11427.410445 0.445097 0.500788\n", | |
"\t5 11000.288585 11612.349822 0.163424 0.193129\n", | |
"\t10 10822.884326 11373.245169 0.101641 0.121622\n", | |
"\t15 10384.181273 11047.955461 0.078432 0.090937\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10666.223660 11427.410445 0.445097 0.500788\n", | |
"\t5 11000.288585 11612.349822 0.163424 0.193129\n", | |
"\t10 10822.884326 11373.245169 0.101641 0.121622\n", | |
"\t15 10384.181273 11047.955461 0.078432 0.090937\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11180.783 K -- next t_inner 10164.432 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11180.783 K -- next t_inner 10164.432 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 11/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 11/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.79074e+42 erg / s Luminosity absorbed = 2.82804e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.79074e+42 erg / s Luminosity absorbed = 2.82804e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11427.410445 10741.337822 0.500788 0.439938\n", | |
"\t5 11612.349822 11230.515356 0.193129 0.153637\n", | |
"\t10 11373.245169 10870.696315 0.121622 0.101050\n", | |
"\t15 11047.955461 10538.170159 0.090937 0.074680\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11427.410445 10741.337822 0.500788 0.439938\n", | |
"\t5 11612.349822 11230.515356 0.193129 0.153637\n", | |
"\t10 11373.245169 10870.696315 0.121622 0.101050\n", | |
"\t15 11047.955461 10538.170159 0.090937 0.074680\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10164.432 K -- next t_inner 11157.711 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10164.432 K -- next t_inner 11157.711 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 12/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 12/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.27128e+43 erg / s Luminosity absorbed = 4.15415e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.27128e+43 erg / s Luminosity absorbed = 4.15415e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10741.337822 11507.877578 0.439938 0.483114\n", | |
"\t5 11230.515356 11808.852053 0.153637 0.181826\n", | |
"\t10 10870.696315 11557.412757 0.101050 0.113563\n", | |
"\t15 10538.170159 11117.762050 0.074680 0.087418\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10741.337822 11507.877578 0.439938 0.483114\n", | |
"\t5 11230.515356 11808.852053 0.153637 0.181826\n", | |
"\t10 10870.696315 11557.412757 0.101050 0.113563\n", | |
"\t15 10538.170159 11117.762050 0.074680 0.087418\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11157.711 K -- next t_inner 10184.966 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11157.711 K -- next t_inner 10184.966 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 13/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 13/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 8.90399e+42 erg / s Luminosity absorbed = 2.80864e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 8.90399e+42 erg / s Luminosity absorbed = 2.80864e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11507.877578 10727.217531 0.483114 0.443706\n", | |
"\t5 11808.852053 11171.758889 0.181826 0.160824\n", | |
"\t10 11557.412757 10971.722637 0.113563 0.098588\n", | |
"\t15 11117.762050 10574.916600 0.087418 0.075266\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11507.877578 10727.217531 0.483114 0.443706\n", | |
"\t5 11808.852053 11171.758889 0.181826 0.160824\n", | |
"\t10 11557.412757 10971.722637 0.113563 0.098588\n", | |
"\t15 11117.762050 10574.916600 0.087418 0.075266\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10184.966 K -- next t_inner 11108.923 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10184.966 K -- next t_inner 11108.923 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 14/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 14/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.25052e+43 erg / s Luminosity absorbed = 4.07335e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.25052e+43 erg / s Luminosity absorbed = 4.07335e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10727.217531 11413.626870 0.443706 0.489526\n", | |
"\t5 11171.758889 11697.006992 0.160824 0.184795\n", | |
"\t10 10971.722637 11424.445844 0.098588 0.116722\n", | |
"\t15 10574.916600 11047.434163 0.075266 0.088067\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10727.217531 11413.626870 0.443706 0.489526\n", | |
"\t5 11171.758889 11697.006992 0.160824 0.184795\n", | |
"\t10 10971.722637 11424.445844 0.098588 0.116722\n", | |
"\t15 10574.916600 11047.434163 0.075266 0.088067\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11108.923 K -- next t_inner 10224.266 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11108.923 K -- next t_inner 10224.266 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 15/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 15/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 9.00727e+42 erg / s Luminosity absorbed = 2.88724e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 9.00727e+42 erg / s Luminosity absorbed = 2.88724e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11413.626870 10712.622749 0.489526 0.455660\n", | |
"\t5 11697.006992 11125.894032 0.184795 0.164091\n", | |
"\t10 11424.445844 10816.390451 0.116722 0.104037\n", | |
"\t15 11047.434163 10421.687097 0.088067 0.080401\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11413.626870 10712.622749 0.489526 0.455660\n", | |
"\t5 11697.006992 11125.894032 0.184795 0.164091\n", | |
"\t10 11424.445844 10816.390451 0.116722 0.104037\n", | |
"\t15 11047.434163 10421.687097 0.088067 0.080401\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10224.266 K -- next t_inner 11087.666 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10224.266 K -- next t_inner 11087.666 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 16/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 16/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.23781e+43 erg / s Luminosity absorbed = 4.07435e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.23781e+43 erg / s Luminosity absorbed = 4.07435e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10712.622749 11352.158138 0.455660 0.500754\n", | |
"\t5 11125.894032 11644.968350 0.164091 0.185289\n", | |
"\t10 10816.390451 11320.695930 0.104037 0.119195\n", | |
"\t15 10421.687097 10965.228363 0.080401 0.089940\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10712.622749 11352.158138 0.455660 0.500754\n", | |
"\t5 11125.894032 11644.968350 0.164091 0.185289\n", | |
"\t10 10816.390451 11320.695930 0.104037 0.119195\n", | |
"\t15 10421.687097 10965.228363 0.080401 0.089940\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11087.666 K -- next t_inner 10256.946 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11087.666 K -- next t_inner 10256.946 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 17/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 17/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 9.18956e+42 erg / s Luminosity absorbed = 2.86249e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 9.18956e+42 erg / s Luminosity absorbed = 2.86249e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11352.158138 10738.799194 0.500754 0.452965\n", | |
"\t5 11644.968350 11210.269586 0.185289 0.160945\n", | |
"\t10 11320.695930 10911.463205 0.119195 0.103910\n", | |
"\t15 10965.228363 10545.065525 0.089940 0.078433\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11352.158138 10738.799194 0.500754 0.452965\n", | |
"\t5 11644.968350 11210.269586 0.185289 0.160945\n", | |
"\t10 11320.695930 10911.463205 0.119195 0.103910\n", | |
"\t15 10965.228363 10545.065525 0.089940 0.078433\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10256.946 K -- next t_inner 11012.230 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10256.946 K -- next t_inner 11012.230 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 18/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 18/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.20741e+43 erg / s Luminosity absorbed = 3.93375e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.20741e+43 erg / s Luminosity absorbed = 3.93375e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10738.799194 11316.665617 0.452965 0.492135\n", | |
"\t5 11210.269586 11599.094127 0.160945 0.183929\n", | |
"\t10 10911.463205 11403.508986 0.103910 0.114400\n", | |
"\t15 10545.065525 10958.974248 0.078433 0.087415\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 10738.799194 11316.665617 0.452965 0.492135\n", | |
"\t5 11210.269586 11599.094127 0.160945 0.183929\n", | |
"\t10 10911.463205 11403.508986 0.103910 0.114400\n", | |
"\t15 10545.065525 10958.974248 0.078433 0.087415\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 11012.230 K -- next t_inner 10314.623 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 11012.230 K -- next t_inner 10314.623 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 19/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 19/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 9.29848e+42 erg / s Luminosity absorbed = 3.02011e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 9.29848e+42 erg / s Luminosity absorbed = 3.02011e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11316.665617 10862.505720 0.492135 0.444495\n", | |
"\t5 11599.094127 11194.462074 0.183929 0.162842\n", | |
"\t10 11403.508986 11065.620645 0.114400 0.099372\n", | |
"\t15 10958.974248 10599.851144 0.087415 0.077690\n", | |
"\n", | |
" (\u001b[1mbase.py\u001b[0m:348)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Plasma stratification:\n", | |
"\t t_rad next_t_rad w next_w\n", | |
"\tShell \n", | |
"\t0 11316.665617 10862.505720 0.492135 0.444495\n", | |
"\t5 11599.094127 11194.462074 0.183929 0.162842\n", | |
"\t10 11403.508986 11065.620645 0.114400 0.099372\n", | |
"\t15 10958.974248 10599.851144 0.087415 0.077690\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] t_inner 10314.623 K -- next t_inner 11009.102 K (\u001b[1mbase.py\u001b[0m:350)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:t_inner 10314.623 K -- next t_inner 11009.102 K\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Starting iteration 20/20 (\u001b[1mbase.py\u001b[0m:266)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Starting iteration 20/20\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Luminosity emitted = 1.21062e+43 erg / s Luminosity absorbed = 3.88405e+42 erg / s Luminosity requested = 1.05928e+43 erg / s (\u001b[1mbase.py\u001b[0m:357)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Luminosity emitted = 1.21062e+43 erg / s Luminosity absorbed = 3.88405e+42 erg / s Luminosity requested = 1.05928e+43 erg / s\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mtardis.simulation.base\u001b[0m][\u001b[1;37mINFO\u001b[0m ] Simulation finished in 20 iterations and took 175.90 s (\u001b[1mbase.py\u001b[0m:306)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;37mINFO\u001b[0m:tardis.simulation.base:Simulation finished in 20 iterations and took 175.90 s\n" | |
] | |
} | |
], | |
"source": [ | |
"#TARDIS now uses the data in the data repo\n", | |
"sim = run_tardis('/home/jasims/tardis/docs/examples/tardis_example.yml')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Populating the interactive namespace from numpy and matplotlib\n", | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/miniconda3/envs/tardis/lib/python3.6/site-packages/astropy/units/quantity.py:1070: AstropyDeprecationWarning: The truth value of a Quantity is ambiguous. In the future this will raise a ValueError.\n", | |
" AstropyDeprecationWarning)\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[\u001b[1mpy.warnings \u001b[0m][\u001b[1;33mWARNING\u001b[0m] /home/jasims/tardis/tardis/montecarlo/formal_integral.py:167: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n", | |
" result = pd.DataFrame(att_S_ul.as_matrix(), index=transitions.transition_line_id.values)\n", | |
" (\u001b[1mwarnings.py\u001b[0m:99)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[1;33mWARNING\u001b[0m:py.warnings:/home/jasims/tardis/tardis/montecarlo/formal_integral.py:167: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n", | |
" result = pd.DataFrame(att_S_ul.as_matrix(), index=transitions.transition_line_id.values)\n", | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/javascript": [ | |
"/* Put everything inside the global mpl namespace */\n", | |
"window.mpl = {};\n", | |
"\n", | |
"\n", | |
"mpl.get_websocket_type = function() {\n", | |
" if (typeof(WebSocket) !== 'undefined') {\n", | |
" return WebSocket;\n", | |
" } else if (typeof(MozWebSocket) !== 'undefined') {\n", | |
" return MozWebSocket;\n", | |
" } else {\n", | |
" alert('Your browser does not have WebSocket support. ' +\n", | |
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", | |
" 'Firefox 4 and 5 are also supported but you ' +\n", | |
" 'have to enable WebSockets in about:config.');\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", | |
" this.id = figure_id;\n", | |
"\n", | |
" this.ws = websocket;\n", | |
"\n", | |
" this.supports_binary = (this.ws.binaryType != undefined);\n", | |
"\n", | |
" if (!this.supports_binary) {\n", | |
" var warnings = document.getElementById(\"mpl-warnings\");\n", | |
" if (warnings) {\n", | |
" warnings.style.display = 'block';\n", | |
" warnings.textContent = (\n", | |
" \"This browser does not support binary websocket messages. \" +\n", | |
" \"Performance may be slow.\");\n", | |
" }\n", | |
" }\n", | |
"\n", | |
" this.imageObj = new Image();\n", | |
"\n", | |
" this.context = undefined;\n", | |
" this.message = undefined;\n", | |
" this.canvas = undefined;\n", | |
" this.rubberband_canvas = undefined;\n", | |
" this.rubberband_context = undefined;\n", | |
" this.format_dropdown = undefined;\n", | |
"\n", | |
" this.image_mode = 'full';\n", | |
"\n", | |
" this.root = $('<div/>');\n", | |
" this._root_extra_style(this.root)\n", | |
" this.root.attr('style', 'display: inline-block');\n", | |
"\n", | |
" $(parent_element).append(this.root);\n", | |
"\n", | |
" this._init_header(this);\n", | |
" this._init_canvas(this);\n", | |
" this._init_toolbar(this);\n", | |
"\n", | |
" var fig = this;\n", | |
"\n", | |
" this.waiting = false;\n", | |
"\n", | |
" this.ws.onopen = function () {\n", | |
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", | |
" fig.send_message(\"send_image_mode\", {});\n", | |
" if (mpl.ratio != 1) {\n", | |
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", | |
" }\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" }\n", | |
"\n", | |
" this.imageObj.onload = function() {\n", | |
" if (fig.image_mode == 'full') {\n", | |
" // Full images could contain transparency (where diff images\n", | |
" // almost always do), so we need to clear the canvas so that\n", | |
" // there is no ghosting.\n", | |
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", | |
" }\n", | |
" fig.context.drawImage(fig.imageObj, 0, 0);\n", | |
" };\n", | |
"\n", | |
" this.imageObj.onunload = function() {\n", | |
" fig.ws.close();\n", | |
" }\n", | |
"\n", | |
" this.ws.onmessage = this._make_on_message_function(this);\n", | |
"\n", | |
" this.ondownload = ondownload;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_header = function() {\n", | |
" var titlebar = $(\n", | |
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", | |
" 'ui-helper-clearfix\"/>');\n", | |
" var titletext = $(\n", | |
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", | |
" 'text-align: center; padding: 3px;\"/>');\n", | |
" titlebar.append(titletext)\n", | |
" this.root.append(titlebar);\n", | |
" this.header = titletext[0];\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_canvas = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var canvas_div = $('<div/>');\n", | |
"\n", | |
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", | |
"\n", | |
" function canvas_keyboard_event(event) {\n", | |
" return fig.key_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" canvas_div.keydown('key_press', canvas_keyboard_event);\n", | |
" canvas_div.keyup('key_release', canvas_keyboard_event);\n", | |
" this.canvas_div = canvas_div\n", | |
" this._canvas_extra_style(canvas_div)\n", | |
" this.root.append(canvas_div);\n", | |
"\n", | |
" var canvas = $('<canvas/>');\n", | |
" canvas.addClass('mpl-canvas');\n", | |
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", | |
"\n", | |
" this.canvas = canvas[0];\n", | |
" this.context = canvas[0].getContext(\"2d\");\n", | |
"\n", | |
" var backingStore = this.context.backingStorePixelRatio ||\n", | |
"\tthis.context.webkitBackingStorePixelRatio ||\n", | |
"\tthis.context.mozBackingStorePixelRatio ||\n", | |
"\tthis.context.msBackingStorePixelRatio ||\n", | |
"\tthis.context.oBackingStorePixelRatio ||\n", | |
"\tthis.context.backingStorePixelRatio || 1;\n", | |
"\n", | |
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", | |
"\n", | |
" var rubberband = $('<canvas/>');\n", | |
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", | |
"\n", | |
" var pass_mouse_events = true;\n", | |
"\n", | |
" canvas_div.resizable({\n", | |
" start: function(event, ui) {\n", | |
" pass_mouse_events = false;\n", | |
" },\n", | |
" resize: function(event, ui) {\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" stop: function(event, ui) {\n", | |
" pass_mouse_events = true;\n", | |
" fig.request_resize(ui.size.width, ui.size.height);\n", | |
" },\n", | |
" });\n", | |
"\n", | |
" function mouse_event_fn(event) {\n", | |
" if (pass_mouse_events)\n", | |
" return fig.mouse_event(event, event['data']);\n", | |
" }\n", | |
"\n", | |
" rubberband.mousedown('button_press', mouse_event_fn);\n", | |
" rubberband.mouseup('button_release', mouse_event_fn);\n", | |
" // Throttle sequential mouse events to 1 every 20ms.\n", | |
" rubberband.mousemove('motion_notify', mouse_event_fn);\n", | |
"\n", | |
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n", | |
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n", | |
"\n", | |
" canvas_div.on(\"wheel\", function (event) {\n", | |
" event = event.originalEvent;\n", | |
" event['data'] = 'scroll'\n", | |
" if (event.deltaY < 0) {\n", | |
" event.step = 1;\n", | |
" } else {\n", | |
" event.step = -1;\n", | |
" }\n", | |
" mouse_event_fn(event);\n", | |
" });\n", | |
"\n", | |
" canvas_div.append(canvas);\n", | |
" canvas_div.append(rubberband);\n", | |
"\n", | |
" this.rubberband = rubberband;\n", | |
" this.rubberband_canvas = rubberband[0];\n", | |
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n", | |
" this.rubberband_context.strokeStyle = \"#000000\";\n", | |
"\n", | |
" this._resize_canvas = function(width, height) {\n", | |
" // Keep the size of the canvas, canvas container, and rubber band\n", | |
" // canvas in synch.\n", | |
" canvas_div.css('width', width)\n", | |
" canvas_div.css('height', height)\n", | |
"\n", | |
" canvas.attr('width', width * mpl.ratio);\n", | |
" canvas.attr('height', height * mpl.ratio);\n", | |
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", | |
"\n", | |
" rubberband.attr('width', width);\n", | |
" rubberband.attr('height', height);\n", | |
" }\n", | |
"\n", | |
" // Set the figure to an initial 600x600px, this will subsequently be updated\n", | |
" // upon first draw.\n", | |
" this._resize_canvas(600, 600);\n", | |
"\n", | |
" // Disable right mouse context menu.\n", | |
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", | |
" return false;\n", | |
" });\n", | |
"\n", | |
" function set_focus () {\n", | |
" canvas.focus();\n", | |
" canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" window.setTimeout(set_focus, 100);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>');\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items) {\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) {\n", | |
" // put a spacer in here.\n", | |
" continue;\n", | |
" }\n", | |
" var button = $('<button/>');\n", | |
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", | |
" 'ui-button-icon-only');\n", | |
" button.attr('role', 'button');\n", | |
" button.attr('aria-disabled', 'false');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
"\n", | |
" var icon_img = $('<span/>');\n", | |
" icon_img.addClass('ui-button-icon-primary ui-icon');\n", | |
" icon_img.addClass(image);\n", | |
" icon_img.addClass('ui-corner-all');\n", | |
"\n", | |
" var tooltip_span = $('<span/>');\n", | |
" tooltip_span.addClass('ui-button-text');\n", | |
" tooltip_span.html(tooltip);\n", | |
"\n", | |
" button.append(icon_img);\n", | |
" button.append(tooltip_span);\n", | |
"\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" var fmt_picker_span = $('<span/>');\n", | |
"\n", | |
" var fmt_picker = $('<select/>');\n", | |
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", | |
" fmt_picker_span.append(fmt_picker);\n", | |
" nav_element.append(fmt_picker_span);\n", | |
" this.format_dropdown = fmt_picker[0];\n", | |
"\n", | |
" for (var ind in mpl.extensions) {\n", | |
" var fmt = mpl.extensions[ind];\n", | |
" var option = $(\n", | |
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", | |
" fmt_picker.append(option);\n", | |
" }\n", | |
"\n", | |
" // Add hover states to the ui-buttons\n", | |
" $( \".ui-button\" ).hover(\n", | |
" function() { $(this).addClass(\"ui-state-hover\");},\n", | |
" function() { $(this).removeClass(\"ui-state-hover\");}\n", | |
" );\n", | |
"\n", | |
" var status_bar = $('<span class=\"mpl-message\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", | |
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", | |
" // which will in turn request a refresh of the image.\n", | |
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_message = function(type, properties) {\n", | |
" properties['type'] = type;\n", | |
" properties['figure_id'] = this.id;\n", | |
" this.ws.send(JSON.stringify(properties));\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.send_draw_message = function() {\n", | |
" if (!this.waiting) {\n", | |
" this.waiting = true;\n", | |
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" var format_dropdown = fig.format_dropdown;\n", | |
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", | |
" fig.ondownload(fig, format);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n", | |
" var size = msg['size'];\n", | |
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", | |
" fig._resize_canvas(size[0], size[1]);\n", | |
" fig.send_message(\"refresh\", {});\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", | |
" var x0 = msg['x0'] / mpl.ratio;\n", | |
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", | |
" var x1 = msg['x1'] / mpl.ratio;\n", | |
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", | |
" x0 = Math.floor(x0) + 0.5;\n", | |
" y0 = Math.floor(y0) + 0.5;\n", | |
" x1 = Math.floor(x1) + 0.5;\n", | |
" y1 = Math.floor(y1) + 0.5;\n", | |
" var min_x = Math.min(x0, x1);\n", | |
" var min_y = Math.min(y0, y1);\n", | |
" var width = Math.abs(x1 - x0);\n", | |
" var height = Math.abs(y1 - y0);\n", | |
"\n", | |
" fig.rubberband_context.clearRect(\n", | |
" 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n", | |
"\n", | |
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", | |
" // Updates the figure title.\n", | |
" fig.header.textContent = msg['label'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", | |
" var cursor = msg['cursor'];\n", | |
" switch(cursor)\n", | |
" {\n", | |
" case 0:\n", | |
" cursor = 'pointer';\n", | |
" break;\n", | |
" case 1:\n", | |
" cursor = 'default';\n", | |
" break;\n", | |
" case 2:\n", | |
" cursor = 'crosshair';\n", | |
" break;\n", | |
" case 3:\n", | |
" cursor = 'move';\n", | |
" break;\n", | |
" }\n", | |
" fig.rubberband_canvas.style.cursor = cursor;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_message = function(fig, msg) {\n", | |
" fig.message.textContent = msg['message'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n", | |
" // Request the server to send over a new figure.\n", | |
" fig.send_draw_message();\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", | |
" fig.image_mode = msg['mode'];\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Called whenever the canvas gets updated.\n", | |
" this.send_message(\"ack\", {});\n", | |
"}\n", | |
"\n", | |
"// A function to construct a web socket function for onmessage handling.\n", | |
"// Called in the figure constructor.\n", | |
"mpl.figure.prototype._make_on_message_function = function(fig) {\n", | |
" return function socket_on_message(evt) {\n", | |
" if (evt.data instanceof Blob) {\n", | |
" /* FIXME: We get \"Resource interpreted as Image but\n", | |
" * transferred with MIME type text/plain:\" errors on\n", | |
" * Chrome. But how to set the MIME type? It doesn't seem\n", | |
" * to be part of the websocket stream */\n", | |
" evt.data.type = \"image/png\";\n", | |
"\n", | |
" /* Free the memory for the previous frames */\n", | |
" if (fig.imageObj.src) {\n", | |
" (window.URL || window.webkitURL).revokeObjectURL(\n", | |
" fig.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", | |
" evt.data);\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", | |
" fig.imageObj.src = evt.data;\n", | |
" fig.updated_canvas_event();\n", | |
" fig.waiting = false;\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var msg = JSON.parse(evt.data);\n", | |
" var msg_type = msg['type'];\n", | |
"\n", | |
" // Call the \"handle_{type}\" callback, which takes\n", | |
" // the figure and JSON message as its only arguments.\n", | |
" try {\n", | |
" var callback = fig[\"handle_\" + msg_type];\n", | |
" } catch (e) {\n", | |
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" if (callback) {\n", | |
" try {\n", | |
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", | |
" callback(fig, msg);\n", | |
" } catch (e) {\n", | |
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", | |
" }\n", | |
" }\n", | |
" };\n", | |
"}\n", | |
"\n", | |
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", | |
"mpl.findpos = function(e) {\n", | |
" //this section is from http://www.quirksmode.org/js/events_properties.html\n", | |
" var targ;\n", | |
" if (!e)\n", | |
" e = window.event;\n", | |
" if (e.target)\n", | |
" targ = e.target;\n", | |
" else if (e.srcElement)\n", | |
" targ = e.srcElement;\n", | |
" if (targ.nodeType == 3) // defeat Safari bug\n", | |
" targ = targ.parentNode;\n", | |
"\n", | |
" // jQuery normalizes the pageX and pageY\n", | |
" // pageX,Y are the mouse positions relative to the document\n", | |
" // offset() returns the position of the element relative to the document\n", | |
" var x = e.pageX - $(targ).offset().left;\n", | |
" var y = e.pageY - $(targ).offset().top;\n", | |
"\n", | |
" return {\"x\": x, \"y\": y};\n", | |
"};\n", | |
"\n", | |
"/*\n", | |
" * return a copy of an object with only non-object keys\n", | |
" * we need this to avoid circular references\n", | |
" * http://stackoverflow.com/a/24161582/3208463\n", | |
" */\n", | |
"function simpleKeys (original) {\n", | |
" return Object.keys(original).reduce(function (obj, key) {\n", | |
" if (typeof original[key] !== 'object')\n", | |
" obj[key] = original[key]\n", | |
" return obj;\n", | |
" }, {});\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.mouse_event = function(event, name) {\n", | |
" var canvas_pos = mpl.findpos(event)\n", | |
"\n", | |
" if (name === 'button_press')\n", | |
" {\n", | |
" this.canvas.focus();\n", | |
" this.canvas_div.focus();\n", | |
" }\n", | |
"\n", | |
" var x = canvas_pos.x * mpl.ratio;\n", | |
" var y = canvas_pos.y * mpl.ratio;\n", | |
"\n", | |
" this.send_message(name, {x: x, y: y, button: event.button,\n", | |
" step: event.step,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
"\n", | |
" /* This prevents the web browser from automatically changing to\n", | |
" * the text insertion cursor when the button is pressed. We want\n", | |
" * to control all of the cursor setting manually through the\n", | |
" * 'cursor' event from matplotlib */\n", | |
" event.preventDefault();\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" // Handle any extra behaviour associated with a key event\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.key_event = function(event, name) {\n", | |
"\n", | |
" // Prevent repeat events\n", | |
" if (name == 'key_press')\n", | |
" {\n", | |
" if (event.which === this._key)\n", | |
" return;\n", | |
" else\n", | |
" this._key = event.which;\n", | |
" }\n", | |
" if (name == 'key_release')\n", | |
" this._key = null;\n", | |
"\n", | |
" var value = '';\n", | |
" if (event.ctrlKey && event.which != 17)\n", | |
" value += \"ctrl+\";\n", | |
" if (event.altKey && event.which != 18)\n", | |
" value += \"alt+\";\n", | |
" if (event.shiftKey && event.which != 16)\n", | |
" value += \"shift+\";\n", | |
"\n", | |
" value += 'k';\n", | |
" value += event.which.toString();\n", | |
"\n", | |
" this._key_event_extra(event, name);\n", | |
"\n", | |
" this.send_message(name, {key: value,\n", | |
" guiEvent: simpleKeys(event)});\n", | |
" return false;\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", | |
" if (name == 'download') {\n", | |
" this.handle_save(this, null);\n", | |
" } else {\n", | |
" this.send_message(\"toolbar_button\", {name: name});\n", | |
" }\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", | |
" this.message.textContent = tooltip;\n", | |
"};\n", | |
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", | |
"\n", | |
"mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", | |
"\n", | |
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", | |
" // Create a \"websocket\"-like object which calls the given IPython comm\n", | |
" // object with the appropriate methods. Currently this is a non binary\n", | |
" // socket, so there is still some room for performance tuning.\n", | |
" var ws = {};\n", | |
"\n", | |
" ws.close = function() {\n", | |
" comm.close()\n", | |
" };\n", | |
" ws.send = function(m) {\n", | |
" //console.log('sending', m);\n", | |
" comm.send(m);\n", | |
" };\n", | |
" // Register the callback with on_msg.\n", | |
" comm.on_msg(function(msg) {\n", | |
" //console.log('receiving', msg['content']['data'], msg);\n", | |
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n", | |
" ws.onmessage(msg['content']['data'])\n", | |
" });\n", | |
" return ws;\n", | |
"}\n", | |
"\n", | |
"mpl.mpl_figure_comm = function(comm, msg) {\n", | |
" // This is the function which gets called when the mpl process\n", | |
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n", | |
"\n", | |
" var id = msg.content.data.id;\n", | |
" // Get hold of the div created by the display call when the Comm\n", | |
" // socket was opened in Python.\n", | |
" var element = $(\"#\" + id);\n", | |
" var ws_proxy = comm_websocket_adapter(comm)\n", | |
"\n", | |
" function ondownload(figure, format) {\n", | |
" window.open(figure.imageObj.src);\n", | |
" }\n", | |
"\n", | |
" var fig = new mpl.figure(id, ws_proxy,\n", | |
" ondownload,\n", | |
" element.get(0));\n", | |
"\n", | |
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", | |
" // web socket which is closed, not our websocket->open comm proxy.\n", | |
" ws_proxy.onopen();\n", | |
"\n", | |
" fig.parent_element = element.get(0);\n", | |
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", | |
" if (!fig.cell_info) {\n", | |
" console.error(\"Failed to find cell for figure\", id, fig);\n", | |
" return;\n", | |
" }\n", | |
"\n", | |
" var output_index = fig.cell_info[2]\n", | |
" var cell = fig.cell_info[0];\n", | |
"\n", | |
"};\n", | |
"\n", | |
"mpl.figure.prototype.handle_close = function(fig, msg) {\n", | |
" var width = fig.canvas.width/mpl.ratio\n", | |
" fig.root.unbind('remove')\n", | |
"\n", | |
" // Update the output cell to use the data from the current canvas.\n", | |
" fig.push_to_output();\n", | |
" var dataURL = fig.canvas.toDataURL();\n", | |
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n", | |
" // the notebook keyboard shortcuts fail.\n", | |
" IPython.keyboard_manager.enable()\n", | |
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", | |
" fig.close_ws(fig, msg);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.close_ws = function(fig, msg){\n", | |
" fig.send_message('closing', msg);\n", | |
" // fig.ws.close()\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", | |
" // Turn the data on the canvas into data in the output cell.\n", | |
" var width = this.canvas.width/mpl.ratio\n", | |
" var dataURL = this.canvas.toDataURL();\n", | |
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.updated_canvas_event = function() {\n", | |
" // Tell IPython that the notebook contents must change.\n", | |
" IPython.notebook.set_dirty(true);\n", | |
" this.send_message(\"ack\", {});\n", | |
" var fig = this;\n", | |
" // Wait a second, then push the new image to the DOM so\n", | |
" // that it is saved nicely (might be nice to debounce this).\n", | |
" setTimeout(function () { fig.push_to_output() }, 1000);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._init_toolbar = function() {\n", | |
" var fig = this;\n", | |
"\n", | |
" var nav_element = $('<div/>');\n", | |
" nav_element.attr('style', 'width: 100%');\n", | |
" this.root.append(nav_element);\n", | |
"\n", | |
" // Define a callback function for later on.\n", | |
" function toolbar_event(event) {\n", | |
" return fig.toolbar_button_onclick(event['data']);\n", | |
" }\n", | |
" function toolbar_mouse_event(event) {\n", | |
" return fig.toolbar_button_onmouseover(event['data']);\n", | |
" }\n", | |
"\n", | |
" for(var toolbar_ind in mpl.toolbar_items){\n", | |
" var name = mpl.toolbar_items[toolbar_ind][0];\n", | |
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", | |
" var image = mpl.toolbar_items[toolbar_ind][2];\n", | |
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n", | |
"\n", | |
" if (!name) { continue; };\n", | |
"\n", | |
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", | |
" button.click(method_name, toolbar_event);\n", | |
" button.mouseover(tooltip, toolbar_mouse_event);\n", | |
" nav_element.append(button);\n", | |
" }\n", | |
"\n", | |
" // Add the status bar.\n", | |
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", | |
" nav_element.append(status_bar);\n", | |
" this.message = status_bar[0];\n", | |
"\n", | |
" // Add the close button to the window.\n", | |
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", | |
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", | |
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n", | |
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n", | |
" buttongrp.append(button);\n", | |
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", | |
" titlebar.prepend(buttongrp);\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._root_extra_style = function(el){\n", | |
" var fig = this\n", | |
" el.on(\"remove\", function(){\n", | |
"\tfig.close_ws(fig, {});\n", | |
" });\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._canvas_extra_style = function(el){\n", | |
" // this is important to make the div 'focusable\n", | |
" el.attr('tabindex', 0)\n", | |
" // reach out to IPython and tell the keyboard manager to turn it's self\n", | |
" // off when our div gets focus\n", | |
"\n", | |
" // location in version 3\n", | |
" if (IPython.notebook.keyboard_manager) {\n", | |
" IPython.notebook.keyboard_manager.register_events(el);\n", | |
" }\n", | |
" else {\n", | |
" // location in version 2\n", | |
" IPython.keyboard_manager.register_events(el);\n", | |
" }\n", | |
"\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype._key_event_extra = function(event, name) {\n", | |
" var manager = IPython.notebook.keyboard_manager;\n", | |
" if (!manager)\n", | |
" manager = IPython.keyboard_manager;\n", | |
"\n", | |
" // Check for shift+enter\n", | |
" if (event.shiftKey && event.which == 13) {\n", | |
" this.canvas_div.blur();\n", | |
" event.shiftKey = false;\n", | |
" // Send a \"J\" for go to next cell\n", | |
" event.which = 74;\n", | |
" event.keyCode = 74;\n", | |
" manager.command_mode();\n", | |
" manager.handle_keydown(event);\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"mpl.figure.prototype.handle_save = function(fig, msg) {\n", | |
" fig.ondownload(fig, null);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"mpl.find_output_cell = function(html_output) {\n", | |
" // Return the cell and output element which can be found *uniquely* in the notebook.\n", | |
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", | |
" // IPython event is triggered only after the cells have been serialised, which for\n", | |
" // our purposes (turning an active figure into a static one), is too late.\n", | |
" var cells = IPython.notebook.get_cells();\n", | |
" var ncells = cells.length;\n", | |
" for (var i=0; i<ncells; i++) {\n", | |
" var cell = cells[i];\n", | |
" if (cell.cell_type === 'code'){\n", | |
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n", | |
" var data = cell.output_area.outputs[j];\n", | |
" if (data.data) {\n", | |
" // IPython >= 3 moved mimebundle to data attribute of output\n", | |
" data = data.data;\n", | |
" }\n", | |
" if (data['text/html'] == html_output) {\n", | |
" return [cell, data, j];\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"// Register the function which deals with the matplotlib target/channel.\n", | |
"// The kernel may be null if the page has been refreshed.\n", | |
"if (IPython.notebook.kernel != null) {\n", | |
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", | |
"}\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Javascript object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<img src=\"data:image/png;base64,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\" width=\"639.85\">" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"(3000, 9000)" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"%pylab notebook\n", | |
"\n", | |
"spectrum = sim.runner.spectrum\n", | |
"spectrum_virtual = sim.runner.spectrum_virtual\n", | |
"spectrum_integrated = sim.runner.spectrum_integrated\n", | |
"\n", | |
"plot(spectrum.wavelength, spectrum.luminosity_density_lambda, label='normal packets')\n", | |
"plot(spectrum.wavelength, spectrum_virtual.luminosity_density_lambda, label='virtual packets')\n", | |
"plot(spectrum.wavelength, spectrum_integrated.luminosity_density_lambda, label='formal integral')\n", | |
"xlabel('Wavelength [$\\AA$]')\n", | |
"ylabel('Luminosity [erg/s/$\\AA$]')\n", | |
"legend()\n", | |
"xlim(3000, 9000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment