How to generage a Chemistry Table for GEAR¶
To run the following example, you need first to download some tables.
copy the data tables
wget https://obswww.unige.ch/~revaz/PyChemTables.tar.gz tar -xzf PyChemTables.tar.gz rm PyChemTables.tar.gz
Setup a parameter file¶
First, it is important to create a parameter file that describes some chemistry parameters, including the IMF as well as the path to yields tables. You can copy an example of such parameter file from here:
wget https://obswww.unige.ch/~revaz/chimieparam.py
The parameter file has a python syntax and is decomposed in the following blocks:
IMF section¶
The IMF is modeled as a list of affine functions of different slopes. It is described by the following parameters:
###########################
# IMF
###########################
Mmin = 0.05 # min mass of all stars considered in the code
Mmax = 50. # max mass of all stars considered in the code
m_s = [0.08, 0.5, 1.0] # masses ranges
a_s = [-1.35, -1.35, -1.35, -1.35] # IMF slope in the previous mass ranges
SNII section¶
Parameters for the SNII model:
###########################
# SNII
###########################
SNII_Mmin = 8. # min mass of SNII stars
SNII_Mmax = Mmax # max mass of SNII stars
# NOTE: ejecta and yields are zero outside this range
# masses for metal injection
Mmin1SNII = SNII_Mmin # minimum mass used for the yields interpolation
Mmax1SNII = Mmax*1.5 # maximum mass used for the yields interpolation
# masses for helium core
Mmin2SNII = Mmin # minimum mass used for the helium core interpolation
Mmax2SNII = Mmax*1.5 # maximum mass used for the helium core interpolation
# number of bins
nSNII = 200 # number of bins used for the yields and helium core interpolation
# mass resolution
dMSNII = 0.001 # mass resolution used for the yields and helium core interpolation
SNIIYieldsFile = ['tables/MetalSNII/yields_tsujimoto95bis-25042013.txt'] # Yields tables
SNIIHeliumCoreFile = 'tables/HeliumCore.dat' # Corresponding helium core files
SNIIEnergy section¶
Parameters:
SNIIEnergyFile = 'tables/SNIIEnergyFile_Nomoto2012.dat' # a file that gives the energy (in 1e51 ergs)
# as a function of the energy mass
SNIa section¶
Parameters for the SNIa model. Here, we use the Kobayashi model:
###########################
# SNIa
###########################
SNIa_Mpl = 3.0 # minimal mass for SNIa
SNIa_Mpu = 8.0 # maximal mass for SNIa
SNIa_a = -0.35 # imf slope
SNIa_Mdl1 = 0.9 # minimal mass for MS stars
SNIa_Mdu1 = 1.5 # maximal mass for MS stars
SNIa_bb1 = 0.02 # normalisation
SNIa_Mdl2 = 1.8 # minimal mass for RG stars
SNIa_Mdu2 = 2.6 # maximal mass for RG stars
SNIa_bb2 = 0.05 # normalisation
MeanWDMass = 1.38 # mean whith dwarfs mass
SNIaFile = 'tables/MetalSNIa/yields_SNIa_tsujimoto95bis.txt' # Yields tables
DYIN section¶
In this section, we parametrize the ejectas from dying stars. Dying stars are all stars except stars that generate SNII or SNIa, which are described below.
Parameters for the DYIN stars:
###########################
# DYIN
###########################
DYIN_Mmin = 1.3 # min mass of DYIN stars
DYIN_Mmax = 3.0 # max mass of DYIN stars
# NOTE: ejecta and yields are zero outside this range
# masses for metal injection
Mmin1DYIN = DYIN_Mmin # minimum mass used for the yields interpolation
Mmax1DYIN = Mmax*1.5 # maximum mass used for the yields interpolation
# masses for helium core
Mmin2DYIN = Mmin # minimum mass used for the helium core interpolation
Mmax2DYIN = Mmax*1.5 # maximum mass used for the helium core interpolation
# number of bins
nDYIN = 200 # number of bins used for the yields and helium core interpolation
# mass resolution
dMDYIN = 0.001 # mass resolution used for the yields and helium core interpolation
# Z (metallicity) interpolation
ZminDYIN = 1e-5 # minimum value
ZmaxDYIN = 1. # maximum value
nZDYIN = 110 # number of bins in Z
DYINYieldsFile = ['tables/AGBs/OriginalData/karakas-0.0200.txt'] # Yields tables
DYINHeliumCoreFile = 'tables/AGBs/OriginalData/karakas-HeliumCore-0.0200.txt' # Corresponding helium core files
ListOfDYINZs = [0.0001, # list of metallicities
0.0003,
0.0010,
0.0030,
0.0060,
0.0080,
0.0100,
0.0140,
0.0200]
ListOfDYINYieldsFiles = [ # Yields tables
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0001.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0003.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0010.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0030.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0060.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0080.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0100.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0140.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-Yields-0.0200.txt"]
ListOfDYINHeliumCoreFiles = [ # Helium core tables
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0001.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0003.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0010.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0030.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0060.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0080.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0100.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0140.txt",
"PyChemTables/tables/AGBs/Cristallo/cristallo-HeliumCore-0.0200.txt"]
Solar abundances section¶
File or list of files containing the solar abundances of different elements:
###########################
# Solar abundances
###########################
SolarAbundancesFile = "tables/SolarAbundances/Grevesse98.txt" # solar abundances for all elements
Elements section¶
It is possible to specify a list of elements to follow, using elts
.
In case elts
is defined, nelts
is set to len(elts)
.
If elts
is set to None
, only elements found into the tables
are considered. Their number must be equal to nelts
:
###########################
# Elements to follow
###########################
elts = ["Fe","Mg","O","Metals"] # elements to consider in the code
Generate the output¶
The chemical table is generated using the following command:
pychem_generate_hdf5_parameters -p chimieparam.py -o chemistry.h5
Get info from an output file¶
There is two ways to explore output files:
As output files are in hdf5
format, the h5dump
transform the binary file
in ascii charater:
h5dump chemistry.h5
You can also call the script pychem_read
to retreive the same
information in a user-friendly format:
pychem_read chemistry.h5
and you should get something like:
Header content:
version = v0.0
author = revaz
date = Mon Jun 3 13:57:50 2013
Data attribute content:
nelts = 9
elts = Fe Mg O Si Ca Ba N Ne Metals
SolarMassAbundances = 0.00176604 0.000924316 0.0108169 0.000996529 9.1818e-05 1.85267e-08 0.00116503 0.00242653 0.02
MeanWDMass = 1.38
SNIIYieldsFile = ['tables/MetalSNII/yields_tsujimoto95bis-25042013.txt', 'tables/MetalSNII/cescutti2006bis.txt']
SNIIHeliumCoreFile = tables/HeliumCore.dat
DYINYieldsFile = ['tables/AGBs/OriginalData/karakas-0.0200.txt']
DYINHeliumCoreFile = tables/AGBs/OriginalData/karakas-HeliumCore-0.0200.txt
SNIaFile = tables/MetalSNIa/yields_SNIa_tsujimoto95bis.txt
SolarAbundancesFile = tables/SolarAbundances/Grevesse98.txt
Output from LiveTimes:
coeff_z =
[ -40.1107 5.5099 0.7824]
[ 141.9296 -15.8895 -3.2558]
[ -261.3655 17.0735 9.8661]
Output from IMF:
n = 3
Mmin = 0.05
Mmax = 50
as = 0.7 -0.8 -1.7 -1.3
ms = 0.08 0.5 1
Output from SNIa:
Mpl = 3
Mpu = 8
a = -0.35
Mdl1 = 0.9
Mdu1 = 1.5
bb1 = 0.02
Mdl2 = 1.8
Mdu2 = 2.6
bb2 = 0.05
Metals:
Ej = 0
Ejnp = 0
Fe = 0.743463
Mg = 0.0085723
O = 0.143
Si = 0.152601
Ca = 0.0123442
Ba = 0
N = 1.16132e-06
Ne = 0.00451846
Metals = 1.37
Output from SNII:
Mmin = 8
Mmax = 50
npts = 200
nelts = 22
elts = Ej Ejnp Fe Mg O Si Ca Ba N Ne Metals IEj IEjnp IFe IMg IO ISi ICa IBa IN INe IMetals
Metals:
Ej:
nbins = 200
min = 0.05
step = 0.0155624
label = Ej
[0] 0.0484373
[1] 0.0493562
[2] 0.0503087
...
[197] 0.9557
[198] 0.957242
[199] 0.958839
Ejnp:
nbins = 200
min = 0.05
step = 0.0155624
label = Ejnp
[0] 0.0484373
[1] 0.0493562
[2] 0.0503087
...
[197] 0.565376
[198] 0.561333
[199] 0.557143
Fe:
nbins = 200
min = 8
step = 0.00448638
label = Fe
[0] 0
[1] 0
[2] 0
...
[197] 0.0014878
[198] 0.00146762
[199] 0.00144723
Mg:
nbins = 200
min = 8
step = 0.00448638
label = Mg
[0] 0
[1] 0
[2] 0
...
[197] 0.0156387
[198] 0.0157259
[199] 0.015814
O:
nbins = 200
min = 8
step = 0.00448638
label = O
[0] 0
[1] 0
[2] 0
...
[197] 0.28294
[198] 0.284594
[199] 0.286264
Si:
nbins = 200
min = 8
step = 0.00448638
label = Si
[0] 0
[1] 0
[2] 0
...
[197] 0.0135831
[198] 0.0135958
[199] 0.0136085
Ca:
nbins = 200
min = 8
step = 0.00448638
label = Ca
[0] 0
[1] 0
[2] 0
...
[197] 0.000410666
[198] 0.000403546
[199] 0.000396352
Ba:
nbins = 200
min = 8
step = 0.00448638
label = Ba
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
N:
nbins = 200
min = 8
step = 0.00448638
label = N
[0] 0
[1] 0
[2] 0
...
[197] 7.81297e-05
[198] 8.04171e-05
[199] 8.27283e-05
Ne:
nbins = 200
min = 8
step = 0.00448638
label = Ne
[0] 0
[1] 0
[2] 0
...
[197] 0.0260997
[198] 0.0263446
[199] 0.0265921
Metals:
nbins = 200
min = 8
step = 0.00448638
label = Metals
[0] 0
[1] 0
[2] 0
...
[197] 0.353817
[198] 0.355825
[199] 0.357853
IEj:
nbins = 200
min = 0.05
step = 0.0155624
label = IEj
[0] 8.20681e-05
[1] 0.000237071
[2] 0.000404755
...
[197] 0.432685
[198] 0.43435
[199] 0.435999
IEjnp:
nbins = 200
min = 0.05
step = 0.0155624
label = IEjnp
[0] 8.20681e-05
[1] 0.000237071
[2] 0.000404755
...
[197] 0.407578
[198] 0.408559
[199] 0.409522
IFe:
nbins = 200
min = 8
step = 0.00448638
label = IFe
[0] 0
[1] 0
[2] 0
...
[197] 0.000401616
[198] 0.000402349
[199] 0.00040307
IMg:
nbins = 200
min = 8
step = 0.00448638
label = IMg
[0] 0
[1] 0
[2] 0
...
[197] 0.000830851
[198] 0.00083863
[199] 0.000846428
IO:
nbins = 200
min = 8
step = 0.00448638
label = IO
[0] 0
[1] 0
[2] 0
...
[197] 0.0126222
[198] 0.012763
[199] 0.0129041
ISi:
nbins = 200
min = 8
step = 0.00448638
label = ISi
[0] 0
[1] 0
[2] 0
...
[197] 0.000759394
[198] 0.000766134
[199] 0.00077286
ICa:
nbins = 200
min = 8
step = 0.00448638
label = ICa
[0] 0
[1] 0
[2] 0
...
[197] 3.54898e-05
[198] 3.56918e-05
[199] 3.58895e-05
IBa:
nbins = 200
min = 8
step = 0.00448638
label = IBa
[0] 0
[1] 0
[2] 0
...
[197] 3.99734e-09
[198] 3.99734e-09
[199] 3.99734e-09
IN:
nbins = 200
min = 8
step = 0.00448638
label = IN
[0] 0
[1] 0
[2] 0
...
[197] 9.32484e-06
[198] 9.36416e-06
[199] 9.4045e-06
INe:
nbins = 200
min = 8
step = 0.00448638
label = INe
[0] 0
[1] 0
[2] 0
...
[197] 0.00153821
[198] 0.00155121
[199] 0.0015643
IMetals:
nbins = 200
min = 8
step = 0.00448638
label = IMetals
[0] 0
[1] 0
[2] 0
...
[197] 0.017195
[198] 0.017371
[199] 0.0175475
Output from DYIN:
Mmin = 1
Mmax = 6.5
npts = 200
nelts = 22
elts = Ej Ejnp Fe Mg O Si Ca Ba N Ne Metals IEj IEjnp IFe IMg IO ISi ICa IBa IN INe IMetals
Metals:
Ej:
nbins = 200
min = 0.05
step = 0.0155624
label = Ej
[0] 0.0377599
[1] 0.0385247
[2] 0.0393172
...
[197] 1
[198] 1
[199] 1
Ejnp:
nbins = 200
min = 0.05
step = 0.0155624
label = Ejnp
[0] 0.03771
[1] 0.0384746
[2] 0.0392672
...
[197] 1
[198] 1
[199] 1
Fe:
nbins = 200
min = 1
step = 0.00902452
label = Fe
[0] 1.08832e-09
[1] 6.7362e-09
[2] 1.25027e-08
...
[197] 3.43576e-05
[198] 3.52153e-05
[199] 3.60911e-05
Mg:
nbins = 200
min = 1
step = 0.00902452
label = Mg
[0] 6.67526e-10
[1] 3.58973e-09
[2] 6.57329e-09
...
[197] 0
[198] 0
[199] 0
O:
nbins = 200
min = 1
step = 0.00902452
label = O
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
Si:
nbins = 200
min = 1
step = 0.00902452
label = Si
[0] 0
[1] 2.28417e-09
[2] 5.62383e-09
...
[197] 0
[198] 0
[199] 0
Ca:
nbins = 200
min = 1
step = 0.00902452
label = Ca
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
Ba:
nbins = 200
min = 1
step = 0.00902452
label = Ba
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
N:
nbins = 200
min = 1
step = 0.00902452
label = N
[0] 0.000179128
[1] 0.000197846
[2] 0.000216956
...
[197] 0
[198] 0
[199] 0
Ne:
nbins = 200
min = 1
step = 0.00902452
label = Ne
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
Metals:
nbins = 200
min = 1
step = 0.00902452
label = Metals
[0] 0.00825266
[1] 0.00841436
[2] 0.00857945
...
[197] 0.777598
[198] 0.794452
[199] 0.81166
IEj:
nbins = 200
min = 0.05
step = 0.0155624
label = IEj
[0] 6.39996e-05
[1] 0.000184997
[2] 0.000316052
...
[197] 0.403811
[198] 0.405552
[199] 0.407274
IEjnp:
nbins = 200
min = 0.05
step = 0.0155624
label = IEjnp
[0] 6.39155e-05
[1] 0.000184756
[2] 0.000315645
...
[197] 0.403764
[198] 0.405505
[199] 0.407227
IFe:
nbins = 200
min = 1
step = 0.00902452
label = IFe
[0] 2.01922e-13
[1] 1.44529e-11
[2] 4.801e-11
...
[197] 1.27994e-06
[198] 1.31481e-06
[199] 1.35032e-06
IMg:
nbins = 200
min = 1
step = 0.00902452
label = IMg
[0] 1.21722e-13
[1] 7.85216e-12
[2] 2.55692e-11
...
[197] 4.44685e-06
[198] 4.44685e-06
[199] 4.44685e-06
IO:
nbins = 200
min = 1
step = 0.00902452
label = IO
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
ISi:
nbins = 200
min = 1
step = 0.00902452
label = ISi
[0] 0
[1] 3.09283e-12
[2] 1.70333e-11
...
[197] 4.89162e-07
[198] 4.89162e-07
[199] 4.89162e-07
ICa:
nbins = 200
min = 1
step = 0.00902452
label = ICa
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
IBa:
nbins = 200
min = 1
step = 0.00902452
label = IBa
[0] 0
[1] 0
[2] 0
...
[197] 0
[198] 0
[199] 0
IN:
nbins = 200
min = 1
step = 0.00902452
label = IN
[0] 2.9655e-08
[1] 6.76944e-07
[2] 1.38449e-06
...
[197] 0.000508581
[198] 0.000508581
[199] 0.000508581
INe:
nbins = 200
min = 1
step = 0.00902452
label = INe
[0] 0
[1] 0
[2] 0
...
[197] 4.03249e-05
[198] 4.03249e-05
[199] 4.03249e-05
IMetals:
nbins = 200
min = 1
step = 0.00902452
label = IMetals
[0] 1.36346e-06
[1] 2.98785e-05
[2] 5.8772e-05
...
[197] 0.0444258
[198] 0.0452137
[199] 0.0460137