You can interact with this notebook online: Launch notebook
How to Generate the Plasma Graph¶
After running a simulation, TARDIS has the ability to create a graph showcasing how each variable used to compute the plasma state is connected and calculated (see the Plasma Documentation for more information). To do so, one needs to utilize the write_to_tex
command to generate a .tex file that displays the graph. This tutorial aims to showcase how the .tex file can be generated and
what options can be inputted to display the graph in a preferred method. To start, TARDIS needs to perform a simulation. Here the tardis_example.yml
configuration file is used as in the quickstart guide.
[1]:
#downloading necessary modules
from tardis import run_tardis
from tardis.io.atom_data import download_atom_data
import networkx as nx
from IPython.core.display import Image, display
/tmp/ipykernel_5899/3202857947.py:7: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display
from IPython.core.display import Image, display
[2]:
#downloading atom data
download_atom_data('kurucz_cd23_chianti_H_He')
Atomic Data kurucz_cd23_chianti_H_He already exists in /home/runner/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5. Will not download - override with force_download=True.
[3]:
#running simulation
sim = run_tardis('tardis_example.yml')
[tardis.io.model.parse_atom_data][INFO ]
Reading Atomic Data from kurucz_cd23_chianti_H_He.h5 (parse_atom_data.py:40)
[tardis.io.atom_data.util][INFO ]
Atom Data kurucz_cd23_chianti_H_He.h5 not found in local path.
Exists in TARDIS Data repo /home/runner/Downloads/tardis-data/kurucz_cd23_chianti_H_He.h5 (util.py:34)
[tardis.io.atom_data.base][INFO ]
Reading Atom Data with: UUID = 6f7b09e887a311e7a06b246e96350010 MD5 = 864f1753714343c41f99cb065710cace (base.py:262)
[tardis.io.atom_data.base][INFO ]
Non provided Atomic Data: synpp_refs, photoionization_data, yg_data, two_photon_data, linelist_atoms, linelist_molecules (base.py:266)
[tardis.io.model.parse_density_configuration][WARNING]
Number of density points larger than number of shells. Assuming inner point irrelevant (parse_density_configuration.py:114)
[tardis.model.matter.decay][INFO ]
Decaying abundances for 1123200.0 seconds (decay.py:101)
[tardis.simulation.base][INFO ]
Starting iteration 1 of 20 (base.py:450)
[py.warnings ][WARNING]
/home/runner/work/tardis/tardis/tardis/transport/montecarlo/montecarlo_main_loop.py:123: NumbaTypeSafetyWarning: unsafe cast from uint64 to int64. Precision may be lost.
vpacket_collection = vpacket_collections[i]
(warnings.py:112)
[tardis.simulation.base][INFO ]
Luminosity emitted = 7.942e+42 erg / s
Luminosity absorbed = 2.659e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 9.93e+03 K | 1.01e+04 K | 0.4 | 0.507 |
5 | 9.85e+03 K | 1.02e+04 K | 0.211 | 0.197 |
10 | 9.78e+03 K | 1.01e+04 K | 0.143 | 0.117 |
15 | 9.71e+03 K | 9.87e+03 K | 0.105 | 0.0869 |
[tardis.simulation.base][INFO ]
Current t_inner = 9933.952 K
Expected t_inner for next iteration = 10703.212 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 2 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.071e+43 erg / s
Luminosity absorbed = 3.576e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.01e+04 K | 1.08e+04 K | 0.507 | 0.525 |
5 | 1.02e+04 K | 1.1e+04 K | 0.197 | 0.203 |
10 | 1.01e+04 K | 1.08e+04 K | 0.117 | 0.125 |
15 | 9.87e+03 K | 1.05e+04 K | 0.0869 | 0.0933 |
[tardis.simulation.base][INFO ]
Current t_inner = 10703.212 K
Expected t_inner for next iteration = 10673.712 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 3 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.074e+43 erg / s
Luminosity absorbed = 3.391e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 1/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.08e+04 K | 1.1e+04 K | 0.525 | 0.483 |
5 | 1.1e+04 K | 1.12e+04 K | 0.203 | 0.189 |
10 | 1.08e+04 K | 1.1e+04 K | 0.125 | 0.118 |
15 | 1.05e+04 K | 1.06e+04 K | 0.0933 | 0.0895 |
[tardis.simulation.base][INFO ]
Current t_inner = 10673.712 K
Expected t_inner for next iteration = 10635.953 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 4 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.058e+43 erg / s
Luminosity absorbed = 3.352e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 2/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.483 | 0.469 |
5 | 1.12e+04 K | 1.12e+04 K | 0.189 | 0.182 |
10 | 1.1e+04 K | 1.1e+04 K | 0.118 | 0.113 |
15 | 1.06e+04 K | 1.07e+04 K | 0.0895 | 0.0861 |
[tardis.simulation.base][INFO ]
Current t_inner = 10635.953 K
Expected t_inner for next iteration = 10638.407 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 5 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.055e+43 erg / s
Luminosity absorbed = 3.399e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 3/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.469 | 0.479 |
5 | 1.12e+04 K | 1.13e+04 K | 0.182 | 0.178 |
10 | 1.1e+04 K | 1.1e+04 K | 0.113 | 0.113 |
15 | 1.07e+04 K | 1.07e+04 K | 0.0861 | 0.0839 |
[tardis.simulation.base][INFO ]
Current t_inner = 10638.407 K
Expected t_inner for next iteration = 10650.202 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 6 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.061e+43 erg / s
Luminosity absorbed = 3.398e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 4/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.479 | 0.47 |
5 | 1.13e+04 K | 1.12e+04 K | 0.178 | 0.185 |
10 | 1.1e+04 K | 1.11e+04 K | 0.113 | 0.112 |
15 | 1.07e+04 K | 1.07e+04 K | 0.0839 | 0.0856 |
[tardis.simulation.base][INFO ]
Current t_inner = 10650.202 K
Expected t_inner for next iteration = 10645.955 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 7 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.061e+43 erg / s
Luminosity absorbed = 3.382e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 5/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.47 | 0.47 |
5 | 1.12e+04 K | 1.13e+04 K | 0.185 | 0.178 |
10 | 1.11e+04 K | 1.11e+04 K | 0.112 | 0.112 |
15 | 1.07e+04 K | 1.07e+04 K | 0.0856 | 0.086 |
[tardis.simulation.base][INFO ]
Current t_inner = 10645.955 K
Expected t_inner for next iteration = 10642.050 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 8 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.062e+43 erg / s
Luminosity absorbed = 3.350e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 6/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.11e+04 K | 0.47 | 0.472 |
5 | 1.13e+04 K | 1.14e+04 K | 0.178 | 0.175 |
10 | 1.11e+04 K | 1.11e+04 K | 0.112 | 0.111 |
15 | 1.07e+04 K | 1.07e+04 K | 0.086 | 0.084 |
[tardis.simulation.base][INFO ]
Current t_inner = 10642.050 K
Expected t_inner for next iteration = 10636.106 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 9 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.052e+43 erg / s
Luminosity absorbed = 3.411e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 7/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.11e+04 K | 0.472 | 0.469 |
5 | 1.14e+04 K | 1.15e+04 K | 0.175 | 0.17 |
10 | 1.11e+04 K | 1.11e+04 K | 0.111 | 0.109 |
15 | 1.07e+04 K | 1.08e+04 K | 0.084 | 0.0822 |
[tardis.simulation.base][INFO ]
Current t_inner = 10636.106 K
Expected t_inner for next iteration = 10654.313 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 10 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.070e+43 erg / s
Luminosity absorbed = 3.335e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 8/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.1e+04 K | 0.469 | 0.475 |
5 | 1.15e+04 K | 1.14e+04 K | 0.17 | 0.177 |
10 | 1.11e+04 K | 1.11e+04 K | 0.109 | 0.112 |
15 | 1.08e+04 K | 1.06e+04 K | 0.0822 | 0.0878 |
[tardis.simulation.base][INFO ]
Current t_inner = 10654.313 K
Expected t_inner for next iteration = 10628.190 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 11 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.053e+43 erg / s
Luminosity absorbed = 3.363e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 9/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.475 | 0.472 |
5 | 1.14e+04 K | 1.12e+04 K | 0.177 | 0.184 |
10 | 1.11e+04 K | 1.1e+04 K | 0.112 | 0.114 |
15 | 1.06e+04 K | 1.06e+04 K | 0.0878 | 0.0859 |
[tardis.simulation.base][INFO ]
Current t_inner = 10628.190 K
Expected t_inner for next iteration = 10644.054 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 12 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.056e+43 erg / s
Luminosity absorbed = 3.420e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 10/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.11e+04 K | 0.472 | 0.467 |
5 | 1.12e+04 K | 1.13e+04 K | 0.184 | 0.176 |
10 | 1.1e+04 K | 1.11e+04 K | 0.114 | 0.11 |
15 | 1.06e+04 K | 1.08e+04 K | 0.0859 | 0.0821 |
[tardis.simulation.base][INFO ]
Current t_inner = 10644.054 K
Expected t_inner for next iteration = 10653.543 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 13 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.062e+43 erg / s
Luminosity absorbed = 3.406e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 11/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.11e+04 K | 0.467 | 0.466 |
5 | 1.13e+04 K | 1.13e+04 K | 0.176 | 0.18 |
10 | 1.11e+04 K | 1.11e+04 K | 0.11 | 0.111 |
15 | 1.08e+04 K | 1.08e+04 K | 0.0821 | 0.0841 |
[tardis.simulation.base][INFO ]
Current t_inner = 10653.543 K
Expected t_inner for next iteration = 10647.277 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 14 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.063e+43 erg / s
Luminosity absorbed = 3.369e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 12/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.11e+04 K | 0.466 | 0.469 |
5 | 1.13e+04 K | 1.13e+04 K | 0.18 | 0.182 |
10 | 1.11e+04 K | 1.1e+04 K | 0.111 | 0.113 |
15 | 1.08e+04 K | 1.07e+04 K | 0.0841 | 0.0854 |
[tardis.simulation.base][INFO ]
Current t_inner = 10647.277 K
Expected t_inner for next iteration = 10638.875 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 15 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.053e+43 erg / s
Luminosity absorbed = 3.417e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 13/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.1e+04 K | 0.469 | 0.484 |
5 | 1.13e+04 K | 1.13e+04 K | 0.182 | 0.181 |
10 | 1.1e+04 K | 1.1e+04 K | 0.113 | 0.113 |
15 | 1.07e+04 K | 1.07e+04 K | 0.0854 | 0.0858 |
[tardis.simulation.base][INFO ]
Current t_inner = 10638.875 K
Expected t_inner for next iteration = 10655.125 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 16 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.059e+43 erg / s
Luminosity absorbed = 3.445e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 14/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.1e+04 K | 0.484 | 0.472 |
5 | 1.13e+04 K | 1.13e+04 K | 0.181 | 0.177 |
10 | 1.1e+04 K | 1.1e+04 K | 0.113 | 0.113 |
15 | 1.07e+04 K | 1.06e+04 K | 0.0858 | 0.0858 |
[tardis.simulation.base][INFO ]
Current t_inner = 10655.125 K
Expected t_inner for next iteration = 10655.561 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 17 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.067e+43 erg / s
Luminosity absorbed = 3.372e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 15/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.1e+04 K | 1.11e+04 K | 0.472 | 0.468 |
5 | 1.13e+04 K | 1.14e+04 K | 0.177 | 0.175 |
10 | 1.1e+04 K | 1.11e+04 K | 0.113 | 0.11 |
15 | 1.06e+04 K | 1.08e+04 K | 0.0858 | 0.0816 |
[tardis.simulation.base][INFO ]
Current t_inner = 10655.561 K
Expected t_inner for next iteration = 10636.536 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 18 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.057e+43 erg / s
Luminosity absorbed = 3.365e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 16/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.11e+04 K | 0.468 | 0.464 |
5 | 1.14e+04 K | 1.13e+04 K | 0.175 | 0.177 |
10 | 1.11e+04 K | 1.1e+04 K | 0.11 | 0.113 |
15 | 1.08e+04 K | 1.07e+04 K | 0.0816 | 0.0848 |
[tardis.simulation.base][INFO ]
Current t_inner = 10636.536 K
Expected t_inner for next iteration = 10641.692 K
(base.py:658)
[tardis.simulation.base][INFO ]
Starting iteration 19 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.056e+43 erg / s
Luminosity absorbed = 3.405e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
[tardis.simulation.base][INFO ]
Iteration converged 17/4 consecutive times. (base.py:262)
[tardis.simulation.base][INFO ]
Plasma stratification: (base.py:631)
Shell No. | t_rad | next_t_rad | w | next_w |
---|---|---|---|---|
0 | 1.11e+04 K | 1.11e+04 K | 0.464 | 0.466 |
5 | 1.13e+04 K | 1.13e+04 K | 0.177 | 0.177 |
10 | 1.1e+04 K | 1.11e+04 K | 0.113 | 0.111 |
15 | 1.07e+04 K | 1.07e+04 K | 0.0848 | 0.0853 |
[tardis.simulation.base][INFO ]
Current t_inner = 10641.692 K
Expected t_inner for next iteration = 10650.463 K
(base.py:658)
[tardis.simulation.base][INFO ]
Simulation finished in 19 iterations
Simulation took 51.43 s
(base.py:548)
[tardis.simulation.base][INFO ]
Starting iteration 20 of 20 (base.py:450)
[tardis.simulation.base][INFO ]
Luminosity emitted = 1.061e+43 erg / s
Luminosity absorbed = 3.401e+42 erg / s
Luminosity requested = 1.059e+43 erg / s
(base.py:663)
Displaying the Graph Within A Jupyter Notebook¶
Now that TARDIS has finished a simulation run, the plasma graph can now be generated. To display the basic graph within a Jupyter Notebook, one can simply use the nx.draw
as follows:
[4]:
%pylab inline
nx.draw(sim.plasma.graph)
%pylab is deprecated, use %matplotlib inline and import the required libraries.
Populating the interactive namespace from numpy and matplotlib
There are many different ways of displaying the graph in a more readable format. One such example is shown below.
[5]:
position = nx.spring_layout(sim.plasma.graph, k=0.75, iterations=15)
nx.draw(sim.plasma.graph, position, with_labels=True)
Note
For the purposes of this tutorial, pylab inline has been used to display the graph within the tutorial page. It is recommended to use pylab notebook when displaying the graph on a local Jupyter Notebook to explore the nodes in depth.
Saving the Graph Onto a .tex File¶
With the write_to_tex
command, a copy of the graph can be saved within a .tex file. Currently, there are four parameters TARDIS uses to write the graph in LaTeX and save it to a .tex file:
fname_graph: The name of the file TARDIS will save the graph onto (required)
scale: a scaling factor to expand/contract the generated graph
args: a list of optional settings for displaying the graph
latex_label: a parameter that enables or disables writing LaTeX equations and edge labels onto the file (default set to True to enable writing)
With these parameters, TARDIS can write the graph in many different ways. For this tutorial, only a few examples will be shown to display what each parameter exactly does and what the resulting graph will look like when generated in a LaTeX environment.
Warning
As of now, TARDIS has an issue of not spacing edges correctly, causing the default output to look very condensed and unreadable in certain areas. It is recommended, therefore, to use the given parameters to generate a graph that displays everything in as readable a format as possible.
Default Plasma Graph¶
From above, TARDIS only needs the name of the file it should save the graph to as default.
[6]:
sim.plasma.write_to_tex("plasma_graph_default.tex")
With the default settings, the contents of the file will simply be the graph written in LaTeX.
[7]:
with open("plasma_graph_default.tex", "r") as file:
print(file.read())
file.close()
\documentclass[class=minimal,border=20pt]{standalone}
\usepackage[x11names, svgnames, rgb]{xcolor}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{snakes,arrows,shapes}
\usepackage{amsmath}
%
%
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{0pt}%
%
\begin{document}
\pagestyle{empty}
%
%
%
% Start of code
\begin{tikzpicture}[>=latex',line join=bevel,scale=0.5]
%%
\node (DilutePlanckianRadField) at (726.87bp,1150.6bp) [draw,ellipse] {$\textrm{DilutePlanckianRadField}$};
\node (TRadiative) at (972.87bp,1061.4bp) [draw,ellipse] {$\textrm{TRadiative}$};
\node (DilutionFactor) at (712.87bp,1061.4bp) [draw,ellipse] {$\textrm{DilutionFactor}$};
\node (ElectronTemperature) at (366.87bp,972.1bp) [draw,ellipse] {$\textrm{ElectronTemperature: }\textrm{const.}\times T_{\textrm{rad}}$};
\node (BetaRadiation) at (1103.9bp,972.1bp) [draw,ellipse] {$\textrm{BetaRadiation: }\dfrac{1}{k_{B} T_{\textrm{rad}}}$};
\node (NumberDensity) at (1745.9bp,1150.6bp) [draw,ellipse] {$\textrm{NumberDensity}$};
\node (SelectedAtoms) at (2421.9bp,1061.4bp) [draw,ellipse] {$\textrm{SelectedAtoms}$};
\node (IonNumberDensity) at (2183.9bp,488.35bp) [draw,ellipse] {$\textrm{IonNumberDensity}$};
\node (Levels) at (2176.9bp,972.1bp) [draw,ellipse] {$\textrm{Levels}$};
\node (Lines) at (2797.9bp,918.1bp) [draw,ellipse] {$\textrm{Lines}$};
\node (IonizationData) at (1937.9bp,972.1bp) [draw,ellipse] {$\textrm{IonizationData}$};
\node (MacroAtomData) at (2462.9bp,972.1bp) [draw,ellipse] {$\textrm{MacroAtomData}$};
\node (LevelNumberDensity) at (2333.9bp,399.1bp) [draw,ellipse] {$\textrm{LevelNumberDensity: }N_{i,j}\dfrac{bf_{i,j,k}}{Z_{i,j}}$};
\node (TimeExplosion) at (3223.9bp,309.85bp) [draw,ellipse] {$\textrm{TimeExplosion}$};
\node (TauSobolev) at (2867.9bp,208.55bp) [draw,ellipse] {$\textrm{TauSobolev: }\dfrac{\pi e^{2}}{m_{e} c}f_{lu}\lambda t_{exp} n_{lower} \Big(1-\dfrac{g_{lower}n_{upper}}{g_{upper}n_{lower}}\Big)$};
\node (TransitionProbabilities) at (2563.9bp,18.0bp) [draw,ellipse] {$\textrm{TransitionProbabilities}$};
\node (BetaSobolev) at (2706.9bp,107.25bp) [draw,ellipse] {$\textrm{BetaSobolev}$};
\node (AtomicData) at (2154.9bp,1061.4bp) [draw,ellipse] {$\textrm{AtomicData}$};
\node (LevelBoltzmannFactorLTE) at (2075.9bp,864.1bp) [draw,ellipse] {$\textrm{LevelBoltzmannFactorLTE: }g_{i,j,k}e^{\dfrac{-\epsilon_{i,j,k}}{k_{\textrm{B}}T_{\textrm{rad}}}}$};
\node (StimulatedEmissionFactor) at (2606.9bp,309.85bp) [draw,ellipse] {$\textrm{StimulatedEmissionFactor: }1-\dfrac{g_{lower}n_{upper}}{g_{upper}n_{lower}}$};
\node (PhiSahaLTE) at (1332.9bp,577.6bp) [draw,ellipse] {$\textrm{PhiSahaLTE: }\dfrac{2Z_{i,j+1}}{Z_{i,j}}\big( \dfrac{2\pi m_{e}/\beta_{\textrm{rad}}}{h^2} \big)^{3/2}e^{\dfrac{-\chi_{i,j}}{kT_{\textrm{rad}}}}$};
\node (JBlues) at (2934.9bp,107.25bp) [draw,ellipse] {$\textrm{JBlues}$};
\node (LinkTRadTElectron) at (366.87bp,1061.4bp) [draw,ellipse] {$\textrm{LinkTRadTElectron}$};
\node (HeliumTreatment) at (2047.9bp,1150.6bp) [draw,ellipse] {$\textrm{HeliumTreatment}$};
\node (ContinuumInteractionSpecies) at (2419.9bp,1150.6bp) [draw,ellipse] {$\textrm{ContinuumInteractionSpecies}$};
\node (NLTEIonizationSpecies) at (2818.9bp,1150.6bp) [draw,ellipse] {$\textrm{NLTEIonizationSpecies}$};
\node (NLTEExcitationSpecies) at (3185.9bp,1150.6bp) [draw,ellipse] {$\textrm{NLTEExcitationSpecies}$};
\node (GElectron) at (916.87bp,810.1bp) [draw,ellipse] {$\textrm{GElectron: }\Big(\dfrac{2\pi m_{e}/\beta_{\textrm{rad}}}{h^2}\Big)^{3/2}$};
\node (LevelBoltzmannFactorNoNLTE) at (2140.9bp,756.1bp) [draw,ellipse] {$\textrm{LevelBoltzmannFactorNoNLTE}$};
\node (PartitionFunction) at (2140.9bp,666.85bp) [draw,ellipse] {$\textrm{PartitionFunction: }\sum_{k}bf_{i,j,k}$};
\draw [->] (DilutePlanckianRadField) ..controls (815.24bp,1118.3bp) and (874.39bp,1097.3bp) .. (TRadiative);
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\draw (874.12bp,1101.3bp) node {dilute-planckian-radiation-field};
\draw [->] (DilutePlanckianRadField) ..controls (722.21bp,1120.5bp) and (719.65bp,1104.6bp) .. (DilutionFactor);
\draw (724.12bp,1101.3bp) node {dilute-planckian-radiation-field};
\draw [->] (TRadiative) ..controls (789.18bp,1033.9bp) and (612.58bp,1008.5bp) .. (ElectronTemperature);
\draw (727.12bp,1012.05bp) node {$T_{\textrm{rad}}$};
\draw [->] (TRadiative) ..controls (1018.1bp,1030.2bp) and (1046.2bp,1011.5bp) .. (BetaRadiation);
\draw (1052.12bp,1012.05bp) node {$T_{\textrm{rad}}$};
\draw [->] (NumberDensity) ..controls (1966.8bp,1121.1bp) and (2186.7bp,1092.7bp) .. (SelectedAtoms);
\draw (2146.12bp,1101.3bp) node {$N_{i}$};
\draw [->] (NumberDensity) ..controls (1553.4bp,1127.0bp) and (1445.9bp,1103.9bp) .. (1445.9bp,1062.4bp) .. controls (1445.9bp,1062.4bp) and (1445.9bp,1062.4bp) .. (1445.9bp,809.1bp) .. controls (1445.9bp,775.79bp) and (1445.0bp,760.25bp) .. (1469.9bp,738.1bp) .. controls (1612.4bp,611.25bp) and (1701.9bp,682.05bp) .. (1889.9bp,648.85bp) .. controls (1973.2bp,634.14bp) and (2211.4bp,659.48bp) .. (2266.9bp,595.6bp) .. controls (2290.9bp,567.94bp) and (2254.5bp,534.38bp) .. (IonNumberDensity);
\draw (1448.12bp,805.43bp) node {$N_{i}$};
\draw [->] (SelectedAtoms) ..controls (2385.4bp,1031.6bp) and (2364.0bp,1016.9bp) .. (2342.9bp,1008.1bp) .. controls (2317.6bp,997.52bp) and (2288.7bp,990.0bp) .. (Levels);
\draw (2377.12bp,1012.05bp) node {selected-atoms};
\draw [->] (SelectedAtoms) ..controls (2505.0bp,1029.9bp) and (2562.2bp,1008.8bp) .. (2611.9bp,990.1bp) .. controls (2657.8bp,972.84bp) and (2710.0bp,952.89bp) .. (Lines);
\draw (2565.12bp,1012.05bp) node {selected-atoms};
\draw [->] (SelectedAtoms) ..controls (2306.9bp,1034.1bp) and (2237.3bp,1019.1bp) .. (2175.9bp,1008.1bp) .. controls (2131.9bp,1000.2bp) and (2083.1bp,992.8bp) .. (IonizationData);
\draw (2266.12bp,1012.05bp) node {selected-atoms};
\draw [->] (SelectedAtoms) ..controls (2435.7bp,1030.9bp) and (2443.5bp,1014.3bp) .. (MacroAtomData);
\draw (2448.12bp,1012.05bp) node {selected-atoms};
\draw [->] (IonNumberDensity) ..controls (2236.3bp,456.84bp) and (2268.9bp,437.87bp) .. (LevelNumberDensity);
\draw (2274.12bp,439.05bp) node {$N_{i,j}$};
\draw [->] (TimeExplosion) ..controls (3118.3bp,279.39bp) and (3044.3bp,258.77bp) .. (TauSobolev);
\draw (3090.12bp,260.55bp) node {$t_{\textrm{exp}}$};
\draw [->] (TauSobolev) ..controls (2648.2bp,166.22bp) and (2591.0bp,147.85bp) .. (2572.4bp,125.25bp) .. controls (2554.7bp,103.85bp) and (2554.8bp,71.091bp) .. (TransitionProbabilities);
\draw (2574.12bp,102.58bp) node {$\tau_{\textrm{sobolev}}$};
\draw [->] (TauSobolev) ..controls (2796.0bp,163.24bp) and (2766.7bp,145.17bp) .. (BetaSobolev);
\draw (2789.12bp,147.2bp) node {$\tau_{\textrm{sobolev}}$};
\draw [->] (AtomicData) ..controls (2162.2bp,1031.2bp) and (2166.3bp,1015.0bp) .. (Levels);
\draw (2169.12bp,1012.05bp) node {atomic-data};
\draw [->] (AtomicData) ..controls (2245.4bp,1042.2bp) and (2260.5bp,1035.2bp) .. (2272.9bp,1025.4bp) .. controls (2301.5bp,1002.7bp) and (2282.7bp,973.11bp) .. (2313.9bp,954.1bp) .. controls (2351.4bp,931.25bp) and (2665.2bp,941.24bp) .. (2708.9bp,936.1bp) .. controls (2715.3bp,935.35bp) and (2721.9bp,934.4bp) .. (Lines);
\draw (2288.12bp,1012.05bp) node {atomic-data};
\draw [->] (AtomicData) ..controls (2079.0bp,1029.8bp) and (2027.6bp,1009.2bp) .. (IonizationData);
\draw (2067.12bp,1012.05bp) node {atomic-data};
\draw [->] (AtomicData) ..controls (1721.0bp,1040.1bp) and (795.36bp,996.31bp) .. (780.87bp,990.1bp) .. controls (759.49bp,980.94bp) and (761.93bp,967.45bp) .. (742.87bp,954.1bp) .. controls (640.31bp,882.27bp) and (575.49bp,920.41bp) .. (490.87bp,828.1bp) .. controls (396.46bp,725.11bp) and (379.87bp,673.7bp) .. (379.87bp,533.98bp) .. controls (379.87bp,533.98bp) and (379.87bp,533.98bp) .. (379.87bp,106.25bp) .. controls (379.87bp,56.294bp) and (1858.4bp,29.478bp) .. (TransitionProbabilities);
\draw (383.12bp,528.3bp) node {atomic-data};
\draw [->] (AtomicData) ..controls (2251.5bp,1041.3bp) and (2279.2bp,1034.1bp) .. (2303.9bp,1025.4bp) .. controls (2320.4bp,1019.5bp) and (2323.0bp,1014.4bp) .. (2339.4bp,1008.1bp) .. controls (2355.3bp,1002.0bp) and (2372.6bp,996.49bp) .. (MacroAtomData);
\draw (2341.12bp,1012.05bp) node {atomic-data};
\draw [->] (Levels) ..controls (2144.3bp,936.94bp) and (2119.0bp,910.32bp) .. (LevelBoltzmannFactorLTE);
\draw (2143.12bp,913.43bp) node {$\textrm{levels}$};
\draw [->] (Levels) ..controls (2259.1bp,957.84bp) and (2273.9bp,955.77bp) .. (2287.9bp,954.1bp) .. controls (2380.4bp,943.04bp) and (2697.9bp,958.34bp) .. (2697.9bp,865.1bp) .. controls (2697.9bp,865.1bp) and (2697.9bp,865.1bp) .. (2697.9bp,398.1bp) .. controls (2697.9bp,370.53bp) and (2675.8bp,348.96bp) .. (StimulatedEmissionFactor);
\draw (2700.12bp,617.55bp) node {$\textrm{metastability}$};
\draw [->] (Levels) ..controls (2365.4bp,940.36bp) and (2605.8bp,899.46bp) .. (2640.9bp,882.1bp) .. controls (2651.0bp,877.08bp) and (2659.9bp,876.44bp) .. (2659.9bp,865.1bp) .. controls (2659.9bp,865.1bp) and (2659.9bp,865.1bp) .. (2659.9bp,487.35bp) .. controls (2659.9bp,451.26bp) and (2584.4bp,429.7bp) .. (LevelNumberDensity);
\draw (2662.12bp,662.18bp) node {$\textrm{levels}$};
\draw [->] (Lines) ..controls (3036.4bp,897.39bp) and (3383.9bp,862.05bp) .. (3383.9bp,811.1bp) .. controls (3383.9bp,811.1bp) and (3383.9bp,811.1bp) .. (3383.9bp,308.85bp) .. controls (3383.9bp,269.21bp) and (3324.4bp,245.04bp) .. (TauSobolev);
\draw (3386.12bp,572.93bp) node {$\lambda_{cm}$};
\draw [->] (Lines) ..controls (2780.4bp,879.32bp) and (2766.9bp,843.51bp) .. (2766.9bp,811.1bp) .. controls (2766.9bp,811.1bp) and (2766.9bp,811.1bp) .. (2766.9bp,398.1bp) .. controls (2766.9bp,365.41bp) and (2740.8bp,344.9bp) .. (StimulatedEmissionFactor);
\draw (2769.12bp,617.55bp) node {$\textrm{lines}$};
\draw [->] (IonizationData) ..controls (1689.9bp,964.72bp) and (1528.2bp,956.05bp) .. (1505.9bp,936.1bp) .. controls (1481.9bp,914.69bp) and (1491.9bp,897.27bp) .. (1491.9bp,865.1bp) .. controls (1491.9bp,865.1bp) and (1491.9bp,865.1bp) .. (1491.9bp,665.85bp) .. controls (1491.9bp,633.32bp) and (1466.0bp,612.84bp) .. (PhiSahaLTE);
\draw (1494.12bp,751.43bp) node {ionization-data};
\draw [->] (JBlues) ..controls (2815.2bp,78.109bp) and (2713.3bp,54.147bp) .. (TransitionProbabilities);
\draw (2784.12bp,57.95bp) node {$J_{\textrm{blue}}$};
\draw [->] (LinkTRadTElectron) ..controls (366.87bp,1031.3bp) and (366.87bp,1015.3bp) .. (ElectronTemperature);
\draw (369.12bp,1012.05bp) node {$T_{\textrm{electron}}/T_{\textrm{rad}}$};
\draw [->] (BetaRadiation) ..controls (1050.2bp,925.18bp) and (984.0bp,868.54bp) .. (GElectron);
\draw (1062.12bp,913.43bp) node {$\beta_{\textrm{rad}}$};
\draw [->] (BetaRadiation) ..controls (1422.8bp,936.33bp) and (1724.1bp,903.47bp) .. (LevelBoltzmannFactorLTE);
\draw (1735.12bp,913.43bp) node {$\beta_{\textrm{rad}}$};
\draw [->] (BetaRadiation) ..controls (1312.0bp,941.91bp) and (1354.9bp,915.13bp) .. (1354.9bp,865.1bp) .. controls (1354.9bp,865.1bp) and (1354.9bp,865.1bp) .. (1354.9bp,665.85bp) .. controls (1354.9bp,645.67bp) and (1349.3bp,623.64bp) .. (PhiSahaLTE);
\draw (1357.12bp,751.43bp) node {$\beta_{\textrm{rad}}$};
\draw [->] (GElectron) ..controls (1022.2bp,750.72bp) and (1208.5bp,647.51bp) .. (PhiSahaLTE);
\draw (1109.12bp,706.8bp) node {$g_{\textrm{electron}}$};
\draw [->] (LevelBoltzmannFactorLTE) ..controls (2096.6bp,829.33bp) and (2112.4bp,803.51bp) .. (LevelBoltzmannFactorNoNLTE);
\draw (2120.12bp,805.43bp) node {$bf_{i,j,k}$};
\draw [->] (PhiSahaLTE) ..controls (1665.1bp,542.54bp) and (1912.3bp,517.2bp) .. (IonNumberDensity);
\draw (1836.12bp,528.3bp) node {$\Phi$};
\draw [->] (StimulatedEmissionFactor) ..controls (2687.9bp,278.01bp) and (2737.8bp,259.03bp) .. (TauSobolev);
\draw (2739.12bp,260.55bp) node {stimulated-emission-factor};
\draw [->] (StimulatedEmissionFactor) ..controls (2456.7bp,279.55bp) and (2393.6bp,261.26bp) .. (2376.9bp,238.6bp) .. controls (2321.0bp,163.13bp) and (2447.3bp,80.388bp) .. (TransitionProbabilities);
\draw (2387.12bp,147.2bp) node {stimulated-emission-factor};
\draw [->] (LevelNumberDensity) ..controls (2163.0bp,365.41bp) and (2086.2bp,336.79bp) .. (2126.4bp,291.85bp) .. controls (2152.7bp,262.45bp) and (2322.0bp,242.39bp) .. (TauSobolev);
\draw (2128.12bp,305.18bp) node {$N_{i,j,k}$};
\draw [->] (LevelNumberDensity) ..controls (2432.1bp,366.72bp) and (2494.9bp,346.65bp) .. (StimulatedEmissionFactor);
\draw (2496.12bp,349.8bp) node {$N_{i,j,k}$};
\draw [->] (PartitionFunction) ..controls (2251.9bp,639.22bp) and (2282.3bp,622.53bp) .. (2299.9bp,595.6bp) .. controls (2317.2bp,569.07bp) and (2318.8bp,549.77bp) .. (2299.9bp,524.35bp) .. controls (2295.3bp,518.23bp) and (2289.7bp,513.13bp) .. (IonNumberDensity);
\draw (2315.12bp,572.93bp) node {$Z_{i,j}$};
\draw [->] (PartitionFunction) ..controls (1869.5bp,636.55bp) and (1653.6bp,613.24bp) .. (PhiSahaLTE);
\draw (1811.12bp,617.55bp) node {$Z_{i,j}$};
\draw [->] (PartitionFunction) ..controls (2276.9bp,640.19bp) and (2305.9bp,623.36bp) .. (2321.9bp,595.6bp) .. controls (2350.1bp,546.48bp) and (2350.7bp,526.83bp) .. (2345.9bp,470.35bp) .. controls (2344.7bp,456.38bp) and (2342.2bp,441.02bp) .. (LevelNumberDensity);
\draw (2349.12bp,528.3bp) node {$Z_{i,j}$};
\draw [->] (BetaSobolev) ..controls (2657.2bp,75.935bp) and (2625.9bp,56.859bp) .. (TransitionProbabilities);
\draw (2650.12bp,57.95bp) node {$\beta_{\textrm{sobolev}}$};
\draw [->] (LevelBoltzmannFactorNoNLTE) ..controls (2324.6bp,726.74bp) and (2410.9bp,703.51bp) .. (2410.9bp,667.85bp) .. controls (2410.9bp,667.85bp) and (2410.9bp,667.85bp) .. (2410.9bp,487.35bp) .. controls (2410.9bp,461.37bp) and (2391.4bp,439.47bp) .. (LevelNumberDensity);
\draw (2413.12bp,572.93bp) node {level-boltzmann-factor};
\draw [->] (LevelBoltzmannFactorNoNLTE) ..controls (2140.9bp,726.04bp) and (2140.9bp,710.06bp) .. (PartitionFunction);
\draw (2143.12bp,706.8bp) node {level-boltzmann-factor};
%
\end{tikzpicture}
% End of code
%
\end{document}
%
If one was to build the .tex file, the following graph will be generated:
[8]:
display(Image('default_plasma_graph.png', unconfined=True))
Note
For the remainder of this tutorial, the contents of the .tex file will be omitted and only the generated graph will be shown.
Plasma Graph with Different Scale¶
One can change the scaling of the graph by passing in a positive, non-zero float into the scale
parameter to either make the resulting graph larger (scale > 0.5) or smaller (scale < 0.5).
[9]:
sim.plasma.write_to_tex("plasma_graph_scaled.tex", scale = 1.25)
With a scale of 1.25, the graph TARDIS will output will look as follows:
[10]:
display(Image('plasma_graph_scaled.png', unconfined=True))
Plasma Graph with No Equations¶
TARDIS has the option to generate a graph without any equations or edge labels via the latex_label
command. The graph in this case will only consist of nodes containing the names of variables used to calculate the plasma state connected with edges.
[11]:
sim.plasma.write_to_tex("plasma_graph_no_eq.tex", latex_label=False)
With these inputs, the graph will look like this:
[12]:
display(Image('plasma_graph_no_eq.png', unconfined=True))
Plasma Graph with Inputted Arguments¶
In order to create the .tex file, TARDIS will first convert the graph into a readable DOT format via the write_to_dot
function. As such, using the args
parameter within the write_to_tex
function, one can pass in any Graphviz attribute for TARDIS to implement as a list. In this example, the following attributes are used:
nodesep: changes spacing of nodes
edge[lblstyle]: edits the edge labels
margin: sets the margins of the outputted graph
ratio: sets the drawing height and width
size: sets the maximum height and width of the graph
For more information on these attributes, visit the Graphviz attributes documentation.
[13]:
attributes_list = [r"nodesep=1.0", r'edge[lblstyle="fill=white"]', r'margin=0', r'ratio="fill"', r'size="8.3,11.7!"']
sim.plasma.write_to_tex("plasma_graph_with_args.tex", args=attributes_list)
With these attributes, the following graph can be generated:
[14]:
display(Image('plasma_graph_args.png', unconfined=True))