Page MenuHomec4science

No OneTemporary

File Metadata

Created
Fri, Sep 27, 21:22
This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/PyChem/scripts/pychem_get_IMF_info_and_ejectats b/PyChem/scripts/pychem_get_IMF_info_and_ejectats
new file mode 100755
index 0000000..37dbd22
--- /dev/null
+++ b/PyChem/scripts/pychem_get_IMF_info_and_ejectats
@@ -0,0 +1,299 @@
+#!/usr/bin/env python
+
+
+import sys
+from PyChem import chemistry
+from numpy import *
+from pNbody import units
+from optparse import OptionParser
+import Ptools as pt
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+ parser = pt.add_postscript_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'Fe',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'Mg',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--dt",
+ action="store",
+ dest="dt",
+ type="float",
+ default = 0.1,
+ help="dt",
+ metavar=" FLOAT")
+
+
+ parser.add_option("--mstar",
+ action="store",
+ dest="mstar",
+ type="float",
+ default = 1e5,
+ help="initial mass of the SSP in solar mass",
+ metavar=" FLOAT")
+
+ parser.add_option("--tstar",
+ action="store",
+ dest="tstar",
+ type="float",
+ default = 0,
+ help="formation time of the SSP",
+ metavar=" FLOAT")
+
+ parser.add_option("-o",
+ action="store",
+ dest="obs",
+ type="string",
+ default = 'Y',
+ help="observable to plot",
+ metavar=" STRING")
+
+ parser.add_option("--timeunit",
+ action="store",
+ dest="timeunit",
+ type="string",
+ default = None,
+ help="unit of time",
+ metavar=" STRING")
+
+
+ parser.add_option("--NumberOfTables",
+ action="store",
+ dest="NumberOfTables",
+ type="int",
+ default = 1,
+ help="NumberOfTables",
+ metavar=" INT")
+
+ parser.add_option("--DefaultTable",
+ action="store",
+ dest="DefaultTable",
+ type="int",
+ default = 0,
+ help="DefaultTable",
+ metavar=" INT")
+
+
+ parser.add_option("--discsn",
+ action="store_true",
+ dest="discsn",
+ default = False,
+ help="discretize sn",
+ metavar=" FLOAT")
+
+
+ parser.add_option("--t1",
+ action="store",
+ dest="t1",
+ type="float",
+ default = None,
+ help="t1 in Myrs",
+ metavar=" FLOAT")
+
+ parser.add_option("--t2",
+ action="store",
+ dest="t2",
+ type="float",
+ default = None,
+ help="t2 in Myrs",
+ metavar=" FLOAT")
+
+ parser.add_option("--M0",
+ action="store",
+ dest="M0",
+ type="float",
+ default = 1,
+ help="mass of SSP in Msol",
+ metavar=" FLOAT")
+
+ parser.add_option("--Mgas",
+ action="store",
+ dest="Mgas",
+ type="float",
+ default = 1,
+ help="mass of gas reservoir in Msol",
+ metavar=" FLOAT")
+
+ (options, args) = parser.parse_args()
+
+
+ pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+
+
+########################################################################
+# M A I N
+########################################################################
+
+SOLAR_MASS = 1.989e33
+
+
+params={}
+params['UnitLength_in_cm']=3.085e+21
+params['UnitMass_in_g']=1.989e+43
+params['UnitVelocity_in_cm_per_s']=20725573.785998672
+
+system_of_units = units.Set_SystemUnits_From_Params(params)
+out_units = units.UnitSystem('local',[units.Unit_cm,units.Unit_Msol,units.Unit_Myr,units.Unit_K])
+
+
+toMyrs= system_of_units.convertionFactorTo(out_units.UnitTime)
+toMsol= system_of_units.convertionFactorTo(out_units.UnitMass)
+
+
+# parse options
+files,opt = parse_options()
+
+
+# init chimie
+chemistry.init_chimie(files[0],opt.NumberOfTables,opt.DefaultTable)
+
+
+
+# assume SSP with zero metallicity
+metals = zeros(chemistry.get_nelts(),float)
+
+
+tmin = chemistry.star_lifetime(metals[0],chemistry.get_Mmax())
+tmax = chemistry.star_lifetime(metals[0],chemistry.get_Mmin())
+
+if opt.t1!=None:
+ opt.t1=opt.t1/toMyrs
+ opt.t1=max(tmin,opt.t1)
+ m2 = chemistry.star_mass_from_age(metals[-1],opt.t1)
+else:
+ m2 = chemistry.get_Mmax()
+
+if opt.t2!=None:
+ opt.t2=opt.t2/toMyrs
+ opt.t2=min(tmax,opt.t2)
+ m1 = chemistry.star_mass_from_age(metals[-1],opt.t2)
+else:
+ m1 = chemistry.get_Mmin()
+
+
+livetime1 = chemistry.star_lifetime(metals[0],m1)
+livetime2 = chemistry.star_lifetime(metals[0],m2)
+
+labels = chemistry.get_elts_labels()
+SolarAbun = chemistry.get_elts_SolarAbundances()
+
+
+
+####################################################
+# global info
+####################################################
+
+print
+print "min star mass = %5.2f Msol livetime = %5.2f Myrs"%(m1*toMsol,livetime1*toMyrs)
+print "max star mass = %5.2f Msol livetime = %5.2f Myrs"%(m2*toMsol,livetime2*toMyrs)
+print
+
+
+print "initial SSP mass = %g Msol"%(opt.M0)
+print "gas reservoir mass = %g Msol"%(opt.Mgas)
+
+print
+
+##############################
+# Ejection from all stars
+##############################
+
+EjectedMass = chemistry.Total_mass_ejection(m1,m2,1,metals)
+TotalEjectedMass = EjectedMass[0]*opt.M0
+TotalEjectedEltMass = EjectedMass[2:]*opt.M0
+
+print "Total ejected mass = %9.3g Msol"%(TotalEjectedMass)
+for i,label in enumerate(labels):
+ print " Ejected mass in %07s = %9.3g Msol"%(label,TotalEjectedEltMass[i])
+print
+
+for i,label in enumerate(labels):
+
+ XH = log10( (TotalEjectedEltMass[i]/(opt.Mgas+TotalEjectedMass)) / SolarAbun[label] )
+ print " [%07s/H] = %9.3g"%(label,XH)
+print
+
+
+##############################
+# Ejection from SNII
+##############################
+
+EjectedMass = chemistry.SNII_mass_ejection(m1,m2)
+TotalEjectedMass = EjectedMass[0]*opt.M0
+TotalEjectedEltMass = EjectedMass[2:]*opt.M0
+
+print "Total ejected mass (SNII) = %9.3g Msol"%(TotalEjectedMass)
+for i,label in enumerate(labels):
+ print " Ejected mass in %07s = %9.3g Msol"%(label,TotalEjectedEltMass[i])
+print
+
+for i,label in enumerate(labels):
+
+ XH = log10( (TotalEjectedEltMass[i]/(opt.Mgas+TotalEjectedMass)) / SolarAbun[label] )
+ print " [%07s/H] = %9.3g"%(label,XH)
+print
+
+##############################
+# Ejection from SNIa
+##############################
+
+EjectedMass = chemistry.SNIa_mass_ejection(m1,m2)
+TotalEjectedMass = EjectedMass[0]*opt.M0
+TotalEjectedEltMass = EjectedMass[2:]*opt.M0
+
+print "Total ejected mass (SNIa) = %9.3g Msol"%(TotalEjectedMass)
+for i,label in enumerate(labels):
+ print " Ejected mass in %07s = %9.3g Msol"%(label,TotalEjectedEltMass[i])
+print
+
+for i,label in enumerate(labels):
+
+ XH = log10( (TotalEjectedEltMass[i]/(opt.Mgas+TotalEjectedMass)) / SolarAbun[label] )
+ print " [%07s/H] = %9.3g"%(label,XH)
+print
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PyChem/scripts/pychem_get_SNII_global_ejectats b/PyChem/scripts/pychem_get_SNII_global_ejectats
new file mode 100755
index 0000000..9c61e6b
--- /dev/null
+++ b/PyChem/scripts/pychem_get_SNII_global_ejectats
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+
+
+from PyChem import chemistry
+from numpy import *
+
+chemistry.init_chimie("chimie.yr.dat")
+
+# assume SSP with zero metallicity
+metals = zeros(chemistry.get_nelts(),float)
+
+m2 = chemistry.get_SNII_Mmax() # min SNII mass
+m1 = chemistry.get_SNII_Mmin() # max SNII mass
+
+
+# compute ejected mass and elts for stars with masses between m1 and m2
+EjectedMass = chemistry.Total_mass_ejection(m1,m2,1,metals)
+TotalEjectedEltMasscont = EjectedMass[2:]
+
+labels = chemistry.get_elts_labels()
+
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+
+
+SolarAbun = chemistry.get_elts_SolarAbundances()
+MgFe = log10((TotalEjectedEltMasscont[labels.index('Mg')]/TotalEjectedEltMasscont[labels.index('Fe')])/(SolarAbun['Mg']/SolarAbun['Fe']))
+print MgFe
diff --git a/PyChem/scripts/pychem_get_global_ejectats b/PyChem/scripts/pychem_get_global_ejectats
new file mode 100755
index 0000000..6aabcaa
--- /dev/null
+++ b/PyChem/scripts/pychem_get_global_ejectats
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+
+import sys
+from PyChem import chemistry
+from numpy import *
+
+chemistry.init_chimie("chimie.yr.dat")
+
+# assume SSP with zero metallicity
+metals = zeros(chemistry.get_nelts(),float)
+
+
+
+
+
+
+# set masses
+m1 = chemistry.get_Mmin() # min mass in the IMF
+m2 = chemistry.get_Mmax() # max mass in the IMF
+
+#m1 = 2./1e10 # set masses
+#m2 = 3./1e10 # set masses
+
+
+livetime1 = chemistry.star_lifetime(metals[0],m1)
+livetime2 = chemistry.star_lifetime(metals[0],m2)
+
+
+labels = chemistry.get_elts_labels()
+
+print "Tot"
+EjectedMass = chemistry.Total_mass_ejection(m1,m2,1,metals)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+print "SNII"
+EjectedMass = chemistry.SNII_mass_ejection(m1,m2)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+print "SNIa"
+EjectedMass = chemistry.SNIa_mass_ejection(m1,m2)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+
+
+
diff --git a/PyChem/scripts/pychem_plot_ejectats_vs_time b/PyChem/scripts/pychem_plot_ejectats_vs_time
new file mode 100755
index 0000000..1f4242f
--- /dev/null
+++ b/PyChem/scripts/pychem_plot_ejectats_vs_time
@@ -0,0 +1,247 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+
+from PyChem import chemistry
+from numpy import *
+import sys
+import string
+
+import Ptools as pt
+from pNbody import units
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+ parser = pt.add_postscript_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'Fe',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'Mg',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--dt",
+ action="store",
+ dest="dt",
+ type="float",
+ default = 0.1,
+ help="dt",
+ metavar=" FLOAT")
+
+
+ parser.add_option("--mstar",
+ action="store",
+ dest="mstar",
+ type="float",
+ default = 1e5,
+ help="initial mass of the SSP in solar mass",
+ metavar=" FLOAT")
+
+ parser.add_option("--tstar",
+ action="store",
+ dest="tstar",
+ type="float",
+ default = 0,
+ help="formation time of the SSP",
+ metavar=" FLOAT")
+
+ parser.add_option("-o",
+ action="store",
+ dest="obs",
+ type="string",
+ default = 'Y',
+ help="observable to plot",
+ metavar=" STRING")
+
+ parser.add_option("--timeunit",
+ action="store",
+ dest="timeunit",
+ type="string",
+ default = None,
+ help="unit of time",
+ metavar=" STRING")
+
+
+ parser.add_option("--NumberOfTables",
+ action="store",
+ dest="NumberOfTables",
+ type="int",
+ default = 1,
+ help="NumberOfTables",
+ metavar=" INT")
+
+ parser.add_option("--DefaultTable",
+ action="store",
+ dest="DefaultTable",
+ type="int",
+ default = 0,
+ help="DefaultTable",
+ metavar=" INT")
+
+
+ parser.add_option("--discsn",
+ action="store_true",
+ dest="discsn",
+ default = False,
+ help="discretize sn",
+ metavar=" FLOAT")
+
+
+
+
+ (options, args) = parser.parse_args()
+
+
+ pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+
+
+########################################################################
+# M A I N
+########################################################################
+
+SOLAR_MASS = 1.989e33
+
+
+params={}
+params['UnitLength_in_cm']=3.085e+21
+params['UnitMass_in_g']=1.989e+43
+params['UnitVelocity_in_cm_per_s']=20725573.785998672
+
+system_of_units = units.Set_SystemUnits_From_Params(params)
+out_units = units.UnitSystem('local',[units.Unit_cm,units.Unit_Msol,units.Unit_Myr,units.Unit_K])
+
+
+toMyrs= system_of_units.convertionFactorTo(out_units.UnitTime)
+
+# parse options
+files,opt = parse_options()
+
+
+# init chimie
+chemistry.init_chimie(files[0],opt.NumberOfTables,opt.DefaultTable)
+
+
+
+# some inits
+t_star=0
+M0 = 1.
+
+metals = zeros(chemistry.get_nelts(),float)
+# minimum live time of a star
+maxSNIIlivetime = chemistry.star_lifetime(metals[0],chemistry.get_SNII_Mmin())
+
+# minimum live time of a star
+minlivetime = chemistry.star_lifetime(metals[-1],chemistry.get_Mmax())
+maxlivetime = chemistry.star_lifetime(metals[-1],chemistry.get_Mmin())
+
+#tmax = maxSNIIlivetime
+tmax = maxSNIIlivetime
+dt = tmax/1000.
+
+times = arange(dt,tmax,dt).astype(float)
+
+
+n = len(times)
+mFes = zeros(n)
+mMgs = zeros(n)
+mZs = zeros(n)
+mEjs = zeros(n)
+Ms = zeros(n)
+
+
+
+###############################################
+# main loop
+###############################################
+
+for ti,time in enumerate(times):
+
+
+ tpdt = time + dt
+
+ if (tpdt - t_star >= minlivetime) and (tpdt - t_star < maxlivetime) :
+
+ m1 = chemistry.star_mass_from_age(metals[-1],tpdt - t_star)
+
+ if (time - t_star >= minlivetime):
+
+ m2 = chemistry.star_mass_from_age(metals[-1],time - t_star)
+
+ else:
+ m2 = chemistry.get_Mmax()
+
+
+ if (m1>m2):
+ m1=m2
+ raise "m1>m2 !!!"
+
+
+
+ m2 = chemistry.get_Mmax()
+
+ # standard way (continuous explosion)
+ EjectedMass = chemistry.Total_mass_ejection(m1,m2,M0,metals)
+ TotalEjectedEltMasscont = EjectedMass[2:]
+ TotalEjectedGasMasscont = EjectedMass[0]
+
+ #print TotalEjectedEltMasscont[0],TotalEjectedEltMasscont[-1],m1,m2
+
+
+ mEjs[ti]=TotalEjectedGasMasscont
+
+ mFes[ti]=TotalEjectedEltMasscont[0]
+ mMgs[ti]=TotalEjectedEltMasscont[1]
+ mZs[ti] =TotalEjectedEltMasscont[-1]
+ Ms[ti]=m2
+
+
+SolarAbun = chemistry.get_elts_SolarAbundances()
+
+MgFe = log10((mMgs/mFes)/(SolarAbun['Mg']/SolarAbun['Fe']))
+
+pt.plot(times*toMyrs,mFes,label='Fe')
+pt.plot(times*toMyrs,mMgs,label='Mg')
+pt.plot(times*toMyrs,mZs,label='Metals')
+pt.plot(times*toMyrs,mEjs,label='Ejected Mass')
+
+#pt.plot(times*toMyrs,MgFe)
+
+pt.xlabel('Time [Myrs]')
+pt.ylabel('Mass fraction')
+pt.legend(loc="upper left")
+
+
+pt.show()
+
+
+
+print system_of_units.convertionFactorTo(out_units.UnitTime)
+print "Fe",mFes[-1]
+print "Mg",mMgs[-1]
+print "Z",mZs[-1]
+
+
diff --git a/PyChem/shared/chemistryparameters/chimieparam.woosley-Mmax150.py b/PyChem/shared/chemistryparameters/chimieparam.woosley-Mmax150.py
new file mode 100644
index 0000000..548c22b
--- /dev/null
+++ b/PyChem/shared/chemistryparameters/chimieparam.woosley-Mmax150.py
@@ -0,0 +1,115 @@
+
+
+###########################
+# IMF
+###########################
+
+Mmin = 0.05
+Mmax = 50.
+
+# salpeter
+#m_s = []
+#a_s = [-1.35]
+
+# salpeter
+#m_s = [0.08, 0.5, 1.0]
+#a_s = [-1.35, -1.35, -1.35, -1.35]
+
+# krupa 01, revisited
+m_s = [ 0.08, 0.5, 1.0]
+a_s = [0.7, -0.8, -1.7, -1.3]
+
+# krupa 01
+#m_s = [ 0.01, 0.08, 0.5, 1.0]
+#a_s = [0.7, 0.7, -0.3, -1.3, -1.3]
+
+# krupa 93
+#m_s = [ 0.08, 0.5, 1.0]
+#a_s = [-0.3, -0.3, -1.2, -1.7]
+
+
+###########################
+# SNII
+###########################
+
+SNII_Mmin = 8.
+
+###########################
+# SNIa
+###########################
+
+SNIa_Mpl = 3.0
+SNIa_Mpu = 8.0
+
+SNIa_a = -0.35
+SNIa_Mdl1 = 0.9
+SNIa_Mdu1 = 1.5
+SNIa_bb1 = 0.02
+
+SNIa_Mdl2 = 1.8
+SNIa_Mdu2 = 2.6
+SNIa_bb2 = 0.05
+
+
+###########################
+# Metal Injection
+###########################
+
+# files
+MetalFile = ['tables/Woosley/yieldsSNII.txt'] #'MetalEjection.dat'
+HeliumCoreFile = 'tables/Woosley/HeliumCore.dat'
+SNIaFile = 'tables/MetalSNIa/yields_SNIa_tsujimoto95bis.txt' #'SNIaEjection.dat'
+SolarAbundancesFile = "tables/SolarAbundances/Grevesse98.txt"
+
+# Mean Whith Dwarfs Mass
+MeanWDMass = 1.38
+
+# number of elements to follow
+elts = ["Fe","Mg","O","Si","Metals"]
+nelts = 69
+
+# masses for metal injection
+Mmin1 = 10.
+Mmax1 = Mmax*1.5
+
+# masses for helium core
+Mmin2 = Mmin
+Mmax2 = Mmax*1.5
+
+# resolution in mass for integration
+dM = 0.001
+
+# number of output points
+n = 200
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PyChem/shared/chemistryparameters/chimieparam.yr-Mmax150.py b/PyChem/shared/chemistryparameters/chimieparam.yr-Mmax150.py
new file mode 100644
index 0000000..7d74dea
--- /dev/null
+++ b/PyChem/shared/chemistryparameters/chimieparam.yr-Mmax150.py
@@ -0,0 +1,116 @@
+
+
+###########################
+# IMF
+###########################
+
+Mmin = 0.05
+Mmax = 150.
+
+# salpeter
+#m_s = []
+#a_s = [-1.35]
+
+# salpeter
+#m_s = [0.08, 0.5, 1.0]
+#a_s = [-1.35, -1.35, -1.35, -1.35]
+
+# krupa 01, revisited
+m_s = [ 0.08, 0.5, 1.0]
+a_s = [0.7, -0.8, -1.7, -1.3]
+
+# krupa 01
+#m_s = [ 0.01, 0.08, 0.5, 1.0]
+#a_s = [0.7, 0.7, -0.3, -1.3, -1.3]
+
+# krupa 93
+#m_s = [ 0.08, 0.5, 1.0]
+#a_s = [-0.3, -0.3, -1.2, -1.7]
+
+
+###########################
+# SNII
+###########################
+
+SNII_Mmin = 8.
+
+###########################
+# SNIa
+###########################
+
+SNIa_Mpl = 3.0
+SNIa_Mpu = 8.0
+
+SNIa_a = -0.35
+SNIa_Mdl1 = 0.9
+SNIa_Mdu1 = 1.5
+SNIa_bb1 = 0.02
+
+SNIa_Mdl2 = 1.8
+SNIa_Mdu2 = 2.6
+SNIa_bb2 = 0.05
+
+
+###########################
+# Metal Injection
+###########################
+
+# files
+MetalFile = ['tables/MetalSNII/yields_tsujimoto95bis.txt','tables/MetalSNII/cescutti2006bis.txt'] #'MetalEjection.dat'
+HeliumCoreFile = 'tables/HeliumCore.dat'
+SNIaFile = 'tables/MetalSNIa/yields_SNIa_tsujimoto95bis.txt' #'SNIaEjection.dat'
+SolarAbundancesFile = "tables/SolarAbundances/Grevesse98.txt"
+
+# Mean Whith Dwarfs Mass
+MeanWDMass = 1.38
+
+# number of elements to follow
+elts = ["Fe","Mg","O","Si","Ca","Metals"]
+#elts = ["Fe56","Mg24","O16","Ba","Metals"]
+nelts = 69
+
+# masses for metal injection
+Mmin1 = 10.
+Mmax1 = Mmax*1.5
+
+# masses for helium core
+Mmin2 = Mmin
+Mmax2 = Mmax*1.5
+
+# resolution in mass for integration
+dM = 0.001
+
+# number of output points
+n = 200
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PyChem/shared/chimie.woosley-Mmax150.dat b/PyChem/shared/chimie.woosley-Mmax150.dat
new file mode 100644
index 0000000..122c2c3
--- /dev/null
+++ b/PyChem/shared/chimie.woosley-Mmax150.dat
@@ -0,0 +1,2941 @@
+#### Livetime ####
+
+-40.1107251082866 5.50992173040633 0.782431795366473
+ 141.929566656232 -15.88948185575660 -3.255779246324010
+-261.365531429482 17.07350618651300 9.866058678313810
+
+#### IMF Parameters ####
+
+0.05 50
+3
+0.08 0.5 1
+0.7 -0.8 -1.7 -1.3
+
+#### SNII Parameters ####
+
+8
+
+#### SNIa Parameters ####
+
+3 8
+-0.35
+0.9 1.5 0.02
+1.8 2.6 0.05
+
+#### Metal Parameters ####
+
+# Number of points / Number of elements
+200 5
+
+# Ej
+
+0.05 0.0155624
+4.843730e-02
+4.935623e-02
+5.030868e-02
+5.129588e-02
+5.231913e-02
+5.337968e-02
+5.447892e-02
+5.561825e-02
+5.679915e-02
+5.802314e-02
+5.929179e-02
+6.060675e-02
+6.196962e-02
+6.338228e-02
+6.484646e-02
+6.636404e-02
+6.793699e-02
+6.956732e-02
+7.125717e-02
+7.300862e-02
+7.482401e-02
+7.670562e-02
+7.865587e-02
+8.067726e-02
+8.277240e-02
+8.494399e-02
+8.719482e-02
+8.952773e-02
+9.194581e-02
+9.445206e-02
+9.704976e-02
+9.974223e-02
+1.025330e-01
+1.054255e-01
+1.084235e-01
+1.115309e-01
+1.147517e-01
+1.180900e-01
+1.215501e-01
+1.251365e-01
+1.288536e-01
+1.327064e-01
+1.366998e-01
+1.408388e-01
+1.451289e-01
+1.495755e-01
+1.541843e-01
+1.589612e-01
+1.639124e-01
+1.690443e-01
+1.743633e-01
+1.798765e-01
+1.855907e-01
+1.915134e-01
+1.976523e-01
+2.040152e-01
+2.106101e-01
+2.174456e-01
+2.245306e-01
+2.318740e-01
+2.394853e-01
+2.473743e-01
+2.555511e-01
+2.640263e-01
+2.728106e-01
+2.819155e-01
+2.913525e-01
+3.011338e-01
+3.112719e-01
+3.217799e-01
+3.326714e-01
+3.439602e-01
+3.556607e-01
+3.677883e-01
+3.803582e-01
+3.933867e-01
+4.068906e-01
+4.208871e-01
+4.353943e-01
+4.504307e-01
+4.660157e-01
+4.821694e-01
+4.989123e-01
+5.162661e-01
+5.314058e-01
+5.427305e-01
+5.544683e-01
+5.666343e-01
+5.792443e-01
+5.923142e-01
+6.058611e-01
+6.199021e-01
+6.344554e-01
+6.495397e-01
+6.651744e-01
+6.807522e-01
+6.899109e-01
+6.994038e-01
+7.092429e-01
+7.194411e-01
+7.368875e-01
+7.569233e-01
+7.776899e-01
+7.980127e-01
+7.982467e-01
+7.984892e-01
+7.987405e-01
+7.990010e-01
+7.992710e-01
+7.995510e-01
+8.042794e-01
+8.101172e-01
+8.161680e-01
+8.224396e-01
+8.289399e-01
+8.342458e-01
+8.392339e-01
+8.444039e-01
+8.497626e-01
+8.539259e-01
+8.564276e-01
+8.590205e-01
+8.617080e-01
+8.601962e-01
+8.568598e-01
+8.548928e-01
+8.535241e-01
+8.496331e-01
+8.360225e-01
+8.264965e-01
+8.275483e-01
+8.286386e-01
+8.297685e-01
+8.309396e-01
+8.328840e-01
+8.360294e-01
+8.392897e-01
+8.426689e-01
+8.461714e-01
+8.498016e-01
+8.535643e-01
+8.574644e-01
+8.613294e-01
+8.650263e-01
+8.688580e-01
+8.728295e-01
+8.769459e-01
+8.812124e-01
+8.847461e-01
+8.829127e-01
+8.810123e-01
+8.819146e-01
+8.859977e-01
+8.899470e-01
+8.889348e-01
+8.878856e-01
+8.909808e-01
+8.951261e-01
+8.994226e-01
+9.038759e-01
+9.042994e-01
+9.038401e-01
+9.033641e-01
+9.028707e-01
+9.023592e-01
+8.991187e-01
+8.959792e-01
+8.968253e-01
+9.002431e-01
+9.044409e-01
+9.085099e-01
+9.109346e-01
+9.134478e-01
+9.160526e-01
+9.190732e-01
+9.224494e-01
+9.259487e-01
+9.295757e-01
+9.333350e-01
+9.305581e-01
+9.203978e-01
+9.098669e-01
+8.989517e-01
+8.885328e-01
+8.818588e-01
+8.749413e-01
+8.677714e-01
+8.694793e-01
+8.824211e-01
+8.958349e-01
+9.097382e-01
+9.241487e-01
+9.390851e-01
+9.513338e-01
+9.528357e-01
+9.543924e-01
+9.560059e-01
+9.576783e-01
+9.593417e-01
+9.606251e-01
+
+# Ejnp
+
+0.05 0.0155624
+4.843730e-02
+4.935623e-02
+5.030868e-02
+5.129588e-02
+5.231913e-02
+5.337968e-02
+5.447892e-02
+5.561825e-02
+5.679915e-02
+5.802314e-02
+5.929179e-02
+6.060675e-02
+6.196962e-02
+6.338228e-02
+6.484646e-02
+6.636404e-02
+6.793699e-02
+6.956732e-02
+7.125717e-02
+7.300862e-02
+7.482401e-02
+7.670562e-02
+7.865587e-02
+8.067726e-02
+8.277240e-02
+8.494399e-02
+8.719482e-02
+8.952773e-02
+9.194581e-02
+9.445206e-02
+9.704976e-02
+9.974223e-02
+1.025330e-01
+1.054255e-01
+1.084235e-01
+1.115309e-01
+1.147517e-01
+1.180900e-01
+1.215501e-01
+1.251365e-01
+1.288536e-01
+1.327064e-01
+1.366998e-01
+1.408388e-01
+1.451289e-01
+1.495755e-01
+1.541843e-01
+1.589612e-01
+1.639124e-01
+1.690443e-01
+1.743633e-01
+1.798765e-01
+1.855907e-01
+1.915134e-01
+1.976523e-01
+2.040152e-01
+2.106101e-01
+2.174456e-01
+2.245306e-01
+2.318740e-01
+2.394853e-01
+2.473743e-01
+2.555511e-01
+2.640263e-01
+2.728106e-01
+2.819155e-01
+2.913525e-01
+3.011338e-01
+3.112719e-01
+3.217799e-01
+3.326714e-01
+3.439602e-01
+3.556607e-01
+3.677883e-01
+3.803582e-01
+3.933867e-01
+4.068906e-01
+4.208871e-01
+4.353943e-01
+4.504307e-01
+4.660157e-01
+4.821694e-01
+4.989123e-01
+5.162661e-01
+5.314058e-01
+5.427305e-01
+5.544683e-01
+5.666343e-01
+5.792443e-01
+5.923142e-01
+6.058611e-01
+6.199021e-01
+6.344554e-01
+6.495397e-01
+6.651744e-01
+6.807522e-01
+6.899109e-01
+6.994038e-01
+7.092429e-01
+7.194411e-01
+7.368875e-01
+7.569233e-01
+7.776899e-01
+7.980127e-01
+7.982467e-01
+7.984892e-01
+7.987405e-01
+7.990010e-01
+7.992710e-01
+7.995510e-01
+8.042794e-01
+8.101172e-01
+8.161680e-01
+8.224396e-01
+8.289399e-01
+8.342458e-01
+8.392339e-01
+8.444039e-01
+8.497626e-01
+8.539259e-01
+8.564276e-01
+8.590205e-01
+8.617080e-01
+8.601962e-01
+8.568598e-01
+8.548928e-01
+8.535241e-01
+8.496331e-01
+8.360225e-01
+8.264965e-01
+8.275483e-01
+8.286386e-01
+8.297685e-01
+8.309396e-01
+8.328840e-01
+8.360294e-01
+8.392897e-01
+8.426689e-01
+8.461714e-01
+8.498016e-01
+8.535643e-01
+8.574644e-01
+8.613294e-01
+8.650263e-01
+8.688580e-01
+8.728295e-01
+8.769459e-01
+8.812124e-01
+8.786263e-01
+8.325971e-01
+7.848886e-01
+7.584409e-01
+7.562404e-01
+7.537665e-01
+7.477139e-01
+7.414404e-01
+7.381487e-01
+7.354565e-01
+7.326659e-01
+7.297735e-01
+7.247090e-01
+7.190170e-01
+7.131172e-01
+7.070023e-01
+7.006642e-01
+6.920429e-01
+6.827235e-01
+6.742872e-01
+6.701563e-01
+6.670644e-01
+6.635245e-01
+6.577252e-01
+6.517143e-01
+6.454841e-01
+6.434830e-01
+6.448224e-01
+6.462105e-01
+6.476493e-01
+6.491406e-01
+6.432439e-01
+6.290111e-01
+6.142589e-01
+5.989687e-01
+5.858645e-01
+5.849383e-01
+5.839783e-01
+5.829831e-01
+5.911477e-01
+6.108510e-01
+6.312733e-01
+6.524405e-01
+6.743800e-01
+6.971200e-01
+7.169504e-01
+7.245563e-01
+7.324396e-01
+7.406105e-01
+7.490796e-01
+7.575450e-01
+7.643517e-01
+
+# Fe
+
+10 0.0039994
+0.000000e+00
+6.728396e-04
+1.351900e-03
+2.037242e-03
+2.728932e-03
+3.426999e-03
+4.131541e-03
+4.842602e-03
+5.560242e-03
+6.284520e-03
+7.015496e-03
+7.095041e-03
+6.819706e-03
+6.541828e-03
+6.261375e-03
+5.978329e-03
+5.692665e-03
+5.404357e-03
+5.113382e-03
+4.819717e-03
+4.731648e-03
+5.470991e-03
+6.217189e-03
+6.970294e-03
+7.730357e-03
+8.497462e-03
+9.271652e-03
+1.005302e-02
+1.084160e-02
+1.115172e-02
+1.099559e-02
+1.083802e-02
+1.067900e-02
+1.051850e-02
+1.035651e-02
+1.019303e-02
+1.002804e-02
+9.861514e-03
+9.693453e-03
+9.523837e-03
+9.352650e-03
+9.179881e-03
+9.005513e-03
+8.829532e-03
+8.651923e-03
+8.465515e-03
+8.277165e-03
+8.087071e-03
+7.895220e-03
+7.701594e-03
+7.506175e-03
+7.308951e-03
+7.109899e-03
+6.909007e-03
+6.706258e-03
+6.501632e-03
+6.295113e-03
+6.086681e-03
+5.876325e-03
+5.664019e-03
+5.449753e-03
+5.233502e-03
+5.015250e-03
+4.794979e-03
+4.655313e-03
+4.913300e-03
+5.173678e-03
+5.436463e-03
+5.701680e-03
+5.969351e-03
+6.112633e-03
+5.961416e-03
+5.808799e-03
+5.654771e-03
+5.499316e-03
+5.342424e-03
+5.625114e-03
+6.073330e-03
+6.525688e-03
+6.982233e-03
+7.443003e-03
+7.908035e-03
+8.377373e-03
+8.851051e-03
+9.329107e-03
+9.811588e-03
+1.000616e-02
+9.726183e-03
+9.443620e-03
+9.158438e-03
+8.870617e-03
+8.580141e-03
+8.286972e-03
+7.991090e-03
+7.692475e-03
+7.391088e-03
+7.086921e-03
+6.779939e-03
+6.470118e-03
+6.157428e-03
+5.880775e-03
+5.640678e-03
+5.398361e-03
+5.153794e-03
+4.906969e-03
+4.657865e-03
+4.406448e-03
+4.152706e-03
+3.896620e-03
+3.638165e-03
+3.377318e-03
+3.114058e-03
+2.848363e-03
+2.580209e-03
+2.309572e-03
+2.036432e-03
+1.760771e-03
+1.482556e-03
+1.201760e-03
+9.183772e-04
+8.317034e-04
+8.293622e-04
+8.269994e-04
+8.246147e-04
+8.222080e-04
+8.197789e-04
+8.173274e-04
+8.148534e-04
+8.123562e-04
+8.098361e-04
+8.072926e-04
+8.047256e-04
+8.021349e-04
+7.995202e-04
+7.968812e-04
+7.942179e-04
+7.915299e-04
+7.861980e-04
+7.807144e-04
+7.751802e-04
+7.695945e-04
+7.639572e-04
+7.582678e-04
+7.525258e-04
+7.467306e-04
+7.408818e-04
+7.349789e-04
+7.290216e-04
+7.230088e-04
+7.169406e-04
+7.108162e-04
+7.050851e-04
+6.998265e-04
+6.945191e-04
+6.891627e-04
+6.837567e-04
+6.783007e-04
+6.727941e-04
+6.672368e-04
+6.616280e-04
+6.559673e-04
+6.502541e-04
+6.444881e-04
+6.386689e-04
+6.327956e-04
+6.268683e-04
+6.208860e-04
+6.148483e-04
+6.087549e-04
+6.026050e-04
+5.963981e-04
+5.901340e-04
+5.838120e-04
+5.774312e-04
+5.709916e-04
+5.649949e-04
+5.606220e-04
+5.562086e-04
+5.517544e-04
+5.472590e-04
+5.427219e-04
+5.381429e-04
+5.335216e-04
+5.288576e-04
+5.241504e-04
+5.193996e-04
+5.146048e-04
+5.097656e-04
+5.048818e-04
+4.999528e-04
+4.949782e-04
+4.899575e-04
+4.848902e-04
+4.797763e-04
+4.746150e-04
+4.700519e-04
+4.662967e-04
+4.625068e-04
+4.586819e-04
+4.548214e-04
+
+# Mg
+
+10 0.0039994
+0.000000e+00
+4.823366e-05
+9.691389e-05
+1.460444e-04
+1.956294e-04
+2.456727e-04
+2.961797e-04
+3.471537e-04
+3.985991e-04
+4.505208e-04
+5.029230e-04
+5.090344e-04
+4.899290e-04
+4.706471e-04
+4.511871e-04
+4.315469e-04
+4.117251e-04
+3.917196e-04
+3.715293e-04
+3.511521e-04
+3.534881e-04
+4.469007e-04
+5.411776e-04
+6.363289e-04
+7.323585e-04
+8.292766e-04
+9.270925e-04
+1.025813e-03
+1.125445e-03
+1.201619e-03
+1.254950e-03
+1.308776e-03
+1.363099e-03
+1.417924e-03
+1.473257e-03
+1.529102e-03
+1.585464e-03
+1.642347e-03
+1.699756e-03
+1.757696e-03
+1.816172e-03
+1.875190e-03
+1.934753e-03
+1.994867e-03
+2.055538e-03
+2.130298e-03
+2.206162e-03
+2.282727e-03
+2.360001e-03
+2.437991e-03
+2.516701e-03
+2.596140e-03
+2.676313e-03
+2.757229e-03
+2.838892e-03
+2.921312e-03
+3.004494e-03
+3.088446e-03
+3.173174e-03
+3.258687e-03
+3.344988e-03
+3.432090e-03
+3.519998e-03
+3.608719e-03
+3.629819e-03
+3.320705e-03
+3.008731e-03
+2.693869e-03
+2.376094e-03
+2.055384e-03
+1.831875e-03
+1.839900e-03
+1.847999e-03
+1.856173e-03
+1.864423e-03
+1.872749e-03
+1.899475e-03
+1.933217e-03
+1.967271e-03
+2.001640e-03
+2.036327e-03
+2.071335e-03
+2.106667e-03
+2.142326e-03
+2.178315e-03
+2.214637e-03
+2.331475e-03
+2.580028e-03
+2.830880e-03
+3.084054e-03
+3.339570e-03
+3.597446e-03
+3.857709e-03
+4.120382e-03
+4.385483e-03
+4.653040e-03
+4.923068e-03
+5.195595e-03
+5.470645e-03
+5.748240e-03
+5.946581e-03
+6.064556e-03
+6.183621e-03
+6.303788e-03
+6.425068e-03
+6.547468e-03
+6.671000e-03
+6.795677e-03
+6.921506e-03
+7.048501e-03
+7.176669e-03
+7.306023e-03
+7.436574e-03
+7.568332e-03
+7.701310e-03
+7.835519e-03
+7.970967e-03
+8.107671e-03
+8.245638e-03
+8.384882e-03
+8.510981e-03
+8.632083e-03
+8.754306e-03
+8.877659e-03
+9.002153e-03
+9.127800e-03
+9.254609e-03
+9.382592e-03
+9.511756e-03
+9.642118e-03
+9.773685e-03
+9.906469e-03
+1.004048e-02
+1.017573e-02
+1.031224e-02
+1.045000e-02
+1.058905e-02
+1.046673e-02
+1.033300e-02
+1.019803e-02
+1.006182e-02
+9.924336e-03
+9.785589e-03
+9.645557e-03
+9.504231e-03
+9.361592e-03
+9.217639e-03
+9.072354e-03
+8.925719e-03
+8.777734e-03
+8.628376e-03
+8.518326e-03
+8.454794e-03
+8.390675e-03
+8.325961e-03
+8.260651e-03
+8.194735e-03
+8.128210e-03
+8.061069e-03
+7.993307e-03
+7.924918e-03
+7.855898e-03
+7.786238e-03
+7.715933e-03
+7.644977e-03
+7.573366e-03
+7.501093e-03
+7.428151e-03
+7.354533e-03
+7.280234e-03
+7.205249e-03
+7.129570e-03
+7.053190e-03
+6.976103e-03
+6.898304e-03
+6.825857e-03
+6.773027e-03
+6.719708e-03
+6.665895e-03
+6.611585e-03
+6.556772e-03
+6.501453e-03
+6.445621e-03
+6.389272e-03
+6.332403e-03
+6.275008e-03
+6.217081e-03
+6.158618e-03
+6.099616e-03
+6.040066e-03
+5.979965e-03
+5.919310e-03
+5.858093e-03
+5.796309e-03
+5.733953e-03
+5.678826e-03
+5.633458e-03
+5.587670e-03
+5.541460e-03
+5.494822e-03
+
+# O
+
+10 0.0039994
+0.000000e+00
+3.616512e-04
+7.266439e-04
+1.095016e-03
+1.466796e-03
+1.842011e-03
+2.220701e-03
+2.602898e-03
+2.988629e-03
+3.377929e-03
+3.770828e-03
+4.256453e-03
+4.794709e-03
+5.337950e-03
+5.886216e-03
+6.439552e-03
+6.997999e-03
+7.561628e-03
+8.130461e-03
+8.704554e-03
+9.238459e-03
+9.596374e-03
+9.957600e-03
+1.032217e-02
+1.069011e-02
+1.106145e-02
+1.143623e-02
+1.181448e-02
+1.219622e-02
+1.312743e-02
+1.459450e-02
+1.607512e-02
+1.756947e-02
+1.907761e-02
+2.059974e-02
+2.213594e-02
+2.368635e-02
+2.525111e-02
+2.683032e-02
+2.842417e-02
+3.003274e-02
+3.165621e-02
+3.329469e-02
+3.494832e-02
+3.661728e-02
+3.744973e-02
+3.826391e-02
+3.908562e-02
+3.991493e-02
+4.075192e-02
+4.159665e-02
+4.244919e-02
+4.330963e-02
+4.417802e-02
+4.505444e-02
+4.593898e-02
+4.683170e-02
+4.773268e-02
+4.864198e-02
+4.955972e-02
+5.048592e-02
+5.142071e-02
+5.236414e-02
+5.331630e-02
+5.447489e-02
+5.659831e-02
+5.874138e-02
+6.090426e-02
+6.308715e-02
+6.529026e-02
+6.798464e-02
+7.180223e-02
+7.565513e-02
+7.954362e-02
+8.346814e-02
+8.742893e-02
+8.924622e-02
+9.027499e-02
+9.131329e-02
+9.236117e-02
+9.341877e-02
+9.448615e-02
+9.556340e-02
+9.665061e-02
+9.774788e-02
+9.885530e-02
+1.001042e-01
+1.015785e-01
+1.030665e-01
+1.045682e-01
+1.060838e-01
+1.076134e-01
+1.091572e-01
+1.107153e-01
+1.122877e-01
+1.138748e-01
+1.154765e-01
+1.170930e-01
+1.187244e-01
+1.203710e-01
+1.219492e-01
+1.234579e-01
+1.249807e-01
+1.265175e-01
+1.280685e-01
+1.296338e-01
+1.312137e-01
+1.328082e-01
+1.344174e-01
+1.360415e-01
+1.376806e-01
+1.393349e-01
+1.410045e-01
+1.426895e-01
+1.443902e-01
+1.461065e-01
+1.478388e-01
+1.495871e-01
+1.513515e-01
+1.531323e-01
+1.538241e-01
+1.540502e-01
+1.542785e-01
+1.545088e-01
+1.547413e-01
+1.549759e-01
+1.552127e-01
+1.554517e-01
+1.556929e-01
+1.559363e-01
+1.561820e-01
+1.564299e-01
+1.566802e-01
+1.569327e-01
+1.571876e-01
+1.574449e-01
+1.577045e-01
+1.567661e-01
+1.557721e-01
+1.547688e-01
+1.537563e-01
+1.527344e-01
+1.517030e-01
+1.506621e-01
+1.496116e-01
+1.485514e-01
+1.474813e-01
+1.464013e-01
+1.453114e-01
+1.442114e-01
+1.431012e-01
+1.420136e-01
+1.409544e-01
+1.398855e-01
+1.388066e-01
+1.377178e-01
+1.366189e-01
+1.355098e-01
+1.343905e-01
+1.332608e-01
+1.321206e-01
+1.309700e-01
+1.298086e-01
+1.286365e-01
+1.274536e-01
+1.262597e-01
+1.250548e-01
+1.238387e-01
+1.226114e-01
+1.213727e-01
+1.201226e-01
+1.188609e-01
+1.175876e-01
+1.163024e-01
+1.150054e-01
+1.137976e-01
+1.129168e-01
+1.120279e-01
+1.111307e-01
+1.102253e-01
+1.093115e-01
+1.083892e-01
+1.074584e-01
+1.065190e-01
+1.055709e-01
+1.046140e-01
+1.036483e-01
+1.026737e-01
+1.016900e-01
+1.006972e-01
+9.969524e-02
+9.868401e-02
+9.766343e-02
+9.663340e-02
+9.559385e-02
+9.467477e-02
+9.391842e-02
+9.315509e-02
+9.238467e-02
+9.160715e-02
+
+# Si
+
+10 0.0039994
+0.000000e+00
+1.352392e-04
+2.717301e-04
+4.094839e-04
+5.485136e-04
+6.888267e-04
+8.304389e-04
+9.733615e-04
+1.117609e-03
+1.263188e-03
+1.410112e-03
+1.831684e-03
+2.404809e-03
+2.983242e-03
+3.567018e-03
+4.156210e-03
+4.750840e-03
+5.350970e-03
+5.956665e-03
+6.567948e-03
+6.994542e-03
+6.668229e-03
+6.338894e-03
+6.006509e-03
+5.671058e-03
+5.332496e-03
+4.990805e-03
+4.645955e-03
+4.297912e-03
+4.216110e-03
+4.393768e-03
+4.573070e-03
+4.754033e-03
+4.936667e-03
+5.120991e-03
+5.307022e-03
+5.494775e-03
+5.684264e-03
+5.875506e-03
+6.068517e-03
+6.263312e-03
+6.459910e-03
+6.658327e-03
+6.858582e-03
+7.060686e-03
+7.084373e-03
+7.102782e-03
+7.121363e-03
+7.140115e-03
+7.159040e-03
+7.178141e-03
+7.197418e-03
+7.216874e-03
+7.236510e-03
+7.256326e-03
+7.276327e-03
+7.296513e-03
+7.316886e-03
+7.337446e-03
+7.358198e-03
+7.379140e-03
+7.400277e-03
+7.421610e-03
+7.443139e-03
+7.657140e-03
+8.801304e-03
+9.956069e-03
+1.112152e-02
+1.229774e-02
+1.348486e-02
+1.432152e-02
+1.432310e-02
+1.432469e-02
+1.432630e-02
+1.432792e-02
+1.432956e-02
+1.449288e-02
+1.471743e-02
+1.494406e-02
+1.517279e-02
+1.540363e-02
+1.563660e-02
+1.587174e-02
+1.610905e-02
+1.634855e-02
+1.659027e-02
+1.664211e-02
+1.638143e-02
+1.611833e-02
+1.585280e-02
+1.558482e-02
+1.531435e-02
+1.504138e-02
+1.476589e-02
+1.448785e-02
+1.420724e-02
+1.392403e-02
+1.363820e-02
+1.334973e-02
+1.305858e-02
+1.270850e-02
+1.229869e-02
+1.188509e-02
+1.146766e-02
+1.104636e-02
+1.062118e-02
+1.019206e-02
+9.758964e-03
+9.321865e-03
+8.880723e-03
+8.435495e-03
+7.986158e-03
+7.532656e-03
+7.074960e-03
+6.613035e-03
+6.146826e-03
+5.676311e-03
+5.201440e-03
+4.722174e-03
+4.238479e-03
+4.093481e-03
+4.093695e-03
+4.093909e-03
+4.094126e-03
+4.094345e-03
+4.094566e-03
+4.094788e-03
+4.095013e-03
+4.095240e-03
+4.095469e-03
+4.095701e-03
+4.095934e-03
+4.096169e-03
+4.096407e-03
+4.096647e-03
+4.096889e-03
+4.097133e-03
+3.930429e-03
+3.755642e-03
+3.579242e-03
+3.401205e-03
+3.221525e-03
+3.040180e-03
+2.857158e-03
+2.672443e-03
+2.486018e-03
+2.297869e-03
+2.107982e-03
+1.916334e-03
+1.722915e-03
+1.527706e-03
+1.417147e-03
+1.406577e-03
+1.395910e-03
+1.385144e-03
+1.374279e-03
+1.363313e-03
+1.352245e-03
+1.341076e-03
+1.329802e-03
+1.318425e-03
+1.306942e-03
+1.295353e-03
+1.283657e-03
+1.271853e-03
+1.259939e-03
+1.247915e-03
+1.235780e-03
+1.223533e-03
+1.211172e-03
+1.198697e-03
+1.186107e-03
+1.173400e-03
+1.160576e-03
+1.147633e-03
+1.135580e-03
+1.126791e-03
+1.117920e-03
+1.108968e-03
+1.099933e-03
+1.090814e-03
+1.081610e-03
+1.072322e-03
+1.062948e-03
+1.053486e-03
+1.043938e-03
+1.034301e-03
+1.024575e-03
+1.014759e-03
+1.004852e-03
+9.948538e-04
+9.847626e-04
+9.745783e-04
+9.642995e-04
+9.539260e-04
+9.447545e-04
+9.372069e-04
+9.295896e-04
+9.219018e-04
+9.141429e-04
+
+# Metals
+
+10 0.0039994
+0.000000e+00
+2.167791e-03
+4.355624e-03
+6.563708e-03
+8.792251e-03
+1.104136e-02
+1.331128e-02
+1.560226e-02
+1.791438e-02
+2.024794e-02
+2.260303e-02
+2.440555e-02
+2.591440e-02
+2.743724e-02
+2.897413e-02
+3.052528e-02
+3.209072e-02
+3.367069e-02
+3.526528e-02
+3.687459e-02
+3.831423e-02
+3.903325e-02
+3.975892e-02
+4.049131e-02
+4.123047e-02
+4.197648e-02
+4.272937e-02
+4.348925e-02
+4.425615e-02
+4.555964e-02
+4.738660e-02
+4.923046e-02
+5.109137e-02
+5.296952e-02
+5.486500e-02
+5.677806e-02
+5.870879e-02
+6.065741e-02
+6.262404e-02
+6.460886e-02
+6.661204e-02
+6.863375e-02
+7.067417e-02
+7.273346e-02
+7.481183e-02
+7.611249e-02
+7.740086e-02
+7.870115e-02
+8.001346e-02
+8.133792e-02
+8.267464e-02
+8.402372e-02
+8.538529e-02
+8.675946e-02
+8.814632e-02
+8.954605e-02
+9.095869e-02
+9.238442e-02
+9.382334e-02
+9.527556e-02
+9.674121e-02
+9.822042e-02
+9.971333e-02
+1.012201e-01
+1.029083e-01
+1.054208e-01
+1.079567e-01
+1.105160e-01
+1.130989e-01
+1.157058e-01
+1.184700e-01
+1.215701e-01
+1.246990e-01
+1.278567e-01
+1.310437e-01
+1.342602e-01
+1.362872e-01
+1.378826e-01
+1.394928e-01
+1.411178e-01
+1.427579e-01
+1.444132e-01
+1.460838e-01
+1.477698e-01
+1.494714e-01
+1.511888e-01
+1.530033e-01
+1.549669e-01
+1.569486e-01
+1.589487e-01
+1.609673e-01
+1.630045e-01
+1.650606e-01
+1.671357e-01
+1.692301e-01
+1.713438e-01
+1.734770e-01
+1.756300e-01
+1.778029e-01
+1.799959e-01
+1.814424e-01
+1.821321e-01
+1.828281e-01
+1.835305e-01
+1.842395e-01
+1.849550e-01
+1.856771e-01
+1.864059e-01
+1.871414e-01
+1.878838e-01
+1.886330e-01
+1.893892e-01
+1.901523e-01
+1.909225e-01
+1.916999e-01
+1.924844e-01
+1.932762e-01
+1.940753e-01
+1.948818e-01
+1.956958e-01
+1.964224e-01
+1.971154e-01
+1.978147e-01
+1.985205e-01
+1.992329e-01
+1.999518e-01
+2.006774e-01
+2.014097e-01
+2.021487e-01
+2.028947e-01
+2.036475e-01
+2.044072e-01
+2.051741e-01
+2.059480e-01
+2.067290e-01
+2.075173e-01
+2.083129e-01
+2.074398e-01
+2.064930e-01
+2.055375e-01
+2.045731e-01
+2.035999e-01
+2.026176e-01
+2.016263e-01
+2.006257e-01
+1.996159e-01
+1.985968e-01
+1.975682e-01
+1.965301e-01
+1.954824e-01
+1.944251e-01
+1.933727e-01
+1.923280e-01
+1.912735e-01
+1.902093e-01
+1.891353e-01
+1.880513e-01
+1.869573e-01
+1.858532e-01
+1.847389e-01
+1.836143e-01
+1.824792e-01
+1.813336e-01
+1.801775e-01
+1.790106e-01
+1.778330e-01
+1.766445e-01
+1.754449e-01
+1.742343e-01
+1.730125e-01
+1.717793e-01
+1.705348e-01
+1.692788e-01
+1.680111e-01
+1.667317e-01
+1.655107e-01
+1.645129e-01
+1.635060e-01
+1.624897e-01
+1.614640e-01
+1.604288e-01
+1.593841e-01
+1.583297e-01
+1.572655e-01
+1.561915e-01
+1.551075e-01
+1.540135e-01
+1.529094e-01
+1.517951e-01
+1.506705e-01
+1.495355e-01
+1.483899e-01
+1.472338e-01
+1.460670e-01
+1.448894e-01
+1.438147e-01
+1.428799e-01
+1.419364e-01
+1.409842e-01
+1.400232e-01
+
+#### Metal Ejecta Parameters ####
+
+# Number of points / Number of elements
+200 5
+
+# IEj
+
+0.05 0.0155624
+8.206815e-05
+2.370714e-04
+4.047551e-04
+5.862745e-04
+7.828567e-04
+9.958115e-04
+1.226530e-03
+1.477058e-03
+1.748617e-03
+2.042938e-03
+2.362879e-03
+2.709811e-03
+3.086701e-03
+3.495351e-03
+3.923152e-03
+4.364125e-03
+4.818805e-03
+5.287757e-03
+5.771519e-03
+6.270749e-03
+6.786058e-03
+7.318125e-03
+7.867619e-03
+8.435268e-03
+9.021813e-03
+9.628053e-03
+1.025482e-02
+1.090293e-02
+1.157330e-02
+1.226686e-02
+1.298458e-02
+1.372747e-02
+1.449659e-02
+1.529304e-02
+1.611798e-02
+1.697260e-02
+1.785816e-02
+1.877598e-02
+1.972741e-02
+2.071389e-02
+2.173691e-02
+2.279802e-02
+2.389884e-02
+2.504107e-02
+2.622646e-02
+2.745688e-02
+2.873424e-02
+3.006056e-02
+3.143792e-02
+3.286853e-02
+3.435466e-02
+3.589871e-02
+3.750316e-02
+3.917060e-02
+4.090377e-02
+4.270547e-02
+4.457868e-02
+4.652649e-02
+4.855209e-02
+5.065887e-02
+5.285032e-02
+5.513012e-02
+5.750208e-02
+5.997020e-02
+6.253864e-02
+6.518428e-02
+6.785256e-02
+7.054213e-02
+7.325339e-02
+7.598678e-02
+7.874273e-02
+8.152161e-02
+8.432387e-02
+8.714992e-02
+9.000015e-02
+9.287501e-02
+9.577491e-02
+9.870028e-02
+1.016515e-01
+1.046291e-01
+1.076333e-01
+1.106647e-01
+1.137237e-01
+1.168107e-01
+1.199263e-01
+1.230735e-01
+1.262540e-01
+1.294692e-01
+1.327203e-01
+1.360089e-01
+1.393363e-01
+1.427040e-01
+1.461135e-01
+1.495662e-01
+1.530639e-01
+1.566079e-01
+1.601764e-01
+1.637549e-01
+1.673445e-01
+1.709463e-01
+1.745754e-01
+1.782619e-01
+1.820087e-01
+1.858174e-01
+1.896309e-01
+1.934048e-01
+1.971397e-01
+2.008358e-01
+2.044937e-01
+2.081138e-01
+2.117050e-01
+2.152829e-01
+2.188487e-01
+2.224031e-01
+2.259470e-01
+2.294789e-01
+2.329939e-01
+2.364924e-01
+2.399752e-01
+2.434418e-01
+2.468832e-01
+2.502979e-01
+2.536866e-01
+2.570437e-01
+2.603533e-01
+2.636164e-01
+2.668394e-01
+2.700189e-01
+2.731374e-01
+2.761648e-01
+2.791540e-01
+2.821150e-01
+2.850484e-01
+2.879544e-01
+2.908340e-01
+2.936923e-01
+2.965309e-01
+2.993504e-01
+3.021510e-01
+3.049335e-01
+3.076982e-01
+3.104457e-01
+3.131764e-01
+3.158896e-01
+3.185854e-01
+3.212645e-01
+3.239272e-01
+3.265741e-01
+3.292055e-01
+3.318101e-01
+3.343815e-01
+3.369218e-01
+3.394441e-01
+3.419513e-01
+3.444353e-01
+3.468899e-01
+3.493201e-01
+3.517351e-01
+3.541356e-01
+3.565220e-01
+3.588902e-01
+3.612322e-01
+3.635478e-01
+3.658376e-01
+3.681015e-01
+3.703375e-01
+3.725398e-01
+3.747169e-01
+3.768752e-01
+3.790200e-01
+3.811520e-01
+3.832684e-01
+3.853679e-01
+3.874507e-01
+3.895175e-01
+3.915695e-01
+3.936071e-01
+3.956307e-01
+3.976406e-01
+3.996337e-01
+4.015884e-01
+4.035005e-01
+4.053700e-01
+4.071970e-01
+4.089878e-01
+4.107460e-01
+4.124714e-01
+4.141680e-01
+4.158655e-01
+4.175701e-01
+4.192823e-01
+4.210028e-01
+4.227321e-01
+4.244703e-01
+4.262001e-01
+4.279142e-01
+4.296127e-01
+4.312961e-01
+4.329643e-01
+4.346172e-01
+
+# IEjnp
+
+0.05 0.0155624
+8.206815e-05
+2.370714e-04
+4.047551e-04
+5.862745e-04
+7.828567e-04
+9.958115e-04
+1.226530e-03
+1.477058e-03
+1.748617e-03
+2.042938e-03
+2.362879e-03
+2.709811e-03
+3.086701e-03
+3.495351e-03
+3.923152e-03
+4.364125e-03
+4.818805e-03
+5.287757e-03
+5.771519e-03
+6.270749e-03
+6.786058e-03
+7.318125e-03
+7.867619e-03
+8.435268e-03
+9.021813e-03
+9.628053e-03
+1.025482e-02
+1.090293e-02
+1.157330e-02
+1.226686e-02
+1.298458e-02
+1.372747e-02
+1.449659e-02
+1.529304e-02
+1.611798e-02
+1.697260e-02
+1.785816e-02
+1.877598e-02
+1.972741e-02
+2.071389e-02
+2.173691e-02
+2.279802e-02
+2.389884e-02
+2.504107e-02
+2.622646e-02
+2.745688e-02
+2.873424e-02
+3.006056e-02
+3.143792e-02
+3.286853e-02
+3.435466e-02
+3.589871e-02
+3.750316e-02
+3.917060e-02
+4.090377e-02
+4.270547e-02
+4.457868e-02
+4.652649e-02
+4.855209e-02
+5.065887e-02
+5.285032e-02
+5.513012e-02
+5.750208e-02
+5.997020e-02
+6.253864e-02
+6.518428e-02
+6.785256e-02
+7.054213e-02
+7.325339e-02
+7.598678e-02
+7.874273e-02
+8.152161e-02
+8.432387e-02
+8.714992e-02
+9.000015e-02
+9.287501e-02
+9.577491e-02
+9.870028e-02
+1.016515e-01
+1.046291e-01
+1.076333e-01
+1.106647e-01
+1.137237e-01
+1.168107e-01
+1.199263e-01
+1.230735e-01
+1.262540e-01
+1.294692e-01
+1.327203e-01
+1.360089e-01
+1.393363e-01
+1.427040e-01
+1.461135e-01
+1.495662e-01
+1.530639e-01
+1.566079e-01
+1.601764e-01
+1.637549e-01
+1.673445e-01
+1.709463e-01
+1.745754e-01
+1.782619e-01
+1.820087e-01
+1.858174e-01
+1.896309e-01
+1.934048e-01
+1.971397e-01
+2.008358e-01
+2.044937e-01
+2.081138e-01
+2.117050e-01
+2.152829e-01
+2.188487e-01
+2.224031e-01
+2.259470e-01
+2.294789e-01
+2.329939e-01
+2.364924e-01
+2.399752e-01
+2.434418e-01
+2.468832e-01
+2.502979e-01
+2.536866e-01
+2.570437e-01
+2.603533e-01
+2.636164e-01
+2.668394e-01
+2.700189e-01
+2.731374e-01
+2.761648e-01
+2.791540e-01
+2.821150e-01
+2.850484e-01
+2.879544e-01
+2.908340e-01
+2.936923e-01
+2.965309e-01
+2.993504e-01
+3.021510e-01
+3.049335e-01
+3.076982e-01
+3.104457e-01
+3.131764e-01
+3.158896e-01
+3.185854e-01
+3.212645e-01
+3.239272e-01
+3.265741e-01
+3.292042e-01
+3.317258e-01
+3.340838e-01
+3.362926e-01
+3.384537e-01
+3.405853e-01
+3.426821e-01
+3.447393e-01
+3.467607e-01
+3.487532e-01
+3.507171e-01
+3.526525e-01
+3.545572e-01
+3.564271e-01
+3.582623e-01
+3.600625e-01
+3.618280e-01
+3.635566e-01
+3.652438e-01
+3.668917e-01
+3.685058e-01
+3.700951e-01
+3.716600e-01
+3.731969e-01
+3.747039e-01
+3.761808e-01
+3.776304e-01
+3.790660e-01
+3.804892e-01
+3.819002e-01
+3.832994e-01
+3.846829e-01
+3.860265e-01
+3.873254e-01
+3.885794e-01
+3.897887e-01
+3.909730e-01
+3.921427e-01
+3.932981e-01
+3.944432e-01
+3.956077e-01
+3.967983e-01
+3.980156e-01
+3.992603e-01
+4.005332e-01
+4.018342e-01
+4.031437e-01
+4.044531e-01
+4.057628e-01
+4.070731e-01
+4.083844e-01
+4.096946e-01
+
+# IFe
+
+10 0.0039994
+3.012701e-11
+2.612578e-07
+1.035092e-06
+2.323446e-06
+4.128247e-06
+6.451417e-06
+9.294890e-06
+1.266072e-05
+1.655085e-05
+2.096727e-05
+2.591201e-05
+3.122399e-05
+3.636198e-05
+4.128198e-05
+4.598335e-05
+5.046531e-05
+5.472713e-05
+5.876814e-05
+6.258753e-05
+6.618456e-05
+6.957504e-05
+7.325536e-05
+7.745932e-05
+8.218893e-05
+8.744613e-05
+9.323313e-05
+9.955181e-05
+1.064044e-04
+1.137928e-04
+1.216293e-04
+1.294123e-04
+1.370641e-04
+1.445840e-04
+1.519719e-04
+1.592272e-04
+1.663497e-04
+1.733390e-04
+1.801948e-04
+1.869167e-04
+1.935042e-04
+1.999571e-04
+2.062749e-04
+2.124573e-04
+2.185037e-04
+2.244140e-04
+2.301853e-04
+2.358145e-04
+2.413013e-04
+2.466452e-04
+2.518459e-04
+2.569029e-04
+2.618156e-04
+2.665838e-04
+2.712069e-04
+2.756844e-04
+2.800161e-04
+2.842013e-04
+2.882395e-04
+2.921304e-04
+2.958735e-04
+2.994681e-04
+3.029141e-04
+3.062107e-04
+3.093575e-04
+3.123590e-04
+3.154129e-04
+3.186234e-04
+3.219910e-04
+3.255164e-04
+3.292002e-04
+3.330307e-04
+3.368195e-04
+3.405028e-04
+3.440801e-04
+3.475513e-04
+3.509160e-04
+3.542749e-04
+3.578872e-04
+3.617666e-04
+3.659144e-04
+3.703315e-04
+3.750191e-04
+3.799783e-04
+3.852100e-04
+3.907155e-04
+3.964957e-04
+4.025176e-04
+4.084418e-04
+4.141813e-04
+4.197354e-04
+4.251036e-04
+4.302852e-04
+4.352798e-04
+4.400865e-04
+4.447049e-04
+4.491344e-04
+4.533742e-04
+4.574239e-04
+4.612828e-04
+4.649502e-04
+4.684312e-04
+4.717590e-04
+4.749386e-04
+4.779696e-04
+4.808515e-04
+4.835837e-04
+4.861658e-04
+4.885973e-04
+4.908775e-04
+4.930062e-04
+4.949826e-04
+4.968062e-04
+4.984767e-04
+4.999933e-04
+5.013556e-04
+5.025630e-04
+5.036150e-04
+5.045109e-04
+5.052504e-04
+5.058327e-04
+5.062961e-04
+5.067501e-04
+5.072016e-04
+5.076506e-04
+5.080970e-04
+5.085409e-04
+5.089823e-04
+5.094211e-04
+5.098574e-04
+5.102911e-04
+5.107223e-04
+5.111509e-04
+5.115770e-04
+5.120005e-04
+5.124215e-04
+5.128400e-04
+5.132558e-04
+5.136685e-04
+5.140771e-04
+5.144818e-04
+5.148824e-04
+5.152791e-04
+5.156718e-04
+5.160603e-04
+5.164450e-04
+5.168255e-04
+5.172020e-04
+5.175745e-04
+5.179428e-04
+5.183071e-04
+5.186673e-04
+5.190236e-04
+5.193761e-04
+5.197250e-04
+5.200703e-04
+5.204119e-04
+5.207498e-04
+5.210842e-04
+5.214149e-04
+5.217419e-04
+5.220653e-04
+5.223851e-04
+5.227010e-04
+5.230134e-04
+5.233220e-04
+5.236270e-04
+5.239281e-04
+5.242256e-04
+5.245194e-04
+5.248094e-04
+5.250956e-04
+5.253782e-04
+5.256568e-04
+5.259318e-04
+5.262029e-04
+5.264704e-04
+5.267346e-04
+5.269962e-04
+5.272549e-04
+5.275108e-04
+5.277640e-04
+5.280143e-04
+5.282619e-04
+5.285065e-04
+5.287484e-04
+5.289873e-04
+5.292236e-04
+5.294569e-04
+5.296874e-04
+5.299151e-04
+5.301398e-04
+5.303617e-04
+5.305808e-04
+5.307968e-04
+5.310101e-04
+5.312205e-04
+5.314285e-04
+5.316344e-04
+5.318379e-04
+5.320392e-04
+
+# IMg
+
+10 0.0039994
+2.160050e-12
+1.872877e-08
+7.420203e-08
+1.665612e-07
+2.959441e-07
+4.624835e-07
+6.663267e-07
+9.076120e-07
+1.186490e-06
+1.503089e-06
+1.857567e-06
+2.238467e-06
+2.607339e-06
+2.961049e-06
+3.299552e-06
+3.622798e-06
+3.930734e-06
+4.223315e-06
+4.500485e-06
+4.762196e-06
+5.010208e-06
+5.299127e-06
+5.654692e-06
+6.077156e-06
+6.566763e-06
+7.123785e-06
+7.748466e-06
+8.441064e-06
+9.201853e-06
+1.002659e-05
+1.089025e-05
+1.178908e-05
+1.272325e-05
+1.369287e-05
+1.469811e-05
+1.573911e-05
+1.681604e-05
+1.792904e-05
+1.907826e-05
+2.026385e-05
+2.148596e-05
+2.274477e-05
+2.404043e-05
+2.537307e-05
+2.674290e-05
+2.815455e-05
+2.961306e-05
+3.111867e-05
+3.267161e-05
+3.427200e-05
+3.592011e-05
+3.761612e-05
+3.936024e-05
+4.115270e-05
+4.299368e-05
+4.488340e-05
+4.682210e-05
+4.880995e-05
+5.084716e-05
+5.293402e-05
+5.507068e-05
+5.725739e-05
+5.949440e-05
+6.178192e-05
+6.411609e-05
+6.633285e-05
+6.834586e-05
+7.015443e-05
+7.175783e-05
+7.315532e-05
+7.435597e-05
+7.550832e-05
+7.666255e-05
+7.781866e-05
+7.897669e-05
+8.013667e-05
+8.130284e-05
+8.248597e-05
+8.368673e-05
+8.490516e-05
+8.614137e-05
+8.739549e-05
+8.866753e-05
+8.995761e-05
+9.126583e-05
+9.259226e-05
+9.394646e-05
+9.542179e-05
+9.704260e-05
+9.880945e-05
+1.007229e-04
+1.027835e-04
+1.049919e-04
+1.073486e-04
+1.098543e-04
+1.125095e-04
+1.153148e-04
+1.182709e-04
+1.213783e-04
+1.246376e-04
+1.280376e-04
+1.315075e-04
+1.350361e-04
+1.386238e-04
+1.422707e-04
+1.459772e-04
+1.497436e-04
+1.535700e-04
+1.574569e-04
+1.614045e-04
+1.654131e-04
+1.694830e-04
+1.736146e-04
+1.778080e-04
+1.820636e-04
+1.863818e-04
+1.907628e-04
+1.952069e-04
+1.997145e-04
+2.042858e-04
+2.089184e-04
+2.136046e-04
+2.183442e-04
+2.231376e-04
+2.279848e-04
+2.328863e-04
+2.378424e-04
+2.428533e-04
+2.479193e-04
+2.530407e-04
+2.582179e-04
+2.634510e-04
+2.687405e-04
+2.740866e-04
+2.794895e-04
+2.849497e-04
+2.904675e-04
+2.959766e-04
+3.014013e-04
+3.067410e-04
+3.119958e-04
+3.171651e-04
+3.222490e-04
+3.272473e-04
+3.321595e-04
+3.369855e-04
+3.417251e-04
+3.463780e-04
+3.509441e-04
+3.554230e-04
+3.598145e-04
+3.641232e-04
+3.683820e-04
+3.725970e-04
+3.767684e-04
+3.808958e-04
+3.849793e-04
+3.890187e-04
+3.930140e-04
+3.969652e-04
+4.008720e-04
+4.047343e-04
+4.085522e-04
+4.123254e-04
+4.160541e-04
+4.197378e-04
+4.233767e-04
+4.269706e-04
+4.305194e-04
+4.340230e-04
+4.374812e-04
+4.408942e-04
+4.442615e-04
+4.475832e-04
+4.508592e-04
+4.540897e-04
+4.572830e-04
+4.604426e-04
+4.635685e-04
+4.666605e-04
+4.697187e-04
+4.727429e-04
+4.757332e-04
+4.786893e-04
+4.816113e-04
+4.844990e-04
+4.873524e-04
+4.901715e-04
+4.929561e-04
+4.957062e-04
+4.984216e-04
+5.011023e-04
+5.037483e-04
+5.063594e-04
+5.089356e-04
+5.114775e-04
+5.139911e-04
+5.164775e-04
+5.189368e-04
+5.213688e-04
+
+# IO
+
+10 0.0039994
+1.620037e-11
+1.404260e-07
+5.563597e-07
+1.248845e-06
+2.218927e-06
+3.467620e-06
+4.996007e-06
+6.805130e-06
+8.896095e-06
+1.126991e-05
+1.392773e-05
+1.689265e-05
+2.023941e-05
+2.397530e-05
+2.810181e-05
+3.262053e-05
+3.753294e-05
+4.284055e-05
+4.854490e-05
+5.464768e-05
+6.114668e-05
+6.793509e-05
+7.496309e-05
+8.223183e-05
+8.974224e-05
+9.749545e-05
+1.054923e-04
+1.137340e-04
+1.222216e-04
+1.310572e-04
+1.408079e-04
+1.515648e-04
+1.633319e-04
+1.761132e-04
+1.899123e-04
+2.047336e-04
+2.205810e-04
+2.374585e-04
+2.553705e-04
+2.743207e-04
+2.943135e-04
+3.153533e-04
+3.374438e-04
+3.605899e-04
+3.847955e-04
+4.097826e-04
+4.352462e-04
+4.611879e-04
+4.876102e-04
+5.145152e-04
+5.419056e-04
+5.697832e-04
+5.981505e-04
+6.270099e-04
+6.563631e-04
+6.862141e-04
+7.165631e-04
+7.474136e-04
+7.787677e-04
+8.106288e-04
+8.429976e-04
+8.758779e-04
+9.092721e-04
+9.431823e-04
+9.776228e-04
+1.013070e-03
+1.049777e-03
+1.087750e-03
+1.126993e-03
+1.167512e-03
+1.209359e-03
+1.253239e-03
+1.299400e-03
+1.347849e-03
+1.398596e-03
+1.451651e-03
+1.506523e-03
+1.561939e-03
+1.617839e-03
+1.674225e-03
+1.731100e-03
+1.788467e-03
+1.846328e-03
+1.904687e-03
+1.963547e-03
+2.022909e-03
+2.082794e-03
+2.143356e-03
+2.204637e-03
+2.266643e-03
+2.329376e-03
+2.392840e-03
+2.457039e-03
+2.521977e-03
+2.587658e-03
+2.654086e-03
+2.721264e-03
+2.789198e-03
+2.857890e-03
+2.927345e-03
+2.997554e-03
+3.068449e-03
+3.140021e-03
+3.212276e-03
+3.285215e-03
+3.358843e-03
+3.433165e-03
+3.508184e-03
+3.583903e-03
+3.660327e-03
+3.737460e-03
+3.815306e-03
+3.893869e-03
+3.973151e-03
+4.053159e-03
+4.133895e-03
+4.215365e-03
+4.297572e-03
+4.380520e-03
+4.464215e-03
+4.548445e-03
+4.632602e-03
+4.716650e-03
+4.800593e-03
+4.884429e-03
+4.968159e-03
+5.051787e-03
+5.135310e-03
+5.218734e-03
+5.302055e-03
+5.385279e-03
+5.468402e-03
+5.551429e-03
+5.634360e-03
+5.717198e-03
+5.799939e-03
+5.882590e-03
+5.964844e-03
+6.046356e-03
+6.127123e-03
+6.207146e-03
+6.286420e-03
+6.364947e-03
+6.442724e-03
+6.519749e-03
+6.596023e-03
+6.671543e-03
+6.746307e-03
+6.820315e-03
+6.893565e-03
+6.966054e-03
+7.037786e-03
+7.108787e-03
+7.179058e-03
+7.248600e-03
+7.317411e-03
+7.385490e-03
+7.452833e-03
+7.519441e-03
+7.585312e-03
+7.650445e-03
+7.714836e-03
+7.778486e-03
+7.841391e-03
+7.903554e-03
+7.964968e-03
+8.025634e-03
+8.085549e-03
+8.144713e-03
+8.203124e-03
+8.260779e-03
+8.317676e-03
+8.373815e-03
+8.429194e-03
+8.483809e-03
+8.537667e-03
+8.590903e-03
+8.643579e-03
+8.695692e-03
+8.747241e-03
+8.798225e-03
+8.848645e-03
+8.898497e-03
+8.947779e-03
+8.996493e-03
+9.044636e-03
+9.092208e-03
+9.139206e-03
+9.185629e-03
+9.231478e-03
+9.276748e-03
+9.321440e-03
+9.365553e-03
+9.409084e-03
+9.452032e-03
+9.494411e-03
+9.536315e-03
+9.577768e-03
+9.618767e-03
+9.659312e-03
+
+# ISi
+
+10 0.0039994
+6.053824e-12
+5.251241e-08
+2.080506e-07
+4.670110e-07
+8.297757e-07
+1.296728e-06
+1.868277e-06
+2.544803e-06
+3.326721e-06
+4.214417e-06
+5.208312e-06
+6.376518e-06
+7.945084e-06
+9.933501e-06
+1.234334e-05
+1.517625e-05
+1.843378e-05
+2.211760e-05
+2.622933e-05
+3.077058e-05
+3.572804e-05
+4.064897e-05
+4.532069e-05
+4.974243e-05
+5.391336e-05
+5.783263e-05
+6.149930e-05
+6.491263e-05
+6.807156e-05
+7.102537e-05
+7.405231e-05
+7.719602e-05
+8.045699e-05
+8.383568e-05
+8.733259e-05
+9.094828e-05
+9.468317e-05
+9.853783e-05
+1.025127e-04
+1.066084e-04
+1.108254e-04
+1.151641e-04
+1.196252e-04
+1.242092e-04
+1.289166e-04
+1.336882e-04
+1.384590e-04
+1.432289e-04
+1.479983e-04
+1.527671e-04
+1.575353e-04
+1.623031e-04
+1.670706e-04
+1.718378e-04
+1.766049e-04
+1.813719e-04
+1.861388e-04
+1.909059e-04
+1.956731e-04
+2.004406e-04
+2.052083e-04
+2.099765e-04
+2.147453e-04
+2.195146e-04
+2.242960e-04
+2.295511e-04
+2.355233e-04
+2.422152e-04
+2.496297e-04
+2.577695e-04
+2.666020e-04
+2.755917e-04
+2.845575e-04
+2.934995e-04
+3.024180e-04
+3.113127e-04
+3.202212e-04
+3.292383e-04
+3.383694e-04
+3.476150e-04
+3.569758e-04
+3.664525e-04
+3.760457e-04
+3.857555e-04
+3.955830e-04
+4.055288e-04
+4.155708e-04
+4.254859e-04
+4.352169e-04
+4.447635e-04
+4.541244e-04
+4.632999e-04
+4.722890e-04
+4.810914e-04
+4.897065e-04
+4.981338e-04
+5.063725e-04
+5.144225e-04
+5.222830e-04
+5.299533e-04
+5.374248e-04
+5.446480e-04
+5.516140e-04
+5.583222e-04
+5.647715e-04
+5.709611e-04
+5.768904e-04
+5.825582e-04
+5.879639e-04
+5.931065e-04
+5.979852e-04
+6.025990e-04
+6.069471e-04
+6.110285e-04
+6.148425e-04
+6.183879e-04
+6.216640e-04
+6.246698e-04
+6.274042e-04
+6.298665e-04
+6.321222e-04
+6.343601e-04
+6.365920e-04
+6.388178e-04
+6.410377e-04
+6.432515e-04
+6.454594e-04
+6.476612e-04
+6.498572e-04
+6.520472e-04
+6.542312e-04
+6.564094e-04
+6.585817e-04
+6.607481e-04
+6.629087e-04
+6.650634e-04
+6.672124e-04
+6.693132e-04
+6.713177e-04
+6.732252e-04
+6.750355e-04
+6.767483e-04
+6.783634e-04
+6.798802e-04
+6.812986e-04
+6.826179e-04
+6.838382e-04
+6.849588e-04
+6.859797e-04
+6.869002e-04
+6.877202e-04
+6.884494e-04
+6.891579e-04
+6.898592e-04
+6.905531e-04
+6.912397e-04
+6.919191e-04
+6.925911e-04
+6.932558e-04
+6.939131e-04
+6.945630e-04
+6.952056e-04
+6.958407e-04
+6.964685e-04
+6.970888e-04
+6.977017e-04
+6.983071e-04
+6.989050e-04
+6.994953e-04
+7.000781e-04
+7.006535e-04
+7.012213e-04
+7.017815e-04
+7.023342e-04
+7.028792e-04
+7.034166e-04
+7.039479e-04
+7.044735e-04
+7.049935e-04
+7.055079e-04
+7.060167e-04
+7.065198e-04
+7.070173e-04
+7.075091e-04
+7.079952e-04
+7.084757e-04
+7.089503e-04
+7.094193e-04
+7.098826e-04
+7.103401e-04
+7.107919e-04
+7.112378e-04
+7.116781e-04
+7.121124e-04
+7.125410e-04
+7.129639e-04
+7.133821e-04
+7.137957e-04
+7.142049e-04
+7.146095e-04
+
+# IMetals
+
+10 0.0039994
+9.708856e-11
+8.417264e-07
+3.334892e-06
+7.485796e-06
+1.330068e-05
+2.078555e-05
+2.994691e-05
+4.079111e-05
+5.332474e-05
+6.755383e-05
+8.348527e-05
+1.009831e-04
+1.195795e-04
+1.392416e-04
+1.599733e-04
+1.817793e-04
+2.046633e-04
+2.286308e-04
+2.536848e-04
+2.798305e-04
+3.070580e-04
+3.349308e-04
+3.632461e-04
+3.920053e-04
+4.212114e-04
+4.508663e-04
+4.809718e-04
+5.115308e-04
+5.425441e-04
+5.741138e-04
+6.067900e-04
+6.406629e-04
+6.757374e-04
+7.120182e-04
+7.495107e-04
+7.882195e-04
+8.281511e-04
+8.693093e-04
+9.117003e-04
+9.553288e-04
+1.000200e-03
+1.046321e-03
+1.093694e-03
+1.142328e-03
+1.192227e-03
+1.243132e-03
+1.294758e-03
+1.347111e-03
+1.400193e-03
+1.454007e-03
+1.508559e-03
+1.563851e-03
+1.619887e-03
+1.676670e-03
+1.734205e-03
+1.792496e-03
+1.851545e-03
+1.911358e-03
+1.971937e-03
+2.033288e-03
+2.095412e-03
+2.158316e-03
+2.222002e-03
+2.286476e-03
+2.351751e-03
+2.418231e-03
+2.486135e-03
+2.555468e-03
+2.626238e-03
+2.698450e-03
+2.772124e-03
+2.847465e-03
+2.924548e-03
+3.003381e-03
+3.083971e-03
+3.166326e-03
+3.250175e-03
+3.334809e-03
+3.420195e-03
+3.506340e-03
+3.593245e-03
+3.680918e-03
+3.769363e-03
+3.858580e-03
+3.948578e-03
+4.039361e-03
+4.130941e-03
+4.223418e-03
+4.316821e-03
+4.411157e-03
+4.506428e-03
+4.602640e-03
+4.699801e-03
+4.797913e-03
+4.896982e-03
+4.997014e-03
+5.098013e-03
+5.199987e-03
+5.302939e-03
+5.406875e-03
+5.511688e-03
+5.616717e-03
+5.721855e-03
+5.827106e-03
+5.932470e-03
+6.037950e-03
+6.143550e-03
+6.249270e-03
+6.355113e-03
+6.461082e-03
+6.567180e-03
+6.673407e-03
+6.779768e-03
+6.886263e-03
+6.992895e-03
+7.099667e-03
+7.206582e-03
+7.313642e-03
+7.420849e-03
+7.528206e-03
+7.635696e-03
+7.743271e-03
+7.850927e-03
+7.958669e-03
+8.066498e-03
+8.174418e-03
+8.282429e-03
+8.390532e-03
+8.498733e-03
+8.607033e-03
+8.715433e-03
+8.823937e-03
+8.932545e-03
+9.041262e-03
+9.150089e-03
+9.259028e-03
+9.368083e-03
+9.476829e-03
+9.584787e-03
+9.691950e-03
+9.798322e-03
+9.903897e-03
+1.000868e-02
+1.011266e-02
+1.021585e-02
+1.031823e-02
+1.041982e-02
+1.052061e-02
+1.062059e-02
+1.071977e-02
+1.081815e-02
+1.091571e-02
+1.101249e-02
+1.110848e-02
+1.120367e-02
+1.129807e-02
+1.139167e-02
+1.148447e-02
+1.157648e-02
+1.166768e-02
+1.175809e-02
+1.184769e-02
+1.193649e-02
+1.202448e-02
+1.211167e-02
+1.219805e-02
+1.228362e-02
+1.236837e-02
+1.245232e-02
+1.253545e-02
+1.261777e-02
+1.269927e-02
+1.277995e-02
+1.285981e-02
+1.293885e-02
+1.301707e-02
+1.309456e-02
+1.317138e-02
+1.324750e-02
+1.332295e-02
+1.339770e-02
+1.347177e-02
+1.354515e-02
+1.361784e-02
+1.368983e-02
+1.376114e-02
+1.383175e-02
+1.390166e-02
+1.397088e-02
+1.403940e-02
+1.410722e-02
+1.417433e-02
+1.424075e-02
+1.430647e-02
+1.437147e-02
+1.443578e-02
+1.449949e-02
+1.456260e-02
+1.462512e-02
+1.468704e-02
+
+# Mean WD Mass
+
+1.380000
+
+# SNIa Metal Ejection
+
+# Number of elements
+5
+
+# Ej
+0.0
+
+# Ejnp
+0.0
+
+# Fe
+7.434630e-01
+
+# Mg
+8.572300e-03
+
+# O
+1.430000e-01
+
+# Si
+1.526010e-01
+
+# Metals
+1.370000e+00
+
+
+# Element Solar Abundances
+
+# Number of elements
+5
+
+# Fe
+0.00176604
+
+# Mg
+0.000924316
+
+# O
+0.0108169
+
+# Si
+0.000996529
+
+# Metals
+0.02
+
diff --git a/PyChem/shared/chimie.yr-Mmax150.dat b/PyChem/shared/chimie.yr-Mmax150.dat
new file mode 100644
index 0000000..ba14aa3
--- /dev/null
+++ b/PyChem/shared/chimie.yr-Mmax150.dat
@@ -0,0 +1,3355 @@
+#### Livetime ####
+
+-40.1107251082866 5.50992173040633 0.782431795366473
+ 141.929566656232 -15.88948185575660 -3.255779246324010
+-261.365531429482 17.07350618651300 9.866058678313810
+
+#### IMF Parameters ####
+
+0.05 150
+3
+0.08 0.5 1
+0.7 -0.8 -1.7 -1.3
+
+#### SNII Parameters ####
+
+8
+
+#### SNIa Parameters ####
+
+3 8
+-0.35
+0.9 1.5 0.02
+1.8 2.6 0.05
+
+#### Metal Parameters ####
+
+# Number of points / Number of elements
+200 6
+
+# Ej
+
+0.05 0.01796
+4.843730e-02
+4.950075e-02
+5.060910e-02
+5.176425e-02
+5.296818e-02
+5.422294e-02
+5.553067e-02
+5.689359e-02
+5.831408e-02
+5.979453e-02
+6.133752e-02
+6.294564e-02
+6.462163e-02
+6.636840e-02
+6.818894e-02
+7.008632e-02
+7.206382e-02
+7.412481e-02
+7.627282e-02
+7.851152e-02
+8.084475e-02
+8.327650e-02
+8.581088e-02
+8.845230e-02
+9.120524e-02
+9.407441e-02
+9.706471e-02
+1.001813e-01
+1.034295e-01
+1.068147e-01
+1.103429e-01
+1.140201e-01
+1.178526e-01
+1.218468e-01
+1.260097e-01
+1.303484e-01
+1.348702e-01
+1.395830e-01
+1.444947e-01
+1.496139e-01
+1.549491e-01
+1.605096e-01
+1.663049e-01
+1.723449e-01
+1.786399e-01
+1.852007e-01
+1.920384e-01
+1.991649e-01
+2.065923e-01
+2.143333e-01
+2.224011e-01
+2.308095e-01
+2.395729e-01
+2.487064e-01
+2.582255e-01
+2.681465e-01
+2.784863e-01
+2.892627e-01
+3.004941e-01
+3.121998e-01
+3.243997e-01
+3.371146e-01
+3.503664e-01
+3.641776e-01
+3.785720e-01
+3.935742e-01
+4.092099e-01
+4.255056e-01
+4.424894e-01
+4.601902e-01
+4.786384e-01
+4.978655e-01
+5.179045e-01
+5.341614e-01
+5.473835e-01
+5.611639e-01
+5.755260e-01
+5.904946e-01
+6.060951e-01
+6.223544e-01
+6.393001e-01
+6.569612e-01
+6.753681e-01
+6.879351e-01
+6.988375e-01
+7.102002e-01
+7.223149e-01
+7.448865e-01
+7.684110e-01
+7.929288e-01
+7.982148e-01
+7.984941e-01
+7.987852e-01
+7.990885e-01
+7.994047e-01
+8.022061e-01
+8.088745e-01
+8.158244e-01
+8.230678e-01
+8.306171e-01
+8.362513e-01
+8.421085e-01
+8.482130e-01
+8.536038e-01
+8.564852e-01
+8.594884e-01
+8.623633e-01
+8.585936e-01
+8.553752e-01
+8.538116e-01
+8.498732e-01
+8.340709e-01
+8.267613e-01
+8.279897e-01
+8.292699e-01
+8.306043e-01
+8.324875e-01
+8.361109e-01
+8.398874e-01
+8.438233e-01
+8.479254e-01
+8.522007e-01
+8.566564e-01
+8.611474e-01
+8.654180e-01
+8.698689e-01
+8.745077e-01
+8.793423e-01
+8.843811e-01
+8.849525e-01
+8.848963e-01
+8.848378e-01
+8.847769e-01
+8.847133e-01
+8.846471e-01
+8.868554e-01
+8.911721e-01
+8.956710e-01
+9.002600e-01
+9.037893e-01
+9.074678e-01
+9.113016e-01
+9.152972e-01
+9.175051e-01
+9.188071e-01
+9.200000e-01
+9.200000e-01
+9.200000e-01
+9.200000e-01
+9.200000e-01
+9.200000e-01
+9.211380e-01
+9.227694e-01
+9.244696e-01
+9.262416e-01
+9.280884e-01
+9.300132e-01
+9.320192e-01
+9.341101e-01
+9.362891e-01
+9.385601e-01
+9.409271e-01
+9.429327e-01
+9.441774e-01
+9.454747e-01
+9.468268e-01
+9.482359e-01
+9.497045e-01
+9.512351e-01
+9.528304e-01
+9.544929e-01
+9.562258e-01
+9.580317e-01
+9.599138e-01
+9.618755e-01
+9.639200e-01
+9.660508e-01
+9.682716e-01
+9.705861e-01
+9.729984e-01
+9.755125e-01
+9.781327e-01
+9.808637e-01
+9.837099e-01
+9.866762e-01
+9.897678e-01
+9.929900e-01
+9.963481e-01
+9.998481e-01
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+1.000000e+00
+
+# Ejnp
+
+0.05 0.01796
+4.843730e-02
+4.950075e-02
+5.060910e-02
+5.176425e-02
+5.296818e-02
+5.422294e-02
+5.553067e-02
+5.689359e-02
+5.831408e-02
+5.979453e-02
+6.133752e-02
+6.294564e-02
+6.462163e-02
+6.636840e-02
+6.818894e-02
+7.008632e-02
+7.206382e-02
+7.412481e-02
+7.627282e-02
+7.851152e-02
+8.084475e-02
+8.327650e-02
+8.581088e-02
+8.845230e-02
+9.120524e-02
+9.407441e-02
+9.706471e-02
+1.001813e-01
+1.034295e-01
+1.068147e-01
+1.103429e-01
+1.140201e-01
+1.178526e-01
+1.218468e-01
+1.260097e-01
+1.303484e-01
+1.348702e-01
+1.395830e-01
+1.444947e-01
+1.496139e-01
+1.549491e-01
+1.605096e-01
+1.663049e-01
+1.723449e-01
+1.786399e-01
+1.852007e-01
+1.920384e-01
+1.991649e-01
+2.065923e-01
+2.143333e-01
+2.224011e-01
+2.308095e-01
+2.395729e-01
+2.487064e-01
+2.582255e-01
+2.681465e-01
+2.784863e-01
+2.892627e-01
+3.004941e-01
+3.121998e-01
+3.243997e-01
+3.371146e-01
+3.503664e-01
+3.641776e-01
+3.785720e-01
+3.935742e-01
+4.092099e-01
+4.255056e-01
+4.424894e-01
+4.601902e-01
+4.786384e-01
+4.978655e-01
+5.179045e-01
+5.341614e-01
+5.473835e-01
+5.611639e-01
+5.755260e-01
+5.904946e-01
+6.060951e-01
+6.223544e-01
+6.393001e-01
+6.569612e-01
+6.753681e-01
+6.879351e-01
+6.988375e-01
+7.102002e-01
+7.223149e-01
+7.448865e-01
+7.684110e-01
+7.929288e-01
+7.982148e-01
+7.984941e-01
+7.987852e-01
+7.990885e-01
+7.994047e-01
+8.022061e-01
+8.088745e-01
+8.158244e-01
+8.230678e-01
+8.306171e-01
+8.362513e-01
+8.421085e-01
+8.482130e-01
+8.536038e-01
+8.564852e-01
+8.594884e-01
+8.623633e-01
+8.585936e-01
+8.553752e-01
+8.538116e-01
+8.498732e-01
+8.340709e-01
+8.267613e-01
+8.279897e-01
+8.292699e-01
+8.306043e-01
+8.324875e-01
+8.361109e-01
+8.398874e-01
+8.438233e-01
+8.479254e-01
+8.522007e-01
+8.566564e-01
+8.611474e-01
+8.654180e-01
+8.698689e-01
+8.745077e-01
+8.793423e-01
+8.843811e-01
+8.678473e-01
+8.475822e-01
+8.264615e-01
+8.044491e-01
+7.815073e-01
+7.575967e-01
+7.442872e-01
+7.406899e-01
+7.369408e-01
+7.331600e-01
+7.308071e-01
+7.283548e-01
+7.257990e-01
+7.231352e-01
+7.166326e-01
+7.079523e-01
+6.996060e-01
+6.962117e-01
+6.926740e-01
+6.889870e-01
+6.851443e-01
+6.811393e-01
+6.759538e-01
+6.701534e-01
+6.641082e-01
+6.578077e-01
+6.512412e-01
+6.443974e-01
+6.372648e-01
+6.298308e-01
+6.220832e-01
+6.140084e-01
+6.055925e-01
+5.988649e-01
+5.956000e-01
+5.921974e-01
+5.886511e-01
+5.849550e-01
+5.811030e-01
+5.770883e-01
+5.729040e-01
+5.685431e-01
+5.639982e-01
+5.592613e-01
+5.543243e-01
+5.491790e-01
+5.438164e-01
+5.382274e-01
+5.324024e-01
+5.263315e-01
+5.200042e-01
+5.134098e-01
+5.065370e-01
+4.993740e-01
+4.919086e-01
+4.841280e-01
+4.760188e-01
+4.675673e-01
+4.587590e-01
+4.495788e-01
+4.400109e-01
+4.300390e-01
+4.196462e-01
+4.088145e-01
+3.975256e-01
+3.857600e-01
+3.734977e-01
+3.607176e-01
+3.473979e-01
+3.335158e-01
+3.190477e-01
+
+# Fe
+
+10 0.00639699
+0.000000e+00
+5.971976e-04
+1.203254e-03
+1.818307e-03
+2.442490e-03
+3.075931e-03
+3.718771e-03
+4.371148e-03
+5.033210e-03
+5.705092e-03
+6.386943e-03
+7.078920e-03
+7.781155e-03
+8.493818e-03
+9.217054e-03
+9.951014e-03
+1.069588e-02
+1.145178e-02
+1.204055e-02
+1.186182e-02
+1.168045e-02
+1.149639e-02
+1.130959e-02
+1.112003e-02
+1.092764e-02
+1.073241e-02
+1.053428e-02
+1.033321e-02
+1.003158e-02
+9.615852e-03
+9.193959e-03
+8.765811e-03
+8.331306e-03
+7.890360e-03
+7.442866e-03
+6.988732e-03
+6.527856e-03
+6.060153e-03
+5.585495e-03
+5.103804e-03
+4.652575e-03
+4.555997e-03
+4.457984e-03
+4.358518e-03
+4.257577e-03
+4.155135e-03
+4.051175e-03
+3.945673e-03
+3.849823e-03
+3.753245e-03
+3.655235e-03
+3.555771e-03
+3.454831e-03
+3.352394e-03
+3.248435e-03
+3.142935e-03
+3.035868e-03
+2.927213e-03
+2.816947e-03
+2.705042e-03
+2.591480e-03
+2.476230e-03
+2.359271e-03
+2.331408e-03
+2.327072e-03
+2.322671e-03
+2.318206e-03
+2.313673e-03
+2.309074e-03
+2.304406e-03
+2.299670e-03
+2.294862e-03
+2.289984e-03
+2.285033e-03
+2.280009e-03
+2.274910e-03
+2.269735e-03
+2.264484e-03
+2.259155e-03
+2.253746e-03
+2.248257e-03
+2.242687e-03
+2.237035e-03
+2.231298e-03
+2.225476e-03
+2.219568e-03
+2.213572e-03
+2.207488e-03
+2.201312e-03
+2.195046e-03
+2.188686e-03
+2.182232e-03
+2.175682e-03
+2.169036e-03
+2.162290e-03
+2.144860e-03
+2.125771e-03
+2.106399e-03
+2.086739e-03
+2.066787e-03
+2.046539e-03
+2.025992e-03
+2.005138e-03
+1.983976e-03
+1.962500e-03
+1.940705e-03
+1.918586e-03
+1.896139e-03
+1.873359e-03
+1.850241e-03
+1.826781e-03
+1.802971e-03
+1.778809e-03
+1.754288e-03
+1.729404e-03
+1.704150e-03
+1.678521e-03
+1.652512e-03
+1.626117e-03
+1.599331e-03
+1.572147e-03
+1.544559e-03
+1.516562e-03
+1.488150e-03
+1.459316e-03
+1.430055e-03
+1.400359e-03
+1.370222e-03
+1.339639e-03
+1.308601e-03
+1.277103e-03
+1.245138e-03
+1.212698e-03
+1.179776e-03
+1.146367e-03
+1.112461e-03
+1.078053e-03
+1.043133e-03
+1.007696e-03
+9.717336e-04
+9.352367e-04
+8.981982e-04
+8.606105e-04
+8.224647e-04
+7.837531e-04
+7.444671e-04
+7.045979e-04
+6.648318e-04
+6.300767e-04
+5.948052e-04
+5.590103e-04
+5.226850e-04
+4.858205e-04
+4.484085e-04
+4.104413e-04
+3.719116e-04
+3.328093e-04
+2.931273e-04
+2.528557e-04
+2.119874e-04
+1.705124e-04
+1.284219e-04
+8.570729e-05
+5.130606e-05
+5.116769e-05
+5.102727e-05
+5.088476e-05
+5.074014e-05
+5.059338e-05
+5.044443e-05
+5.029328e-05
+5.013988e-05
+4.998421e-05
+4.982623e-05
+4.966590e-05
+4.950320e-05
+4.933808e-05
+4.917051e-05
+4.900045e-05
+4.882787e-05
+4.865273e-05
+4.847499e-05
+4.829461e-05
+4.811156e-05
+4.792579e-05
+4.773726e-05
+4.754594e-05
+4.735178e-05
+4.715474e-05
+4.695477e-05
+4.675183e-05
+4.654588e-05
+4.633688e-05
+4.612478e-05
+4.590952e-05
+4.569108e-05
+4.546940e-05
+4.524441e-05
+4.501610e-05
+4.478440e-05
+
+# Mg
+
+10 0.00639699
+0.000000e+00
+4.377775e-05
+8.820510e-05
+1.332916e-04
+1.790475e-04
+2.254820e-04
+2.726056e-04
+3.204283e-04
+3.689609e-04
+4.182134e-04
+4.681970e-04
+5.189220e-04
+5.703999e-04
+6.226418e-04
+6.756587e-04
+7.294624e-04
+7.840646e-04
+8.394765e-04
+9.125965e-04
+1.060278e-03
+1.210150e-03
+1.362248e-03
+1.516602e-03
+1.673247e-03
+1.832216e-03
+1.993543e-03
+2.157264e-03
+2.323415e-03
+2.424160e-03
+2.450160e-03
+2.476545e-03
+2.503322e-03
+2.530496e-03
+2.558074e-03
+2.586061e-03
+2.614462e-03
+2.643286e-03
+2.672537e-03
+2.702222e-03
+2.732348e-03
+2.840392e-03
+3.694288e-03
+4.560858e-03
+5.440280e-03
+6.332755e-03
+7.238474e-03
+8.157626e-03
+9.090424e-03
+9.147850e-03
+9.150920e-03
+9.154034e-03
+9.157195e-03
+9.160403e-03
+9.163659e-03
+9.166962e-03
+9.170316e-03
+9.173718e-03
+9.177172e-03
+9.180676e-03
+9.184232e-03
+9.187842e-03
+9.191505e-03
+9.195222e-03
+9.265121e-03
+9.353485e-03
+9.443158e-03
+9.534163e-03
+9.626519e-03
+9.720245e-03
+9.815361e-03
+9.911890e-03
+1.000985e-02
+1.010926e-02
+1.021015e-02
+1.031254e-02
+1.041645e-02
+1.052189e-02
+1.062891e-02
+1.073751e-02
+1.084772e-02
+1.095957e-02
+1.107307e-02
+1.118826e-02
+1.130516e-02
+1.142380e-02
+1.154419e-02
+1.166637e-02
+1.179037e-02
+1.191620e-02
+1.204391e-02
+1.217350e-02
+1.230502e-02
+1.243849e-02
+1.257394e-02
+1.271141e-02
+1.279941e-02
+1.288189e-02
+1.296561e-02
+1.305056e-02
+1.313678e-02
+1.322427e-02
+1.331307e-02
+1.340318e-02
+1.349462e-02
+1.358743e-02
+1.368161e-02
+1.377719e-02
+1.387419e-02
+1.397263e-02
+1.407252e-02
+1.417390e-02
+1.427679e-02
+1.438120e-02
+1.448716e-02
+1.459469e-02
+1.470382e-02
+1.481456e-02
+1.492696e-02
+1.504101e-02
+1.515677e-02
+1.527423e-02
+1.539345e-02
+1.551443e-02
+1.563720e-02
+1.576180e-02
+1.588825e-02
+1.601657e-02
+1.614680e-02
+1.627896e-02
+1.641308e-02
+1.654919e-02
+1.668732e-02
+1.682750e-02
+1.696976e-02
+1.711413e-02
+1.726064e-02
+1.740933e-02
+1.756022e-02
+1.771336e-02
+1.786876e-02
+1.802647e-02
+1.818652e-02
+1.834895e-02
+1.851379e-02
+1.868107e-02
+1.885083e-02
+1.902312e-02
+1.919796e-02
+1.937539e-02
+1.955546e-02
+1.973820e-02
+1.992365e-02
+2.011185e-02
+2.030285e-02
+2.049668e-02
+2.069338e-02
+2.089301e-02
+2.109559e-02
+2.130119e-02
+2.150983e-02
+2.172157e-02
+2.193645e-02
+2.215452e-02
+2.237583e-02
+2.260042e-02
+2.282834e-02
+2.305964e-02
+2.329438e-02
+2.353260e-02
+2.377435e-02
+2.401970e-02
+2.426868e-02
+2.452135e-02
+2.477778e-02
+2.503801e-02
+2.530211e-02
+2.557011e-02
+2.584210e-02
+2.611813e-02
+2.639825e-02
+2.668253e-02
+2.697102e-02
+2.726380e-02
+2.756092e-02
+2.786245e-02
+2.816845e-02
+2.847900e-02
+2.879415e-02
+2.911398e-02
+2.943855e-02
+2.976794e-02
+3.010222e-02
+3.044146e-02
+3.078573e-02
+3.113511e-02
+3.148968e-02
+3.184950e-02
+3.221467e-02
+3.258526e-02
+3.296134e-02
+
+# O
+
+10 0.00639699
+0.000000e+00
+5.745180e-04
+1.157567e-03
+1.749266e-03
+2.349745e-03
+2.959136e-03
+3.577564e-03
+4.205175e-03
+4.842095e-03
+5.488466e-03
+6.144430e-03
+6.810125e-03
+7.485703e-03
+8.171301e-03
+8.867070e-03
+9.573169e-03
+1.028974e-02
+1.101695e-02
+1.184881e-02
+1.310144e-02
+1.437265e-02
+1.566272e-02
+1.697195e-02
+1.830060e-02
+1.964897e-02
+2.101734e-02
+2.240600e-02
+2.381529e-02
+2.526254e-02
+2.675042e-02
+2.826039e-02
+2.979276e-02
+3.134787e-02
+3.292605e-02
+3.452764e-02
+3.615300e-02
+3.780250e-02
+3.947645e-02
+4.117525e-02
+4.289927e-02
+4.485881e-02
+4.886445e-02
+5.292957e-02
+5.705498e-02
+6.124161e-02
+6.549039e-02
+6.980217e-02
+7.417798e-02
+7.697304e-02
+7.970740e-02
+8.248234e-02
+8.529844e-02
+8.815636e-02
+9.105668e-02
+9.400001e-02
+9.698705e-02
+1.000184e-01
+1.030947e-01
+1.062167e-01
+1.093850e-01
+1.126003e-01
+1.158633e-01
+1.191748e-01
+1.219791e-01
+1.246785e-01
+1.274180e-01
+1.301981e-01
+1.330194e-01
+1.358826e-01
+1.387883e-01
+1.417371e-01
+1.447296e-01
+1.477666e-01
+1.508486e-01
+1.539764e-01
+1.571506e-01
+1.603718e-01
+1.636409e-01
+1.669585e-01
+1.703253e-01
+1.737421e-01
+1.772096e-01
+1.807285e-01
+1.842996e-01
+1.879237e-01
+1.916016e-01
+1.953342e-01
+1.991220e-01
+2.029661e-01
+2.068672e-01
+2.108262e-01
+2.148439e-01
+2.189213e-01
+2.230591e-01
+2.272584e-01
+2.291132e-01
+2.306770e-01
+2.322641e-01
+2.338746e-01
+2.355091e-01
+2.371678e-01
+2.388511e-01
+2.405595e-01
+2.422931e-01
+2.440525e-01
+2.458380e-01
+2.476500e-01
+2.494888e-01
+2.513550e-01
+2.532488e-01
+2.551708e-01
+2.571213e-01
+2.591007e-01
+2.611095e-01
+2.631481e-01
+2.652169e-01
+2.673165e-01
+2.694471e-01
+2.716095e-01
+2.738038e-01
+2.760308e-01
+2.782908e-01
+2.805843e-01
+2.829119e-01
+2.852740e-01
+2.876711e-01
+2.901039e-01
+2.925728e-01
+2.950782e-01
+2.976208e-01
+3.002012e-01
+3.028199e-01
+3.054774e-01
+3.081744e-01
+3.109113e-01
+3.136889e-01
+3.165077e-01
+3.193684e-01
+3.222714e-01
+3.252175e-01
+3.282074e-01
+3.312417e-01
+3.343209e-01
+3.374459e-01
+3.406172e-01
+3.438356e-01
+3.471017e-01
+3.504163e-01
+3.537801e-01
+3.571938e-01
+3.606581e-01
+3.641739e-01
+3.677418e-01
+3.713627e-01
+3.750373e-01
+3.787664e-01
+3.825509e-01
+3.863915e-01
+3.902891e-01
+3.942445e-01
+3.982587e-01
+4.023324e-01
+4.064665e-01
+4.106620e-01
+4.149197e-01
+4.192407e-01
+4.236257e-01
+4.280759e-01
+4.325920e-01
+4.371751e-01
+4.418263e-01
+4.465465e-01
+4.513367e-01
+4.561980e-01
+4.611315e-01
+4.661381e-01
+4.712190e-01
+4.763754e-01
+4.816082e-01
+4.869187e-01
+4.923080e-01
+4.977773e-01
+5.033277e-01
+5.089605e-01
+5.146768e-01
+5.204780e-01
+5.263653e-01
+5.323399e-01
+5.384032e-01
+5.445564e-01
+5.508010e-01
+5.571383e-01
+5.635695e-01
+5.700961e-01
+5.767196e-01
+5.834415e-01
+5.902631e-01
+5.971859e-01
+6.042113e-01
+6.113411e-01
+
+# Si
+
+10 0.00639699
+0.000000e+00
+2.643131e-04
+5.325507e-04
+8.047670e-04
+1.081022e-03
+1.361376e-03
+1.645891e-03
+1.934627e-03
+2.227651e-03
+2.525019e-03
+2.826804e-03
+3.133062e-03
+3.443867e-03
+3.759284e-03
+4.079377e-03
+4.404224e-03
+4.733894e-03
+5.068449e-03
+5.342247e-03
+5.334081e-03
+5.325793e-03
+5.317383e-03
+5.308847e-03
+5.300185e-03
+5.291394e-03
+5.282474e-03
+5.273420e-03
+5.264232e-03
+5.254135e-03
+5.243019e-03
+5.231739e-03
+5.220291e-03
+5.208673e-03
+5.196883e-03
+5.184918e-03
+5.172776e-03
+5.160453e-03
+5.147947e-03
+5.135257e-03
+5.122378e-03
+5.110417e-03
+5.108938e-03
+5.107437e-03
+5.105914e-03
+5.104370e-03
+5.102801e-03
+5.101210e-03
+5.099595e-03
+5.075565e-03
+5.049788e-03
+5.023628e-03
+4.997082e-03
+4.970140e-03
+4.942799e-03
+4.915052e-03
+4.886894e-03
+4.858318e-03
+4.829317e-03
+4.799887e-03
+4.770019e-03
+4.739708e-03
+4.708948e-03
+4.677731e-03
+4.837397e-03
+5.049861e-03
+5.265480e-03
+5.484296e-03
+5.706361e-03
+5.931719e-03
+6.160423e-03
+6.392519e-03
+6.628061e-03
+6.867097e-03
+7.109679e-03
+7.355862e-03
+7.605697e-03
+7.859242e-03
+8.116545e-03
+8.377668e-03
+8.642665e-03
+8.911597e-03
+9.184516e-03
+9.461489e-03
+9.742566e-03
+1.002782e-02
+1.031730e-02
+1.061108e-02
+1.090922e-02
+1.121178e-02
+1.151883e-02
+1.183044e-02
+1.214667e-02
+1.246760e-02
+1.279328e-02
+1.312380e-02
+1.317289e-02
+1.318481e-02
+1.319690e-02
+1.320918e-02
+1.322164e-02
+1.323428e-02
+1.324711e-02
+1.326013e-02
+1.327334e-02
+1.328675e-02
+1.330036e-02
+1.331417e-02
+1.332819e-02
+1.334241e-02
+1.335685e-02
+1.337150e-02
+1.338636e-02
+1.340145e-02
+1.341676e-02
+1.343230e-02
+1.344807e-02
+1.346407e-02
+1.348031e-02
+1.349679e-02
+1.351351e-02
+1.353049e-02
+1.354771e-02
+1.356519e-02
+1.358293e-02
+1.360094e-02
+1.361921e-02
+1.363775e-02
+1.365657e-02
+1.367566e-02
+1.369504e-02
+1.371471e-02
+1.373467e-02
+1.375492e-02
+1.377548e-02
+1.379634e-02
+1.381751e-02
+1.383899e-02
+1.386080e-02
+1.388292e-02
+1.390538e-02
+1.392817e-02
+1.395129e-02
+1.397476e-02
+1.399858e-02
+1.402275e-02
+1.404728e-02
+1.407218e-02
+1.409744e-02
+1.412308e-02
+1.414910e-02
+1.417550e-02
+1.420230e-02
+1.422949e-02
+1.425709e-02
+1.428510e-02
+1.431352e-02
+1.434236e-02
+1.437164e-02
+1.440134e-02
+1.443149e-02
+1.446209e-02
+1.449313e-02
+1.452464e-02
+1.455662e-02
+1.458907e-02
+1.462201e-02
+1.465543e-02
+1.468935e-02
+1.472377e-02
+1.475870e-02
+1.479415e-02
+1.483013e-02
+1.486664e-02
+1.490369e-02
+1.494129e-02
+1.497945e-02
+1.501818e-02
+1.505748e-02
+1.509736e-02
+1.513784e-02
+1.517891e-02
+1.522060e-02
+1.526290e-02
+1.530583e-02
+1.534940e-02
+1.539362e-02
+1.543849e-02
+1.548403e-02
+1.553024e-02
+1.557714e-02
+1.562474e-02
+1.567304e-02
+1.572205e-02
+1.577180e-02
+1.582228e-02
+1.587352e-02
+1.592551e-02
+1.597827e-02
+1.603182e-02
+1.608616e-02
+
+# Ca
+
+10 0.00639699
+0.000000e+00
+1.013634e-05
+2.042309e-05
+3.086246e-05
+4.145683e-05
+5.220831e-05
+6.311934e-05
+7.419224e-05
+8.542958e-05
+9.683357e-05
+1.084068e-04
+1.201517e-04
+1.320709e-04
+1.441671e-04
+1.564427e-04
+1.689004e-04
+1.815430e-04
+1.943732e-04
+2.077052e-04
+2.225903e-04
+2.376964e-04
+2.530265e-04
+2.685844e-04
+2.843728e-04
+3.003956e-04
+3.166562e-04
+3.331580e-04
+3.499046e-04
+3.562713e-04
+3.507932e-04
+3.452339e-04
+3.395921e-04
+3.338666e-04
+3.280560e-04
+3.221594e-04
+3.161752e-04
+3.101022e-04
+3.039391e-04
+2.976846e-04
+2.913371e-04
+2.840280e-04
+2.682748e-04
+2.522878e-04
+2.360636e-04
+2.195986e-04
+2.028896e-04
+1.859323e-04
+1.687235e-04
+1.721787e-04
+1.769842e-04
+1.818609e-04
+1.868101e-04
+1.918326e-04
+1.969298e-04
+2.021025e-04
+2.073520e-04
+2.126794e-04
+2.180859e-04
+2.235725e-04
+2.291406e-04
+2.347913e-04
+2.405259e-04
+2.463455e-04
+2.554072e-04
+2.654352e-04
+2.756118e-04
+2.859396e-04
+2.964206e-04
+3.070570e-04
+3.178514e-04
+3.288059e-04
+3.399229e-04
+3.512049e-04
+3.626543e-04
+3.742737e-04
+3.860654e-04
+3.980320e-04
+4.101763e-04
+4.225008e-04
+4.350081e-04
+4.477011e-04
+4.605824e-04
+4.736548e-04
+4.869212e-04
+5.003845e-04
+5.140475e-04
+5.279133e-04
+5.419848e-04
+5.562651e-04
+5.707574e-04
+5.854645e-04
+6.003900e-04
+6.155372e-04
+6.309088e-04
+6.465088e-04
+6.424646e-04
+6.357304e-04
+6.288961e-04
+6.219605e-04
+6.149217e-04
+6.077787e-04
+6.005296e-04
+5.931730e-04
+5.857072e-04
+5.781308e-04
+5.704417e-04
+5.626388e-04
+5.547197e-04
+5.466834e-04
+5.385278e-04
+5.302512e-04
+5.218518e-04
+5.133276e-04
+5.046771e-04
+4.958981e-04
+4.869890e-04
+4.779476e-04
+4.687720e-04
+4.594603e-04
+4.500103e-04
+4.404203e-04
+4.306880e-04
+4.208111e-04
+4.107876e-04
+4.006154e-04
+3.902924e-04
+3.798162e-04
+3.691845e-04
+3.583950e-04
+3.474455e-04
+3.363334e-04
+3.250565e-04
+3.136123e-04
+3.019982e-04
+2.902118e-04
+2.782504e-04
+2.661118e-04
+2.537927e-04
+2.412911e-04
+2.286039e-04
+2.157283e-04
+2.026618e-04
+1.894014e-04
+1.759442e-04
+1.623933e-04
+1.487599e-04
+1.349242e-04
+1.208833e-04
+1.066338e-04
+9.217311e-05
+7.749768e-05
+6.260455e-05
+4.749047e-05
+3.215205e-05
+1.658616e-05
+7.848546e-06
+8.032449e-06
+8.219081e-06
+8.408481e-06
+8.600691e-06
+8.795754e-06
+8.993713e-06
+9.194608e-06
+9.398484e-06
+9.605384e-06
+9.815356e-06
+1.002844e-05
+1.024469e-05
+1.046415e-05
+1.068686e-05
+1.091288e-05
+1.114226e-05
+1.137503e-05
+1.161126e-05
+1.185100e-05
+1.209429e-05
+1.234119e-05
+1.259176e-05
+1.284605e-05
+1.310411e-05
+1.336599e-05
+1.363177e-05
+1.390148e-05
+1.417520e-05
+1.445298e-05
+1.473489e-05
+1.502098e-05
+1.531130e-05
+1.560595e-05
+1.590496e-05
+1.620840e-05
+1.651636e-05
+1.682888e-05
+1.714603e-05
+1.746790e-05
+1.779454e-05
+1.812603e-05
+1.846243e-05
+1.880383e-05
+1.915029e-05
+
+# Metals
+
+10 0.00639699
+0.000000e+00
+1.717322e-03
+3.460124e-03
+5.228810e-03
+7.023729e-03
+8.845277e-03
+1.069385e-02
+1.256986e-02
+1.447371e-02
+1.640581e-02
+1.836658e-02
+2.035643e-02
+2.237582e-02
+2.442516e-02
+2.650489e-02
+2.861546e-02
+3.075737e-02
+3.293106e-02
+3.508035e-02
+3.701495e-02
+3.897823e-02
+4.097065e-02
+4.299267e-02
+4.504465e-02
+4.712710e-02
+4.924044e-02
+5.138514e-02
+5.356167e-02
+5.563767e-02
+5.759531e-02
+5.958198e-02
+6.159814e-02
+6.364420e-02
+6.572065e-02
+6.782787e-02
+6.996637e-02
+7.213663e-02
+7.433907e-02
+7.657420e-02
+7.884248e-02
+8.134446e-02
+8.580482e-02
+9.033144e-02
+9.492514e-02
+9.958705e-02
+1.043182e-01
+1.091194e-01
+1.139920e-01
+1.174577e-01
+1.208830e-01
+1.243591e-01
+1.278869e-01
+1.314670e-01
+1.351001e-01
+1.387873e-01
+1.425291e-01
+1.463264e-01
+1.501801e-01
+1.540910e-01
+1.580599e-01
+1.620877e-01
+1.661752e-01
+1.703234e-01
+1.734541e-01
+1.763467e-01
+1.792822e-01
+1.822613e-01
+1.852846e-01
+1.883527e-01
+1.914664e-01
+1.946263e-01
+1.978331e-01
+2.010874e-01
+2.043901e-01
+2.077417e-01
+2.111431e-01
+2.145950e-01
+2.180981e-01
+2.216531e-01
+2.252609e-01
+2.289223e-01
+2.326380e-01
+2.364088e-01
+2.402356e-01
+2.441191e-01
+2.480603e-01
+2.520600e-01
+2.561190e-01
+2.602382e-01
+2.644186e-01
+2.686610e-01
+2.729663e-01
+2.773356e-01
+2.817696e-01
+2.862695e-01
+2.884517e-01
+2.903507e-01
+2.922779e-01
+2.942338e-01
+2.962186e-01
+2.982329e-01
+3.002771e-01
+3.023516e-01
+3.044568e-01
+3.065934e-01
+3.087616e-01
+3.109620e-01
+3.131951e-01
+3.154613e-01
+3.177611e-01
+3.200950e-01
+3.224636e-01
+3.248673e-01
+3.273067e-01
+3.297823e-01
+3.322946e-01
+3.348442e-01
+3.374317e-01
+3.400575e-01
+3.427223e-01
+3.454266e-01
+3.481711e-01
+3.509563e-01
+3.537828e-01
+3.566513e-01
+3.595623e-01
+3.625165e-01
+3.655146e-01
+3.685571e-01
+3.716447e-01
+3.747783e-01
+3.779583e-01
+3.811855e-01
+3.844606e-01
+3.877842e-01
+3.911572e-01
+3.945803e-01
+3.980547e-01
+4.015825e-01
+4.051627e-01
+4.087961e-01
+4.124834e-01
+4.162261e-01
+4.200242e-01
+4.238789e-01
+4.277910e-01
+4.317610e-01
+4.357907e-01
+4.398857e-01
+4.440462e-01
+4.482700e-01
+4.525565e-01
+4.569066e-01
+4.613212e-01
+4.658014e-01
+4.703551e-01
+4.749855e-01
+4.796846e-01
+4.844535e-01
+4.893034e-01
+4.942594e-01
+4.992975e-01
+5.044104e-01
+5.096080e-01
+5.149178e-01
+5.203063e-01
+5.257750e-01
+5.313246e-01
+5.369567e-01
+5.426723e-01
+5.484727e-01
+5.543592e-01
+5.603330e-01
+5.663955e-01
+5.725993e-01
+5.789391e-01
+5.853728e-01
+5.919022e-01
+5.985283e-01
+6.052529e-01
+6.120772e-01
+6.190027e-01
+6.260310e-01
+6.331636e-01
+6.404022e-01
+6.477480e-01
+6.552029e-01
+6.627684e-01
+6.704461e-01
+6.782377e-01
+6.861451e-01
+6.941697e-01
+7.023134e-01
+7.105779e-01
+7.189651e-01
+7.274770e-01
+7.361153e-01
+7.448817e-01
+7.537783e-01
+7.628069e-01
+
+#### Metal Ejecta Parameters ####
+
+# Number of points / Number of elements
+200 6
+
+# IEj
+
+0.05 0.01796
+7.832190e-05
+2.500322e-04
+4.382008e-04
+6.443863e-04
+8.702576e-04
+1.118605e-03
+1.390764e-03
+1.689955e-03
+2.018642e-03
+2.379848e-03
+2.777016e-03
+3.213860e-03
+3.681557e-03
+4.166133e-03
+4.668154e-03
+5.188422e-03
+5.727771e-03
+6.287143e-03
+6.867457e-03
+7.469743e-03
+8.095039e-03
+8.744451e-03
+9.419131e-03
+1.012030e-02
+1.084924e-02
+1.160728e-02
+1.239584e-02
+1.321641e-02
+1.407054e-02
+1.495986e-02
+1.588610e-02
+1.685106e-02
+1.785664e-02
+1.890483e-02
+1.999772e-02
+2.113751e-02
+2.232652e-02
+2.356718e-02
+2.486203e-02
+2.621376e-02
+2.762518e-02
+2.909925e-02
+3.063909e-02
+3.224795e-02
+3.392928e-02
+3.568667e-02
+3.752391e-02
+3.944500e-02
+4.145411e-02
+4.355564e-02
+4.575421e-02
+4.805465e-02
+5.046210e-02
+5.298189e-02
+5.561965e-02
+5.838132e-02
+6.126565e-02
+6.419764e-02
+6.715653e-02
+7.014301e-02
+7.315765e-02
+7.620107e-02
+7.927387e-02
+8.237667e-02
+8.551007e-02
+8.867469e-02
+9.187116e-02
+9.510005e-02
+9.836203e-02
+1.016577e-01
+1.049876e-01
+1.083525e-01
+1.117529e-01
+1.151902e-01
+1.186682e-01
+1.221892e-01
+1.257553e-01
+1.293683e-01
+1.330305e-01
+1.367439e-01
+1.405107e-01
+1.443333e-01
+1.482139e-01
+1.521399e-01
+1.560797e-01
+1.600335e-01
+1.640030e-01
+1.680198e-01
+1.721118e-01
+1.762817e-01
+1.804888e-01
+1.846478e-01
+1.887571e-01
+1.928174e-01
+1.968293e-01
+2.007959e-01
+2.047406e-01
+2.086696e-01
+2.125842e-01
+2.164855e-01
+2.203694e-01
+2.242319e-01
+2.280741e-01
+2.318963e-01
+2.356882e-01
+2.394463e-01
+2.431713e-01
+2.468480e-01
+2.504636e-01
+2.540257e-01
+2.575343e-01
+2.609657e-01
+2.642897e-01
+2.675716e-01
+2.708179e-01
+2.740293e-01
+2.772066e-01
+2.803559e-01
+2.834801e-01
+2.865801e-01
+2.896564e-01
+2.927099e-01
+2.957412e-01
+2.987511e-01
+3.017388e-01
+3.047046e-01
+3.076493e-01
+3.105733e-01
+3.134777e-01
+3.163563e-01
+3.191993e-01
+3.220072e-01
+3.247802e-01
+3.275189e-01
+3.302236e-01
+3.328966e-01
+3.355480e-01
+3.381796e-01
+3.407922e-01
+3.433841e-01
+3.459542e-01
+3.485033e-01
+3.510317e-01
+3.535384e-01
+3.560180e-01
+3.584705e-01
+3.608943e-01
+3.632881e-01
+3.656525e-01
+3.679877e-01
+3.702941e-01
+3.725731e-01
+3.748277e-01
+3.770586e-01
+3.792662e-01
+3.814507e-01
+3.836128e-01
+3.857527e-01
+3.878708e-01
+3.899677e-01
+3.920436e-01
+3.940990e-01
+3.961341e-01
+3.981473e-01
+4.001383e-01
+4.021075e-01
+4.040553e-01
+4.059820e-01
+4.078880e-01
+4.097736e-01
+4.116390e-01
+4.134848e-01
+4.153112e-01
+4.171186e-01
+4.189072e-01
+4.206775e-01
+4.224297e-01
+4.241643e-01
+4.258815e-01
+4.275816e-01
+4.292650e-01
+4.309321e-01
+4.325831e-01
+4.342184e-01
+4.358383e-01
+4.374432e-01
+4.390333e-01
+4.406090e-01
+4.421707e-01
+4.437160e-01
+4.452424e-01
+4.467499e-01
+4.482388e-01
+4.497094e-01
+4.511619e-01
+4.525964e-01
+4.540132e-01
+4.554126e-01
+4.567947e-01
+4.581598e-01
+
+# IEjnp
+
+0.05 0.01796
+7.832190e-05
+2.500322e-04
+4.382008e-04
+6.443863e-04
+8.702576e-04
+1.118605e-03
+1.390764e-03
+1.689955e-03
+2.018642e-03
+2.379848e-03
+2.777016e-03
+3.213860e-03
+3.681557e-03
+4.166133e-03
+4.668154e-03
+5.188422e-03
+5.727771e-03
+6.287143e-03
+6.867457e-03
+7.469743e-03
+8.095039e-03
+8.744451e-03
+9.419131e-03
+1.012030e-02
+1.084924e-02
+1.160728e-02
+1.239584e-02
+1.321641e-02
+1.407054e-02
+1.495986e-02
+1.588610e-02
+1.685106e-02
+1.785664e-02
+1.890483e-02
+1.999772e-02
+2.113751e-02
+2.232652e-02
+2.356718e-02
+2.486203e-02
+2.621376e-02
+2.762518e-02
+2.909925e-02
+3.063909e-02
+3.224795e-02
+3.392928e-02
+3.568667e-02
+3.752391e-02
+3.944500e-02
+4.145411e-02
+4.355564e-02
+4.575421e-02
+4.805465e-02
+5.046210e-02
+5.298189e-02
+5.561965e-02
+5.838132e-02
+6.126565e-02
+6.419764e-02
+6.715653e-02
+7.014301e-02
+7.315765e-02
+7.620107e-02
+7.927387e-02
+8.237667e-02
+8.551007e-02
+8.867469e-02
+9.187116e-02
+9.510005e-02
+9.836203e-02
+1.016577e-01
+1.049876e-01
+1.083525e-01
+1.117529e-01
+1.151902e-01
+1.186682e-01
+1.221892e-01
+1.257553e-01
+1.293683e-01
+1.330305e-01
+1.367439e-01
+1.405107e-01
+1.443333e-01
+1.482139e-01
+1.521399e-01
+1.560797e-01
+1.600335e-01
+1.640030e-01
+1.680198e-01
+1.721118e-01
+1.762817e-01
+1.804888e-01
+1.846478e-01
+1.887571e-01
+1.928174e-01
+1.968293e-01
+2.007959e-01
+2.047406e-01
+2.086696e-01
+2.125842e-01
+2.164855e-01
+2.203694e-01
+2.242319e-01
+2.280741e-01
+2.318963e-01
+2.356882e-01
+2.394463e-01
+2.431713e-01
+2.468480e-01
+2.504636e-01
+2.540257e-01
+2.575343e-01
+2.609657e-01
+2.642897e-01
+2.675716e-01
+2.708179e-01
+2.740293e-01
+2.772066e-01
+2.803559e-01
+2.834801e-01
+2.865801e-01
+2.896564e-01
+2.927099e-01
+2.957412e-01
+2.987511e-01
+3.017388e-01
+3.047046e-01
+3.076493e-01
+3.105733e-01
+3.134777e-01
+3.163319e-01
+3.190877e-01
+3.217438e-01
+3.242997e-01
+3.267545e-01
+3.291074e-01
+3.313670e-01
+3.335814e-01
+3.357577e-01
+3.378960e-01
+3.399994e-01
+3.420700e-01
+3.441080e-01
+3.461138e-01
+3.480839e-01
+3.500077e-01
+3.518842e-01
+3.537228e-01
+3.555298e-01
+3.573052e-01
+3.590492e-01
+3.607619e-01
+3.624424e-01
+3.640884e-01
+3.656999e-01
+3.672767e-01
+3.688190e-01
+3.703266e-01
+3.717996e-01
+3.732379e-01
+3.746415e-01
+3.760102e-01
+3.773440e-01
+3.786436e-01
+3.799179e-01
+3.811695e-01
+3.823984e-01
+3.836047e-01
+3.847885e-01
+3.859498e-01
+3.870886e-01
+3.882051e-01
+3.892991e-01
+3.903709e-01
+3.914203e-01
+3.924474e-01
+3.934522e-01
+3.944346e-01
+3.953947e-01
+3.963325e-01
+3.972478e-01
+3.981407e-01
+3.990111e-01
+3.998589e-01
+4.006841e-01
+4.014866e-01
+4.022663e-01
+4.030231e-01
+4.037569e-01
+4.044676e-01
+4.051550e-01
+4.058191e-01
+4.064596e-01
+4.070765e-01
+4.076694e-01
+4.082383e-01
+4.087830e-01
+4.093032e-01
+4.097987e-01
+4.102693e-01
+4.107149e-01
+
+# IFe
+
+10 0.00639699
+1.588774e-11
+3.504065e-07
+1.394947e-06
+3.137786e-06
+5.583162e-06
+8.735311e-06
+1.259855e-05
+1.717726e-05
+2.247596e-05
+2.849902e-05
+3.525108e-05
+4.273670e-05
+5.096069e-05
+5.992758e-05
+6.964238e-05
+8.010975e-05
+9.133486e-05
+1.033226e-04
+1.160589e-04
+1.288785e-04
+1.414494e-04
+1.537707e-04
+1.658413e-04
+1.776603e-04
+1.892269e-04
+2.005401e-04
+2.115988e-04
+2.224022e-04
+2.329248e-04
+2.430063e-04
+2.526155e-04
+2.617500e-04
+2.704073e-04
+2.785851e-04
+2.862808e-04
+2.934920e-04
+3.002163e-04
+3.064508e-04
+3.121931e-04
+3.174406e-04
+3.221924e-04
+3.266739e-04
+3.310414e-04
+3.352943e-04
+3.394323e-04
+3.434547e-04
+3.473612e-04
+3.511512e-04
+3.548292e-04
+3.584008e-04
+3.618658e-04
+3.652234e-04
+3.684735e-04
+3.716152e-04
+3.746483e-04
+3.775722e-04
+3.803864e-04
+3.830904e-04
+3.856836e-04
+3.881656e-04
+3.905356e-04
+3.927934e-04
+3.949381e-04
+3.970012e-04
+3.990494e-04
+4.010847e-04
+4.031071e-04
+4.051168e-04
+4.071137e-04
+4.090978e-04
+4.110690e-04
+4.130275e-04
+4.149734e-04
+4.169064e-04
+4.188267e-04
+4.207343e-04
+4.226293e-04
+4.245116e-04
+4.263811e-04
+4.282381e-04
+4.300823e-04
+4.319140e-04
+4.337330e-04
+4.355393e-04
+4.373331e-04
+4.391143e-04
+4.408828e-04
+4.426388e-04
+4.443821e-04
+4.461129e-04
+4.478312e-04
+4.495368e-04
+4.512298e-04
+4.529103e-04
+4.545783e-04
+4.562300e-04
+4.578601e-04
+4.594684e-04
+4.610548e-04
+4.626193e-04
+4.641619e-04
+4.656824e-04
+4.671808e-04
+4.686571e-04
+4.701111e-04
+4.715428e-04
+4.729523e-04
+4.743393e-04
+4.757038e-04
+4.770457e-04
+4.783651e-04
+4.796617e-04
+4.809355e-04
+4.821865e-04
+4.834146e-04
+4.846196e-04
+4.858016e-04
+4.869604e-04
+4.880959e-04
+4.892080e-04
+4.902968e-04
+4.913621e-04
+4.924036e-04
+4.934216e-04
+4.944157e-04
+4.953860e-04
+4.963322e-04
+4.972544e-04
+4.981523e-04
+4.990260e-04
+4.998753e-04
+5.007001e-04
+5.015003e-04
+5.022758e-04
+5.030265e-04
+5.037522e-04
+5.044529e-04
+5.051284e-04
+5.057786e-04
+5.064034e-04
+5.070027e-04
+5.075763e-04
+5.081242e-04
+5.086462e-04
+5.091421e-04
+5.096119e-04
+5.100554e-04
+5.104725e-04
+5.108653e-04
+5.112352e-04
+5.115822e-04
+5.119060e-04
+5.122066e-04
+5.124838e-04
+5.127375e-04
+5.129676e-04
+5.131740e-04
+5.133565e-04
+5.135150e-04
+5.136493e-04
+5.137594e-04
+5.138450e-04
+5.139061e-04
+5.139430e-04
+5.139720e-04
+5.140007e-04
+5.140293e-04
+5.140576e-04
+5.140858e-04
+5.141137e-04
+5.141414e-04
+5.141689e-04
+5.141962e-04
+5.142234e-04
+5.142502e-04
+5.142770e-04
+5.143035e-04
+5.143298e-04
+5.143558e-04
+5.143817e-04
+5.144074e-04
+5.144328e-04
+5.144581e-04
+5.144831e-04
+5.145080e-04
+5.145327e-04
+5.145571e-04
+5.145813e-04
+5.146053e-04
+5.146292e-04
+5.146528e-04
+5.146762e-04
+5.146994e-04
+5.147224e-04
+5.147451e-04
+5.147677e-04
+5.147901e-04
+5.148122e-04
+5.148342e-04
+5.148560e-04
+
+# IMg
+
+10 0.00639699
+1.165290e-12
+2.568663e-08
+1.022572e-07
+2.300185e-07
+4.092753e-07
+6.403443e-07
+9.235409e-07
+1.259185e-06
+1.647604e-06
+2.089129e-06
+2.584089e-06
+3.132827e-06
+3.735684e-06
+4.393012e-06
+5.105150e-06
+5.872473e-06
+6.695333e-06
+7.574090e-06
+8.510931e-06
+9.569674e-06
+1.078263e-05
+1.215080e-05
+1.367514e-05
+1.535663e-05
+1.719629e-05
+1.919514e-05
+2.135422e-05
+2.367457e-05
+2.614042e-05
+2.864194e-05
+3.115917e-05
+3.369237e-05
+3.624172e-05
+3.880743e-05
+4.138972e-05
+4.398880e-05
+4.660492e-05
+4.923827e-05
+5.188907e-05
+5.455757e-05
+5.724785e-05
+6.042997e-05
+6.443172e-05
+6.925804e-05
+7.491413e-05
+8.140510e-05
+8.873607e-05
+9.691261e-05
+1.055430e-04
+1.141395e-04
+1.227011e-04
+1.312278e-04
+1.397199e-04
+1.481776e-04
+1.566010e-04
+1.649901e-04
+1.733456e-04
+1.816673e-04
+1.899554e-04
+1.982101e-04
+2.064316e-04
+2.146202e-04
+2.227760e-04
+2.309223e-04
+2.391083e-04
+2.473362e-04
+2.556065e-04
+2.639200e-04
+2.722771e-04
+2.806786e-04
+2.891251e-04
+2.976174e-04
+3.061559e-04
+3.147414e-04
+3.233746e-04
+3.320560e-04
+3.407866e-04
+3.495669e-04
+3.583975e-04
+3.672793e-04
+3.762128e-04
+3.851988e-04
+3.942381e-04
+4.033315e-04
+4.124795e-04
+4.216829e-04
+4.309425e-04
+4.402591e-04
+4.496335e-04
+4.590663e-04
+4.685583e-04
+4.781105e-04
+4.877234e-04
+4.973979e-04
+5.071349e-04
+5.169177e-04
+5.267202e-04
+5.365426e-04
+5.463856e-04
+5.562496e-04
+5.661352e-04
+5.760430e-04
+5.859738e-04
+5.959279e-04
+6.059060e-04
+6.159087e-04
+6.259366e-04
+6.359903e-04
+6.460705e-04
+6.561776e-04
+6.663125e-04
+6.764756e-04
+6.866676e-04
+6.968892e-04
+7.071409e-04
+7.174236e-04
+7.277376e-04
+7.380839e-04
+7.484629e-04
+7.588755e-04
+7.693222e-04
+7.798037e-04
+7.903207e-04
+8.008740e-04
+8.114643e-04
+8.220920e-04
+8.327580e-04
+8.434631e-04
+8.542080e-04
+8.649934e-04
+8.758199e-04
+8.866884e-04
+8.975995e-04
+9.085541e-04
+9.195530e-04
+9.305967e-04
+9.416862e-04
+9.528222e-04
+9.640055e-04
+9.752369e-04
+9.865172e-04
+9.978471e-04
+1.009227e-03
+1.020659e-03
+1.032143e-03
+1.043680e-03
+1.055271e-03
+1.066916e-03
+1.078617e-03
+1.090374e-03
+1.102188e-03
+1.114061e-03
+1.125993e-03
+1.137984e-03
+1.150036e-03
+1.162150e-03
+1.174327e-03
+1.186567e-03
+1.198872e-03
+1.211242e-03
+1.223679e-03
+1.236183e-03
+1.248755e-03
+1.261396e-03
+1.274108e-03
+1.286891e-03
+1.299747e-03
+1.312675e-03
+1.325678e-03
+1.338757e-03
+1.351911e-03
+1.365144e-03
+1.378455e-03
+1.391845e-03
+1.405316e-03
+1.418869e-03
+1.432504e-03
+1.446224e-03
+1.460029e-03
+1.473920e-03
+1.487898e-03
+1.501965e-03
+1.516121e-03
+1.530369e-03
+1.544709e-03
+1.559141e-03
+1.573669e-03
+1.588292e-03
+1.603012e-03
+1.617829e-03
+1.632747e-03
+1.647765e-03
+1.662886e-03
+1.678109e-03
+1.693437e-03
+1.708871e-03
+1.724412e-03
+1.740062e-03
+1.755822e-03
+1.771693e-03
+
+# IO
+
+10 0.00639699
+1.531930e-11
+3.371060e-07
+1.341985e-06
+3.018649e-06
+5.371170e-06
+8.403615e-06
+1.212020e-05
+1.652504e-05
+2.162252e-05
+2.741686e-05
+3.391254e-05
+4.111393e-05
+4.902558e-05
+5.765213e-05
+6.699801e-05
+7.706799e-05
+8.786691e-05
+9.939930e-05
+1.116803e-04
+1.250675e-04
+1.397434e-04
+1.557164e-04
+1.729947e-04
+1.915869e-04
+2.115015e-04
+2.327474e-04
+2.553333e-04
+2.792684e-04
+3.045656e-04
+3.312624e-04
+3.593728e-04
+3.889073e-04
+4.198750e-04
+4.522856e-04
+4.861499e-04
+5.214771e-04
+5.582788e-04
+5.965638e-04
+6.363436e-04
+6.776289e-04
+7.204406e-04
+7.660629e-04
+8.153950e-04
+8.684602e-04
+9.252839e-04
+9.858899e-04
+1.050305e-03
+1.118553e-03
+1.189926e-03
+1.263537e-03
+1.339400e-03
+1.417533e-03
+1.497950e-03
+1.580673e-03
+1.665715e-03
+1.753095e-03
+1.842831e-03
+1.934942e-03
+2.029444e-03
+2.126358e-03
+2.225699e-03
+2.327492e-03
+2.431749e-03
+2.538299e-03
+2.646748e-03
+2.757100e-03
+2.869370e-03
+2.983577e-03
+3.099735e-03
+3.217861e-03
+3.337973e-03
+3.460089e-03
+3.584225e-03
+3.710399e-03
+3.838629e-03
+3.968933e-03
+4.101330e-03
+4.235836e-03
+4.372472e-03
+4.511256e-03
+4.652208e-03
+4.795345e-03
+4.940687e-03
+5.088257e-03
+5.238070e-03
+5.390150e-03
+5.544514e-03
+5.701185e-03
+5.860183e-03
+6.021530e-03
+6.185246e-03
+6.351353e-03
+6.519873e-03
+6.690826e-03
+6.864237e-03
+7.039311e-03
+7.214811e-03
+7.390736e-03
+7.567094e-03
+7.743896e-03
+7.921156e-03
+8.098881e-03
+8.277083e-03
+8.455772e-03
+8.634960e-03
+8.814661e-03
+8.994881e-03
+9.175636e-03
+9.356935e-03
+9.538787e-03
+9.721208e-03
+9.904209e-03
+1.008780e-02
+1.027199e-02
+1.045680e-02
+1.064224e-02
+1.082831e-02
+1.101504e-02
+1.120242e-02
+1.139049e-02
+1.157924e-02
+1.176870e-02
+1.195886e-02
+1.214976e-02
+1.234140e-02
+1.253379e-02
+1.272694e-02
+1.292088e-02
+1.311561e-02
+1.331114e-02
+1.350750e-02
+1.370469e-02
+1.390273e-02
+1.410163e-02
+1.430141e-02
+1.450207e-02
+1.470365e-02
+1.490614e-02
+1.510957e-02
+1.531395e-02
+1.551929e-02
+1.572561e-02
+1.593293e-02
+1.614125e-02
+1.635060e-02
+1.656099e-02
+1.677245e-02
+1.698497e-02
+1.719858e-02
+1.741329e-02
+1.762913e-02
+1.784611e-02
+1.806423e-02
+1.828353e-02
+1.850402e-02
+1.872572e-02
+1.894864e-02
+1.917279e-02
+1.939820e-02
+1.962489e-02
+1.985288e-02
+2.008217e-02
+2.031279e-02
+2.054476e-02
+2.077810e-02
+2.101282e-02
+2.124895e-02
+2.148650e-02
+2.172549e-02
+2.196595e-02
+2.220788e-02
+2.245132e-02
+2.269628e-02
+2.294277e-02
+2.319084e-02
+2.344048e-02
+2.369173e-02
+2.394460e-02
+2.419911e-02
+2.445530e-02
+2.471317e-02
+2.497275e-02
+2.523406e-02
+2.549712e-02
+2.576197e-02
+2.602861e-02
+2.629707e-02
+2.656738e-02
+2.683956e-02
+2.711363e-02
+2.738961e-02
+2.766754e-02
+2.794742e-02
+2.822930e-02
+2.851318e-02
+2.879911e-02
+2.908709e-02
+2.937717e-02
+2.966936e-02
+2.996368e-02
+
+# ISi
+
+10 0.00639699
+7.048584e-12
+1.550870e-07
+6.173905e-07
+1.388769e-06
+2.471061e-06
+3.866167e-06
+5.576010e-06
+7.602503e-06
+9.947646e-06
+1.261341e-05
+1.560181e-05
+1.891486e-05
+2.255473e-05
+2.652340e-05
+3.082302e-05
+3.545586e-05
+4.042397e-05
+4.572957e-05
+5.136797e-05
+5.709432e-05
+6.278668e-05
+6.844505e-05
+7.406951e-05
+7.966012e-05
+8.521695e-05
+9.074001e-05
+9.622940e-05
+1.016851e-04
+1.071071e-04
+1.124940e-04
+1.178458e-04
+1.231624e-04
+1.284439e-04
+1.336903e-04
+1.389017e-04
+1.440780e-04
+1.492194e-04
+1.543258e-04
+1.593973e-04
+1.644338e-04
+1.694355e-04
+1.744092e-04
+1.793595e-04
+1.842865e-04
+1.891903e-04
+1.940710e-04
+1.989286e-04
+2.037634e-04
+2.085653e-04
+2.133220e-04
+2.180335e-04
+2.226997e-04
+2.273204e-04
+2.318958e-04
+2.364257e-04
+2.409101e-04
+2.453488e-04
+2.497419e-04
+2.540892e-04
+2.583906e-04
+2.626463e-04
+2.668559e-04
+2.710194e-04
+2.752042e-04
+2.795514e-04
+2.840669e-04
+2.887518e-04
+2.936073e-04
+2.986347e-04
+3.038352e-04
+3.092101e-04
+3.147606e-04
+3.204880e-04
+3.263937e-04
+3.324790e-04
+3.387451e-04
+3.451935e-04
+3.518256e-04
+3.586426e-04
+3.656461e-04
+3.728375e-04
+3.802181e-04
+3.877895e-04
+3.955531e-04
+4.035103e-04
+4.116628e-04
+4.200120e-04
+4.285596e-04
+4.373070e-04
+4.462557e-04
+4.554076e-04
+4.647640e-04
+4.743268e-04
+4.840974e-04
+4.940777e-04
+5.041723e-04
+5.142329e-04
+5.242584e-04
+5.342488e-04
+5.442045e-04
+5.541258e-04
+5.640127e-04
+5.738658e-04
+5.836851e-04
+5.934708e-04
+6.032235e-04
+6.129430e-04
+6.226299e-04
+6.322843e-04
+6.419063e-04
+6.514966e-04
+6.610550e-04
+6.705818e-04
+6.800776e-04
+6.895422e-04
+6.989762e-04
+7.083797e-04
+7.177529e-04
+7.270961e-04
+7.364096e-04
+7.456936e-04
+7.549484e-04
+7.641740e-04
+7.733712e-04
+7.825397e-04
+7.916799e-04
+8.007922e-04
+8.098768e-04
+8.189338e-04
+8.279636e-04
+8.369665e-04
+8.459426e-04
+8.548922e-04
+8.638155e-04
+8.727130e-04
+8.815847e-04
+8.904309e-04
+8.992519e-04
+9.080480e-04
+9.168193e-04
+9.255661e-04
+9.342888e-04
+9.429876e-04
+9.516625e-04
+9.603142e-04
+9.689427e-04
+9.775481e-04
+9.861309e-04
+9.946915e-04
+1.003230e-03
+1.011746e-03
+1.020241e-03
+1.028714e-03
+1.037167e-03
+1.045598e-03
+1.054009e-03
+1.062400e-03
+1.070770e-03
+1.079121e-03
+1.087453e-03
+1.095764e-03
+1.104057e-03
+1.112332e-03
+1.120587e-03
+1.128825e-03
+1.137045e-03
+1.145247e-03
+1.153432e-03
+1.161599e-03
+1.169750e-03
+1.177884e-03
+1.186002e-03
+1.194104e-03
+1.202190e-03
+1.210260e-03
+1.218316e-03
+1.226356e-03
+1.234382e-03
+1.242394e-03
+1.250392e-03
+1.258375e-03
+1.266345e-03
+1.274302e-03
+1.282247e-03
+1.290178e-03
+1.298097e-03
+1.306004e-03
+1.313899e-03
+1.321783e-03
+1.329655e-03
+1.337517e-03
+1.345368e-03
+1.353209e-03
+1.361039e-03
+1.368860e-03
+1.376672e-03
+1.384475e-03
+1.392268e-03
+1.400053e-03
+1.407830e-03
+
+# ICa
+
+10 0.00639699
+2.700062e-13
+5.947584e-09
+2.367676e-08
+5.325842e-08
+9.476412e-08
+1.482658e-07
+2.138377e-07
+2.915531e-07
+3.814880e-07
+4.837184e-07
+5.983229e-07
+7.253775e-07
+8.649649e-07
+1.017162e-06
+1.182052e-06
+1.359718e-06
+1.550244e-06
+1.753712e-06
+1.970245e-06
+2.201096e-06
+2.446946e-06
+2.707893e-06
+2.984039e-06
+3.275483e-06
+3.582334e-06
+3.904699e-06
+4.242673e-06
+4.596373e-06
+4.963274e-06
+5.326114e-06
+5.681715e-06
+6.030052e-06
+6.371094e-06
+6.704819e-06
+7.031194e-06
+7.350194e-06
+7.661793e-06
+7.965952e-06
+8.262647e-06
+8.551848e-06
+8.833477e-06
+9.102245e-06
+9.354449e-06
+9.590000e-06
+9.808816e-06
+1.001080e-05
+1.019587e-05
+1.036394e-05
+1.052423e-05
+1.068827e-05
+1.085612e-05
+1.102780e-05
+1.120335e-05
+1.138279e-05
+1.156616e-05
+1.175349e-05
+1.194482e-05
+1.214017e-05
+1.233957e-05
+1.254306e-05
+1.275068e-05
+1.296246e-05
+1.317842e-05
+1.339972e-05
+1.362873e-05
+1.386557e-05
+1.411030e-05
+1.436298e-05
+1.462367e-05
+1.489242e-05
+1.516930e-05
+1.545437e-05
+1.574769e-05
+1.604932e-05
+1.635933e-05
+1.667777e-05
+1.700471e-05
+1.734023e-05
+1.768437e-05
+1.803722e-05
+1.839883e-05
+1.876928e-05
+1.914863e-05
+1.953696e-05
+1.993434e-05
+2.034083e-05
+2.075651e-05
+2.118146e-05
+2.161574e-05
+2.205944e-05
+2.251262e-05
+2.297538e-05
+2.344777e-05
+2.392988e-05
+2.442180e-05
+2.491686e-05
+2.540474e-05
+2.588531e-05
+2.635856e-05
+2.682445e-05
+2.728298e-05
+2.773411e-05
+2.817782e-05
+2.861409e-05
+2.904290e-05
+2.946421e-05
+2.987801e-05
+3.028428e-05
+3.068297e-05
+3.107407e-05
+3.145755e-05
+3.183338e-05
+3.220154e-05
+3.256199e-05
+3.291472e-05
+3.325967e-05
+3.359684e-05
+3.392618e-05
+3.424766e-05
+3.456126e-05
+3.486694e-05
+3.516467e-05
+3.545442e-05
+3.573614e-05
+3.600981e-05
+3.627540e-05
+3.653285e-05
+3.678216e-05
+3.702326e-05
+3.725613e-05
+3.748072e-05
+3.769700e-05
+3.790493e-05
+3.810447e-05
+3.829559e-05
+3.847823e-05
+3.865235e-05
+3.881792e-05
+3.897489e-05
+3.912322e-05
+3.926286e-05
+3.939376e-05
+3.951590e-05
+3.962920e-05
+3.973365e-05
+3.982931e-05
+3.991613e-05
+3.999408e-05
+4.006310e-05
+4.012315e-05
+4.017417e-05
+4.021612e-05
+4.024894e-05
+4.027257e-05
+4.028698e-05
+4.029301e-05
+4.029766e-05
+4.030240e-05
+4.030723e-05
+4.031214e-05
+4.031715e-05
+4.032224e-05
+4.032743e-05
+4.033271e-05
+4.033808e-05
+4.034354e-05
+4.034910e-05
+4.035476e-05
+4.036051e-05
+4.036635e-05
+4.037230e-05
+4.037834e-05
+4.038449e-05
+4.039073e-05
+4.039707e-05
+4.040352e-05
+4.041007e-05
+4.041672e-05
+4.042348e-05
+4.043034e-05
+4.043731e-05
+4.044439e-05
+4.045158e-05
+4.045888e-05
+4.046628e-05
+4.047380e-05
+4.048143e-05
+4.048918e-05
+4.049703e-05
+4.050501e-05
+4.051310e-05
+4.052131e-05
+4.052963e-05
+4.053809e-05
+4.054666e-05
+4.055534e-05
+4.056416e-05
+4.057309e-05
+4.058216e-05
+4.059135e-05
+
+# IMetals
+
+10 0.00639699
+4.570211e-11
+1.007647e-06
+4.011352e-06
+9.023206e-06
+1.605519e-05
+2.511963e-05
+3.622897e-05
+4.939566e-05
+6.463274e-05
+8.195301e-05
+1.013695e-04
+1.228955e-04
+1.465447e-04
+1.723303e-04
+2.002663e-04
+2.303671e-04
+2.626465e-04
+2.971184e-04
+3.337918e-04
+3.724687e-04
+4.130562e-04
+4.555681e-04
+5.000175e-04
+5.464174e-04
+5.947819e-04
+6.451251e-04
+6.974603e-04
+7.518025e-04
+8.081323e-04
+8.662478e-04
+9.261221e-04
+9.877686e-04
+1.051201e-03
+1.116431e-03
+1.183474e-03
+1.252344e-03
+1.323055e-03
+1.395618e-03
+1.470051e-03
+1.546367e-03
+1.624591e-03
+1.705950e-03
+1.791305e-03
+1.880682e-03
+1.974112e-03
+2.071621e-03
+2.173238e-03
+2.278992e-03
+2.388251e-03
+2.500227e-03
+2.614936e-03
+2.732401e-03
+2.852643e-03
+2.975686e-03
+3.101549e-03
+3.230254e-03
+3.361828e-03
+3.496292e-03
+3.633667e-03
+3.773978e-03
+3.917250e-03
+4.063506e-03
+4.212768e-03
+4.364686e-03
+4.518484e-03
+4.674156e-03
+4.831716e-03
+4.991188e-03
+5.152588e-03
+5.315935e-03
+5.481247e-03
+5.648545e-03
+5.817847e-03
+5.989174e-03
+6.162543e-03
+6.337977e-03
+6.515496e-03
+6.695118e-03
+6.876865e-03
+7.060759e-03
+7.246820e-03
+7.435069e-03
+7.625529e-03
+7.818221e-03
+8.013165e-03
+8.210384e-03
+8.409903e-03
+8.611743e-03
+8.815927e-03
+9.022478e-03
+9.231421e-03
+9.442776e-03
+9.656571e-03
+9.872828e-03
+1.009157e-02
+1.031202e-02
+1.053294e-02
+1.075435e-02
+1.097625e-02
+1.119866e-02
+1.142158e-02
+1.164504e-02
+1.186904e-02
+1.209361e-02
+1.231874e-02
+1.254446e-02
+1.277079e-02
+1.299772e-02
+1.322529e-02
+1.345349e-02
+1.368236e-02
+1.391189e-02
+1.414211e-02
+1.437303e-02
+1.460466e-02
+1.483702e-02
+1.507013e-02
+1.530400e-02
+1.553864e-02
+1.577407e-02
+1.601030e-02
+1.624736e-02
+1.648525e-02
+1.672399e-02
+1.696361e-02
+1.720411e-02
+1.744550e-02
+1.768782e-02
+1.793106e-02
+1.817526e-02
+1.842043e-02
+1.866658e-02
+1.891372e-02
+1.916189e-02
+1.941109e-02
+1.966135e-02
+1.991267e-02
+2.016509e-02
+2.041861e-02
+2.067325e-02
+2.092904e-02
+2.118600e-02
+2.144413e-02
+2.170346e-02
+2.196402e-02
+2.222581e-02
+2.248886e-02
+2.275319e-02
+2.301882e-02
+2.328577e-02
+2.355406e-02
+2.382372e-02
+2.409476e-02
+2.436721e-02
+2.464109e-02
+2.491641e-02
+2.519321e-02
+2.547151e-02
+2.575133e-02
+2.603269e-02
+2.631563e-02
+2.660019e-02
+2.688639e-02
+2.717425e-02
+2.746382e-02
+2.775512e-02
+2.804818e-02
+2.834302e-02
+2.863966e-02
+2.893813e-02
+2.923845e-02
+2.954066e-02
+2.984476e-02
+3.015080e-02
+3.045880e-02
+3.076882e-02
+3.108090e-02
+3.139506e-02
+3.171133e-02
+3.202974e-02
+3.235031e-02
+3.267308e-02
+3.299806e-02
+3.332529e-02
+3.365480e-02
+3.398661e-02
+3.432075e-02
+3.465725e-02
+3.499615e-02
+3.533747e-02
+3.568123e-02
+3.602748e-02
+3.637624e-02
+3.672754e-02
+3.708141e-02
+3.743789e-02
+3.779701e-02
+3.815879e-02
+3.852328e-02
+3.889049e-02
+
+# Mean WD Mass
+
+1.380000
+
+# SNIa Metal Ejection
+
+# Number of elements
+6
+
+# Ej
+0.0
+
+# Ejnp
+0.0
+
+# Fe
+7.434630e-01
+
+# Mg
+8.572300e-03
+
+# O
+1.430000e-01
+
+# Si
+1.526010e-01
+
+# Ca
+1.234416e-02
+
+# Metals
+1.370000e+00
+
+
+# Element Solar Abundances
+
+# Number of elements
+6
+
+# Fe
+0.00176604
+
+# Mg
+0.000924316
+
+# O
+0.0108169
+
+# Si
+0.000996529
+
+# Ca
+9.1818e-05
+
+# Metals
+0.02
+
diff --git a/PyChem/shared/lifetime.png b/PyChem/shared/lifetime.png
new file mode 100644
index 0000000..e0184e6
Binary files /dev/null and b/PyChem/shared/lifetime.png differ
diff --git a/PyChem/shared/massFractionVSTime.png b/PyChem/shared/massFractionVSTime.png
new file mode 100644
index 0000000..1674e9a
Binary files /dev/null and b/PyChem/shared/massFractionVSTime.png differ
diff --git a/PyChem/shared/pychem_get_ejectats b/PyChem/shared/pychem_get_ejectats
new file mode 100755
index 0000000..26bb3dd
--- /dev/null
+++ b/PyChem/shared/pychem_get_ejectats
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+
+import sys
+from PyChem import chemistry
+from numpy import *
+
+chemistry.init_chimie("chimie.yr.dat")
+
+# assume SSP with zero metallicity
+metals = zeros(chemistry.get_nelts(),float)
+
+
+
+
+
+
+# set masses
+m1 = chemistry.get_Mmin() # min mass in the IMF
+m2 = chemistry.get_Mmax() # max mass in the IMF
+
+#m1 = 2./1e10 # set masses
+#m2 = 3./1e10 # set masses
+
+
+livetime1 = chemistry.star_lifetime(metals[0],m1)
+livetime2 = chemistry.star_lifetime(metals[0],m2)
+
+print m1*1e10,m2*1e10
+print "livetimes",livetime1*4.7,livetime2*4.7
+print
+
+labels = chemistry.get_elts_labels()
+
+print "Tot"
+EjectedMass = chemistry.Total_mass_ejection(m1,m2,1,metals)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+print "SNII"
+EjectedMass = chemistry.SNII_mass_ejection(m1,m2)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+print "SNIa"
+EjectedMass = chemistry.SNIa_mass_ejection(m1,m2)
+TotalEjectedEltMasscont = EjectedMass[2:]
+print "Fe=",TotalEjectedEltMasscont[labels.index('Fe')]
+print "Metals=",TotalEjectedEltMasscont[labels.index('Metals')]
+print
+
+
+
+
diff --git a/PyChem/shared/pychem_plot_ejectats_vs_time b/PyChem/shared/pychem_plot_ejectats_vs_time
new file mode 100755
index 0000000..73f2f7c
--- /dev/null
+++ b/PyChem/shared/pychem_plot_ejectats_vs_time
@@ -0,0 +1,246 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+
+from PyChem import chemistry
+from numpy import *
+import sys
+import string
+
+import Ptools as pt
+from pNbody import units
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+ parser = pt.add_postscript_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'Fe',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'Mg',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--dt",
+ action="store",
+ dest="dt",
+ type="float",
+ default = 0.1,
+ help="dt",
+ metavar=" FLOAT")
+
+
+ parser.add_option("--mstar",
+ action="store",
+ dest="mstar",
+ type="float",
+ default = 1e5,
+ help="initial mass of the SSP in solar mass",
+ metavar=" FLOAT")
+
+ parser.add_option("--tstar",
+ action="store",
+ dest="tstar",
+ type="float",
+ default = 0,
+ help="formation time of the SSP",
+ metavar=" FLOAT")
+
+ parser.add_option("-o",
+ action="store",
+ dest="obs",
+ type="string",
+ default = 'Y',
+ help="observable to plot",
+ metavar=" STRING")
+
+ parser.add_option("--timeunit",
+ action="store",
+ dest="timeunit",
+ type="string",
+ default = None,
+ help="unit of time",
+ metavar=" STRING")
+
+
+ parser.add_option("--NumberOfTables",
+ action="store",
+ dest="NumberOfTables",
+ type="int",
+ default = 1,
+ help="NumberOfTables",
+ metavar=" INT")
+
+ parser.add_option("--DefaultTable",
+ action="store",
+ dest="DefaultTable",
+ type="int",
+ default = 0,
+ help="DefaultTable",
+ metavar=" INT")
+
+
+ parser.add_option("--discsn",
+ action="store_true",
+ dest="discsn",
+ default = False,
+ help="discretize sn",
+ metavar=" FLOAT")
+
+
+
+
+ (options, args) = parser.parse_args()
+
+
+ pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+
+
+########################################################################
+# M A I N
+########################################################################
+
+SOLAR_MASS = 1.989e33
+
+
+params={}
+params['UnitLength_in_cm']=3.085e+21
+params['UnitMass_in_g']=1.989e+43
+params['UnitVelocity_in_cm_per_s']=20725573.785998672
+
+system_of_units = units.Set_SystemUnits_From_Params(params)
+out_units = units.UnitSystem('local',[units.Unit_cm,units.Unit_Msol,units.Unit_Myr,units.Unit_K])
+
+
+toMyrs= system_of_units.convertionFactorTo(out_units.UnitTime)
+
+# parse options
+files,opt = parse_options()
+
+
+# init chimie
+chemistry.init_chimie(files[0],opt.NumberOfTables,opt.DefaultTable)
+
+
+
+# some inits
+t_star=0
+M0 = 1.
+
+metals = zeros(chemistry.get_nelts(),float)
+# minimum live time of a star
+maxSNIIlivetime = chemistry.star_lifetime(metals[0],chemistry.get_SNII_Mmin())
+
+# minimum live time of a star
+minlivetime = chemistry.star_lifetime(metals[-1],chemistry.get_Mmax())
+maxlivetime = chemistry.star_lifetime(metals[-1],chemistry.get_Mmin())
+
+#tmax = maxSNIIlivetime
+tmax = maxSNIIlivetime*500
+dt = tmax/1000.
+
+times = arange(dt,tmax,dt).astype(float)
+
+
+n = len(times)
+mFes = zeros(n)
+mMgs = zeros(n)
+mZs = zeros(n)
+mEjs = zeros(n)
+Ms = zeros(n)
+
+
+
+###############################################
+# main loop
+###############################################
+
+for ti,time in enumerate(times):
+
+
+ tpdt = time + dt
+
+ if (tpdt - t_star >= minlivetime) and (tpdt - t_star < maxlivetime) and time > 0 :
+
+ m1 = chemistry.star_mass_from_age(metals[-1],tpdt - t_star)
+
+ if (time - t_star >= minlivetime):
+
+ m2 = chemistry.star_mass_from_age(metals[-1],time - t_star)
+
+ else:
+ m2 = chemistry.get_Mmax()
+
+
+ if (m1>m2):
+ m1=m2
+ raise "m1>m2 !!!"
+
+
+
+ m2 = chemistry.get_Mmax()
+
+ # standard way (continuous explosion)
+ EjectedMass = chemistry.Total_mass_ejection(m1,m2,M0,metals)
+ TotalEjectedEltMasscont = EjectedMass[2:]
+ TotalEjectedGasMasscont = EjectedMass[0]
+
+ #print TotalEjectedEltMasscont[0],TotalEjectedEltMasscont[-1],m1,m2
+
+
+ mEjs[ti]=TotalEjectedGasMasscont
+
+ mFes[ti]=TotalEjectedEltMasscont[0]
+ mMgs[ti]=TotalEjectedEltMasscont[1]
+ mZs[ti] =TotalEjectedEltMasscont[-1]
+ Ms[ti]=m2
+
+
+SolarAbun = chemistry.get_elts_SolarAbundances()
+
+MgFe = log10((mMgs/mFes)/(SolarAbun['Mg']/SolarAbun['Fe']))
+
+pt.plot(times*toMyrs,mFes,label='Fe')
+#pt.plot(times*toMyrs,mMgs,label='Mg')
+#pt.plot(times*toMyrs,mZs,label='Metals')
+#pt.plot(times*toMyrs,mEjs,label='Ejected Mass')
+
+#pt.plot(times*toMyrs,MgFe)
+
+pt.xlabel('Time [Myrs]')
+pt.ylabel('Mass fraction')
+pt.legend(loc="upper left")
+
+
+pt.show()
+
+
+
+print "Fe",mFes[-1]
+print "Mg",mMgs[-1]
+print "Z",mZs[-1]
+
+
diff --git a/PyChem/shared/tables/Lifetime/z0001.dat b/PyChem/shared/tables/Lifetime/z0001.dat
new file mode 100644
index 0000000..359662e
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z0001.dat
@@ -0,0 +1,41 @@
+ .60 4.074981E+10
+ .70 2.396525E+10
+ .80 1.480874E+10
+ .90 9.909288E+09
+ 1.00 6.941943E+09
+ 1.10 5.259006E+09
+ 1.20 4.036762E+09
+ 1.30 3.160648E+09
+ 1.40 2.531735E+09
+ 1.50 2.061874E+09
+ 1.60 1.682744E+09
+ 1.80 1.188816E+09
+ 2.00 8.746272E+08
+ 2.20 7.819326E+08
+ 2.40 6.203593E+08
+ 2.60 4.975123E+08
+ 2.80 4.053463E+08
+ 3.00 3.360551E+08
+ 3.30 2.591018E+08
+ 3.60 2.055238E+08
+ 4.00 1.571347E+08
+ 4.50 1.175507E+08
+ 5.00 9.175730E+07
+ 6.00 6.112875E+07
+ 7.00 4.439183E+07
+ 8.00 3.416856E+07
+ 9.00 2.748527E+07
+ 10.00 2.288127E+07
+ 11.00 1.964268E+07
+ 12.00 1.721544E+07
+ 13.00 1.539169E+07
+ 14.00 1.392227E+07
+ 15.00 1.270835E+07
+ 17.00 1.090988E+07
+ 20.00 9.099970E+06
+ 25.00 7.300377E+06
+ 30.00 6.262618E+06
+ 40.00 4.954033E+06
+ 50.00 4.233625E+06
+ 60.00 3.836794E+06
+ 80.00 2.968478E+06
diff --git a/PyChem/shared/tables/Lifetime/z0002.dat b/PyChem/shared/tables/Lifetime/z0002.dat
new file mode 100644
index 0000000..2a185d6
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z0002.dat
@@ -0,0 +1,41 @@
+ .60 4.089473E+10
+ .70 2.419517E+10
+ .80 1.498214E+10
+ .90 1.000428E+10
+ 1.00 7.055501E+09
+ 1.10 5.234459E+09
+ 1.20 4.054077E+09
+ 1.30 3.183950E+09
+ 1.40 2.550149E+09
+ 1.50 2.069327E+09
+ 1.60 1.695031E+09
+ 1.80 1.196551E+09
+ 2.00 8.744444E+08
+ 2.20 7.754039E+08
+ 2.40 6.061404E+08
+ 2.60 4.893827E+08
+ 2.80 3.995436E+08
+ 3.00 3.323543E+08
+ 3.30 1.985642E+08
+ 3.60 2.019890E+08
+ 4.00 1.553323E+08
+ 4.50 1.164982E+08
+ 5.00 9.102389E+07
+ 6.00 6.088474E+07
+ 7.00 4.424616E+07
+ 8.00 3.411242E+07
+ 9.00 2.747194E+07
+ 10.00 2.287344E+07
+ 11.00 1.963288E+07
+ 12.00 1.722677E+07
+ 13.00 1.536516E+07
+ 14.00 1.391990E+07
+ 15.00 1.270203E+07
+ 17.00 1.087271E+07
+ 20.00 9.110266E+06
+ 25.00 7.332869E+06
+ 30.00 6.235710E+06
+ 40.00 4.915677E+06
+ 50.00 4.340376E+06
+ 60.00 3.843057E+06
+ 80.00 2.971014E+06
diff --git a/PyChem/shared/tables/Lifetime/z0005.dat b/PyChem/shared/tables/Lifetime/z0005.dat
new file mode 100644
index 0000000..f4746ea
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z0005.dat
@@ -0,0 +1,41 @@
+ .60 4.184752E+10
+ .70 2.478743E+10
+ .80 1.544601E+10
+ .90 1.029748E+10
+ 1.00 7.114261E+09
+ 1.10 5.388081E+09
+ 1.20 4.134492E+09
+ 1.30 3.248224E+09
+ 1.40 2.596654E+09
+ 1.50 2.096051E+09
+ 1.60 1.724858E+09
+ 1.80 1.202824E+09
+ 2.00 8.747426E+08
+ 2.20 8.006102E+08
+ 2.40 6.241850E+08
+ 2.60 4.921217E+08
+ 2.80 4.001482E+08
+ 3.00 3.280398E+08
+ 3.30 2.524115E+08
+ 3.60 1.999862E+08
+ 4.00 1.528443E+08
+ 4.50 1.149331E+08
+ 5.00 9.035410E+07
+ 6.00 6.049430E+07
+ 7.00 4.404137E+07
+ 8.00 3.400683E+07
+ 9.00 2.741352E+07
+ 10.00 2.283615E+07
+ 11.00 1.960716E+07
+ 12.00 1.720434E+07
+ 13.00 1.536098E+07
+ 14.00 1.390930E+07
+ 15.00 1.272235E+07
+ 17.00 1.090568E+07
+ 20.00 9.097055E+06
+ 25.00 7.597746E+06
+ 30.00 6.325002E+06
+ 40.00 4.775419E+06
+ 50.00 3.858378E+06
+ 60.00 3.356205E+06
+ 80.00 2.961981E+06
diff --git a/PyChem/shared/tables/Lifetime/z001.dat b/PyChem/shared/tables/Lifetime/z001.dat
new file mode 100644
index 0000000..fcb2f7b
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z001.dat
@@ -0,0 +1,41 @@
+ .60 4.309769E+10
+ .70 2.560124E+10
+ .80 1.607527E+10
+ .90 1.066974E+10
+ 1.00 7.309108E+09
+ 1.10 5.568986E+09
+ 1.20 4.286296E+09
+ 1.30 3.346179E+09
+ 1.40 2.677417E+09
+ 1.50 2.169727E+09
+ 1.60 1.749777E+09
+ 1.80 1.213750E+09
+ 2.00 8.764930E+08
+ 2.20 6.246430E+08
+ 2.40 6.480324E+08
+ 2.60 5.043092E+08
+ 2.80 4.077945E+08
+ 3.00 3.358152E+08
+ 3.30 2.581788E+08
+ 3.60 2.024980E+08
+ 4.00 1.541903E+08
+ 4.50 1.157621E+08
+ 5.00 9.043788E+07
+ 6.00 6.068297E+07
+ 7.00 4.422782E+07
+ 8.00 3.414536E+07
+ 9.00 2.744353E+07
+ 10.00 2.278387E+07
+ 11.00 1.951705E+07
+ 12.00 1.712953E+07
+ 13.00 1.530549E+07
+ 14.00 1.387445E+07
+ 15.00 1.266744E+07
+ 17.00 1.085886E+07
+ 20.00 9.065372E+06
+ 25.00 7.285172E+06
+ 30.00 6.260046E+06
+ 40.00 4.668788E+06
+ 50.00 3.774774E+06
+ 60.00 3.329516E+06
+ 80.00 2.947757E+06
diff --git a/PyChem/shared/tables/Lifetime/z002.dat b/PyChem/shared/tables/Lifetime/z002.dat
new file mode 100644
index 0000000..de685b0
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z002.dat
@@ -0,0 +1,41 @@
+ .60 4.515152E+10
+ .70 2.715787E+10
+ .80 1.708128E+10
+ .90 1.133400E+10
+ 1.00 7.974438E+09
+ 1.10 5.890602E+09
+ 1.20 4.533046E+09
+ 1.30 3.562532E+09
+ 1.40 2.812123E+09
+ 1.50 2.270916E+09
+ 1.60 1.807055E+09
+ 1.80 1.261517E+09
+ 2.00 9.031310E+08
+ 2.20 6.761601E+08
+ 2.40 6.692149E+08
+ 2.60 5.324959E+08
+ 2.80 4.253015E+08
+ 3.00 3.508113E+08
+ 3.30 2.680038E+08
+ 3.60 2.117213E+08
+ 4.00 1.612002E+08
+ 4.50 1.206464E+08
+ 5.00 9.358907E+07
+ 6.00 6.200767E+07
+ 7.00 4.480837E+07
+ 8.00 3.430857E+07
+ 9.00 2.748609E+07
+ 10.00 2.278915E+07
+ 11.00 1.944126E+07
+ 12.00 1.697439E+07
+ 13.00 1.517196E+07
+ 14.00 1.371792E+07
+ 15.00 1.258216E+07
+ 17.00 1.078845E+07
+ 20.00 8.956553E+06
+ 25.00 7.237735E+06
+ 30.00 6.104631E+06
+ 40.00 4.529152E+06
+ 50.00 3.632498E+06
+ 60.00 3.288962E+06
+ 80.00 2.919349E+06
diff --git a/PyChem/shared/tables/Lifetime/z004.dat b/PyChem/shared/tables/Lifetime/z004.dat
new file mode 100644
index 0000000..5a398ca
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z004.dat
@@ -0,0 +1,41 @@
+ .60 5.749880E+10
+ .70 3.238510E+10
+ .80 1.955660E+10
+ .90 1.253510E+10
+ 1.00 8.413460E+09
+ 1.10 5.929270E+09
+ 1.20 4.265010E+09
+ 1.30 3.164800E+09
+ 1.40 2.518820E+09
+ 1.50 1.998140E+09
+ 1.60 1.628960E+09
+ 1.80 1.141990E+09
+ 2.00 1.117270E+09
+ 2.20 8.637512E+08
+ 2.40 6.828906E+08
+ 2.60 5.500676E+08
+ 2.80 4.501722E+08
+ 3.00 3.735500E+08
+ 3.30 2.956709E+08
+ 3.60 2.388414E+08
+ 4.00 1.844430E+08
+ 4.50 1.418071E+08
+ 5.00 1.120920E+08
+ 6.00 7.674330E+07
+ 7.00 5.639450E+07
+ 8.00 4.393265E+07
+ 9.00 3.524750E+07
+ 10.00 2.939909E+07
+ 11.00 2.494914E+07
+ 12.00 2.147750E+07
+ 13.00 1.900250E+07
+ 14.00 1.696604E+07
+ 15.00 1.526680E+07
+ 17.00 1.296102E+07
+ 20.00 1.047870E+07
+ 25.00 8.301872E+06
+ 30.00 6.863500E+06
+ 40.00 5.444450E+06
+ 50.00 4.721080E+06
+ 60.00 4.201990E+06
+ 80.00 3.720178E+06
diff --git a/PyChem/shared/tables/Lifetime/z008.dat b/PyChem/shared/tables/Lifetime/z008.dat
new file mode 100644
index 0000000..06da6f3
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z008.dat
@@ -0,0 +1,41 @@
+ .60 6.960220E+10
+ .70 3.895520E+10
+ .80 2.360380E+10
+ .90 1.510570E+10
+ 1.00 1.009440E+10
+ 1.10 7.000370E+09
+ 1.20 4.972480E+09
+ 1.30 3.630130E+09
+ 1.40 2.845220E+09
+ 1.50 2.277190E+09
+ 1.60 1.839760E+09
+ 1.80 1.330750E+09
+ 2.00 1.276770E+09
+ 2.20 9.894328E+08
+ 2.40 7.839730E+08
+ 2.60 6.294768E+08
+ 2.80 5.110681E+08
+ 3.00 4.209440E+08
+ 3.30 3.267925E+08
+ 3.60 2.593543E+08
+ 4.00 1.960410E+08
+ 4.50 1.486510E+08
+ 5.00 1.160550E+08
+ 6.00 7.771040E+07
+ 7.00 5.626340E+07
+ 8.00 4.340308E+07
+ 9.00 3.452290E+07
+ 10.00 2.881667E+07
+ 11.00 2.447175E+07
+ 12.00 2.107980E+07
+ 13.00 1.862578E+07
+ 14.00 1.660916E+07
+ 15.00 1.492850E+07
+ 17.00 1.259308E+07
+ 20.00 1.009710E+07
+ 25.00 8.033021E+06
+ 30.00 6.663930E+06
+ 40.00 5.310790E+06
+ 50.00 4.685214E+06
+ 60.00 4.229190E+06
+ 80.00 3.767717E+06
diff --git a/PyChem/shared/tables/Lifetime/z02.dat b/PyChem/shared/tables/Lifetime/z02.dat
new file mode 100644
index 0000000..4ff80b7
--- /dev/null
+++ b/PyChem/shared/tables/Lifetime/z02.dat
@@ -0,0 +1,41 @@
+ .60 8.475470E+10
+ .70 4.875590E+10
+ .80 2.917480E+10
+ .90 1.858620E+10
+ 1.00 1.235710E+10
+ 1.10 8.575190E+09
+ 1.20 6.026040E+09
+ 1.30 4.501370E+09
+ 1.40 3.461680E+09
+ 1.50 2.783040E+09
+ 1.60 2.234440E+09
+ 1.80 1.540380E+09
+ 2.00 1.111460E+09
+ 2.20 1.105150E+09
+ 2.40 8.758842E+08
+ 2.60 7.021360E+08
+ 2.80 5.681876E+08
+ 3.00 4.665600E+08
+ 3.30 3.558033E+08
+ 3.60 2.778182E+08
+ 4.00 2.058980E+08
+ 4.50 1.521454E+08
+ 5.00 1.160710E+08
+ 6.00 7.521410E+07
+ 7.00 5.348400E+07
+ 8.00 4.063126E+07
+ 9.00 3.188410E+07
+ 10.00 2.634211E+07
+ 11.00 2.216344E+07
+ 12.00 1.893020E+07
+ 13.00 1.670044E+07
+ 14.00 1.487087E+07
+ 15.00 1.334820E+07
+ 17.00 1.133752E+07
+ 20.00 9.171730E+06
+ 25.00 7.362519E+06
+ 30.00 6.152600E+06
+ 40.00 5.147500E+06
+ 50.00 4.568342E+06
+ 60.00 4.143850E+06
+ 80.00 3.707899E+06
diff --git a/PyCool/TODO b/PyCool/TODO
new file mode 100644
index 0000000..493d1a8
--- /dev/null
+++ b/PyCool/TODO
@@ -0,0 +1,42 @@
+
+
+1) calculer le nbre d'elts
+
+ void compute_densities(double T,double X,double *pn_H, double *pn_HI,double *pn_HII,double *pn_HEI,double *pn_HEII,double *pn_HEIII,double *pn_E,double *pmu)
+
+ void compute_cooling_from_T_and_Nh(double T,double X,double n_H,
+ double *c1,double *c2,double *c3,double *c4,double *c5,double *c6,double *c7,double *c8,double *c9,
+ double *c10,double *c11,double *c12,double *c13,double *h1, double *h2, double *h3, double *h4)
+
+
+
+--------------------------------------------------------------------------
+
+* scripts qui mettent en place les tables de cooling (sutherland+dopita+maio)
+
+- cooling_total
+
+- plot from table, as a fct of Fe/H
+
+
+
+
+
+* scripts qui plotent le tout en fct de Fe/H mais aussi Z
+
+
+
+* meme chose pour wiersma
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PyCool/scripts/Readme b/PyCool/scripts/Readme
new file mode 100644
index 0000000..37e6810
--- /dev/null
+++ b/PyCool/scripts/Readme
@@ -0,0 +1,77 @@
+###############################################################
+# cooling uv heating
+
+# test
+./pycool_init
+
+# plot number of ions as a function of Temprature
+# for a given z and n_H
+
+./pycool_NvsT
+
+
+# plot cooling functions as a function of temperature
+# for a given z and n_H
+
+./pycool_LHvsT
+
+
+
+A FAIRE
+-------
+
+ - ploter les valeurs de Gamma pour le flux UV,
+ comparer avec les tables de Hardt & Madau
+
+
+idee:
+----
+
+--> faire des tables hdf5
+ dep : Redshift, n_H
+
+ combiner :
+ - wiersma pour > 4
+ - heating (Katz) T<4
+ - cooling (Maio) T<4
+
+ ... utiliser touts les ions pour ameliorer mu
+
+
+
+###############################################################
+# cooling with metals
+
+
+# check init
+./pycool_init_cooling_with_metals # ok, init with metals
+
+# compute cooling for a given entropy, density, metalicity
+./pycool_compute_cooling_with_metals
+
+# plot lambda
+./pycool_plot_cooling_with_metals --coolingfile cooling.dat
+
+
+
+###############################################################
+# cooling from hdf5 tables ()
+
+# check init
+./pycool_init_cooling_from_hdf5
+
+# get lamda
+./pycool_get_cooling_from_hdf5
+
+
+# plot lambda
+./pycool_plot_cooling_from_hdf5 # Lambda, as a fct of temperature
+
+./pycool_plot_cooling_from_hdf5_bis # Lambda, as a fct of redshift
+
+
+
+
+
+
+
diff --git a/PyCool/scripts/cooling.dat b/PyCool/scripts/cooling.dat
new file mode 100644
index 0000000..61b33d2
--- /dev/null
+++ b/PyCool/scripts/cooling.dat
@@ -0,0 +1,1543 @@
+-3.0 0.5 0.5
+ 0.0 8.5 0.05
+ 0.00181
+ 9 171
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.996
+ -39.987
+ -39.963
+ -39.906
+ -39.799
+ -39.640
+ -39.442
+ -39.229
+ -39.016
+ -38.804
+ -38.565
+ -38.223
+ -37.723
+ -37.131
+ -36.533
+ -35.968
+ -35.443
+ -34.960
+ -34.516
+ -34.108
+ -33.733
+ -33.388
+ -33.071
+ -32.779
+ -32.508
+ -32.257
+ -32.024
+ -31.805
+ -31.599
+ -31.404
+ -31.219
+ -31.041
+ -30.869
+ -30.701
+ -30.537
+ -30.375
+ -30.215
+ -30.055
+ -29.894
+ -29.733
+ -29.570
+ -29.405
+ -29.239
+ -29.071
+ -28.901
+ -28.730
+ -28.557
+ -28.384
+ -28.210
+ -28.038
+ -27.867
+ -27.698
+ -27.534
+ -27.375
+ -27.222
+ -27.078
+ -26.943
+ -26.821
+ -26.712
+ -26.619
+ -26.544
+ -26.490
+ -25.900
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.976
+ -39.713
+ -38.912
+ -37.981
+ -37.127
+ -36.362
+ -35.680
+ -35.072
+ -34.530
+ -34.046
+ -33.615
+ -33.231
+ -32.888
+ -32.583
+ -32.310
+ -32.066
+ -31.849
+ -31.655
+ -31.482
+ -31.327
+ -31.187
+ -31.061
+ -30.945
+ -30.838
+ -30.735
+ -30.636
+ -30.538
+ -30.440
+ -30.341
+ -30.242
+ -30.144
+ -30.048
+ -29.956
+ -29.867
+ -29.782
+ -29.703
+ -29.629
+ -29.559
+ -29.494
+ -29.434
+ -29.377
+ -29.323
+ -29.271
+ -29.220
+ -29.170
+ -29.118
+ -29.063
+ -29.003
+ -28.936
+ -28.860
+ -28.772
+ -28.671
+ -28.556
+ -28.430
+ -28.292
+ -28.145
+ -27.991
+ -27.834
+ -27.676
+ -27.518
+ -27.363
+ -27.214
+ -27.072
+ -26.939
+ -26.817
+ -26.709
+ -26.617
+ -26.542
+ -26.488
+ -25.899
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.928
+ -39.402
+ -38.437
+ -37.484
+ -36.627
+ -35.862
+ -35.180
+ -34.572
+ -34.030
+ -33.546
+ -33.115
+ -32.731
+ -32.388
+ -32.083
+ -31.810
+ -31.566
+ -31.349
+ -31.155
+ -30.982
+ -30.827
+ -30.687
+ -30.561
+ -30.445
+ -30.338
+ -30.235
+ -30.136
+ -30.038
+ -29.940
+ -29.841
+ -29.743
+ -29.645
+ -29.549
+ -29.457
+ -29.369
+ -29.285
+ -29.207
+ -29.134
+ -29.066
+ -29.003
+ -28.945
+ -28.891
+ -28.841
+ -28.795
+ -28.752
+ -28.711
+ -28.671
+ -28.632
+ -28.593
+ -28.551
+ -28.506
+ -28.454
+ -28.394
+ -28.323
+ -28.239
+ -28.142
+ -28.030
+ -27.906
+ -27.771
+ -27.630
+ -27.485
+ -27.340
+ -27.197
+ -27.059
+ -26.929
+ -26.810
+ -26.703
+ -26.612
+ -26.538
+ -26.485
+ -25.895
+ -24.678
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.025
+ -22.125
+ -22.235
+ -22.320
+ -22.385
+ -22.465
+ -22.530
+ -22.570
+ -22.560
+ -22.475
+ -22.330
+ -22.180
+ -22.100
+ -22.105
+ -22.170
+ -22.245
+ -22.320
+ -22.375
+ -22.425
+ -22.460
+ -22.490
+ -22.515
+ -22.560
+ -22.660
+ -22.785
+ -22.890
+ -22.950
+ -22.990
+ -23.005
+ -23.025
+ -23.055
+ -23.100
+ -23.140
+ -23.160
+ -23.165
+ -23.180
+ -23.180
+ -23.175
+ -23.175
+ -23.175
+ -23.175
+ -23.190
+ -23.190
+ -23.185
+ -23.180
+ -23.170
+ -23.155
+ -23.145
+ -23.130
+ -23.120
+ -23.100
+ -23.085
+ -23.070
+ -23.055
+ -23.035
+ -23.020
+ -23.005
+ -22.985
+ -22.965
+ -22.945
+ -22.925
+ -22.905
+ -22.885
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.755
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.645
+ -22.620
+ -22.600
+ -22.580
+ -22.555
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.989
+ -39.803
+ -38.985
+ -37.945
+ -36.985
+ -36.127
+ -35.362
+ -34.680
+ -34.072
+ -33.530
+ -33.046
+ -32.615
+ -32.231
+ -31.888
+ -31.583
+ -31.310
+ -31.066
+ -30.849
+ -30.655
+ -30.482
+ -30.327
+ -30.187
+ -30.061
+ -29.945
+ -29.838
+ -29.735
+ -29.636
+ -29.538
+ -29.440
+ -29.341
+ -29.243
+ -29.145
+ -29.050
+ -28.957
+ -28.869
+ -28.786
+ -28.708
+ -28.635
+ -28.568
+ -28.506
+ -28.448
+ -28.396
+ -28.347
+ -28.303
+ -28.262
+ -28.224
+ -28.189
+ -28.156
+ -28.125
+ -28.095
+ -28.064
+ -28.032
+ -27.998
+ -27.959
+ -27.913
+ -27.857
+ -27.791
+ -27.711
+ -27.617
+ -27.511
+ -27.395
+ -27.272
+ -27.146
+ -27.021
+ -26.900
+ -26.787
+ -26.685
+ -26.597
+ -26.525
+ -26.473
+ -25.888
+ -24.672
+ -23.529
+ -22.630
+ -22.120
+ -21.980
+ -22.020
+ -22.120
+ -22.230
+ -22.310
+ -22.370
+ -22.440
+ -22.490
+ -22.510
+ -22.490
+ -22.400
+ -22.270
+ -22.130
+ -22.050
+ -22.050
+ -22.100
+ -22.160
+ -22.210
+ -22.230
+ -22.250
+ -22.260
+ -22.260
+ -22.260
+ -22.300
+ -22.420
+ -22.590
+ -22.740
+ -22.820
+ -22.860
+ -22.870
+ -22.890
+ -22.930
+ -23.000
+ -23.060
+ -23.090
+ -23.100
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.130
+ -23.150
+ -23.160
+ -23.160
+ -23.160
+ -23.150
+ -23.140
+ -23.130
+ -23.120
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.050
+ -23.030
+ -23.010
+ -23.000
+ -22.980
+ -22.960
+ -22.940
+ -22.920
+ -22.900
+ -22.880
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.750
+ -22.730
+ -22.710
+ -22.690
+ -22.669
+ -22.639
+ -22.619
+ -22.599
+ -22.579
+ -22.549
+ -22.529
+ -22.509
+ -22.489
+ -22.459
+ -22.439
+ -22.419
+ -22.389
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.967
+ -39.550
+ -38.515
+ -37.447
+ -36.485
+ -35.627
+ -34.862
+ -34.180
+ -33.572
+ -33.030
+ -32.546
+ -32.115
+ -31.731
+ -31.388
+ -31.083
+ -30.810
+ -30.566
+ -30.349
+ -30.155
+ -29.982
+ -29.827
+ -29.687
+ -29.561
+ -29.445
+ -29.338
+ -29.235
+ -29.136
+ -29.038
+ -28.940
+ -28.841
+ -28.743
+ -28.645
+ -28.550
+ -28.458
+ -28.370
+ -28.286
+ -28.208
+ -28.136
+ -28.068
+ -28.006
+ -27.949
+ -27.897
+ -27.849
+ -27.805
+ -27.765
+ -27.729
+ -27.695
+ -27.664
+ -27.636
+ -27.609
+ -27.585
+ -27.561
+ -27.537
+ -27.512
+ -27.486
+ -27.456
+ -27.421
+ -27.379
+ -27.328
+ -27.267
+ -27.193
+ -27.110
+ -27.017
+ -26.919
+ -26.820
+ -26.723
+ -26.633
+ -26.553
+ -26.487
+ -26.438
+ -25.846
+ -24.637
+ -23.509
+ -22.615
+ -22.110
+ -21.965
+ -22.005
+ -22.095
+ -22.180
+ -22.230
+ -22.260
+ -22.275
+ -22.275
+ -22.245
+ -22.195
+ -22.105
+ -21.995
+ -21.880
+ -21.810
+ -21.795
+ -21.815
+ -21.840
+ -21.855
+ -21.850
+ -21.845
+ -21.835
+ -21.820
+ -21.810
+ -21.850
+ -21.975
+ -22.170
+ -22.345
+ -22.445
+ -22.485
+ -22.495
+ -22.515
+ -22.565
+ -22.665
+ -22.755
+ -22.800
+ -22.825
+ -22.850
+ -22.860
+ -22.855
+ -22.855
+ -22.865
+ -22.900
+ -22.945
+ -22.980
+ -23.000
+ -23.015
+ -23.020
+ -23.024
+ -23.024
+ -23.024
+ -23.024
+ -23.014
+ -23.009
+ -22.994
+ -22.984
+ -22.969
+ -22.954
+ -22.949
+ -22.939
+ -22.924
+ -22.909
+ -22.894
+ -22.874
+ -22.859
+ -22.839
+ -22.824
+ -22.804
+ -22.784
+ -22.764
+ -22.739
+ -22.719
+ -22.699
+ -22.678
+ -22.658
+ -22.628
+ -22.608
+ -22.588
+ -22.568
+ -22.543
+ -22.518
+ -22.498
+ -22.478
+ -22.453
+ -22.428
+ -22.408
+ -22.383
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.903
+ -39.171
+ -38.024
+ -36.948
+ -35.986
+ -35.127
+ -34.362
+ -33.680
+ -33.072
+ -32.530
+ -32.046
+ -31.615
+ -31.231
+ -30.888
+ -30.583
+ -30.310
+ -30.066
+ -29.849
+ -29.655
+ -29.482
+ -29.327
+ -29.187
+ -29.061
+ -28.945
+ -28.838
+ -28.735
+ -28.636
+ -28.538
+ -28.440
+ -28.341
+ -28.243
+ -28.145
+ -28.050
+ -27.958
+ -27.870
+ -27.786
+ -27.708
+ -27.636
+ -27.569
+ -27.507
+ -27.450
+ -27.398
+ -27.350
+ -27.306
+ -27.266
+ -27.230
+ -27.197
+ -27.167
+ -27.139
+ -27.114
+ -27.091
+ -27.070
+ -27.050
+ -27.031
+ -27.012
+ -26.993
+ -26.973
+ -26.950
+ -26.924
+ -26.893
+ -26.856
+ -26.811
+ -26.759
+ -26.699
+ -26.634
+ -26.566
+ -26.499
+ -26.436
+ -26.383
+ -26.342
+ -25.788
+ -24.601
+ -23.489
+ -22.600
+ -22.100
+ -21.950
+ -21.990
+ -22.070
+ -22.130
+ -22.150
+ -22.150
+ -22.110
+ -22.060
+ -21.980
+ -21.900
+ -21.810
+ -21.720
+ -21.630
+ -21.570
+ -21.540
+ -21.530
+ -21.520
+ -21.500
+ -21.470
+ -21.440
+ -21.410
+ -21.380
+ -21.360
+ -21.400
+ -21.530
+ -21.750
+ -21.950
+ -22.070
+ -22.110
+ -22.120
+ -22.140
+ -22.200
+ -22.330
+ -22.450
+ -22.510
+ -22.550
+ -22.580
+ -22.600
+ -22.590
+ -22.590
+ -22.610
+ -22.670
+ -22.739
+ -22.799
+ -22.839
+ -22.869
+ -22.889
+ -22.909
+ -22.919
+ -22.928
+ -22.938
+ -22.938
+ -22.938
+ -22.928
+ -22.918
+ -22.908
+ -22.898
+ -22.897
+ -22.897
+ -22.887
+ -22.877
+ -22.867
+ -22.847
+ -22.836
+ -22.816
+ -22.806
+ -22.786
+ -22.766
+ -22.746
+ -22.726
+ -22.706
+ -22.685
+ -22.665
+ -22.645
+ -22.615
+ -22.595
+ -22.575
+ -22.555
+ -22.535
+ -22.505
+ -22.485
+ -22.464
+ -22.444
+ -22.414
+ -22.394
+ -22.374
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.990
+ -39.747
+ -38.718
+ -37.527
+ -36.448
+ -35.486
+ -34.627
+ -33.862
+ -33.180
+ -32.572
+ -32.030
+ -31.546
+ -31.115
+ -30.731
+ -30.388
+ -30.083
+ -29.810
+ -29.566
+ -29.349
+ -29.155
+ -28.982
+ -28.827
+ -28.687
+ -28.561
+ -28.445
+ -28.338
+ -28.235
+ -28.136
+ -28.038
+ -27.940
+ -27.841
+ -27.743
+ -27.645
+ -27.550
+ -27.458
+ -27.370
+ -27.286
+ -27.208
+ -27.136
+ -27.069
+ -27.007
+ -26.950
+ -26.898
+ -26.850
+ -26.806
+ -26.767
+ -26.731
+ -26.698
+ -26.668
+ -26.640
+ -26.616
+ -26.593
+ -26.573
+ -26.554
+ -26.537
+ -26.520
+ -26.505
+ -26.490
+ -26.475
+ -26.459
+ -26.442
+ -26.423
+ -26.401
+ -26.375
+ -26.345
+ -26.311
+ -26.274
+ -26.234
+ -26.195
+ -26.160
+ -26.132
+ -25.648
+ -24.480
+ -23.419
+ -22.560
+ -22.070
+ -21.920
+ -21.940
+ -22.000
+ -22.020
+ -22.000
+ -21.940
+ -21.870
+ -21.780
+ -21.690
+ -21.590
+ -21.500
+ -21.410
+ -21.330
+ -21.270
+ -21.230
+ -21.220
+ -21.230
+ -21.220
+ -21.190
+ -21.160
+ -21.140
+ -21.120
+ -21.100
+ -21.140
+ -21.270
+ -21.500
+ -21.700
+ -21.810
+ -21.850
+ -21.860
+ -21.870
+ -21.930
+ -22.050
+ -22.150
+ -22.190
+ -22.220
+ -22.240
+ -22.240
+ -22.240
+ -22.230
+ -22.259
+ -22.339
+ -22.439
+ -22.529
+ -22.588
+ -22.638
+ -22.658
+ -22.688
+ -22.707
+ -22.727
+ -22.747
+ -22.756
+ -22.746
+ -22.736
+ -22.735
+ -22.725
+ -22.725
+ -22.744
+ -22.754
+ -22.763
+ -22.762
+ -22.762
+ -22.751
+ -22.741
+ -22.730
+ -22.720
+ -22.709
+ -22.689
+ -22.669
+ -22.648
+ -22.638
+ -22.618
+ -22.597
+ -22.577
+ -22.556
+ -22.536
+ -22.516
+ -22.486
+ -22.465
+ -22.445
+ -22.425
+ -22.404
+ -22.384
+ -22.364
+ -22.334
+ -22.313
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.969
+ -39.455
+ -38.234
+ -37.028
+ -35.949
+ -34.986
+ -34.127
+ -33.362
+ -32.680
+ -32.072
+ -31.530
+ -31.046
+ -30.615
+ -30.231
+ -29.888
+ -29.583
+ -29.310
+ -29.066
+ -28.849
+ -28.655
+ -28.482
+ -28.327
+ -28.187
+ -28.061
+ -27.945
+ -27.838
+ -27.735
+ -27.636
+ -27.538
+ -27.440
+ -27.341
+ -27.243
+ -27.145
+ -27.050
+ -26.958
+ -26.870
+ -26.786
+ -26.708
+ -26.636
+ -26.569
+ -26.507
+ -26.450
+ -26.398
+ -26.350
+ -26.307
+ -26.267
+ -26.231
+ -26.198
+ -26.168
+ -26.141
+ -26.116
+ -26.094
+ -26.074
+ -26.055
+ -26.039
+ -26.023
+ -26.009
+ -25.996
+ -25.983
+ -25.971
+ -25.959
+ -25.947
+ -25.934
+ -25.919
+ -25.904
+ -25.886
+ -25.867
+ -25.846
+ -25.825
+ -25.805
+ -25.787
+ -25.406
+ -24.256
+ -23.279
+ -22.470
+ -21.990
+ -21.840
+ -21.850
+ -21.870
+ -21.840
+ -21.770
+ -21.660
+ -21.560
+ -21.450
+ -21.340
+ -21.240
+ -21.140
+ -21.050
+ -20.970
+ -20.910
+ -20.870
+ -20.870
+ -20.900
+ -20.910
+ -20.890
+ -20.860
+ -20.850
+ -20.840
+ -20.840
+ -20.870
+ -21.010
+ -21.230
+ -21.430
+ -21.540
+ -21.580
+ -21.590
+ -21.590
+ -21.640
+ -21.740
+ -21.810
+ -21.830
+ -21.840
+ -21.840
+ -21.830
+ -21.819
+ -21.819
+ -21.849
+ -21.949
+ -22.079
+ -22.188
+ -22.268
+ -22.317
+ -22.347
+ -22.376
+ -22.406
+ -22.435
+ -22.454
+ -22.474
+ -22.473
+ -22.453
+ -22.443
+ -22.442
+ -22.451
+ -22.480
+ -22.518
+ -22.546
+ -22.565
+ -22.583
+ -22.591
+ -22.589
+ -22.588
+ -22.577
+ -22.575
+ -22.564
+ -22.543
+ -22.532
+ -22.511
+ -22.499
+ -22.478
+ -22.458
+ -22.446
+ -22.425
+ -22.404
+ -22.383
+ -22.363
+ -22.342
+ -22.321
+ -22.300
+ -22.279
+ -22.258
+ -22.237
+ -22.216
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.998
+ -39.908
+ -39.049
+ -37.739
+ -36.529
+ -35.449
+ -34.486
+ -33.627
+ -32.862
+ -32.180
+ -31.572
+ -31.030
+ -30.546
+ -30.115
+ -29.731
+ -29.388
+ -29.083
+ -28.810
+ -28.566
+ -28.349
+ -28.155
+ -27.982
+ -27.827
+ -27.687
+ -27.561
+ -27.445
+ -27.338
+ -27.235
+ -27.136
+ -27.038
+ -26.940
+ -26.841
+ -26.743
+ -26.645
+ -26.550
+ -26.458
+ -26.370
+ -26.286
+ -26.208
+ -26.136
+ -26.069
+ -26.007
+ -25.950
+ -25.898
+ -25.850
+ -25.807
+ -25.767
+ -25.731
+ -25.698
+ -25.668
+ -25.641
+ -25.616
+ -25.594
+ -25.574
+ -25.556
+ -25.539
+ -25.524
+ -25.510
+ -25.498
+ -25.486
+ -25.475
+ -25.465
+ -25.455
+ -25.445
+ -25.434
+ -25.424
+ -25.413
+ -25.402
+ -25.389
+ -25.375
+ -25.362
+ -25.350
+ -25.166
+ -24.234
+ -22.978
+ -22.260
+ -21.800
+ -21.640
+ -21.610
+ -21.570
+ -21.480
+ -21.360
+ -21.220
+ -21.090
+ -20.970
+ -20.860
+ -20.750
+ -20.650
+ -20.570
+ -20.500
+ -20.430
+ -20.390
+ -20.390
+ -20.420
+ -20.420
+ -20.400
+ -20.370
+ -20.350
+ -20.340
+ -20.340
+ -20.370
+ -20.510
+ -20.730
+ -20.930
+ -21.050
+ -21.090
+ -21.090
+ -21.090
+ -21.140
+ -21.240
+ -21.320
+ -21.340
+ -21.350
+ -21.350
+ -21.339
+ -21.329
+ -21.319
+ -21.349
+ -21.459
+ -21.589
+ -21.708
+ -21.798
+ -21.857
+ -21.896
+ -21.926
+ -21.955
+ -21.994
+ -22.033
+ -22.052
+ -22.052
+ -22.041
+ -22.031
+ -22.030
+ -22.049
+ -22.097
+ -22.144
+ -22.191
+ -22.237
+ -22.273
+ -22.289
+ -22.315
+ -22.321
+ -22.327
+ -22.324
+ -22.321
+ -22.317
+ -22.314
+ -22.301
+ -22.288
+ -22.275
+ -22.262
+ -22.240
+ -22.227
+ -22.214
+ -22.192
+ -22.179
+ -22.165
+ -22.143
+ -22.121
+ -22.108
+ -22.086
+ -22.064
+ -22.042
diff --git a/PyCool/scripts/pycool_LHvsT b/PyCool/scripts/pycool_LHvsT
new file mode 100755
index 0000000..fc1a0c4
--- /dev/null
+++ b/PyCool/scripts/pycool_LHvsT
@@ -0,0 +1,242 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+files,opt = parse_options()
+
+Redshift=10
+X=0.76
+n_H=2.8e-3
+
+
+# do
+cooling.init_cooling()
+
+# get parameters
+params = cooling.GetParameters()
+
+
+# set the redshift and compute flux, a.s.o
+cooling.init_from_new_redshift(Redshift)
+
+# compute elements densities
+
+logTs = arange(1,8,0.01)
+n = len(logTs)
+
+n_Hs = zeros(n)
+n_HIs = zeros(n)
+n_HIIs = zeros(n)
+n_HEIs = zeros(n)
+n_HEIIs = zeros(n)
+n_HEIIIs = zeros(n)
+n_Es= zeros(n)
+mus = zeros(n)
+
+
+c1s = zeros(n)
+c2s = zeros(n)
+c3s = zeros(n)
+c4s = zeros(n)
+c5s = zeros(n)
+c6s = zeros(n)
+c7s = zeros(n)
+c8s = zeros(n)
+c9s = zeros(n)
+c10s = zeros(n)
+c11s = zeros(n)
+c12s = zeros(n)
+c13s = zeros(n)
+h1s = zeros(n)
+h2s = zeros(n)
+h3s = zeros(n)
+h4s = zeros(n)
+
+
+
+
+for i,logT in enumerate(logTs):
+
+ T=10**logT
+
+ n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu = cooling.compute_densities(T,X,n_H)
+
+ c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4=cooling.compute_cooling(T,X,n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu)
+
+ n_Hs[i]= n_H
+ n_HIs[i]= n_HI
+ n_HIIs[i]= n_HII
+ n_HEIs[i]= n_HEI
+ n_HEIIs[i]= n_HEII
+ n_HEIIIs[i]= n_HEIII
+ n_Es[i]= n_E
+ mus[i]= mu
+
+ c1s [i]= c1
+ c2s[i]= c2
+ c3s[i]= c3
+ c4s[i]= c4
+ c5s[i]= c5
+ c6s[i]= c6
+ c7s[i]= c7
+ c8s[i]= c8
+ c9s[i]= c9
+ c10s[i]= c10
+ c11s[i]= c11
+ c12s[i]= c12
+ c13s[i]= c13
+ h1s[i]= h1
+ h2s[i]= h2
+ h3s[i]= h3
+ h4s[i]= h4
+
+
+
+
+############################
+# plot
+############################
+
+import Ptools as pt
+
+vz=-30
+
+chs = c1s+c2s+c3s+c4s+c5s+c6s+c7s+c8s+c9s+c10s+c11s+c12s+c13s - (h1s+h2s+h3s+h4s)
+chs = fabs(chs)
+
+
+
+logc1s = where(c1s >0,log10(c1s),vz)
+logc2s = where(c2s >0,log10(c2s),vz)
+logc3s = where(c3s >0,log10(c3s),vz)
+logc4s = where(c4s >0,log10(c4s),vz)
+logc5s = where(c5s >0,log10(c5s),vz)
+logc6s = where(c6s >0,log10(c6s),vz)
+logc7s = where(c7s >0,log10(c7s),vz)
+logc8s = where(c8s >0,log10(c8s),vz)
+logc9s = where(c9s >0,log10(c9s),vz)
+logc10s = where(c10s>0,log10(c10s),vz)
+logc11s = where(c11s>0,log10(c11s),vz)
+logc12s = where(c12s>0,log10(c12s),vz)
+logc13s = where(c13s>0,log10(c13s),vz)
+
+
+logh1s = where(h1s >0,log10(h1s),vz)
+logh2s = where(h2s >0,log10(h2s),vz)
+logh3s = where(h3s >0,log10(h3s),vz)
+logh4s = where(h4s >0,log10(h4s),vz)
+
+logchs = where(chs >0,log10(chs),vz)
+
+
+pt.plot(logTs,logc1s)
+pt.plot(logTs,logc2s)
+pt.plot(logTs,logc3s)
+pt.plot(logTs,logc4s)
+pt.plot(logTs,logc5s)
+pt.plot(logTs,logc6s)
+pt.plot(logTs,logc7s)
+pt.plot(logTs,logc8s)
+pt.plot(logTs,logc9s)
+pt.plot(logTs,logc10s)
+pt.plot(logTs,logc11s)
+pt.plot(logTs,logc12s)
+pt.plot(logTs,logc13s)
+
+pt.plot(logTs,logh1s,'--')
+pt.plot(logTs,logh2s,'--')
+pt.plot(logTs,logh3s,'--')
+pt.plot(logTs,logh4s,'--')
+
+
+pt.plot(logTs,logchs,'k-')
+
+
+pt.axis([3.5,8,-25,-21])
+pt.axis([0,8,-30,-20])
+
+pt.show()
+
+
+
+
+
diff --git a/PyCool/scripts/pycool_NvsT b/PyCool/scripts/pycool_NvsT
new file mode 100755
index 0000000..68af715
--- /dev/null
+++ b/PyCool/scripts/pycool_NvsT
@@ -0,0 +1,159 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+files,opt = parse_options()
+
+Redshift=2
+T=2e7
+X=0.76
+n_H=1.0
+
+
+# do
+cooling.init_cooling()
+
+# get parameters
+params = cooling.GetParameters()
+
+
+# set the redshift and compute flux, a.s.o
+cooling.init_from_new_redshift(Redshift)
+
+# compute elements densities
+
+logTs = arange(1,7,0.1)
+n = len(logTs)
+
+n_Hs = zeros(n)
+n_HIs = zeros(n)
+n_HIIs = zeros(n)
+n_HEIs = zeros(n)
+n_HEIIs = zeros(n)
+n_HEIIIs = zeros(n)
+n_Es= zeros(n)
+mus = zeros(n)
+
+for i,logT in enumerate(logTs):
+
+ T=10**logT
+
+ n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu = cooling.compute_densities(T,X,n_H)
+
+
+ n_Hs[i]= n_H
+ n_HIs[i]= n_HI
+ n_HIIs[i]= n_HII
+ n_HEIs[i]= n_HEI
+ n_HEIIs[i]= n_HEII
+ n_HEIIIs[i]= n_HEIII
+ n_Es[i]= n_E
+ mus[i]= mu
+
+
+
+############################
+# plot
+############################
+
+import Ptools as pt
+
+
+pt.plot(logTs,n_HIs)
+pt.plot(logTs,n_HIIs)
+pt.plot(logTs,n_HIIs+n_HIs)
+
+pt.plot(logTs,n_HEIs)
+pt.plot(logTs,n_HEIIs)
+pt.plot(logTs,n_HEIIIs)
+pt.plot(logTs,n_HEIs+n_HEIIs+n_HEIIIs)
+
+
+pt.plot(logTs,n_Es,'.')
+pt.plot(logTs,mus,'--')
+
+pt.show()
+
+
+
+
+
diff --git a/PyCool/scripts/pycool_compute_cooling_with_metals b/PyCool/scripts/pycool_compute_cooling_with_metals
new file mode 100755
index 0000000..303667b
--- /dev/null
+++ b/PyCool/scripts/pycool_compute_cooling_with_metals
@@ -0,0 +1,134 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+
+param = {}
+param["CoolingType"]=2
+param["CutofCoolingTemperature"]=1e1
+param["InitGasMetallicity"]=-10
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["HubbleParam"]=1.0
+'''
+CoolingType
+CutofCoolingTemperature
+InitGasMetallicity
+CoolingParameters_FeHSolar
+'''
+
+
+
+files,opt = parse_options()
+
+
+# do
+cooling.init_cooling('cooling.dat',param)
+
+# get parameters
+params = cooling.GetParameters()
+print params
+
+
+cooling.init_cooling_with_metals()
+
+#cooling.check_cooling_table_with_metals()
+
+
+density=4.2245e-06
+entropy=0.788347
+metal=0
+
+
+print entropy
+energy = cooling.Energy_from_Entropy(entropy,density,1)
+print energy
+print cooling.Entropy_from_Energy(energy,density,1)
+print
+
+l = cooling.lambda_fct(density,entropy,metal)
+
+
+print l
+
+
+
diff --git a/PyCool/scripts/pycool_get_cooling_from_hdf5 b/PyCool/scripts/pycool_get_cooling_from_hdf5
new file mode 100755
index 0000000..2f36002
--- /dev/null
+++ b/PyCool/scripts/pycool_get_cooling_from_hdf5
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+from numpy import *
+import PyCool.compute_lambda_interface as cl
+import sys
+import Ptools as pt
+
+
+# firest init
+cl.updateCoolingTable();
+
+
+
+
+nHe = 0.16
+rho_H = 0.2
+z = 8 # redsift
+metalicity = 0.01; #
+
+
+
+T_s = 10**arange(1,8,0.01)
+Lambda_n_s = zeros(len(T_s),float32)
+
+T = 3e4
+
+
+
+# set redshift
+cl.SetRedshift(z)
+cl.checkRedshiftForUpdate();
+
+
+
+Lambda_n =cl.computeLambda(rho_H, T, nHe, metalicity)
+print " ",T,Lambda_n
+
diff --git a/PyCool/scripts/pycool_init b/PyCool/scripts/pycool_init
new file mode 100755
index 0000000..d6d9c24
--- /dev/null
+++ b/PyCool/scripts/pycool_init
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+files,opt = parse_options()
+
+
+# do
+cooling.init_cooling()
+
+# get parameters
+params = cooling.GetParameters()
+
+
+# set the redshift and compute flux, a.s.o
+cooling.init_from_new_redshift(5)
+
+# compute elements densities
+T=2e4
+X=0.76
+n_H=1.0
+
+
+n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu = cooling.compute_densities(T,X,n_H)
+print n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu
+
+c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4=cooling.compute_cooling(T,X,n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu)
+
+print c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4
+
+
diff --git a/PyCool/scripts/pycool_init_cooling_from_hdf5 b/PyCool/scripts/pycool_init_cooling_from_hdf5
new file mode 100755
index 0000000..0953fe1
--- /dev/null
+++ b/PyCool/scripts/pycool_init_cooling_from_hdf5
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+
+from numpy import *
+import PyCool.compute_lambda_interface as cl
+
+import Ptools as pt
+import sys
+
+cl.updateCoolingTable();
+cl.freeMemory();
+
diff --git a/PyCool/scripts/pycool_init_cooling_with_metals b/PyCool/scripts/pycool_init_cooling_with_metals
new file mode 100755
index 0000000..74c4c6c
--- /dev/null
+++ b/PyCool/scripts/pycool_init_cooling_with_metals
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+
+param = {}
+param["CoolingType"]=2
+param["CutofCoolingTemperature"]=1e1
+param["InitGasMetallicity"]=-10
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["HubbleParam"]=1.0
+'''
+CoolingType
+CutofCoolingTemperature
+InitGasMetallicity
+CoolingParameters_FeHSolar
+'''
+
+
+
+files,opt = parse_options()
+
+
+# do
+cooling.init_cooling('cooling.dat',param)
+
+# get parameters
+params = cooling.GetParameters()
+print params
+
+
+cooling.init_cooling_with_metals()
+
diff --git a/PyCool/scripts/pycool_integrate_cooling b/PyCool/scripts/pycool_integrate_cooling
new file mode 100755
index 0000000..a3b3010
--- /dev/null
+++ b/PyCool/scripts/pycool_integrate_cooling
@@ -0,0 +1,160 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+
+
+param = {}
+param["CoolingType"]=2
+param["CutofCoolingTemperature"]=1e1
+param["InitGasMetallicity"]=-10
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["CoolingParameters_FeHSolar"]=0.00176604
+param["HubbleParam"]=1.0
+'''
+CoolingType
+CutofCoolingTemperature
+InitGasMetallicity
+CoolingParameters_FeHSolar
+'''
+
+
+
+files,opt = parse_options()
+
+
+# do
+cooling.init_cooling('cooling.dat',param)
+
+# get parameters
+params = cooling.GetParameters()
+print params
+
+
+cooling.init_cooling_with_metals()
+
+#cooling.check_cooling_table_with_metals()
+
+
+density=4.2245e-06 * 100
+entropy=0.788347
+metal=0
+
+n = 100
+energys = zeros(n,float)
+ts = zeros(n,float)
+ls = zeros(n,float
+)
+energy = cooling.Energy_from_Entropy(entropy,density,1)
+t = 0.
+
+dt = 0.1
+
+
+for i in xrange(n):
+
+ energys[i]=energy
+ ts[i]=t
+
+ l = cooling.lambda_fct(density,entropy,metal)
+ dudt = -l
+
+ ls[i]=l
+
+ energy = energy + dudt * dt
+ t = t + dt
+
+ print cooling.Temperature_from_Energy(energy)
+
+
+
+################################
+# plot
+################################
+
+#print ts
+#print energys
+#print ls
+
+pt.plot(ts,energys)
+pt.show()
+
+
diff --git a/PyCool/scripts/pycool_plot_cooling_from_hdf5 b/PyCool/scripts/pycool_plot_cooling_from_hdf5
new file mode 100755
index 0000000..3ed32f4
--- /dev/null
+++ b/PyCool/scripts/pycool_plot_cooling_from_hdf5
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+from numpy import *
+import PyCool.compute_lambda_interface as cl
+import sys
+import Ptools as pt
+
+
+
+nHe = 0.16
+rho_H = 1e-4
+metalicity = 0.01; #
+z = 8
+
+
+T_s = 10**arange(1,8,0.01)
+Lambda_n_s = zeros(len(T_s),float32)
+
+
+# read tables
+cl.updateCoolingTable();
+
+cl.SetRedshift(z)
+cl.checkRedshiftForUpdate();
+
+
+
+for i,T in enumerate(T_s):
+ Lambda_n_s[i] = fabs(cl.computeLambda(rho_H, T, nHe, metalicity))
+ print " ",i,T,Lambda_n_s[i]
+
+
+
+
+
+
+########################################################################
+# plot
+########################################################################
+
+import Ptools as pt
+
+pt.axis([1,8,-30,-20])
+pt.xlabel('log T')
+pt.ylabel('log Lambda/nH2')
+
+pt.plot(log10(T_s),log10(Lambda_n_s))
+
+
+#pt.legend(loc=4)
+pt.show()
+
+
+cl.freeMemory();
+
diff --git a/PyCool/scripts/pycool_plot_cooling_from_hdf5_bis b/PyCool/scripts/pycool_plot_cooling_from_hdf5_bis
new file mode 100755
index 0000000..e3bb43e
--- /dev/null
+++ b/PyCool/scripts/pycool_plot_cooling_from_hdf5_bis
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+from numpy import *
+import PyCool.compute_lambda_interface as cl
+import sys
+import Ptools as pt
+
+
+# read tables
+cl.updateCoolingTable();
+
+nHe = 0.16
+rho_H = 0.2
+#z = 8. # redshift ???? not used !!!
+metalicity = 0.01; #
+
+
+
+Z_s = arange(0,20,0.1)
+Lambda_n_s = zeros(len(Z_s),float32)
+
+T = 1e5
+
+
+for i,Z in enumerate(Z_s):
+
+ cl.SetRedshift(Z)
+ cl.checkRedshiftForUpdate();
+
+ Lambda_n_s[i] = fabs(cl.computeLambda(rho_H, T, nHe, metalicity))
+
+
+ print " ",i,T,Lambda_n_s[i]
+
+
+
+
+
+
+########################################################################
+# plot
+########################################################################
+
+import Ptools as pt
+
+pt.axis([0,20,-30,-20])
+pt.xlabel('Z')
+pt.ylabel('log Lambda/nH2')
+
+pt.plot(Z_s,log10(Lambda_n_s))
+
+
+#pt.legend(loc=4)
+pt.show()
+
+
+cl.freeMemory();
+
diff --git a/PyCool/scripts/pycool_plot_cooling_with_metals b/PyCool/scripts/pycool_plot_cooling_with_metals
new file mode 100755
index 0000000..45d10fd
--- /dev/null
+++ b/PyCool/scripts/pycool_plot_cooling_with_metals
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+
+
+from optparse import OptionParser
+import Ptools as pt
+from pNbody import *
+from pNbody import units
+import string
+
+from scipy import optimize
+
+from PyCool import cooling
+
+
+UnitLength_in_cm = 3.085e+21
+UnitMass_in_g = 1.989e+43
+UnitVelocity_in_cm_per_s = 20725573.785998672
+UnitTime_in_s = 148849920000000.0
+
+
+def parse_options():
+
+
+ usage = "usage: %prog [options] file"
+ parser = OptionParser(usage=usage)
+
+ parser = pt.add_postscript_options(parser)
+ parser = pt.add_ftype_options(parser)
+ parser = pt.add_reduc_options(parser)
+ parser = pt.add_center_options(parser)
+ parser = pt.add_select_options(parser)
+ parser = pt.add_cmd_options(parser)
+ parser = pt.add_display_options(parser)
+ parser = pt.add_info_options(parser)
+ parser = pt.add_limits_options(parser)
+ parser = pt.add_log_options(parser)
+
+ parser.add_option("--x",
+ action="store",
+ dest="x",
+ type="string",
+ default = 'r',
+ help="x value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--y",
+ action="store",
+ dest="y",
+ type="string",
+ default = 'T',
+ help="y value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--z",
+ action="store",
+ dest="z",
+ type="string",
+ default = None,
+ help="z value to plot",
+ metavar=" STRING")
+
+ parser.add_option("--legend",
+ action="store_true",
+ dest="legend",
+ default = False,
+ help="add a legend")
+
+ parser.add_option("--coolingfile",
+ action="store",
+ dest="coolingfile",
+ default = "cooling.dat",
+ help="cooling file")
+
+ (options, args) = parser.parse_args()
+
+
+ #pt.check_files_number(args)
+
+ files = args
+
+ return files,options
+
+
+########################################################################
+# MAIN
+########################################################################
+
+FeHSolar=0.00176604
+
+param = {}
+param["CoolingType"]=2
+param["CutofCoolingTemperature"]=1e1
+param["InitGasMetallicity"]=-10
+param["CoolingParameters_FeHSolar"]=FeHSolar
+param["HubbleParam"]=1.0
+
+
+files,opt = parse_options()
+
+
+# init cooling using cooling file
+cooling.init_cooling(opt.coolingfile,param)
+
+# get parameters
+#params = cooling.GetParameters()
+
+# init cooling
+cooling.init_cooling_with_metals()
+
+#check tables
+#cooling.check_cooling_table_with_metals()
+
+
+
+########################################################################
+# plot
+########################################################################
+
+import Ptools as pt
+
+pt.axis([1,8,-30,-20])
+pt.xlabel('log T')
+pt.ylabel('log Lambda/nH2')
+
+
+#Z_fe_s = [0.5,0.,-0.5,-1.,-1.5,-2,-2.5,-3.,-10.]
+
+
+Metals = array([1e-3,1e-4,1e-5,1e-6])
+Z_fe_s = log10( (Metals+1e-10)/FeHSolar )
+
+
+
+T_s = 10**arange(1,8,0.01)
+
+
+for Z_fe in Z_fe_s:
+
+
+ Lambda_n_s = zeros(len(T_s))
+
+
+ for i,T in enumerate(T_s):
+
+
+ Metal = FeHSolar*(10**Z_fe - 1e-10) # mass fraction of Fe
+ Lambda_n = cooling.cooling_function_with_metals(T,Metal)
+ Lambda_n_s[i] = Lambda_n
+
+
+
+
+
+
+ pt.plot(log10(T_s),log10(Lambda_n_s),label="[Fe/H]=%g"%Z_fe)
+
+
+
+
+
+
+pt.legend(loc=4)
+pt.show()
+
+
+
+
+
diff --git a/PyCool/scripts/test_lambda_depraz.py b/PyCool/scripts/test_lambda_depraz.py
new file mode 100644
index 0000000..2e98810
--- /dev/null
+++ b/PyCool/scripts/test_lambda_depraz.py
@@ -0,0 +1,52 @@
+import h5py
+from numpy import *
+import PyCool.compute_lambda_interface as cl
+
+import Ptools as pt
+import sys
+
+print('launching python tests for cooling')
+
+#function asking for inputs
+
+#function arguments
+z = 2.0
+rho_H = 0.2
+nHe = 0.16
+metalicity = 0.001;
+
+cl.updateCoolingTable();
+# create vector of data
+T_min = 7e4
+T_max = 1e8
+dT = 1e3
+#T_interval = arange(T_min, T_max, dT)
+
+T_interval = 10**arange(log10(T_min),log10(T_max),0.1)
+
+
+cooling = zeros(len(T_interval),float32)
+for i,T in enumerate(T_interval):
+ cooling[i] = fabs(cl.computeLambda(rho_H, T, nHe, metalicity))
+ print " ",i,T,cooling[i]
+
+
+# plot data
+
+pt.plot(T_interval, cooling)
+pt.loglog()
+
+
+#pt.xlim([T_min, T_max])
+
+
+#pt.xlabel('T [K]')
+#pt.legend(('rho_H='+str(rho_H)+'\nz='+str(z),),loc='best')
+#pt.title('Normalized, net cooling rate ($\Lambda/n_H^2$ [erg s^-1 cm^3])\n')
+pt.show()
+
+#free allocated memory
+cl.freeMemory();
+
+print('program terminated')
+
diff --git a/PyCool/setup.py b/PyCool/setup.py
new file mode 100644
index 0000000..54f0a0c
--- /dev/null
+++ b/PyCool/setup.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+import os,sys
+
+from distutils.core import setup, Extension
+from distutils.sysconfig import get_python_inc
+from distutils.sysconfig import get_python_lib
+
+import glob
+
+'''
+In order to compile with mpi,
+
+export CC=mpicc
+python setup.py build
+
+
+'''
+
+
+
+
+
+incdir = os.path.join(get_python_inc(plat_specific=1), 'numpy')
+libdir = os.path.join(get_python_lib(plat_specific=1), 'numpy')
+
+
+gadget_files=glob.glob("src/*.c")
+
+
+
+
+PYTHON_INC = "/usr/include/python2.6/"
+MPI_DIR = "/usr/lib64/openmpi/lib/"
+MPI_LIB = "mpi"
+MPI_INC = "/usr/include/openmpi-x86_64/"
+H5_LIB = "hdf5"
+
+
+
+setup(name='PyCool',
+ version='0.0',
+ description='Python Cooling code base wrapped around GEAR',
+ author='Yves Revaz',
+ author_email='yves.revaz@epfl.ch',
+ url='http://obswww.unige.ch/~revaz/pNbody',
+ packages=['PyCool'],
+# ext_modules=[
+# Extension('PyGear.gadget', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('NOGRAVITY', '1'),('LONG_X', '1'),('LONG_Y', '1'),('LONG_Z', '0.125')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB] )
+# ]
+# ext_modules=[
+# Extension('PyGear.gadget', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB] )
+# ]
+
+# This is used for turb
+
+# ext_modules=[
+# Extension('PyChem.gadget', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('NOGRAVITY', '1'),('ISOTHERM_EQS', '1'),('ONLY_MASTER_READ_EWALD', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB] )
+# ]
+
+# This is used for normal cooling (cooling_with_metals)
+
+# ext_modules=[
+# Extension('PyCool.cooling', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('CHIMIE', '1'),('COOLING', '1'),('STELLAR_PROP', '1'),('ENTROPYPRED', '1'), ('PYCOOL', '1'),('ONLY_MASTER_READ_EWALD', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB] ),
+# Extension('PyCool.compute_lambda_interface', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('CHIMIE', '1'),('COOLING', '1'),('STELLAR_PROP', '1'),('ENTROPYPRED', '1'), ('PYCOOL', '1'),('ONLY_MASTER_READ_EWALD', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB,H5_LIB] ),
+# ]
+
+
+# This is used for depraz cooling
+
+ ext_modules=[
+ Extension('PyCool.cooling', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('CHIMIE', '1'),('COOLING', '1'),('COOLING_FCT_FROM_HDF5', '1'),('STELLAR_PROP', '1'),('ENTROPYPRED', '1'), ('PYCOOL', '1'),('ONLY_MASTER_READ_EWALD', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB] ),
+ Extension('PyCool.compute_lambda_interface', gadget_files,include_dirs=[MPI_INC,"src/",PYTHON_INC],define_macros=[('PY_INTERFACE', '1'),('UNEQUALSOFTENINGS', '1') ,('PERIODIC', '1'),('PEANOHILBERT', '1'),('CHIMIE', '1'),('COOLING', '1'),('COOLING_FCT_FROM_HDF5', '1'),('STELLAR_PROP', '1'),('ENTROPYPRED', '1'), ('PYCOOL', '1'),('ONLY_MASTER_READ_EWALD', '1')] , library_dirs=[MPI_DIR],libraries=['gsl','gslcblas','m',MPI_LIB,H5_LIB] ),
+ ]
+
+ )
diff --git a/PyCool/src b/PyCool/src
new file mode 120000
index 0000000..5cd551c
--- /dev/null
+++ b/PyCool/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/PyCool/tables_wiersma/.DS_Store b/PyCool/tables_wiersma/.DS_Store
new file mode 100644
index 0000000..c40963f
Binary files /dev/null and b/PyCool/tables_wiersma/.DS_Store differ
diff --git a/PyCool/tables_wiersma/CoolingRoutines/compute_cooling.pro b/PyCool/tables_wiersma/CoolingRoutines/compute_cooling.pro
new file mode 100644
index 0000000..54b7a37
--- /dev/null
+++ b/PyCool/tables_wiersma/CoolingRoutines/compute_cooling.pro
@@ -0,0 +1,407 @@
+function compute_cooling, tablepath, tabletype, redshift, density, temperature, AH, AHe, AC, AN, AO, ANe, AMg, ASi, AS, ACa, AFe, massfrac, help=help
+
+; This routine computes net cooling for a given set of abundances. See
+; test = compute_cooling(/help)
+; for more details
+
+; This is version 100423.
+; Change history:
+; * 08????: Original version
+; * 090512: Fixed issue regarding checking the boundaries of the
+; redshift array, updated reference.
+; * 100423: Clarified help
+;
+; Please refer to Wiersma, Schaye, & Smith 2009, MNRAS, 393, 99
+; for a description of the methods used.
+;
+; For bug reports and questions, please contact
+; Rob Wiersma <wiersma@strw.leidenuniv.nl>
+
+ if keyword_set(help) then begin
+ print
+ print, 'result = compute_cooling(tablepath, tabletype, redshift, density, temperature, AH, AHe, AC, AN, AO, ANe, AMg, ASi, AS, ACa, AFe, /help)'
+ print
+ print, 'This routine calculates the net cooling rate (Lambda/n_H^2 [erg s^-1 cm^3]) given an array of redshifts, densities, temperatures, and abundnces using the cooling tables prepared by Wiersma, Schaye, & Smith (2009). Arrays or single values may be used provided the dimensions are consistent.'
+ print
+ print, 'result: an array of net cooling rates, in (Lambda_net/n_H^2 [erg cm^3 s^-1])'
+ print, 'tablepath: the path containing the coolingtables'
+ print, 'tabletype can be:'
+ print, ' normal: interpolate in redshift using the tables'
+ print, ' collis: calculate the cooling for collisional ionization equilibrium'
+ print, ' photodis: calculate the cooling for a soft, non-ionizing UV background. It uses the z = 8.989 HM01 background but with the spectrum cut-off at 1 Ryd. Compton cooling off the CMB is added based on redshift (use a negative redshift value to exclude it). This option could be used in the pre-reionization universe.'
+ print, ' highz: calculate the cooling using the z = 8.989 HM01 background and include compton cooling off the cmb based on redshift (use a negative redshift value to exclude it). This option could be used for 9 < z < z_reion.'
+ print, 'redshift: the redshift (for collisional ionization, enter a dummy value)'
+ print, 'density: the hydrogen number density (n_H [cm^-3])'
+ print, 'temperature: the temperature (T [K])'
+ print, 'AX: abundance of element X. Can be mass fractions (if massfrac = 1) or number densities relative to hydrogen (if massfrac = 0). Note that number densities should give a slightly more accurate result'
+ print, 'massfrac can be:'
+ print, ' 0: Abundance is number density relative to H (more accurate method)'
+ print, ' 1: Abundance is mass fraction (less accurate method)'
+ print
+ return, 0
+ endif
+
+ STEFAN = 7.5657e-15 ;; erg cm^-3 K^-4
+ C_speed = 2.9979e10 ;; cm s^-1
+ ELECTRONMASS = 9.10953e-28 ;; g
+ THOMPSON = 6.6524587e-25 ;; cm^2
+ BOLTZMANN = 1.3806e-16 ;; erg K^-1
+
+ ;; Error handling
+ if n_params() ne 17 then message,'Wrong number of parameters! Try /help option for more information'
+
+ nz = n_elements(redshift)
+ if nz ne n_elements(density) or nz ne n_elements(temperature) or $
+ nz ne n_elements(AH) or nz ne n_elements(AHe) or nz ne n_elements(AC) or $
+ nz ne n_elements(AO) or nz ne n_elements(ANe) or nz ne n_elements(AMg) or $
+ nz ne n_elements(ASi) or nz ne n_elements(AS) or nz ne n_elements(ACa) or $
+ nz ne n_elements(AFe) then begin
+ print,nz,n_elements(density),n_elements(temperature), $
+ n_elements(AH), n_elements(AHe), n_elements(AC), $
+ n_elements(AN), n_elements(AO), n_elements(ANe), $
+ n_elements(AMg), n_elements(ASi), n_elements(AS), $
+ n_elements(ACa), n_elements(AFe)
+ message,'All input arrays must have equal number of elements!'
+ endif
+ case massfrac of
+ 0: string = 'number densities'
+ 1: string = 'mass fractions'
+ else: message,'massfrac must be either zero or one!'
+ endcase
+
+ if tabletype ne 'normal' and tabletype ne 'photodis' and $
+ tabletype ne 'highz' and tabletype ne 'collis' then $
+ message,tabletype + ' = unknown table type!'
+
+ ;; Print info
+ print,format='("Computing cooling for ",g8.3," elements")',nz
+ print,format='("Assuming helium abundances are ",a)',string
+ print,format='("Using table path ",a)',tablepath
+ print,format='("Using table type ",a)',tabletype
+
+ ;; Check of all redshifts are the same (if so, we can speed things up)
+ nuniqz = n_elements(uniq(redshift,sort(redshift)))
+
+ net_cool = fltarr(nz)
+
+ if tabletype eq 'normal' then begin
+ ;;;; normal tables ;;;;
+
+ ;; first fill the redshift array
+ files = file_search(tablepath+'/*.hdf5')
+ if n_elements(files) eq 1 and files[0] eq '' then $
+ message,'No .hdf5 files found in directory ' + tablepath
+ table_redshifts = fltarr(n_elements(files) -3)
+ table_indexes = fltarr(n_elements(files) -3)
+ j = 0
+ for i = 0, n_elements(files) - 1 do begin
+ if strpos(files[i],'collis') eq -1 and strpos(files[i],'compt') eq -1 $
+ and strpos(files[i],'photo') eq -1 then begin
+ table_redshifts[j] = $
+ strmid(files[i], strpos(files[i], '_',/reverse_search)+1, $
+ strpos(files[i],'.', /reverse_search)- $
+ strpos(files[i], '_',/reverse_search)-1)
+ table_indexes[j] = i
+ j = j+1
+ endif
+ endfor
+
+ z_ind = intarr(nz)
+ dz = fltarr(nz)
+ for i = 0, nz -1 do begin
+ ;; find the redshift index
+ z_ind[i] = min(where(table_redshifts ge redshift[i]))
+ if z_ind[i] eq 0 then begin ;; bottom of the table
+ z_ind[i] = 1
+ dz[i] = 1.
+ endif else if z_ind[i] eq -1 then begin ;; top of the table
+ z_ind[i] = n_elements(table_redshifts) -2
+ dz[i] = 0.
+ endif else dz[i] = (table_redshifts[z_ind[i]] - redshift[i]) / $
+ (table_redshifts[z_ind[i]] - $
+ table_redshifts[z_ind[i]-1])
+
+ if nuniqz eq 1 then begin
+ z_ind[*] = z_ind[0]
+ dz[*] = dz[0]
+ break
+ endif
+
+ endfor
+ if min(where(redshift lt min(table_redshifts))) ne -1 or $
+ min(where(redshift gt max(table_redshifts))) ne -1 then begin
+ print, 'There are one or more points outside of the redshift range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ data1 = h5_parse(files[table_indexes[z_ind[0] - 1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[0]]], /read_data)
+
+ hhe_cool1 = data1.metal_free.net_cooling._data
+ hhe_ne1 =data1.metal_free.Electron_density_over_n_h._data
+ hhe_cool2 = data2.metal_free.net_cooling._data
+ hhe_ne2 =data2.metal_free.Electron_density_over_n_h._data
+ solar_ne_nh1 = data1.solar.electron_density_over_n_h._data
+ solar_ne_nh2 = data2.solar.electron_density_over_n_h._data
+ carb_cool1 = data1.Carbon.net_cooling._data
+ nitr_cool1 = data1.Nitrogen.net_cooling._data
+ oxyg_cool1 = data1.Oxygen.net_cooling._data
+ neon_cool1 = data1.Neon.net_cooling._data
+ magn_cool1 = data1.Magnesium.net_cooling._data
+ sili_cool1 = data1.Silicon.net_cooling._data
+ sulp_cool1 = data1.Sulphur.net_cooling._data
+ calc_cool1 = data1.Calcium.net_cooling._data
+ iron_cool1 = data1.Iron.net_cooling._data
+
+ carb_cool2 = data2.Carbon.net_cooling._data
+ nitr_cool2 = data2.Nitrogen.net_cooling._data
+ oxyg_cool2 = data2.Oxygen.net_cooling._data
+ neon_cool2 = data2.Neon.net_cooling._data
+ magn_cool2 = data2.Magnesium.net_cooling._data
+ sili_cool2 = data2.Silicon.net_cooling._data
+ sulp_cool2 = data2.Sulphur.net_cooling._data
+ calc_cool2 = data2.Calcium.net_cooling._data
+ iron_cool2 = data2.Iron.net_cooling._data
+
+ tbl_hhecool = hhe_cool1 * dz[0] + hhe_cool2 * (1. - dz[0])
+ tbl_hhene = hhe_ne1 * dz[0] + hhe_ne2 * (1. - dz[0])
+ tbl_solar_ne_nh = solar_ne_nh1 * dz[0] + solar_ne_nh2 * (1. - dz[0])
+ tbl_carbcool = carb_cool1 * dz[0] + carb_cool2 * (1. - dz[0])
+ tbl_nitrcool = nitr_cool1 * dz[0] + nitr_cool2 * (1. - dz[0])
+ tbl_oxygcool = oxyg_cool1 * dz[0] + oxyg_cool2 * (1. - dz[0])
+ tbl_neoncool = neon_cool1 * dz[0] + neon_cool2 * (1. - dz[0])
+ tbl_magncool = magn_cool1 * dz[0] + magn_cool2 * (1. - dz[0])
+ tbl_silicool = sili_cool1 * dz[0] + sili_cool2 * (1. - dz[0])
+ tbl_sulpcool = sulp_cool1 * dz[0] + sulp_cool2 * (1. - dz[0])
+ tbl_calccool = calc_cool1 * dz[0] + calc_cool2 * (1. - dz[0])
+ tbl_ironcool = iron_cool1 * dz[0] + iron_cool2 * (1. - dz[0])
+
+ endif else begin
+ case tabletype of
+ 'collis': file = 'z_collis'
+ 'photodis': file = 'z_photodis'
+ 'highz': file = 'z_8.989nocompton'
+ endcase
+ data1 = h5_parse(tablepath+'/' + file + '.hdf5', /read_data)
+
+ tbl_hhecool = data1.metal_free.net_cooling._data
+ tbl_hhene = data1.metal_free.Electron_density_over_n_h._data
+ tbl_solar_ne_nh = data1.solar.electron_density_over_n_h._data
+ tbl_carbcool = data1.Carbon.net_cooling._data
+ tbl_nitrcool = data1.Nitrogen.net_cooling._data
+ tbl_oxygcool = data1.Oxygen.net_cooling._data
+ tbl_neoncool = data1.Neon.net_cooling._data
+ tbl_magncool = data1.Magnesium.net_cooling._data
+ tbl_silicool = data1.Silicon.net_cooling._data
+ tbl_sulpcool = data1.Sulphur.net_cooling._data
+ tbl_calccool = data1.Calcium.net_cooling._data
+ tbl_ironcool = data1.Iron.net_cooling._data
+ endelse
+
+ if tabletype ne 'collis' then begin
+ tbl_log_dens = alog10(data1.metal_free.hydrogen_density_bins._data)
+
+ dens_ind = (n_elements(tbl_log_dens) - 1.) * $
+ (alog10(density) - min(tbl_log_dens)) / $
+ (max(tbl_log_dens) - min(tbl_log_dens))
+
+ if min(where(alog10(density) lt min(tbl_log_dens))) ne -1 or $
+ min(where(alog10(density) gt max(tbl_log_dens))) ne -1 then begin
+ print, 'There are one or more points outside of the density range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+ endif
+
+ tbl_log_temperature = alog10(data1.metal_free.temperature_bins._data)
+
+ temperature_ind = (n_elements(tbl_log_temperature) - 1.) * $
+ (alog10(temperature) - min(tbl_log_temperature)) / $
+ (max(tbl_log_temperature) - min(tbl_log_temperature))
+
+ if min(where(alog10(temperature) lt min(tbl_log_temperature))) ne -1 or $
+ min(where(alog10(temperature) gt max(tbl_log_temperature))) ne -1 then begin
+ print, 'There are one or more points outside of the temperature range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ if massfrac eq 1 then begin
+ tbl_AHe = data1.Metal_free.Helium_mass_fraction_bins._data
+ hhe_frac = AHe / (AH + AHe)
+ AHe_ind = (n_elements(tbl_AHe) - 1.) * (hhe_frac - min(tbl_AHe)) / $
+ (max(tbl_AHe) - min(tbl_AHe))
+
+ solar_abund = data1.Header.Abundances.Solar_mass_fractions._data
+ endif else begin
+ tbl_AHe = data1.Metal_free.Helium_number_ratio_bins._data
+ hhe_frac = AHe / AH
+ ;; note that in number density space, the tables are not evenly spaced!
+ ;; Check of all helium fracs are the same (if so, we can speed things up)
+ nuniqhe = n_elements(uniq(hhe_frac,sort(hhe_frac)))
+
+ AHe_ind = fltarr(nz)
+ for i = 0, nz-1 do begin
+ AHe_ind[i] = min(where(tbl_AHe ge hhe_frac[i]))
+ if AHe_ind[i] eq -1 then $ ;; top of the table
+ AHe_ind[i] = n_elements(tbl_AHe)-1 $
+ else if AHe_ind[i] ne 0 then $
+ AHe_ind[i] = AHe_ind[i] - $
+ ((tbl_AHe[AHe_ind[i]] - hhe_frac[i])/ $
+ (tbl_AHe[AHe_ind[i]] - tbl_AHe[AHe_ind[i]-1]))
+ if nuniqhe eq 1 then begin
+ AHe_ind[*] = AHe_ind[0]
+ break
+ endif
+
+ endfor
+
+ solar_abund = data1.Header.Abundances.Solar_number_ratios._data
+ endelse
+ if min(where(hhe_frac lt min(tbl_AHe))) ne -1 or $
+ min(where(hhe_frac gt max(tbl_AHe))) ne -1 then begin
+ print, 'There are one or more points outside of the Helium range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ for i = 0, nz-1 do begin
+ ;; check if data needs to be read and if z-interpolation needs to be done
+ if tabletype eq 'normal' then begin
+ if i gt 0 then begin
+ if z_ind[i] ne z_ind[i-1] then need_to_read = 1 $
+ else need_to_read = 0
+ if redshift[i] ne redshift[i-1] then need_to_interpolate_z = 1 $
+ else need_to_interpolate_z = 0
+ endif else begin
+ need_to_read = 1
+ need_to_interpolate_z = 1
+ endelse
+ ;; read data if necessary
+ if need_to_read then begin
+ data1 = h5_parse(files[table_indexes[z_ind[i]-1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[i]]], /read_data)
+
+ hhe_cool1 = data1.metal_free.net_cooling._data
+ hhe_ne1 =data1.metal_free.Electron_density_over_n_h._data
+ hhe_cool2 = data2.metal_free.net_cooling._data
+ hhe_ne2 =data2.metal_free.Electron_density_over_n_h._data
+ solar_ne_nh1 = data1.solar.electron_density_over_n_h._data
+ solar_ne_nh2 = data2.solar.electron_density_over_n_h._data
+ carb_cool1 = data1.Carbon.net_cooling._data
+ nitr_cool1 = data1.Nitrogen.net_cooling._data
+ oxyg_cool1 = data1.Oxygen.net_cooling._data
+ neon_cool1 = data1.Neon.net_cooling._data
+ magn_cool1 = data1.Magnesium.net_cooling._data
+ sili_cool1 = data1.Silicon.net_cooling._data
+ sulp_cool1 = data1.Sulphur.net_cooling._data
+ calc_cool1 = data1.Calcium.net_cooling._data
+ iron_cool1 = data1.Iron.net_cooling._data
+
+ carb_cool2 = data2.Carbon.net_cooling._data
+ nitr_cool2 = data2.Nitrogen.net_cooling._data
+ oxyg_cool2 = data2.Oxygen.net_cooling._data
+ neon_cool2 = data2.Neon.net_cooling._data
+ magn_cool2 = data2.Magnesium.net_cooling._data
+ sili_cool2 = data2.Silicon.net_cooling._data
+ sulp_cool2 = data2.Sulphur.net_cooling._data
+ calc_cool2 = data2.Calcium.net_cooling._data
+ iron_cool2 = data2.Iron.net_cooling._data
+ endif
+
+ ;; interpolate z if necessary
+ if need_to_interpolate_z then begin
+ tbl_hhecool = hhe_cool1 * dz[i] + hhe_cool2 * (1. - dz[i])
+ tbl_hhene = hhe_ne1 * dz[i] + hhe_ne2 * (1. - dz[i])
+ tbl_solar_ne_nh = solar_ne_nh1 * dz[i] + solar_ne_nh2 * (1. - dz[i])
+ tbl_carbcool = carb_cool1 * dz[i] + carb_cool2 * (1. - dz[i])
+ tbl_nitrcool = nitr_cool1 * dz[i] + nitr_cool2 * (1. - dz[i])
+ tbl_oxygcool = oxyg_cool1 * dz[i] + oxyg_cool2 * (1. - dz[i])
+ tbl_neoncool = neon_cool1 * dz[i] + neon_cool2 * (1. - dz[i])
+ tbl_magncool = magn_cool1 * dz[i] + magn_cool2 * (1. - dz[i])
+ tbl_silicool = sili_cool1 * dz[i] + sili_cool2 * (1. - dz[i])
+ tbl_sulpcool = sulp_cool1 * dz[i] + sulp_cool2 * (1. - dz[i])
+ tbl_calccool = calc_cool1 * dz[i] + calc_cool2 * (1. - dz[i])
+ tbl_ironcool = iron_cool1 * dz[i] + iron_cool2 * (1. - dz[i])
+ endif
+ hhe_cool = interpolate(tbl_hhecool,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ hhe_ne = interpolate(tbl_hhene,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ solar_ne = bilinear(tbl_solar_ne_nh,dens_ind[i],temperature_ind[i])
+
+ metal_cool = tbl_carbcool * (AC[i]/solar_abund[2]) + $
+ tbl_nitrcool * (AN[i]/solar_abund[3]) + $
+ tbl_oxygcool * (AO[i]/solar_abund[4]) + $
+ tbl_neoncool * (ANe[i]/solar_abund[5]) + $
+ tbl_magncool * (AMg[i]/solar_abund[6]) + $
+ tbl_silicool * (ASi[i]/solar_abund[7]) + $
+ tbl_sulpcool * (AS[i]/solar_abund[8]) + $
+ tbl_calccool * (ACa[i]/solar_abund[9]) + $
+ tbl_ironcool * (AFe[i]/solar_abund[10])
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ bilinear(metal_cool,dens_ind[i],temperature_ind[i]))
+ endif else if tabletype ne 'collis' then begin
+ hhe_cool = interpolate(tbl_hhecool,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ hhe_ne = interpolate(tbl_hhene,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ solar_ne = bilinear(tbl_solar_ne_nh,dens_ind[i],temperature_ind[i])
+
+ metal_cool = tbl_carbcool * (AC[i]/solar_abund[2]) + $
+ tbl_nitrcool * (AN[i]/solar_abund[3]) + $
+ tbl_oxygcool * (AO[i]/solar_abund[4]) + $
+ tbl_neoncool * (ANe[i]/solar_abund[5]) + $
+ tbl_magncool * (AMg[i]/solar_abund[6]) + $
+ tbl_silicool * (ASi[i]/solar_abund[7]) + $
+ tbl_sulpcool * (AS[i]/solar_abund[8]) + $
+ tbl_calccool * (ACa[i]/solar_abund[9]) + $
+ tbl_ironcool * (AFe[i]/solar_abund[10])
+
+ ; Add Compton cooling off the CMB
+ if redshift[i] ge 0. then begin
+ t_cmb = 2.728 * (1.0 + redshift[i])
+ comp_add = - (4.0 * STEFAN * THOMPSON * (t_cmb^4) / $
+ (ELECTRONMASS * C_speed)) * BOLTZMANN * $
+ (t_cmb - temperature[i]) * hhe_ne / density[i]
+ endif else comp_add = 0.
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ bilinear(metal_cool,dens_ind[i], temperature_ind[i]) $
+ + comp_add)
+ endif else begin
+ hhe_cool = bilinear(tbl_hhecool,temperature_ind[i],AHe_ind[i])
+ hhe_ne = bilinear(tbl_hhene,temperature_ind[i],AHe_ind[i])
+ solar_ne = interpol(tbl_solar_ne_nh,tbl_log_temperature, $
+ alog10(temperature[i]))
+
+ metal_cool = tbl_carbcool * (AC[i]/solar_abund[2]) + $
+ tbl_nitrcool * (AN[i]/solar_abund[3]) + $
+ tbl_oxygcool * (AO[i]/solar_abund[4]) + $
+ tbl_neoncool * (ANe[i]/solar_abund[5]) + $
+ tbl_magncool * (AMg[i]/solar_abund[6]) + $
+ tbl_silicool * (ASi[i]/solar_abund[7]) + $
+ tbl_sulpcool * (AS[i]/solar_abund[8]) + $
+ tbl_calccool * (ACa[i]/solar_abund[9]) + $
+ tbl_ironcool * (AFe[i]/solar_abund[10])
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ interpol(metal_cool,tbl_log_temperature, $
+ alog10(temperature[i])))
+ endelse
+
+ endfor
+
+
+ return, net_cool
+end
diff --git a/PyCool/tables_wiersma/CoolingRoutines/compute_cooling_Z.pro b/PyCool/tables_wiersma/CoolingRoutines/compute_cooling_Z.pro
new file mode 100644
index 0000000..cf0c79d
--- /dev/null
+++ b/PyCool/tables_wiersma/CoolingRoutines/compute_cooling_Z.pro
@@ -0,0 +1,324 @@
+function compute_cooling_Z, tablepath, tabletype, redshift, density, temperature, AH, AHe, Z, massfrac, help=help
+
+; This routine computes net cooling for a given metallicity (solar
+; relative abundances). See
+; test = compute_cooling_Z(/help)
+; for more details
+
+; This is version 100423.
+; Change history:
+; * 08????: Original version
+; * 090512: Fixed issue regarding checking the boundaries of the
+; redshift array, updated reference.
+; * 100423: Clarified help
+;
+; Please refer to Wiersma, Schaye, & Smith 2009, MNRAS, 393, 99
+; for a description of the methods used.
+;
+; For bug reports and questions, please contact
+; Rob Wiersma <wiersma@strw.leidenuniv.nl>
+
+ if keyword_set(help) then begin
+ print
+ print, 'result = compute_cooling_Z(tablepath, tabletype, redshift, density, temperature, AH, AHe, Z, massfrac, /help)'
+ print
+ print, 'This routine calculates the net cooling rate (Lambda/n_H^2 [erg s^-1 cm^3]) given an array of redshifts, densities, temperatures, and abundances using the cooling tables prepared by Wiersma, Schaye, & Smith (2009). Arrays or single values may be used provided the dimensions are consistent.'
+ print
+ print, 'This routine uses the "total_metals" array such that only a metallicity is needed, and relative metal abundances are assumed to be solar relative.'
+ print
+ print, 'result: an array of net cooling rates, in (Lambda_net/n_H^2 [erg cm^3 s^-1])'
+ print, 'tablepath: the path containing the coolingtables'
+ print, 'tabletype can be:'
+ print, ' normal: interpolate in redshift using the tables'
+ print, ' collis: calculate the cooling for collisional ionization equilibrium'
+ print, ' photodis: calculate the cooling for a soft, non-ionizing UV background. It uses the z = 8.989 HM01 background but with the spectrum cut-off at 1 Ryd. Compton cooling off the CMB is added based on redshift (use a negative redshift value to exclude it). This option could be used in the pre-reionization universe.'
+ print, ' highz: calculate the cooling using the z = 8.989 HM01 background and include compton cooling off the cmb based on redshift (use a negative redshift value to exclude it). This option could be used for 9 < z < z_reion.'
+ print, 'redshift: the redshift (for collisional ionization, enter a dummy value)'
+ print, 'density: the hydrogen number density (n_H [cm^-3])'
+ print, 'temperature: the temperature (T [K])'
+ print, 'AX: abundance of element X. Can be mass fractions (if massfrac = 1) or number densities relative to hydrogen (if massfrac = 0). Note that number densities should give a slightly more accurate result'
+ print, 'Z: metallicity (relative to solar, thus Z = 1 performs the calculation for solar abundances). Note that the solar metal mass fraction for these tables is defined as Z = 1 - X - Y = 0.0129'
+ print, 'massfrac can be:'
+ print, ' 0: Abundance is number density relative to H (more accurate method)'
+ print, ' 1: Abundance is mass fraction (less accurate method)'
+ print
+ return, 0
+ endif
+
+ STEFAN = 7.5657e-15 ;; erg cm^-3 K^-4
+ C_speed = 2.9979e10 ;; cm s^-1
+ ELECTRONMASS = 9.10953e-28 ;; g
+ THOMPSON = 6.6524587e-25 ;; cm^2
+ BOLTZMANN = 1.3806e-16 ;; erg K^-1
+
+ ;; Error handling
+ if n_params() ne 9 then message,'Wrong number of parameters! Try /help option for more information.'
+
+ nz = n_elements(redshift)
+ if nz ne n_elements(density) or nz ne n_elements(temperature) or $
+ nz ne n_elements(AH) or nz ne n_elements(AHe) or nz ne n_elements(Z) then begin
+ print,nz,n_elements(density),n_elements(temperature), $
+ n_elements(AH), n_elements(AHe), n_elements(Z)
+ message,'All input arrays must have equal number of elements!'
+ endif
+ case massfrac of
+ 0: string = 'number densities'
+ 1: string = 'mass fractions'
+ else: message,'massfrac must be either zero or one!'
+ endcase
+
+ if tabletype ne 'normal' and tabletype ne 'photodis' and $
+ tabletype ne 'highz' and tabletype ne 'collis' then $
+ message,tabletype + ' = unknown table type!'
+
+ ;; Print info
+ print,format='("Computing cooling for ",g8.3," elements")',nz
+ print,format='("Assuming helium abundances are ",a)',string
+ print,format='("Using table path ",a)',tablepath
+ print,format='("Using table type ",a)',tabletype
+
+ ;; Check of all redshifts are the same (if so, we can speed things up)
+ nuniqz = n_elements(uniq(redshift,sort(redshift)))
+
+ net_cool = fltarr(nz)
+
+ if tabletype eq 'normal' then begin
+ ;;;; normal tables ;;;;
+
+ ;; first fill the redshift array
+ files = file_search(tablepath+'/*.hdf5')
+ if n_elements(files) eq 1 and files[0] eq '' then $
+ message,'No .hdf5 files found in directory ' + tablepath
+ table_redshifts = fltarr(n_elements(files) -3)
+ table_indexes = fltarr(n_elements(files) -3)
+ j = 0
+ for i = 0, n_elements(files) - 1 do begin
+ if strpos(files[i],'collis') eq -1 and strpos(files[i],'compt') eq -1 $
+ and strpos(files[i],'photo') eq -1 then begin
+ table_redshifts[j] = $
+ strmid(files[i], strpos(files[i], '_',/reverse_search)+1, $
+ strpos(files[i],'.', /reverse_search)- $
+ strpos(files[i], '_',/reverse_search)-1)
+ table_indexes[j] = i
+ j = j+1
+ endif
+ endfor
+
+ z_ind = intarr(nz)
+ dz = fltarr(nz)
+ for i = 0, nz -1 do begin
+ ;; find the redshift index
+ z_ind[i] = min(where(table_redshifts ge redshift[i]))
+ if z_ind[i] eq 0 then begin ;; bottom of the table
+ z_ind[i] = 1
+ dz[i] = 1.
+ endif else if z_ind[i] eq -1 then begin ;; top of the table
+ z_ind[i] = n_elements(table_redshifts) -2
+ dz[i] = 0.
+ endif else dz[i] = (table_redshifts[z_ind[i]] - redshift[i]) / $
+ (table_redshifts[z_ind[i]] - $
+ table_redshifts[z_ind[i]-1])
+ if nuniqz eq 1 then begin
+ z_ind[*] = z_ind[0]
+ dz[*] = dz[0]
+ break
+ endif
+
+ endfor
+
+ if min(where(redshift lt min(table_redshifts))) ne -1 or $
+ min(where(redshift gt max(table_redshifts))) ne -1 then begin
+ print, 'There are one or more points outside of the redshift range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ data1 = h5_parse(files[table_indexes[z_ind[0] - 1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[0]]], /read_data)
+
+ hhe_cool1 = data1.metal_free.net_cooling._data
+ hhe_ne1 =data1.metal_free.Electron_density_over_n_h._data
+ hhe_cool2 = data2.metal_free.net_cooling._data
+ hhe_ne2 =data2.metal_free.Electron_density_over_n_h._data
+ solar_ne_nh1 = data1.solar.electron_density_over_n_h._data
+ solar_ne_nh2 = data2.solar.electron_density_over_n_h._data
+ metal_cool1 = data1.total_metals.net_cooling._data
+ metal_cool2 = data2.total_metals.net_cooling._data
+
+ tbl_hhecool = hhe_cool1 * dz[0] + hhe_cool2 * (1. - dz[0])
+ tbl_hhene = hhe_ne1 * dz[0] + hhe_ne2 * (1. - dz[0])
+ tbl_solar_ne_nh = solar_ne_nh1 * dz[0] + solar_ne_nh2 * (1. - dz[0])
+ tbl_metalcool = metal_cool1 * dz[0] + metal_cool2 * (1. - dz[0])
+
+ endif else begin
+ case tabletype of
+ 'collis': file = 'z_collis'
+ 'photodis': file = 'z_photodis'
+ 'highz': file = 'z_8.989nocompton'
+ endcase
+ data1 = h5_parse(tablepath+'/' + file + '.hdf5', /read_data)
+
+ tbl_hhecool = data1.metal_free.net_cooling._data
+ tbl_hhene = data1.metal_free.Electron_density_over_n_h._data
+ tbl_solar_ne_nh = data1.solar.electron_density_over_n_h._data
+ tbl_metalcool = data1.total_metals.net_cooling._data
+ endelse
+
+ if tabletype ne 'collis' then begin
+ tbl_log_dens = alog10(data1.metal_free.hydrogen_density_bins._data)
+
+ dens_ind = (n_elements(tbl_log_dens) - 1.) * $
+ (alog10(density) - min(tbl_log_dens)) / $
+ (max(tbl_log_dens) - min(tbl_log_dens))
+
+ if min(where(alog10(density) lt min(tbl_log_dens))) ne -1 or $
+ min(where(alog10(density) gt max(tbl_log_dens))) ne -1 then begin
+ print, 'There are one or more points outside of the density range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+ endif
+
+ tbl_log_temperature = alog10(data1.metal_free.temperature_bins._data)
+
+ temperature_ind = (n_elements(tbl_log_temperature) - 1.) * $
+ (alog10(temperature) - min(tbl_log_temperature)) / $
+ (max(tbl_log_temperature) - min(tbl_log_temperature))
+
+ if min(where(alog10(temperature) lt min(tbl_log_temperature))) ne -1 or $
+ min(where(alog10(temperature) gt max(tbl_log_temperature))) ne -1 then begin
+ print, 'There are one or more points outside of the temperature range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ if massfrac eq 1 then begin
+ tbl_AHe = data1.Metal_free.Helium_mass_fraction_bins._data
+ hhe_frac = AHe / (AH + AHe)
+ AHe_ind = (n_elements(tbl_AHe) - 1.) * (hhe_frac - min(tbl_AHe)) / $
+ (max(tbl_AHe) - min(tbl_AHe))
+
+ solar_abund = data1.Header.Abundances.Solar_mass_fractions._data
+ endif else begin
+ tbl_AHe = data1.Metal_free.Helium_number_ratio_bins._data
+ hhe_frac = AHe / AH
+ ;; note that in number density space, the tables are not evenly spaced!
+ ;; Check of all helium fracs are the same (if so, we can speed things up)
+ nuniqhe = n_elements(uniq(hhe_frac,sort(hhe_frac)))
+
+ AHe_ind = fltarr(nz)
+ for i = 0, nz-1 do begin
+ AHe_ind[i] = min(where(tbl_AHe ge hhe_frac[i]))
+ if AHe_ind[i] eq -1 then $ ;; top of the table
+ AHe_ind[i] = n_elements(tbl_AHe)-1 $
+ else if AHe_ind[i] ne 0 then $
+ AHe_ind[i] = AHe_ind[i] - $
+ ((tbl_AHe[AHe_ind[i]] - hhe_frac[i])/ $
+ (tbl_AHe[AHe_ind[i]] - tbl_AHe[AHe_ind[i]-1]))
+ if nuniqhe eq 1 then begin
+ AHe_ind[*] = AHe_ind[0]
+ break
+ endif
+
+ endfor
+
+ solar_abund = data1.Header.Abundances.Solar_number_ratios._data
+ endelse
+
+ if min(where(hhe_frac lt min(tbl_AHe))) ne -1 or $
+ min(where(hhe_frac gt max(tbl_AHe))) ne -1 then begin
+ print, 'There are one or more points outside of the Helium range! Table end points will be used'
+ print, 'Type any key to continue.'
+ WHILE Get_KBRD(0) do junk=1
+ junk = Get_KBRD(1)
+ WHILE Get_KBRD(0) do junk=1
+ endif
+
+ for i = 0, nz-1 do begin
+ ;; check if data needs to be read and if z-interpolation needs to be done
+ if tabletype eq 'normal' then begin
+ if i gt 0 then begin
+ if z_ind[i] ne z_ind[i-1] then need_to_read = 1 $
+ else need_to_read = 0
+ if redshift[i] ne redshift[i-1] then need_to_interpolate_z = 1 $
+ else need_to_interpolate_z = 0
+ endif else begin
+ need_to_read = 1
+ need_to_interpolate_z = 1
+ endelse
+ ;; read data if necessary
+ if need_to_read then begin
+ data1 = h5_parse(files[table_indexes[z_ind[i]-1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[i]]], /read_data)
+
+ hhe_cool1 = data1.metal_free.net_cooling._data
+ hhe_ne1 =data1.metal_free.Electron_density_over_n_h._data
+ hhe_cool2 = data2.metal_free.net_cooling._data
+ hhe_ne2 =data2.metal_free.Electron_density_over_n_h._data
+ solar_ne_nh1 = data1.solar.electron_density_over_n_h._data
+ solar_ne_nh2 = data2.solar.electron_density_over_n_h._data
+ metal_cool1 = data1.total_metals.net_cooling._data
+ metal_cool2 = data2.total_metals.net_cooling._data
+ endif
+
+ ;; interpolate z if necessary
+ if need_to_interpolate_z then begin
+ tbl_hhecool = hhe_cool1 * dz[i] + hhe_cool2 * (1. - dz[i])
+ tbl_hhene = hhe_ne1 * dz[i] + hhe_ne2 * (1. - dz[i])
+ tbl_solar_ne_nh = solar_ne_nh1 * dz[i] + solar_ne_nh2 * (1. - dz[i])
+ tbl_metalcool = metal_cool1 * dz[i] + metal_cool2 * (1. - dz[i])
+ endif
+ hhe_cool = interpolate(tbl_hhecool,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ hhe_ne = interpolate(tbl_hhene,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ solar_ne = bilinear(tbl_solar_ne_nh,dens_ind[i],temperature_ind[i])
+
+ metal_cool = tbl_metalcool * Z[i]
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ bilinear(metal_cool,dens_ind[i], temperature_ind[i]))
+ endif else if tabletype ne 'collis' then begin
+ hhe_cool = interpolate(tbl_hhecool,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ hhe_ne = interpolate(tbl_hhene,dens_ind[i],temperature_ind[i], $
+ AHe_ind[i])
+ solar_ne = bilinear(tbl_solar_ne_nh,dens_ind[i],temperature_ind[i])
+
+ metal_cool = tbl_metalcool * Z[i]
+
+ ; Add Compton cooling off the CMB
+ if redshift[i] ge 0. then begin
+ t_cmb = 2.728 * (1.0 + redshift[i])
+ comp_add = - (4.0 * STEFAN * THOMPSON * (t_cmb^4) / $
+ (ELECTRONMASS * C_speed)) * BOLTZMANN * $
+ (t_cmb - temperature[i]) * hhe_ne
+ endif else comp_add = 0.
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ bilinear(metal_cool,dens_ind[i], temperature_ind[i]) + $
+ comp_add)
+ endif else begin
+ hhe_cool = bilinear(tbl_hhecool,temperature_ind[i],AHe_ind[i])
+ hhe_ne = bilinear(tbl_hhene,temperature_ind[i],AHe_ind[i])
+ solar_ne = interpol(tbl_solar_ne_nh,tbl_log_temperature, $
+ alog10(temperature[i]))
+
+ metal_cool = tbl_metalcool * Z[i]
+
+ net_cool[i] = (hhe_cool + (hhe_ne/solar_ne) * $
+ interpol(metal_cool,tbl_log_temperature, $
+ alog10(temperature[i])))
+ endelse
+
+ endfor
+
+
+ return, net_cool
+end
diff --git a/PyCool/tables_wiersma/CoolingRoutines/compute_temperature.pro b/PyCool/tables_wiersma/CoolingRoutines/compute_temperature.pro
new file mode 100644
index 0000000..604cbd8
--- /dev/null
+++ b/PyCool/tables_wiersma/CoolingRoutines/compute_temperature.pro
@@ -0,0 +1,291 @@
+function compute_temperature, $
+ tablepath,tabletype,redshift,density,energy_density,AH,AHe,massfrac, $
+ help=help
+
+; This routine converts energy density to temperature. See
+; test = compute_temperature(/help)
+; for more details
+
+; This is version 100423.
+; Change history:
+; * 08????: Original version
+; * 090512: Fixed issue regarding use of uniform redshift arrays
+; (the code used to crash). Updated reference.
+; * 100423: Clarified the help.
+;
+; Please refer to Wiersma, Schaye, & Smith 2009, MNRAS, 393, 99
+; for a description of the methods used.
+;
+; For bug reports and questions, please contact
+; Rob Wiersma <wiersma@strw.leidenuniv.nl>
+
+ if keyword_set(help) then begin
+ print
+ print, 'result = compute_temperature(tablepath, tabletype, redshift, density, energy_density, AH, AHe, massfrac, /help)'
+ print
+ print, 'This routine converts energy density to temperature given an array of'
+ print, 'redshifts, densities, energy densities, and helium fractions using'
+ print, 'the tables prepared by Wiersma, Schaye, & Smith (2009).'
+ print, 'Arrays or single values may be used provided the dimensions are consistent.'
+ print
+ print, 'result: an array of temperatures (T [K])'
+ print, 'tablepath: the path containing the coolingtables'
+ print, 'tabletype can be:'
+ print, ' normal: interpolate in redshift using the tables'
+ print, ' collis: calculate the temperature for collisional ionization equilibrium'
+ print, ' photodis: calculate the temperature for a soft, non-ionizing UV background. It uses the z = 8.989 HM01 background but with the spectrum cut-off at 1 Ryd. This option could be used in the pre-reionization universe.'
+ print, ' highz: calculate the temperature using the z = 8.989 HM01 background. This option could be used for 9 < z < z_reion.'
+ print, 'redshift: the redshift (for collisional ionization, enter dummy values)'
+ print, 'density: the hydrogen number density (n_H [cm^-3])'
+ print, 'energy_desity: the energy density per unit mass (u [erg g^-1])'
+ print, 'AH: abundance of Hydrogen'
+ print, 'AHe: abundance of Helium'
+ print, 'massfrac can be:'
+ print, ' 0: Abundance is number density relative to H (more accurate method)'
+ print, ' 1: Abundance is mass fraction (less accurate method)'
+ print
+ return,0
+ endif
+
+ ;; Error handling
+ if n_params() ne 8 then message,'Wrong number of parameters! Try /help option for more information.'
+
+ nz = n_elements(redshift)
+ if nz ne n_elements(density) or nz ne n_elements(energy_density) or $
+ nz ne n_elements(AH) or nz ne n_elements(AHe) then begin
+ print,nz,n_elements(density),n_elements(energy_density), $
+ n_elements(AH),n_elements(AHe)
+ message,'All input arrays must have equal number of elements!'
+ endif
+ case massfrac of
+ 0: string = 'number densities'
+ 1: string = 'mass fractions'
+ else: message,'massfrac must be either zero or one!'
+ endcase
+
+ if tabletype ne 'normal' and tabletype ne 'photodis' and $
+ tabletype ne 'highz' and tabletype ne 'collis' then $
+ message,tabletype + ' = unknown table type!'
+
+ ;; Print info
+ print,format='("Computing temperatures for ",g8.3," elements")',nz
+ print,format='("Assuming helium abundances are ",a)',string
+ print,format='("Using table path ",a)',tablepath
+ print,format='("Using table type ",a)',tabletype
+
+ ;; Check whether all redshifts are the same (if so, we can speed things up)
+ nuniqz = n_elements(uniq(redshift,sort(redshift)))
+
+ if tabletype eq 'normal' then begin
+ ;; first fill the redshift array
+ files = file_search(tablepath+'/*.hdf5')
+ if n_elements(files) eq 1 and files[0] eq '' then $
+ message,'No .hdf5 files found in directory ' + tablepath
+ table_redshifts = fltarr(n_elements(files) -3)
+ table_indexes = fltarr(n_elements(files) -3)
+ j = 0
+ for i = 0, n_elements(files) - 1 do begin
+ if strpos(files[i],'collis') eq -1 and $
+ strpos(files[i],'compt') eq -1 and $
+ strpos(files[i],'photo') eq -1 then begin
+ table_redshifts[j] = strmid(files[i], strpos(files[i], '_',/reverse_search)+1, strpos(files[i], '.', /reverse_search)-strpos(files[i], '_',/reverse_search)-1)
+ table_indexes[j] = i
+ j = j+1
+ endif
+ endfor
+
+ z_ind = intarr(nz)
+ dz = fltarr(nz)
+ for i = 0, nz-1 do begin
+ z_ind[i] = min(where(table_redshifts ge redshift[i]))
+ if z_ind[i] eq 0 then begin ;; bottom of the table
+ z_ind[i] = 1
+ dz[i] = 1.
+ endif else if z_ind[i] eq -1 then begin ;; top of the table
+ z_ind[i] = n_elements(table_redshifts)-2
+ dz[i] = 0.
+ endif else $
+ dz[i] = (table_redshifts[z_ind[i]] - redshift[i]) / $
+ (table_redshifts[z_ind[i]] - table_redshifts[z_ind[i]-1])
+ if nuniqz eq 1 then begin
+ z_ind[*] = z_ind[0]
+ dz[*] = dz[0]
+ break
+ endif
+ endfor
+
+ ;; read data
+ data1 = h5_parse(files[table_indexes[z_ind[0]-1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[0]]], /read_data)
+
+ tbl1_temp = data1.metal_free.temperature.temperature._data
+ tbl2_temp = data2.metal_free.temperature.temperature._data
+ endif else begin
+ case tabletype of
+ 'collis': file = 'z_collis'
+ 'photodis': file = 'z_photodis'
+ 'highz': file = 'z_8.989nocompton'
+ endcase
+ data1 = h5_parse(tablepath+'/' + file + '.hdf5', /read_data)
+
+ tbl1_temp = data1.metal_free.temperature.temperature._data
+ endelse
+
+
+ if tabletype ne 'collis' then begin
+ tbl_log_dens = alog10(data1.metal_free.hydrogen_density_bins._data)
+
+ if min(where(alog10(density) lt min(tbl_log_dens))) ne -1 or $
+ min(where(alog10(density) gt max(tbl_log_dens))) ne -1 then begin
+ print, 'There are one or more points outside of the density range! Table end points will be used'
+ print, 'Type any key to continue.'
+ read, dummy
+ endif
+
+ dens_ind = (n_elements(tbl_log_dens) - 1.) * $
+ (alog10(density) - min(tbl_log_dens)) / $
+ (max(tbl_log_dens) - min(tbl_log_dens))
+ endif
+
+ tbl_log_energy_dens = alog10(data1.metal_free.temperature.energy_density_bins._data)
+
+ if min(where(alog10(energy_density) lt min(tbl_log_energy_dens))) ne -1 or $
+ min(where(alog10(energy_density) gt max(tbl_log_energy_dens))) ne -1 then begin
+ print, 'There are one or more points outside of the energy density range! Values will be extrapolated'
+ print, 'Type any key to continue.'
+ read, dummy
+ endif
+
+ energy_dens_ind = (n_elements(tbl_log_energy_dens) - 1.) * $
+ (alog10(energy_density) - min(tbl_log_energy_dens)) / $
+ (max(tbl_log_energy_dens) - min(tbl_log_energy_dens))
+
+ if massfrac eq 1 then begin
+ hhe_frac = AHe / (AH + AHe)
+
+ tbl_AHe = data1.Metal_free.Helium_mass_fraction_bins._data
+ AHe_ind = (n_elements(tbl_AHe) - 1.) * (hhe_frac - min(tbl_AHe)) / $
+ (max(tbl_AHe) - min(tbl_AHe))
+ endif else begin
+ tbl_AHe = data1.Metal_free.Helium_number_ratio_bins._data
+ ;; note that in number density space, the tables are not evenly spaced!
+ ;; Check if all helium fracs are the same (if so, we can speed things up)
+ nuniqhe = n_elements(uniq(AHe,sort(AHe)))
+
+ hhe_frac = AHe / AH
+ AHe_ind = fltarr(nz)
+ for i = 0, nz-1 do begin
+ AHe_ind[i] = min(where(tbl_AHe ge hhe_frac[i]))
+ if AHe_ind[i] eq -1 then $ ;; top of the table
+ AHe_ind[i] = n_elements(tbl_AHe)-1 $
+ else if AHe_ind[i] ne 0 then $
+ AHe_ind[i] = AHe_ind[i] - $
+ ((tbl_AHe[AHe_ind[i]] - hhe_frac[i]) / $
+ (tbl_AHe[AHe_ind[i]] - tbl_AHe[AHe_ind[i]-1]))
+ if nuniqhe eq 1 then begin
+ AHe_ind[*] = AHe_ind[0]
+ break
+ endif
+
+ endfor
+ endelse
+ if min(where(hhe_frac lt min(tbl_AHe))) ne -1 or $
+ min(where(hhe_frac gt max(tbl_AHe))) ne -1 then begin
+ print, 'There are one or more points outside of the Helium range! Table end points will be used'
+ print, 'Type any key to continue.'
+ read, dummy
+ endif
+
+ log_temp = fltarr(nz)
+ for i = 0, nz-1 do begin
+ ;; check if data needs to be read and if z-interpolation needs to be done
+ if tabletype eq 'normal' then begin
+ if i gt 0 then begin
+ if z_ind[i] ne z_ind[i-1] then need_to_read = 1 $
+ else need_to_read = 0
+ if redshift[i] ne redshift[i-1] then need_to_interpolate_z = 1 $
+ else need_to_interpolate_z = 0
+ endif else begin
+ need_to_read = 1
+ need_to_interpolate_z = 1
+ endelse
+
+ ;; read data if necessary
+ if need_to_read then begin
+ data1 = h5_parse(files[table_indexes[z_ind[i]-1]], /read_data)
+ data2 = h5_parse(files[table_indexes[z_ind[i]]], /read_data)
+
+ tbl1_temp = data1.metal_free.temperature.temperature._data
+ tbl2_temp = data2.metal_free.temperature.temperature._data
+ endif
+
+ ;; interpolate z if necessary
+ if need_to_interpolate_z then $
+ tbl_log_temp = alog10(tbl1_temp) * dz[i] + $
+ alog10(tbl2_temp) * (1. - dz[i])
+ endif else $
+ tbl_log_temp = alog10(tbl1_temp)
+
+ if tabletype ne 'collis' then begin
+ ;; interpolate in density, energy density, and helium abundance
+ if n_elements(energy_dens_ind) eq 1 then begin
+ if energy_dens_ind lt 0 then begin
+ log_temp1 = interpolate(tbl_log_temp,dens_ind, $
+ 0,AHe_ind)
+ log_temp2 = interpolate(tbl_log_temp,dens_ind, $
+ 1,AHe_ind)
+ log_temp = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density) - tbl_log_energy_dens[0]) + log_temp1
+ endif else if energy_dens_ind gt n_elements(tbl_log_energy_dens) - 1 then begin
+ log_temp1 = interpolate(tbl_log_temp,dens_ind, $
+ n_elements(tbl_log_energy_dens) - 2,AHe_ind)
+ log_temp2 = interpolate(tbl_log_temp,dens_ind, $
+ n_elements(tbl_log_energy_dens) - 1,AHe_ind)
+ log_temp = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density) - tbl_log_energy_dens[0]) + log_temp1
+ endif else $
+ log_temp = interpolate(tbl_log_temp,dens_ind, $
+ energy_dens_ind,AHe_ind)
+ return,10.^log_temp
+ endif else begin
+ if energy_dens_ind[i] lt 0 then begin
+ log_temp1 = interpolate(tbl_log_temp,dens_ind[i], $
+ 0,AHe_ind[i])
+ log_temp2 = interpolate(tbl_log_temp,dens_ind[i], $
+ 1,AHe_ind[i])
+ log_temp[i] = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density[i]) - tbl_log_energy_dens[0]) + log_temp1
+ endif else if energy_dens_ind[i] gt n_elements(tbl_log_energy_dens) - 1 then begin
+ log_temp1 = interpolate(tbl_log_temp,dens_ind[i], $
+ n_elements(tbl_log_energy_dens) - 2,AHe_ind[i])
+ log_temp2 = interpolate(tbl_log_temp,dens_ind[i], $
+ n_elements(tbl_log_energy_dens) - 1,AHe_ind[i])
+ log_temp[i] = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density[i]) - tbl_log_energy_dens[0]) + log_temp1
+ endif else $
+ log_temp[i] = interpolate(tbl_log_temp,dens_ind[i], $
+ energy_dens_ind[i],AHe_ind[i])
+ endelse
+ endif else begin
+ ;; interpolate in energy density, and helium abundance
+ if energy_dens_ind[i] lt 0 then begin
+ log_temp1 = interpolate(tbl_log_temp,0,AHe_ind)
+ log_temp2 = interpolate(tbl_log_temp,1,AHe_ind)
+ log_temp = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density) - tbl_log_energy_dens[0]) + log_temp1
+ endif else if energy_dens_ind gt n_elements(tbl_log_energy_dens) - 1 then begin
+ log_temp1 = interpolate(tbl_log_temp, $
+ n_elements(tbl_log_energy_dens) - 2,AHe_ind)
+ log_temp2 = interpolate(tbl_log_temp, $
+ n_elements(tbl_log_energy_dens) - 1,AHe_ind)
+ log_temp = ((log_temp2 - log_temp1) / (tbl_log_energy_dens[1] - tbl_log_energy_dens[0])) * $
+ (alog10(energy_density) - tbl_log_energy_dens[0]) + log_temp1
+ endif else $
+ log_temp = interpolate(tbl_log_temp,energy_dens_ind,AHe_ind)
+ return, 10.^log_temp
+ endelse
+ endfor
+
+ return,10.^log_temp
+
+end
diff --git a/PyCool/tables_wiersma/CoolingRoutines/readme b/PyCool/tables_wiersma/CoolingRoutines/readme
new file mode 100644
index 0000000..5ff466b
--- /dev/null
+++ b/PyCool/tables_wiersma/CoolingRoutines/readme
@@ -0,0 +1,26 @@
+The archive contains idl procedures with which one may calculate net
+cooling rates due to various elements as a function of density,
+temperature, and redshift from tables given by Wiersma et
+al. (2009). The tables themselves are encoded using the HDF5 format
+(http://hdf.ncsa.uiuc.edu/HDF5/).
+
+For a description of the methods used, see Wiersma, R. P. C., Schaye, J., and Smith, B. D. 2009, MNRAS, 393, 99.
+
+Our website (http://www.strw.leidenuniv.nl/WSS08/) contains many more details.
+
+The routines are documented in their help, i.e., test = compute_temperature(/help)
+Some examples (assuming the tables are contained in a directory listed in the variable 'tablepath'):
+result = compute_temperature(tablepath, 'normal', 0., 0.1, 1.e13, 1., 0.1, 0)
+^ Computes the temperature at z = 0 corresponding to an energy density of 1.e13 erg/g for a hydrogen density of 0.1 cm^-3 and a nH = 1. and a nHe = 0.1
+
+result = compute_temperature(tablepath, 'collis', 0., 0.2, 1.e12, 0.752, 0.248, 1)
+^ Computes the temperature in collisional ionization equilibrium corresponding to an energy density of 1.e12 erg/g for a hydrogen density of 0.2 cm^-3 and a mH = 0.752 and a mHe = 0.248
+
+result = compute_cooling_Z(tablepath, 'normal', 0., 0.1, 1.e5, 1., 0.1, 0.01, 0)
+^ Computes the cooling at z = 0 for T = 1E5 K, a hydrogen density of 0.1 cm^-3, nH = 1., nHe = 0.1, and nZ = 0.01.
+
+result = compute_cooling_Z(tablepath, 'collis', 0., 0.2, 1.e7, 0.750, 0.24, 0.01)
+^ Computes the cooling in collisional ionization equilibrium for T = 10^7 K, a hydrogen density of 0.2 cm^-3, mH = 0.75, mHe = 0.24 and mZ = 0.01
+
+result = compute_cooling(tablepath, 'collis', 0., 0.2, 1.e7, 0.750, 0.24, 0.0002, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 1)
+^ Computes the cooling in collisional ionization equilibrium for T = 10^7 K, a hydrogen density of 0.2 cm^-3, mH = 0.75, mHe = 0.24 and a bunch of abundances (by mass).
diff --git a/PyCool/tables_wiersma/coolingtables/.DS_Store b/PyCool/tables_wiersma/coolingtables/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/.DS_Store differ
diff --git a/PyCool/tables_wiersma/coolingtables/readme b/PyCool/tables_wiersma/coolingtables/readme
new file mode 100644
index 0000000..5809374
--- /dev/null
+++ b/PyCool/tables_wiersma/coolingtables/readme
@@ -0,0 +1,250 @@
+The archive contains files that give net cooling rates due to various
+elements as a function of density, temperature, and redshift. Each
+file is encoded using the HDF5 format
+(http://hdf.ncsa.uiuc.edu/HDF5/).
+
+For a description of the methods used, see
+
+Wiersma, R. P. C., Schaye, J., and Smith, B. D. 2009, MNRAS, 393, 99
+
+The gas was exposed to the (redshift-dependent) Haardt & Madau (2001,
+hereafter HM01) UV/X-ray background from quasars and galaxies and the
+(redshift-dependent) cosmic microwave background (CMB). The gas was
+assumed to be optically thin and in ionization equilibrium.
+
+The redshift range is identical to that of the HM01 model: z = 0
+through z = 8.989. Every file is named for the redshift it represents,
+with the exception of the following files:
+
+-z_8.989nocompton.hdf5: This file contains net cooling rates for the z
+ = 8.989 UV/X-ray background, but without the CMB. Such a table
+ could be used in a pre z=9, but post-reionization universe (one
+ should then add redshift-dependent Compton cooling off the CMB
+ analytically).
+
+-z_photodis.hdf5: This file contains net cooling rates computed using
+ a soft, non-ionizing UV background. It was computed for the z =
+ 8.989 HM01 background but with the spectrum cut-off at 1
+ Ryd. The CMB was not included. This background dissociates
+ molecules, but does not contain H-ionizing radiation. It could
+ for example be used in the pre-reionization universe (one
+ should then add redshift-dependent Compton cooling off the CMB
+ analytically).
+
+In addition, we provide the following redshift-independent file:
+
+-z_collis.hdf5: This file contains net cooling rates computed assuming
+ collisional ionization equilbrium and no CMB. Note that 'no induced
+ processes' was not used in this table (all other tables were made with
+ this command) since it caused cloudy to crash.
+
+Each file contains groups corresponding to the different elements
+(e.g., "/Carbon"). Hydrogen and helium are considered simultaneously
+in the group "/Metal_free". The different contributions to the cooling
+rates can be combined and scaled to the desired abundances as
+described in WSS08 (eq. 3).
+
+All metals (not just the ones we do separately) are considered
+simultaneously in the group "/Total_Metals". This latter table is useful if
+the metallicity is known, but not the abundances of individual
+elements. The metal and H&He contributions to the cooling rates can
+be combined and scaled to the desired metallicity as described in
+WSS08 (eq. 4).
+
+The group "/Header" contains some useful meta-data and the group
+"/Solar" considers all elements simultaneously (assuming solar
+abundances).
+
+The tables were prepared using the Haardt and Madau (2001) quasars and
+galaxies spectrum, and CLOUDY (last described in Ferland et al. 1998)
+version 07.02.
+
+The ranges of the tables are as follows:
+Temperature: 100 K - 9.1612998e8 K
+Hydrogen density: 1 cm^-3 - 1e-8 cm^-3
+Redshift: 0 - 8.989
+Helium mass fraction (Helium number ratio): 0.238 - 0.298 (0.07865282 -
+0.10689845)
+Energy density: 1e10 erg/g - 1e18 erg/g
+
+Our website (http://www.strw.leidenuniv.nl/WSS08/) contains many sample
+scripts to give an idea as to how to use the tables
+
+References:
+
+Haardt, F. and Madau, P., 2001, Clusters of galaxies and the high
+redshift universe observed in X-rays, Recent results of XMM-Newton and
+Chandra, XXXVIth Rencontres de Moriond , XXIst Moriond Astrophysics
+Meeting, March 10-17, 2001 Savoie, France.
+
+Ferland et al., 1998, PASP, 110, 761
+
+______________________________________________________________________________
+
+What follows is a item-by-item description of each entry in the table,
+complete with units.
+
+/Header (Group)
+ Contains meta data.
+
+/Header/Abundances (Group)
+ Abundances subgroup
+
+/Header/Abundances/Abund_names
+ Names of all the elements in the list
+ /Header/Abundances/Solar_abundances and
+ /Header/Abundances/Solar_number_abundances
+
+/Header/Abundances/Number_of_abundances
+ Number of entries in /Header/Abundances/Solar_abundances and
+ /Header/Abundances/Solar_number_abundances
+
+/Header/Abundances/Solar_mass_fractions
+ Solar abundances used (mass fractions)
+
+/Header/Abundances/Solar_number_ratios
+ Solar abundances used (number density relative to hydrogen)
+
+/Header/Metal_names
+ Names of the metals for which cooling rates are included
+ (correspond to group names).
+
+/Header/Number_of_density_bins
+ Number of density bins
+
+/Header/Number_of_helium_fractions
+ Number of helium fraction bins
+
+/Header/Number_of_metals
+ Number of metals for which cooling rates are included.
+
+/Header/Number_of_temperature_bins
+ Number of temperature bins
+
+/Header/Redshift
+ The redshift to which the data in this file corresponds.
+
+-----
+
+/Metal_free (Group)
+ Includes only hydrogen and helium
+
+/Metal_free/Electron_density_over_n_h
+ Ratio of free electron and hydrogen number densities (n_e/n_H)
+ as a function of /Metal_free/Hydrogen_density_bins,
+ /Metal_free/Temperature_bins, and helium abundance
+ (/Metal_free/Helium_mass_fraction_bins or
+ /Metal_free/Helium_number_ratio_bins)
+
+/Metal_free/Helium_mass_fraction_bins
+ Helium mass fraction bins
+
+/Metal_free/Helium_number_ratio_bins
+ Ratio of helium and hydrogen number density bins (n_He/n_H)
+
+/Metal_free/Hydrogen_density_bins
+ Hydrogen number density bins (n_H [cm^-3])
+
+/Metal_free/Mean_particle_mass
+ Mean particle mass as a function of
+ /Metal_free/Hydrogen_density_bins,
+ /Metal_free/Temperature_bins, and helium abundance
+ (/Metal_free/Helium_mass_fraction_bins or
+ /Metal_free/Helium_number_ratio_bins) (mu [m_H])
+
+/Metal_free/Net_cooling
+ Normalized net cooling rate (pos for cooling, neg for heating)
+ as a function of /Metal_free/Hydrogen_density_bins,
+ /Metal_free/Temperature_bins, and helium abundance
+ (/Metal_free/Helium_mass_fraction_bins or
+ /Metal_free/Helium_number_ratio_bins) (Lambda/n_H^2 [erg s^-1
+ cm^3])
+
+/Metal_free/Temperature_bins
+ Temperature bins (T [K])
+
+-----
+
+/Metal_free/Temperature (Group)
+ Contains data needed to convert energy per unit mass into
+ temperature
+
+/Metal_free/Temperature/Energy_density_bins
+ Internal energy density per unit mass bins [erg g^-1]
+
+/Metal_free/Temperature/Helium_mass_fraction_bins
+ Helium mass fraction bins
+
+/Metal_free/Temperature/Helium_number_ratio_bins
+ Ratio of helium and hydrogen number density bins (n_He/n_H)
+
+/Metal_free/Temperature/Hydrogen_density_bins
+ Hydrogen number density bins (n_H [cm^-3])
+
+/Metal_free/Temperature/Temperature
+ Temperature as a function of
+ /Metal_free/Temperature/Hydrogen_density_bins,
+ /Metal_free/Temperature/Energy_density_bins, and helium
+ abundance (/Metal_free/Temperature/Helium_mass_fraction_bins or
+ /Metal_free/Temperature/Helium_number_ratio_bins) (T [K])
+
+-----
+
+/Total_Metals (Group)
+ Contains contribution to the net cooling due to elements from
+ Li to Zn combined (for solar abundances)
+
+/Total_Metals/Hydrogen_density_bins
+ Hydrogen number density bins (n_H [cm^-3])
+
+/Total_Metals/Net_cooling
+ Normalized net cooling rate (pos for cooling, neg for heating)
+ as a function of /Total_Metals/Hydrogen_density_bins and
+ /Total_Metals/Temperature_bins (Lambda/n_H^2 [erg s^-1 cm^3])
+
+/Total_Metals/Temperature_bins
+ Temperature bins (T [K])
+
+-----
+
+/X (Group)
+ Contains contribution to the net cooling due to element X (for
+ solar abundances)
+
+/X/Hydrogen_density_bins
+ Hydrogen number density bins (n_H [cm^-3])
+
+/X/Net_cooling
+ Normalized, net cooling rate (pos for cooling, neg for heating)
+ due to element X as a function of /X/Hydrogen_density_bins and
+ /X/Temperature_bins (Lambda/n_H^2 [erg s^-1 cm^3])
+
+/X/Temperature_bins
+ Temperature bins (T [K])
+
+-----
+
+/Solar (Group)
+ All elements - H to Zn - are considered simultaneously (assuming
+ solar abundances)
+
+/Solar/Electron_density_over_n_h
+ Ratio of free electron and hydrogen number densities (n_e/n_H)
+ as a function of /Solar/Hydrogen_density_bins and
+ /Solar/Temperature_bins for solar abundances
+
+/Solar/Hydrogen_density_bins
+ Hydrogen number density bins (n_H [cm^-3])
+
+/Solar/Mean_particle_mass
+ Mean particle mass as a function of /Solar/Hydrogen_density_bins and
+ /Solar/Temperature_bins for solar abundances (mu [m_H])
+
+/Solar/Net_Cooling
+ Normalized, net cooling rate (pos for cooling, neg for heating)
+ as a function of /Solar/Hydrogen_density_bins and
+ /Solar/Temperature_bins for solar abundances (Lambda/n_H^2 [erg
+ s^-1 cm^3])
+
+/Solar/Temperature_bins
+ Temperature bins (T [K])
diff --git a/PyCool/tables_wiersma/coolingtables/warning b/PyCool/tables_wiersma/coolingtables/warning
new file mode 100644
index 0000000..3f9f672
--- /dev/null
+++ b/PyCool/tables_wiersma/coolingtables/warning
@@ -0,0 +1,10 @@
+Some things to be aware of:
+z_collis.hdf5 and z_photodis.hdf5 have large relative errors below
+10^4 K due to numerical errors. The net cooling rates are quite small
+in this regime, however.
+
+z_collis.hdf5 was ran with 'no induced processes' *not included* since
+it caused cloudy to crash. This results in a slightly unphysical
+enhancement in the iron and carbon cooling rates. There are peaks at
+10^5 and 10^7 that appear (although the error is always less than a
+factor of 2)
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.000.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.000.hdf5
new file mode 100644
index 0000000..cb564cf
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.000.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.049.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.049.hdf5
new file mode 100644
index 0000000..593f9ef
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.049.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.101.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.101.hdf5
new file mode 100644
index 0000000..f1a24f0
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.101.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.155.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.155.hdf5
new file mode 100644
index 0000000..4b0fbae
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.155.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.211.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.211.hdf5
new file mode 100644
index 0000000..63fdbdc
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.211.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.271.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.271.hdf5
new file mode 100644
index 0000000..1bc3a9b
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.271.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.333.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.333.hdf5
new file mode 100644
index 0000000..079bd26
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.333.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.399.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.399.hdf5
new file mode 100644
index 0000000..144d2a6
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.399.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.468.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.468.hdf5
new file mode 100644
index 0000000..d5c1f2b
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.468.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.540.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.540.hdf5
new file mode 100644
index 0000000..a8957f9
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.540.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.615.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.615.hdf5
new file mode 100644
index 0000000..e50e941
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.615.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.695.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.695.hdf5
new file mode 100644
index 0000000..3b7d931
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.695.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.778.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.778.hdf5
new file mode 100644
index 0000000..0e86cf4
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.778.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.865.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.865.hdf5
new file mode 100644
index 0000000..9f00580
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.865.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_0.957.hdf5 b/PyCool/tables_wiersma/coolingtables/z_0.957.hdf5
new file mode 100644
index 0000000..21c106d
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_0.957.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.053.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.053.hdf5
new file mode 100644
index 0000000..9a2fba5
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.053.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.154.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.154.hdf5
new file mode 100644
index 0000000..00ed9bc
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.154.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.259.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.259.hdf5
new file mode 100644
index 0000000..a3919fa
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.259.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.370.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.370.hdf5
new file mode 100644
index 0000000..84754e7
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.370.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.487.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.487.hdf5
new file mode 100644
index 0000000..360c89b
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.487.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.609.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.609.hdf5
new file mode 100644
index 0000000..fe1822d
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.609.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.737.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.737.hdf5
new file mode 100644
index 0000000..a79e982
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.737.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_1.871.hdf5 b/PyCool/tables_wiersma/coolingtables/z_1.871.hdf5
new file mode 100644
index 0000000..7341dc8
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_1.871.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.013.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.013.hdf5
new file mode 100644
index 0000000..c67aca8
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.013.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.160.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.160.hdf5
new file mode 100644
index 0000000..00a32ff
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.160.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.316.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.316.hdf5
new file mode 100644
index 0000000..53d2683
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.316.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.479.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.479.hdf5
new file mode 100644
index 0000000..a9c3293
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.479.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.649.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.649.hdf5
new file mode 100644
index 0000000..acc33c9
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.649.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_2.829.hdf5 b/PyCool/tables_wiersma/coolingtables/z_2.829.hdf5
new file mode 100644
index 0000000..a9bc6ba
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_2.829.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_3.017.hdf5 b/PyCool/tables_wiersma/coolingtables/z_3.017.hdf5
new file mode 100644
index 0000000..182b82b
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_3.017.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_3.214.hdf5 b/PyCool/tables_wiersma/coolingtables/z_3.214.hdf5
new file mode 100644
index 0000000..02def9e
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_3.214.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_3.421.hdf5 b/PyCool/tables_wiersma/coolingtables/z_3.421.hdf5
new file mode 100644
index 0000000..3beb23f
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_3.421.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_3.638.hdf5 b/PyCool/tables_wiersma/coolingtables/z_3.638.hdf5
new file mode 100644
index 0000000..e70e202
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_3.638.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_3.866.hdf5 b/PyCool/tables_wiersma/coolingtables/z_3.866.hdf5
new file mode 100644
index 0000000..1cfd357
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_3.866.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_4.105.hdf5 b/PyCool/tables_wiersma/coolingtables/z_4.105.hdf5
new file mode 100644
index 0000000..ff8ff3d
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_4.105.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_4.356.hdf5 b/PyCool/tables_wiersma/coolingtables/z_4.356.hdf5
new file mode 100644
index 0000000..88f911a
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_4.356.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_4.619.hdf5 b/PyCool/tables_wiersma/coolingtables/z_4.619.hdf5
new file mode 100644
index 0000000..16a553b
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_4.619.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_4.895.hdf5 b/PyCool/tables_wiersma/coolingtables/z_4.895.hdf5
new file mode 100644
index 0000000..2db38d1
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_4.895.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_5.184.hdf5 b/PyCool/tables_wiersma/coolingtables/z_5.184.hdf5
new file mode 100644
index 0000000..e1ad982
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_5.184.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_5.488.hdf5 b/PyCool/tables_wiersma/coolingtables/z_5.488.hdf5
new file mode 100644
index 0000000..b49a0a4
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_5.488.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_5.807.hdf5 b/PyCool/tables_wiersma/coolingtables/z_5.807.hdf5
new file mode 100644
index 0000000..7a14664
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_5.807.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_6.141.hdf5 b/PyCool/tables_wiersma/coolingtables/z_6.141.hdf5
new file mode 100644
index 0000000..ce5f58e
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_6.141.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_6.492.hdf5 b/PyCool/tables_wiersma/coolingtables/z_6.492.hdf5
new file mode 100644
index 0000000..3298370
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_6.492.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_6.859.hdf5 b/PyCool/tables_wiersma/coolingtables/z_6.859.hdf5
new file mode 100644
index 0000000..ffadfad
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_6.859.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_7.246.hdf5 b/PyCool/tables_wiersma/coolingtables/z_7.246.hdf5
new file mode 100644
index 0000000..6416ffb
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_7.246.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_7.650.hdf5 b/PyCool/tables_wiersma/coolingtables/z_7.650.hdf5
new file mode 100644
index 0000000..6a98910
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_7.650.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_8.075.hdf5 b/PyCool/tables_wiersma/coolingtables/z_8.075.hdf5
new file mode 100644
index 0000000..8155227
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_8.075.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_8.521.hdf5 b/PyCool/tables_wiersma/coolingtables/z_8.521.hdf5
new file mode 100644
index 0000000..b762e27
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_8.521.hdf5 differ
diff --git a/PyCool/tables_wiersma/coolingtables/z_8.989.hdf5 b/PyCool/tables_wiersma/coolingtables/z_8.989.hdf5
new file mode 100644
index 0000000..22fedf2
Binary files /dev/null and b/PyCool/tables_wiersma/coolingtables/z_8.989.hdf5 differ
diff --git a/PyCool/tables_wiersma/scripts/.DS_Store b/PyCool/tables_wiersma/scripts/.DS_Store
new file mode 100644
index 0000000..58effc2
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/.DS_Store differ
diff --git a/PyCool/tables_wiersma/scripts/Makefile b/PyCool/tables_wiersma/scripts/Makefile
new file mode 100644
index 0000000..22140a9
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/Makefile
@@ -0,0 +1,24 @@
+## environment variables for the openmpi library
+#export LD_LIBRARY_PATH=/usr/local/lib/openmpi/:$LD_LIBRARY_PATH
+#export DYLD_LIBRARY_PATH=LD_LIBRARY_PATH:$DYLD_LIBRARY_PATH
+#export MPI_DIR=/usr/local/lib/openmpi/
+#export PATH=/opt/local/lib/openmpi/bin/:$PATH
+
+# /!\ -the flags -shared -fPIC are not supported on MacOsX
+# -Python requires uses of .so extension to import libraries
+
+INCLUDE_PATH = -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/
+INCLUDE_PATH += -I/opt/local/include/
+
+LIB_PATH = -L/opt/local/lib/
+
+HDF5_LIBS = -lhdf5 -lhdf5_hl
+PYTHON_LIB = -lpython2.7
+
+compute_lambda_interface:
+ gcc -dynamiclib -fPIC compute_lambda_interface.c -o compute_lambda_interface.dylib $(INCLUDE_PATH) $(LIB_PATH) $(HDF5_LIBS) $(PYTHON_LIB)
+ cp compute_lambda_interface.dylib compute_lambda_interface.so
+
+clean:
+ rm *.dylib *.so
+
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda.c b/PyCool/tables_wiersma/scripts/compute_lambda.c
new file mode 100644
index 0000000..4073230
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/compute_lambda.c
@@ -0,0 +1,379 @@
+/************************************************************************************************
+*
+* Compute the cooling function Lambda from CLOUDY hdf5 output tables
+* _/\_ = _/\_(z, rho_H, T)
+*
+* Jeremie Despraz, 2012
+*
+* Compilation:
+* gcc -I/opt/local/include/ -L/opt/local/lib/ -lhdf5 -lhdf5_hl -o compute_lambda compute_lambda.c
+* or
+* h5cc -o compute_lambda compute_lambda.c
+*
+************************************************************************************************/
+
+/************************************************************
+* ATTENTION
+*
+* hdf5 table files need to be written in the following
+* format z_%f.hdf5 (ex: z_0.615.hdf5).
+*
+* reference files can be downloaded on:
+* http://www.strw.leidenuniv.nl/WSS08/
+*
+* references for the use of the hdf5 library can be
+* found on:
+* http://www.hdfgroup.org/HDF5/doc/H5.intro.html#Intro-APIs
+* http://www.hdfgroup.org/HDF5/doc/UG/UG_frame08TheFile.html
+*
+************************************************************/
+
+/*********************
+*
+* TODO:
+* efficient error and
+* exception handling
+*
+*********************/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <mpi.h>
+//standard C POSIX library for file handling
+//(opendir, readdir, etc)
+#include <dirent.h>
+//include hdf5 library methods
+#include "hdf5.h"
+
+
+//functions prototypes
+float readhdf5CoolingTable(char*, float, float, float, float);
+int endsWith(const char*, const char*);
+int closestMatchIndex1D(hid_t, char*, float);
+
+
+/********************************* main **********************************/
+int main(int argc, char **argv){
+ int err = 1;
+ int type = -1;
+ char* type_name = "";
+ float lambda = 0.0;
+ float z_in = 0.0;
+ float rho_H_in = 0.0;
+ float T_in = 1.0e4;
+ float nHe_in = 0.0;
+
+ printf("\nmain program starting...\n");
+
+ //read user inputs
+ //determine the type of element for which lambda will be computed
+ printf("element type:\n "
+ "[1]Calcium\n [2]Carbon\n [3]Iron\n [4]Magnesium\n [5]Neon\n "
+ "[6]Nitrogen\n [7]Oxygen\n [8]Silicon\n [9]Sulphur\n "
+ "[10]Total_Metals\n [11]Solar\n [12]Metal_free\n");
+ err = scanf("%d", &type);
+ if(type < 1 || type > 12 || err != 1){
+ printf("\nerror: element type should be in the interval [1,12]\n\n");
+ return 1;
+ }
+ switch(type){
+ case 1:
+ type_name = "/Calcium";
+ break;
+ case 2:
+ type_name = "/Carbon";
+ break;
+ case 3:
+ type_name = "/Iron";
+ break;
+ case 4:
+ type_name = "/Magnesium";
+ break;
+ case 5:
+ type_name = "/Neon";
+ break;
+ case 6:
+ type_name = "/Nitrogen";
+ break;
+ case 7:
+ type_name = "/Oxygen";
+ break;
+ case 8:
+ type_name = "/Silicon";
+ break;
+ case 9:
+ type_name = "/Sulphur";
+ break;
+ case 10:
+ type_name = "/Total_Metals";
+ break;
+ case 11:
+ type_name = "/Solar";
+ break;
+ case 12:
+ type_name = "/Metal_free";
+ break;
+ }
+
+ //determine the redshift value
+ printf("redshift z:\n");
+ err = scanf("%f", &z_in);
+ if(z_in < 0.0 || z_in > 10.0 || err != 1){
+ printf("\nerror: redshift value should be in the interval [0,10]\n\n");
+ return 1;
+ }
+
+ //determine the hydrogen density
+ printf("H density rho_H:\n");
+ err = scanf("%f", &rho_H_in);
+ if(rho_H_in < 0.0 || rho_H_in > 1.0 || err != 1){
+ printf("\nerror: hydrogen density value should be in the interval [0,1]\n\n");
+ return 1;
+ }
+
+ //determine the temperature
+ printf("temperature T:\n");
+ err = scanf("%f", &T_in);
+ if(T_in < 0.0 || T_in > 10.0e10 || err != 1){
+ printf("\nerror: temperature value should be in the interval [0,1e10]\n\n");
+ return 1;
+ }
+
+ //only in the case of metal free gas
+ if(strcmp(type_name,"/Metal_free") == 0){
+ //detetrmine the Helium aboundance
+ printf("Helium aboundance nHe:\n");
+ err = scanf("%f", &nHe_in);
+ if(nHe_in < 0.0 || nHe_in > 1.0 || err != 1){
+ printf("\nerror: Helium aboundance value should be in the interval [0,1]\n\n");
+ return 1;
+ }
+ }
+
+ //compute the value closest possible value of lambda from the tables
+ lambda = readhdf5CoolingTable(type_name, z_in, rho_H_in, T_in, nHe_in);
+ printf("\nlambda(%g,%g,%g,%g) = %g\n", z_in, rho_H_in, T_in, nHe_in, lambda);
+
+ printf("\nmain program terminated\n\n");
+ return 0;
+}
+
+
+/************************ functions declarations *************************/
+float readhdf5CoolingTable(char* type_name, float z_in, float rho_H_in, float T_in, float nHe_in){
+ float lambda = 0.0;
+ //hdf5 tables location
+ char* tables_dir = "../coolingtables/";
+ printf("tables location:\t%s\n", tables_dir);
+
+ //variables ending with "_in" are user input
+ //other variables are closest match in the hdf5 tables
+ float z = 0.0;
+ float rho_H = 0.0;
+ float T = 1.0e4;
+ float nHe = 0.0;
+
+ //load corresponding hdf5 table
+ int err = 0;
+ int hdf5 = 0;
+ float z_file = 0.0;
+ float diff = 0.0;
+ float min = 1.0e10;
+ DIR *dir;
+ struct dirent* content;
+ char* file_name = "";
+
+ //open directory containing the tables
+ dir = opendir(tables_dir);
+ if(dir == NULL){
+ printf("an error occured while opening hdf5 directory %s\n", tables_dir);
+ return 0;
+ }
+
+ /*********************** z ***********************/
+ //scan directory content
+ while((content = readdir(dir)) != NULL){
+ //consider only files having the extension .hdf5
+ hdf5 = endsWith(content->d_name, ".hdf5");
+ if(hdf5 == 1){
+ //scan file name to determine the redshift value
+ err = sscanf(content->d_name, "z_%f.hdf5", &z_file);
+ if(err != 1){
+ printf("an error occured while reading file %s in directory %s\n", content->d_name, tables_dir);
+ return 0;
+ }
+ //determine the file closest to the redshift value given as input
+ diff = fabs(z_file - z_in);
+ if(diff < min){
+ file_name = content->d_name;
+ z = z_file;
+ min = diff;
+ }
+ }
+ }
+
+ //close directory
+ err = closedir(dir);
+ if (err != 0){
+ printf("an error occured while closing directory %s\n", tables_dir);
+ return 0;
+ }
+
+ //variables types specific to the hdf5 library
+ hid_t table;
+ //store path to table file
+ char file_path[(int)strlen(tables_dir)+(int)strlen(file_name)];
+ strcpy(file_path, tables_dir);
+ strcat(file_path, file_name);
+
+ //load hdf5 table
+ table = H5Fopen(file_path, H5F_ACC_RDONLY, H5P_DEFAULT);
+
+ //find the indices for temperature, hydrogen density and
+ //helium mass fraction that correspond to the closest
+ //input values
+ /*********************** T ***********************/
+ int T_index = 0;
+ char* T_key = "/Temperature_bins";
+ char T_table_key[(int)strlen(type_name)+(int)strlen(T_key)];
+ strcpy(T_table_key, type_name);
+ strcat(T_table_key, T_key);
+ T_index = closestMatchIndex1D(table, T_table_key, T_in);
+
+ /********************* rho_H *********************/
+ int rho_H_index = 0;
+ char* rho_H_key = "/Hydrogen_density_bins";
+ char rho_H_table_key[(int)strlen(type_name)+(int)strlen(rho_H_key)];
+ strcpy(rho_H_table_key, type_name);
+ strcat(rho_H_table_key, rho_H_key);
+ rho_H_index = closestMatchIndex1D(table, rho_H_table_key, rho_H_in);
+
+ /********************** nHe **********************/
+ int nHe_index = -1;
+ if(strcmp(type_name,"/Metal_free") == 0){
+ char* nHe_key = "/Helium_mass_fraction_bins";
+ //or
+ //char* nHe_key = "/Helium_number_ratio_bins";
+ char nHe_table_key[(int)strlen(type_name)+(int)strlen(nHe_key)];
+ strcpy(nHe_table_key, type_name);
+ strcat(nHe_table_key, nHe_key);
+ nHe_index = closestMatchIndex1D(table, nHe_table_key, nHe_in);
+ }
+
+ /********************* lambda *********************/
+ //load corresponding lambda value
+ char* lambda_key = "/Net_Cooling"; // /!\ sometimes written "\Net_cooling"
+ char lambda_table_key[(int)strlen(type_name)+(int)strlen(lambda_key)];
+ strcpy(lambda_table_key, type_name);
+ strcat(lambda_table_key, lambda_key);
+
+ hid_t dataset;
+ hid_t dataspace;
+ hid_t memspace;
+ herr_t status;
+ hsize_t dims[3];
+ int rank;
+
+ dataset = H5Dopen2(table, lambda_table_key, H5P_DEFAULT); // open dataset (key)
+ dataspace = H5Dget_space(dataset); // get dataspace
+ rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
+ status = H5Sget_simple_extent_dims(dataspace, dims, NULL);// save dataspace dimensions in dims
+ memspace = H5Screate_simple(rank, dims, NULL); // determine memory space required
+
+ //read lambda value from indices position
+ if(nHe_index != -1){
+ float data[dims[0]][dims[1]][dims[2]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+ lambda = data[nHe_index][T_index][rho_H_index];
+ } else {
+ float data[dims[0]][dims[1]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+ lambda = data[T_index][rho_H_index];
+ }
+
+ //close instances
+ H5Sclose(memspace);
+ H5Sclose(dataspace);
+ H5Dclose(dataset);
+
+ //close file
+ H5Fclose(table);
+
+ return lambda;
+}
+
+
+/*******************************************************************************/
+//determine if the string str ends by the string suffix
+//function used here to determine the extension of file given their name
+int endsWith(const char *str, const char *suffix) {
+ if (!str || !suffix)
+ return 0;
+ size_t lenstr = strlen(str);
+ size_t lensuffix = strlen(suffix);
+ if (lensuffix > lenstr)
+ return 0;
+ return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
+}
+
+
+/*******************************************************************************/
+//return the index of the closest element of the hdf5 table matching the user input
+//note that the dimension of the data has to be 1D
+int closestMatchIndex1D(hid_t table, char* table_key, float input){
+ hid_t dataset;
+ hid_t dataspace;
+ hid_t memspace;
+ herr_t status;
+ hsize_t size[1];
+ int rank;
+ int index;
+
+ dataset = H5Dopen2(table, table_key, H5P_DEFAULT); // open dataset (key)
+ dataspace = H5Dget_space(dataset); // get dataspace
+ rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
+ status = H5Sget_simple_extent_dims(dataspace, size, NULL);// save dataspace dimensions in dims
+ memspace = H5Screate_simple(rank, size, NULL); // determine memory space required
+
+ //read data
+ float data[size[0]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+
+ printf("%s: rank %d, dimension %d \n", table_key, rank, (int)size[0]);
+ /*
+ int i;
+ printf("data content:\n");
+ for(i=0; i<size[1]; i++){
+ printf("%f\n",data[i]);
+ }
+ */
+
+ //determine the index of the closest match
+ int k = 0;
+ float min = 1e30;
+ float diff = 0;
+ float match = 0;
+
+ //the value having the smallest difference
+ //to the input is seeked and the index is stored
+ for(k=0; k<size[0]; k++){
+ diff = fabs(input - data[k]);
+ if(diff < min){
+ match = data[k];
+ index = k;
+ min = diff;
+ }
+ }
+ printf("closest match for %f is %f\n", input, match);
+ printf("corresponding index is %d\n", index);
+
+ //close instances
+ H5Sclose(memspace);
+ H5Sclose(dataspace);
+ H5Dclose(dataset);
+
+ return(index);
+}
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda.py b/PyCool/tables_wiersma/scripts/compute_lambda.py
new file mode 100644
index 0000000..574e757
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/compute_lambda.py
@@ -0,0 +1,67 @@
+###########################################
+#
+# Compute the cooling function Lambda from
+# CLOUDY output tables
+# _/\_ = _/\_(z, rho_H, T)
+#
+# Jeremie Despraz, 2012
+#
+# Usage: python2.7 compute_lambda.py
+#
+###########################################
+
+# to use IO utilities
+from StringIO import StringIO
+# to read and iterate over all cloudy output files
+import os
+# import the numpy library (for loadtxt)
+from numpy import *
+# import pylab (for matplotlib library)
+from pylab import *
+# import hdf library (for hdf5 handling)
+import h5py
+
+
+# function inputs
+print 'python script starting'
+print 'computation of the cooling function lambda(z,rho_H,T)'
+z_in = float(raw_input('redshift z: '))
+rho_H_in = float(raw_input('H density rho_H: '))
+T_in = float(raw_input('temperature: '))
+
+# save .hdf5 file names
+dir = '../coolingtables/'
+fnames = []
+z_list = []
+for file in os.listdir(dir):
+ if(file.endswith('.hdf5')):
+ fnames.append(file)
+ z_list.append(float( file.strip('z_').strip('.hdf5')) )
+
+# return closest value of redshift from avalaible output data
+z = min((abs(z_in-i),i) for i in z_list)[1]
+
+# load data from corresponding hdf5 file
+path = dir + fnames[z_list.index(z)]
+table = h5py.File(path)
+
+# compute stuff
+# consider solar aboundances only
+rho_H = min((abs(rho_H_in-i),i) for i in table[u'Metal_free'][u'Hydrogen_density_bins'])[1]
+rho_idx = list(table[u'Metal_free'][u'Hydrogen_density_bins']).index(rho_H)
+T = min((abs(T_in-i),i) for i in table[u'Metal_free'][u'Temperature_bins'])[1]
+T_idx = list(table[u'Metal_free'][u'Temperature_bins']).index(T)
+
+Lambda = table[u'Metal_free'][u'Net_Cooling'][0,T_idx,rho_idx]
+print 'lambda(z,rho_H,T)=', Lambda
+
+# plot data
+loglog(table[u'Metal_free'][u'Temperature_bins'][:],table[u'Metal_free'][u'Net_Cooling'][0,:,rho_idx]) #logarithmic plot
+xlim([1e4,1e8])
+xlabel('T [K]')
+legend(('rho_H='+str(rho_H)+'\nz='+str(z),),loc='best')
+title('Normalized, net cooling rate ($\Lambda/n_H^2$ [erg s^-1 cm^3])\n')
+show()
+
+print 'python script terminated'
+
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda_from_c.py b/PyCool/tables_wiersma/scripts/compute_lambda_from_c.py
new file mode 100644
index 0000000..575a546
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/compute_lambda_from_c.py
@@ -0,0 +1,43 @@
+##########################################################
+#
+# Python program calling the compute_lambda_interface.c
+#
+# Jeremie Despraz, 2012
+#
+# Usage: python compute_lambda_from_c.py
+#
+##########################################################
+
+#include C library
+import compute_lambda_interface
+from numpy import *
+from pylab import *
+
+
+print 'python script starting'
+#function asking for inputs
+compute_lambda_interface.computeLambda()
+
+#function arguments
+type = '/Metal_free'
+z = 2.0
+rho_H = 1e-3
+nHe = 0.1
+# create vector of data
+T_min = 1e2
+T_max = 1e8
+dT = 1e3
+T_interval = np.arange(T_min, T_max, dT)
+cooling = []
+for T in T_interval:
+ cooling.append( fabs(compute_lambda_interface.readhdf5CoolingTable(type, z, rho_H, T, nHe)) )
+
+# plot data
+loglog(T_interval, cooling) #logarithmic plot
+xlim([T_min, T_max])
+xlabel('T [K]')
+legend(('rho_H='+str(rho_H)+'\nz='+str(z),),loc='best')
+title('Normalized, net cooling rate ($\Lambda/n_H^2$ [erg s^-1 cm^3])\n')
+show()
+
+print 'python script terminated'
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda_interface.c b/PyCool/tables_wiersma/scripts/compute_lambda_interface.c
new file mode 100644
index 0000000..8ac2f1b
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/compute_lambda_interface.c
@@ -0,0 +1,463 @@
+/************************************************************************************************
+ *
+ * Compute the cooling function Lambda from CLOUDY hdf5 output tables
+ * _/\_ = _/\_(z, rho_H, T)
+ *
+ * This file includes a Python interface for python2.7
+ *
+ * Jeremie Despraz, 2012
+ *
+ * Compilation:
+ * make
+ *
+ ************************************************************************************************/
+
+/************************************************************
+ * ATTENTION
+ *
+ * hdf5 table files need to be written in the following
+ * format z_%f.hdf5 (ex: z_0.615.hdf5).
+ *
+ * reference files can be downloaded on:
+ * http://www.strw.leidenuniv.nl/WSS08/
+ *
+ * references for the use of the hdf5 library can be
+ * found on:
+ * http://www.hdfgroup.org/HDF5/doc/H5.intro.html#Intro-APIs
+ * http://www.hdfgroup.org/HDF5/doc/UG/UG_frame08TheFile.html
+ *
+ ************************************************************/
+
+/*********************
+ *
+ * TODO:
+ * efficient error and
+ * exception handling
+ *
+ *********************/
+
+#include <Python.h>
+#include "proto.h"
+#include <stdlib.h>
+#include <math.h>
+#include <mpi.h>
+//standard C POSIX library for file handling
+//(opendir, readdir, etc)
+#include <dirent.h>
+
+
+int withLinInterpolation = 1;
+
+
+/*******************************************************************************/
+int computeLambda(){
+ int err = 1;
+ int type = -1;
+ char* type_name = "";
+ float lambda = 0.0;
+ float z_in = 0.0;
+ float rho_H_in = 0.0;
+ float T_in = 1.0e4;
+ float nHe_in = 0.0;
+
+ //read user inputs
+ //determine the type of element for which lambda will be computed
+ printf("element type:\n "
+ "[1]Calcium\n [2]Carbon\n [3]Iron\n [4]Magnesium\n [5]Neon\n "
+ "[6]Nitrogen\n [7]Oxygen\n [8]Silicon\n [9]Sulphur\n "
+ "[10]Total_Metals\n [11]Solar\n [12]Metal_free\n");
+ err = scanf("%d", &type);
+ if(type < 1 || type > 12 || err != 1){
+ printf("\nerror: element type should be in the interval [1,12]\n\n");
+ return 1;
+ }
+ switch(type){
+ case 1:
+ type_name = "/Calcium";
+ break;
+ case 2:
+ type_name = "/Carbon";
+ break;
+ case 3:
+ type_name = "/Iron";
+ break;
+ case 4:
+ type_name = "/Magnesium";
+ break;
+ case 5:
+ type_name = "/Neon";
+ break;
+ case 6:
+ type_name = "/Nitrogen";
+ break;
+ case 7:
+ type_name = "/Oxygen";
+ break;
+ case 8:
+ type_name = "/Silicon";
+ break;
+ case 9:
+ type_name = "/Sulphur";
+ break;
+ case 10:
+ type_name = "/Total_Metals";
+ break;
+ case 11:
+ type_name = "/Solar";
+ break;
+ case 12:
+ type_name = "/Metal_free";
+ break;
+ }
+
+ //determine the redshift value
+ printf("redshift z:\n");
+ err = scanf("%f", &z_in);
+ if(z_in < 0.0 || z_in > 10.0 || err != 1){
+ printf("\nerror: redshift value should be in the interval [0,10]\n\n");
+ return 1;
+ }
+
+ //determine the hydrogen density
+ printf("H density rho_H:\n");
+ err = scanf("%f", &rho_H_in);
+ if(rho_H_in < 0.0 || rho_H_in > 1.0 || err != 1){
+ printf("\nerror: hydrogen density value should be in the interval [0,1]\n\n");
+ return 1;
+ }
+
+ //determine the temperature
+ printf("temperature T:\n");
+ err = scanf("%f", &T_in);
+ if(T_in < 0.0 || T_in > 10.0e10 || err != 1){
+ printf("\nerror: temperature value should be in the interval [0,1e10]\n\n");
+ return 1;
+ }
+
+ //only in the case of metal free gas
+ if(strcmp(type_name,"/Metal_free") == 0){
+ //detetrmine the Helium aboundance
+ printf("Helium aboundance nHe:\n");
+ err = scanf("%f", &nHe_in);
+ if(nHe_in < 0.0 || nHe_in > 1.0 || err != 1){
+ printf("\nerror: Helium aboundance value should be in the interval [0,1]\n\n");
+ return 1;
+ }
+ }
+
+ //compute the value closest possible value of lambda from the tables
+ lambda = readhdf5CoolingTable(type_name, z_in, rho_H_in, T_in, nHe_in);
+ printf("\nlambda(%g,%g,%g,%g) = %g\n", z_in, rho_H_in, T_in, nHe_in, lambda);
+
+ return 0;
+}
+
+
+/*******************************************************************************/
+// ADD DESCRIPTION HERE
+//variables ending with "_in" are user input, other variables are closest match
+//in the hdf5 tables
+float readhdf5CoolingTable(char* type_name, float z_in, float rho_H_in, float T_in, float nHe_in){
+ float lambda = 0.0;
+ //hdf5 tables location
+ char* tables_dir = "../coolingtables/";
+ printf("tables location:\t%s\n", tables_dir);
+
+ //load corresponding hdf5 table
+ int err = 0;
+ int hdf5 = 0;
+ float z_file = 0.0;
+ float diff = 0.0;
+ float min = 1.0e10;
+ DIR *dir;
+ struct dirent* content;
+ char* file_name = "";
+
+ //open directory containing the tables
+ dir = opendir(tables_dir);
+ if(dir == NULL){
+ printf("an error occured while opening hdf5 directory %s\n", tables_dir);
+ return 0;
+ }
+
+ /*********************** z ***********************/
+ float z = 0.0;
+ //scan directory content
+ while((content = readdir(dir)) != NULL){
+ //consider only files having the extension .hdf5
+ hdf5 = endsWith(content->d_name, ".hdf5");
+ if(hdf5 == 1){
+ //scan file name to determine the redshift value
+ err = sscanf(content->d_name, "z_%f.hdf5", &z_file);
+ if(err != 1){
+ printf("an error occured while reading file %s in directory %s\n", content->d_name, tables_dir);
+ return 0;
+ }
+ //determine the file closest to the redshift value given as input
+ diff = fabs(z_file - z_in);
+ if(diff < min){
+ file_name = content->d_name;
+ z = z_file;
+ min = diff;
+ }
+ }
+ }
+
+ //close directory
+ err = closedir(dir);
+ if (err != 0){
+ printf("an error occured while closing directory %s\n", tables_dir);
+ return 0;
+ }
+
+ //variables types specific to the hdf5 library
+ hid_t table;
+ //store path to table file
+ char file_path[(int)strlen(tables_dir)+(int)strlen(file_name)];
+ strcpy(file_path, tables_dir);
+ strcat(file_path, file_name);
+
+ //load hdf5 table
+ table = H5Fopen(file_path, H5F_ACC_RDONLY, H5P_DEFAULT);
+
+ //find the indices for temperature, hydrogen density and
+ //helium mass fraction that correspond to the closest
+ //input values
+ /*********************** T ***********************/
+ float T [2] = {0.0, 0.0};
+ int T_index[2] = {0,0};
+ char* T_key = "/Temperature_bins";
+ char T_table_key[(int)strlen(type_name)+(int)strlen(T_key)];
+ strcpy(T_table_key, type_name);
+ strcat(T_table_key, T_key);
+ closestMatch1D(table, T_table_key, T_in, T, T_index);
+
+ /********************* rho_H *********************/
+ float rho_H [2] = {0.0, 0.0};
+ int rho_H_index[2] = {0,0};
+ char* rho_H_key = "/Hydrogen_density_bins";
+ char rho_H_table_key[(int)strlen(type_name)+(int)strlen(rho_H_key)];
+ strcpy(rho_H_table_key, type_name);
+ strcat(rho_H_table_key, rho_H_key);
+ closestMatch1D(table, rho_H_table_key, rho_H_in, rho_H, rho_H_index);
+
+
+ /********************** nHe **********************/
+ float nHe [2] = {0.0, 0.0};
+ int nHe_index[2] = {-1,-1};
+ if(strcmp(type_name,"/Metal_free") == 0){
+ char* nHe_key = "/Helium_mass_fraction_bins";
+ //or
+ //char* nHe_key = "/Helium_number_ratio_bins";
+ char nHe_table_key[(int)strlen(type_name)+(int)strlen(nHe_key)];
+ strcpy(nHe_table_key, type_name);
+ strcat(nHe_table_key, nHe_key);
+ closestMatch1D(table, nHe_table_key, nHe_in, nHe, nHe_index);
+ }
+
+ /********************* lambda *********************/
+ //load corresponding lambda value
+ char* lambda_key = "/Net_Cooling"; // /!\ sometimes written "/Net_cooling"
+ char lambda_table_key[(int)strlen(type_name)+(int)strlen(lambda_key)];
+ strcpy(lambda_table_key, type_name);
+ strcat(lambda_table_key, lambda_key);
+
+ hid_t dataset;
+ hid_t dataspace;
+ hid_t memspace;
+ herr_t status;
+ hsize_t dims[3];
+ int rank;
+
+ dataset = H5Dopen2(table, lambda_table_key, H5P_DEFAULT); // open dataset (key)
+ dataspace = H5Dget_space(dataset); // get dataspace
+ rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
+ status = H5Sget_simple_extent_dims(dataspace, dims, NULL);// save dataspace dimensions in dims
+ memspace = H5Screate_simple(rank, dims, NULL); // determine memory space required
+
+ //read lambda value from indices position
+ if(nHe_index[0] != -1){
+ float data[dims[0]][dims[1]][dims[2]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+ lambda = data[nHe_index[0]][T_index[0]][rho_H_index[0]];
+
+ if(withLinInterpolation == 1){
+ //linear interpolation of the results
+ //the derivative is computed by a simple finite difference method.
+ //f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
+ lambda += (data[nHe_index[0]][T_index[0]][rho_H_index[0]]-data[nHe_index[1]][T_index[0]][rho_H_index[0]])
+ / (nHe[0]-nHe[1]) * (nHe_in - nHe[0]);
+
+ lambda += (data[nHe_index[0]][T_index[0]][rho_H_index[0]]-data[nHe_index[0]][T_index[1]][rho_H_index[0]])
+ / (T[0]-T[1]) * (T_in - T[0]);
+
+ lambda += (data[nHe_index[0]][T_index[0]][rho_H_index[0]]-data[nHe_index[0]][T_index[0]][rho_H_index[1]])
+ / (rho_H[0]-rho_H[1]) * (rho_H_in - rho_H[0]);
+ }
+ } else {
+ float data[dims[0]][dims[1]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+ lambda = data[T_index[0]][rho_H_index[0]];
+
+ if(withLinInterpolation == 1){
+ //linear interpolation of the results
+ //the derivative is computed by a simple finite difference method.
+ //f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
+ lambda += (data[T_index[0]][rho_H_index[0]]-data[T_index[1]][rho_H_index[0]])
+ / (T[0]-T[1]) * (T_in - T[0]);
+
+ lambda += (data[T_index[0]][rho_H_index[0]]-data[T_index[0]][rho_H_index[1]])
+ / (rho_H[0]-rho_H[1]) * (rho_H_in - rho_H[0]);
+ }
+ }
+
+ //close instances
+ H5Sclose(memspace);
+ H5Sclose(dataspace);
+ H5Dclose(dataset);
+
+ //close file
+ H5Fclose(table);
+
+ return lambda;
+}
+
+
+/*******************************************************************************/
+//determine if the string str ends by the string suffix
+//function used here to determine the extension of file given their name
+int endsWith(const char *str, const char *suffix) {
+ if (!str || !suffix)
+ return 0;
+ size_t lenstr = strlen(str);
+ size_t lensuffix = strlen(suffix);
+ if (lensuffix > lenstr)
+ return 0;
+ return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
+}
+
+
+/*******************************************************************************/
+//return the indices of the 2 closest element of the hdf5 table matching the user
+// input. Note that the dimension of the data has to be 1D
+void closestMatch1D(hid_t table, char* table_key, float input, float match[2], int index[2]){
+ hid_t dataset;
+ hid_t dataspace;
+ hid_t memspace;
+ herr_t status;
+ hsize_t size[1];
+ int rank;
+
+ dataset = H5Dopen2(table, table_key, H5P_DEFAULT); // open dataset (key)
+ dataspace = H5Dget_space(dataset); // get dataspace
+ rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
+ status = H5Sget_simple_extent_dims(dataspace, size, NULL);// save dataspace dimensions in dims
+ memspace = H5Screate_simple(rank, size, NULL); // determine memory space required
+
+ //read data
+ float data[size[0]];
+ status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
+
+ printf("%s: rank %d, dimension %d \n", table_key, rank, (int)size[0]);
+
+ //determine the index of the closest values (above and below)
+ int k = 0;
+ float min1 = 1e30;
+ float min2 = 1e30;
+ float diff = 0;
+
+ //the value having the smallest difference
+ //to the input is seeked and the index is stored
+ for(k=0; k<size[0]; k++){
+ diff = fabs(input - data[k]);
+ if(diff < min1){
+ match[0] = data[k];
+ index[0] = k;
+ min1 = diff;
+ }
+ else if(diff < min2){
+ match[1] = data[k];
+ index[1] = k;
+ min2 = diff;
+ }
+ }
+ printf("closest match#1 for %f is %f with index %d\n", input, match[0], index[0]);
+ printf("closest match#2 for %f is %f with index %d\n", input, match[1], index[1]);
+
+ //close instances
+ H5Sclose(memspace);
+ H5Sclose(dataspace);
+ H5Dclose(dataset);
+}
+
+
+
+
+/************************************* Python Interface ************************************/
+
+
+
+/*****************************************************/
+/* functions declarations */
+/*****************************************************/
+static PyObject* computeLambdaInterface(PyObject *self, PyObject *args) {
+
+ int error_status;
+
+ error_status = computeLambda();
+
+ return Py_BuildValue("d",error_status);
+}
+
+static PyObject* readhdf5CoolingTableInterface(PyObject *self, PyObject *args) {
+
+ const char* type_name;
+ float z_in;
+ float rho_H_in;
+ float T_in;
+ float nHe_in;
+ float lambda;
+
+ if (!PyArg_ParseTuple(args, "sffff", &type_name, &z_in, &rho_H_in, &T_in, &nHe_in)) {
+ return NULL;
+ }
+
+ printf("%s\n","computing function with parameters:");
+ printf("%s: %s\n","type", type_name);
+ printf("%s: %g\n","redshift", z_in);
+ printf("%s: %g\n","hydrogen density", rho_H_in);
+ printf("%s: %g\n","temperature", T_in);
+ printf("%s: %g\n","helium aboundance", nHe_in);
+
+ lambda = readhdf5CoolingTable(type_name, z_in, rho_H_in, T_in, nHe_in);
+
+ return Py_BuildValue("f",lambda);
+}
+
+
+/*****************************************************/
+/* Method table */
+/*****************************************************/
+static PyMethodDef computeLambdaMethods[] = {
+
+ {"computeLambda", computeLambdaInterface, METH_VARARGS,
+ "Asks for inputs and compute the cooling accordingly."},
+
+ {"readhdf5CoolingTable", readhdf5CoolingTableInterface, METH_VARARGS,
+ "Compute the cooling from given inputs."},
+
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+
+
+/*****************************************************/
+/* initialization */
+/*****************************************************/
+
+//void initcompute_lambda_interface(void)
+PyMODINIT_FUNC initcompute_lambda_interface(void) {
+
+ (void) Py_InitModule("compute_lambda_interface", computeLambdaMethods);
+
+}
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda_interface.dylib b/PyCool/tables_wiersma/scripts/compute_lambda_interface.dylib
new file mode 100755
index 0000000..9694d18
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/compute_lambda_interface.dylib differ
diff --git a/PyCool/tables_wiersma/scripts/compute_lambda_interface.so b/PyCool/tables_wiersma/scripts/compute_lambda_interface.so
new file mode 100755
index 0000000..9694d18
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/compute_lambda_interface.so differ
diff --git a/PyCool/tables_wiersma/scripts/input.txt b/PyCool/tables_wiersma/scripts/input.txt
new file mode 100644
index 0000000..bcae7fe
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/input.txt
@@ -0,0 +1,6 @@
+12
+6
+0.2
+70000
+0.15
+
diff --git a/PyCool/tables_wiersma/scripts/instructions_python.txt b/PyCool/tables_wiersma/scripts/instructions_python.txt
new file mode 100644
index 0000000..2f3320b
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/instructions_python.txt
@@ -0,0 +1,5 @@
+lancer ipython:
+ipython-2.4 --pylab
+
+reload file:
+reload(file)
diff --git a/PyCool/tables_wiersma/scripts/plot_cooling.py b/PyCool/tables_wiersma/scripts/plot_cooling.py
new file mode 100644
index 0000000..81f7210
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/plot_cooling.py
@@ -0,0 +1,57 @@
+###########################################
+#
+# Read and plot data from CLOUDY tables
+# Jeremie Despraz, 2012
+#
+# Usage: python2.4 plot_cooling.py
+#
+###########################################
+
+# to use IO utilities
+from StringIO import StringIO
+# import the numpy library (for loadtxt)
+from numpy import *
+# import pylab (for matplotlib library)
+from pylab import *
+
+print 'python script starting'
+# load data from table
+file = '../z_collis.txt'
+data = loadtxt(file)
+print 'data array dimensions:', data.shape
+
+# headers list
+headers = array(
+['T [K]',
+'lambda_nH^2, nhe/nh = 0.0786528',
+'ne/nh, nhe/nh = 0.0786528',
+'lambda_nh^2, nhe/nh = 0.0830474',
+'ne/nh, nhe/nh = 0.0830474',
+'lambda_nh^2, nhe/nh = 0.0875605',
+'ne/nh, nhe/nh = 0.0875605',
+'lambda_nh^2, nhe/nh = 0.0921968',
+'ne/nh, nhe/nh = 0.0921968',
+'lambda_nh^2, nhe/nh = 0.0969616',
+'ne/nh, nhe/nh = 0.0969616',
+'lambda_nh^2, nhe/nh = 0.10186',
+'ne/nh, nhe/nh = 0.10186',
+'lambda_nh^2, nhe/nh = 0.106898',
+'ne/nh, nhe/nh = 0.106898',
+'lambda_nh^2, metal',
+'lambda_nh^2, C only',
+'lambda_nh^2, N only',
+'lambda_nh^2, O only',
+'lambda_nh^2, Ne only',
+'lambda_nh^2, Mg only',
+'lambda_nh^2, Si only',
+'lambda_nh^2, S only',
+'lambda_nh^2, Ca only',
+'lambda_nh^2, Fe only'])
+
+# plot data
+plot(data[:,0],data[:,1:-1]) #last element = -1
+xlabel('T [K]')
+legend(headers[1:-1])
+show()
+print 'python script terminated'
+
diff --git a/PyCool/tables_wiersma/scripts/plot_cooling.pyc b/PyCool/tables_wiersma/scripts/plot_cooling.pyc
new file mode 100644
index 0000000..30fb4d7
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/plot_cooling.pyc differ
diff --git a/PyCool/tables_wiersma/scripts/plot_cooling_hdf5.py b/PyCool/tables_wiersma/scripts/plot_cooling_hdf5.py
new file mode 100644
index 0000000..b7d54d3
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/plot_cooling_hdf5.py
@@ -0,0 +1,92 @@
+###########################################
+#
+# Read and plot data from CLOUDY tables
+# using the hdf5 library
+# Jeremie Despraz, 2012
+#
+# Usage: python2.7 plot_cooling_hdf5.py
+#
+###########################################
+
+# to use IO utilities
+from StringIO import StringIO
+# to read and iterate over all cloudy output files
+import os
+# import the numpy library (for loadtxt)
+from numpy import *
+# import pylab (for matplotlib library)
+from pylab import *
+# import hdf library (for hdf5 handling)
+import h5py
+
+
+print 'python script starting'
+
+# load data from all hdf5 files
+dir = '../coolingtables/'
+fnames = []
+for file in os.listdir(dir):
+ if(file.endswith('.hdf5')):
+ fnames.append(file)
+
+# plot only every 4th data file to avoid memory overflow
+for k in range(len(fnames)/4):
+ path = dir + fnames[4*k]
+ table = h5py.File(path)
+
+ #print 'table keys:', table.keys()
+ #print 'table values:', table.values()
+ #print 'table items:', table.items()
+
+ # compute stuff
+ # net_cooling = Lambda / n_H^2
+ # electron_density_over_n_h = n_e/n_h
+ Lambda = table[u'Solar'][u'Net_cooling'][:,:] / table[u'Solar'][u'Electron_density_over_n_h'][:,:]
+ sumLambda = ones(len(Lambda))
+ for i in range(len(Lambda)):
+ sumLambda[i] = sum(Lambda[i,:])
+
+ # reproduce fig.1 form Wiersma, R. P. C., Schaye, J., and Smith, B. D. 2009, MNRAS, 393, 99
+ loglog(table[u'Solar'][u'Temperature_bins'],sumLambda)
+ hold(True)
+ #axis([1e4,1e8,1e-26,1e-20])
+ xlim([1e4,1e8])
+ xlabel('T [K]')
+ #legend((fnames[k],),loc='best')
+ title('Normalized, net cooling rate (pos for cooling, neg for heating) as a function\n of H density and T for solar abundances (Lambda/n_H^2 [erg s^-1 cm^3])\n')
+ #show()
+
+legend(fnames[0:-1:4],loc='best') #(form 0 to end by steps of size 4)
+show()
+
+# compute stuff
+path = dir + fnames[0]
+table = h5py.File(path)
+Lambda = table[u'Solar'][u'Net_cooling'][:,:] / table[u'Solar'][u'Electron_density_over_n_h'][:,:]
+meanLambda = ones(len(Lambda))
+for i in range(len(Lambda)):
+ meanLambda[i] = mean(Lambda[i,:])
+
+# plot data
+plot(table[u'Solar'][u'Temperature_bins'][:],table[u'Solar'][u'Net_cooling'][:,1:-1]) #last element = -1
+xlabel('T [K]')
+legend(('Lambda',),loc='best')
+title('Normalized, net cooling rate (pos for cooling, neg for heating) as a function\n of H density and T for solar abundances (Lambda/n_H^2 [erg s^-1 cm^3])\n')
+show()
+
+loglog(table[u'Solar'][u'Temperature_bins'][:],Lambda[:,1:-1]) #logarithmic plot
+xlim([1e4,1e8])
+xlabel('T [K]')
+legend(('log(Lambda)',),loc='best')
+title('Normalized, net cooling rate (pos for cooling, neg for heating) as a function\n of H density and T for solar abundances (Lambda/n_H^2 [erg s^-1 cm^3])\n')
+show()
+
+loglog(table[u'Solar'][u'Temperature_bins'],meanLambda) #logarithmic plot
+xlim([1e4,1e8])
+xlabel('T [K]')
+legend(('mean(Lambda)',),loc='best')
+title('Normalized, net cooling rate (pos for cooling, neg for heating) as a function\n of H density and T for solar abundances (Lambda/n_H^2 [erg s^-1 cm^3])\n')
+show()
+
+print 'python script terminated'
+
diff --git a/PyCool/tables_wiersma/scripts/plots/Lambda_closest_match.png b/PyCool/tables_wiersma/scripts/plots/Lambda_closest_match.png
new file mode 100644
index 0000000..cacb577
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/plots/Lambda_closest_match.png differ
diff --git a/PyCool/tables_wiersma/scripts/plots/Lambda_with_lin_interp.png b/PyCool/tables_wiersma/scripts/plots/Lambda_with_lin_interp.png
new file mode 100644
index 0000000..a9a0dc1
Binary files /dev/null and b/PyCool/tables_wiersma/scripts/plots/Lambda_with_lin_interp.png differ
diff --git a/PyCool/tables_wiersma/scripts/proto.h b/PyCool/tables_wiersma/scripts/proto.h
new file mode 100644
index 0000000..5d02258
--- /dev/null
+++ b/PyCool/tables_wiersma/scripts/proto.h
@@ -0,0 +1,18 @@
+/**************************************************
+ *
+ * Functions prototypes for compute_lambda.c
+ *
+ * Jeremie Despraz, 2012
+ *
+ *
+/*************************************************/
+
+#include "hdf5.h"
+
+/*****************************************************/
+/* prototypes */
+/*****************************************************/
+ int computeLambda();
+ float readhdf5CoolingTable(char* type_name, float z_in, float rho_H_in, float T_in, float nHe_in);
+ int endsWith(const char *str, const char *suffix);
+ void closestMatch1D(hid_t table, char* table_key, float input, float match[2], int index[2]);
diff --git a/PyCool/tables_wiersma/sources.txt b/PyCool/tables_wiersma/sources.txt
new file mode 100644
index 0000000..4faef0b
--- /dev/null
+++ b/PyCool/tables_wiersma/sources.txt
@@ -0,0 +1,6 @@
+source:
+-article:
+http://adsabs.harvard.edu/abs/2009MNRAS.393...99W
+
+-tables:
+http://www.strw.leidenuniv.nl/WSS08/
diff --git a/PyCool/tables_wiersma/z_collis.txt b/PyCool/tables_wiersma/z_collis.txt
new file mode 100644
index 0000000..533b38a
--- /dev/null
+++ b/PyCool/tables_wiersma/z_collis.txt
@@ -0,0 +1,387 @@
+# This file contains Collisional Ionization Equilibrium net cooling rates generated
+# with CLOUDY (version 07.02). For a description of the methods used, see
+#
+# Wiersma, R. P. C., Schaye, J., and Smith, B. D. 2008, MNRAS, 2009,
+# 393, 99
+#
+# Note that this file contains slightly less information than our hdf5 equivalent (found also on
+# our site - http://www.strw.leidenuniv.nl/WSS08), but we post this for the convenience of the
+# user.
+#
+# column 1: T [K]
+# column 2: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.0786528)
+# column 3: ne/nh (nhe/nh = 0.0786528)
+# column 4: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.0830474)
+# column 5: ne/nh (nhe/nh = 0.0830474)
+# column 6: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.0875605)
+# column 7: ne/nh (nhe/nh = 0.0875605)
+# column 8: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.0921968)
+# column 9: ne/nh (nhe/nh = 0.0921968)
+# column 10: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.0969616)
+# column 11: ne/nh (nhe/nh = 0.0969616)
+# column 12: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.10186)
+# column 13: ne/nh (nhe/nh = 0.10186)
+# column 14: Lambda/n_H^2 [erg s-1 cm^3] (nhe/nh = 0.106898)
+# column 15: ne/nh (nhe/nh = 0.106898)
+# column 16: Lambda/n_H^2 [erg s-1 cm^3] (metals only)
+# column 17: Lambda/n_H^2 [erg s-1 cm^3] (C only)
+# column 18: Lambda/n_H^2 [erg s-1 cm^3] (N only)
+# column 19: Lambda/n_H^2 [erg s-1 cm^3] (O only)
+# column 20: Lambda/n_H^2 [erg s-1 cm^3] (Ne only)
+# column 21: Lambda/n_H^2 [erg s-1 cm^3] (Mg only)
+# column 22 Lambda/n_H^2 [erg s-1 cm^3] (Si only)
+# column 23 Lambda/n_H^2 [erg s-1 cm^3] (S only)
+# column 24 Lambda/n_H^2 [erg s-1 cm^3] (Ca only)
+# column 25 Lambda/n_H^2 [erg s-1 cm^3] (Fe only)
+ 100.00 -1.1429e-31 4.2759e-05 -1.1573e-31 4.2945e-05 -1.1725e-31 4.3138e-05 -1.1884e-31 4.3340e-05 -1.2137e-31 4.3659e-05 -1.2316e-31 4.3883e-05 -1.2504e-31 4.4117e-05 1.2468e-27 9.1270e-28 -6.4621e-31 9.5651e-29 -4.5515e-34 4.1540e-29 2.3511e-28 1.2925e-30 -9.6673e-35 -2.7915e-31
+ 104.69 -1.1439e-31 4.3371e-05 -1.1584e-31 4.3559e-05 -1.1736e-31 4.3756e-05 -1.1895e-31 4.3961e-05 -1.2149e-31 4.4285e-05 -1.2328e-31 4.4512e-05 -1.2517e-31 4.4750e-05 1.2994e-27 9.3182e-28 -6.5652e-31 1.1072e-28 -5.5258e-34 4.3192e-29 2.5280e-28 1.9423e-30 -9.6673e-35 -2.9206e-31
+ 109.59 -1.1449e-31 4.3993e-05 -1.1594e-31 4.4184e-05 -1.1746e-31 4.4383e-05 -1.1906e-31 4.4591e-05 -1.2160e-31 4.4920e-05 -1.2340e-31 4.5151e-05 -1.2529e-31 4.5392e-05 1.3544e-27 9.5044e-28 -6.5112e-31 1.2739e-28 -5.5295e-34 4.6982e-29 2.7139e-28 2.7048e-30 -3.7616e-37 -3.1791e-31
+ 114.73 -1.1458e-31 4.4624e-05 -1.1604e-31 4.4817e-05 -1.1756e-31 4.5020e-05 -1.1916e-31 4.5231e-05 -1.2171e-31 4.5565e-05 -1.2351e-31 4.5800e-05 -1.2540e-31 4.6045e-05 1.4118e-27 9.6860e-28 -6.4582e-31 1.4586e-28 -6.4963e-34 4.9772e-29 2.9100e-28 3.6981e-30 -1.9297e-34 -3.0800e-31
+ 120.11 -1.1467e-31 4.5264e-05 -1.1613e-31 4.5461e-05 -1.1765e-31 4.5666e-05 -1.1926e-31 4.5881e-05 -1.2181e-31 4.6220e-05 -1.2362e-31 4.6458e-05 -1.2551e-31 4.6707e-05 1.4719e-27 9.8629e-28 -6.3879e-31 1.6621e-28 -4.5703e-34 5.2377e-29 3.1161e-28 4.9219e-30 -3.7616e-37 -2.9857e-31
+ 125.74 -1.1475e-31 4.5914e-05 -1.1621e-31 4.6114e-05 -1.1774e-31 4.6323e-05 -1.1934e-31 4.6540e-05 -1.2190e-31 4.6885e-05 -1.2371e-31 4.7127e-05 -1.2561e-31 4.7379e-05 1.5347e-27 1.0035e-27 -6.3176e-31 1.8853e-28 -4.5778e-34 5.4801e-29 3.3323e-28 6.4146e-30 -3.7616e-37 -2.8713e-31
+ 131.63 -1.1482e-31 4.6575e-05 -1.1628e-31 4.6777e-05 -1.1781e-31 4.6989e-05 -1.1942e-31 4.7210e-05 -1.2198e-31 4.7560e-05 -1.2380e-31 4.7806e-05 -1.2570e-31 4.8062e-05 1.6004e-27 1.0202e-27 -6.2493e-31 2.1295e-28 -6.5113e-34 5.7006e-29 3.5586e-28 8.2144e-30 -9.6673e-35 -2.7337e-31
+ 137.80 -1.1487e-31 4.7245e-05 -1.1633e-31 4.7451e-05 -1.1787e-31 4.7666e-05 -1.1948e-31 4.7891e-05 -1.2204e-31 4.8246e-05 -1.2386e-31 4.8495e-05 -1.2577e-31 4.8756e-05 1.6692e-27 1.0364e-27 -6.1858e-31 2.3956e-28 -6.5113e-34 5.8959e-29 3.7952e-28 1.0361e-29 -3.7616e-37 -2.5768e-31
+ 144.25 -1.1490e-31 4.7926e-05 -1.1636e-31 4.8135e-05 -1.1790e-31 4.8353e-05 -1.1952e-31 4.8581e-05 -1.2209e-31 4.8942e-05 -1.2391e-31 4.9195e-05 -1.2582e-31 4.9460e-05 1.7412e-27 1.0521e-27 -6.1262e-31 2.6847e-28 -8.4410e-34 6.0853e-29 4.0419e-28 1.2891e-29 -1.9297e-34 -2.3978e-31
+ 151.02 -1.1491e-31 4.8617e-05 -1.1637e-31 4.8829e-05 -1.1791e-31 4.9051e-05 -1.1953e-31 4.9282e-05 -1.2211e-31 4.9649e-05 -1.2393e-31 4.9906e-05 -1.2584e-31 5.0174e-05 1.8166e-27 1.0674e-27 -6.0627e-31 2.9979e-28 -6.5226e-34 6.2211e-29 4.2987e-28 1.5860e-29 -1.9297e-34 -2.4654e-31
+ 158.09 -1.1488e-31 4.9318e-05 -1.1635e-31 4.9534e-05 -1.1789e-31 4.9759e-05 -1.1951e-31 4.9994e-05 -1.2209e-31 5.0366e-05 -1.2392e-31 5.0628e-05 -1.2583e-31 5.0900e-05 1.9001e-27 1.0869e-27 -6.0396e-31 3.3362e-28 -4.6004e-34 6.3222e-29 4.5655e-28 1.9302e-29 -3.7616e-37 -2.2941e-31
+ 165.50 -1.1482e-31 5.0031e-05 -1.1629e-31 5.0250e-05 -1.1784e-31 5.0479e-05 -1.1946e-31 5.0717e-05 -1.2204e-31 5.1095e-05 -1.2387e-31 5.1360e-05 -1.2578e-31 5.1637e-05 1.9951e-27 1.1137e-27 -5.9820e-31 3.7006e-28 -6.5301e-34 6.3867e-29 4.8419e-28 2.3270e-29 -1.9297e-34 -2.0786e-31
+ 173.26 -1.1471e-31 5.0754e-05 -1.1618e-31 5.0977e-05 -1.1773e-31 5.1209e-05 -1.1935e-31 5.1452e-05 -1.2194e-31 5.1835e-05 -1.2377e-31 5.2105e-05 -1.2569e-31 5.2386e-05 2.0944e-27 1.1407e-27 -5.9281e-31 4.0922e-28 -4.6117e-34 6.4116e-29 5.1279e-28 2.7801e-29 -3.7616e-37 -1.8457e-31
+ 181.38 -1.1454e-31 5.1489e-05 -1.1602e-31 5.1715e-05 -1.1756e-31 5.1951e-05 -1.1919e-31 5.2197e-05 -1.2177e-31 5.2586e-05 -1.2360e-31 5.2860e-05 -1.2553e-31 5.3146e-05 2.1982e-27 1.1678e-27 -5.8763e-31 4.5119e-28 -4.6192e-34 6.3943e-29 5.4230e-28 3.2939e-29 -3.7616e-37 -1.6109e-31
+ 189.88 -1.1431e-31 5.2235e-05 -1.1578e-31 5.2464e-05 -1.1733e-31 5.2704e-05 -1.1895e-31 5.2954e-05 -1.2154e-31 5.3349e-05 -1.2337e-31 5.3627e-05 -1.2529e-31 5.3917e-05 2.3080e-27 1.1965e-27 -5.8263e-31 4.9608e-28 -2.6971e-34 6.3323e-29 5.7270e-28 3.8726e-29 -3.7616e-37 -1.3646e-31
+ 198.78 -1.1398e-31 5.2992e-05 -1.1545e-31 5.3225e-05 -1.1700e-31 5.3468e-05 -1.1863e-31 5.3722e-05 -1.2121e-31 5.4124e-05 -1.2304e-31 5.4406e-05 -1.2497e-31 5.4701e-05 2.4243e-27 1.2272e-27 -5.7821e-31 5.4398e-28 -4.6305e-34 6.2233e-29 6.0395e-28 4.5200e-29 -1.9335e-34 -1.1183e-31
+ 208.09 -1.1355e-31 5.3761e-05 -1.1502e-31 5.3997e-05 -1.1657e-31 5.4245e-05 -1.1819e-31 5.4503e-05 -1.2078e-31 5.4911e-05 -1.2261e-31 5.5197e-05 -1.2453e-31 5.5496e-05 2.5455e-27 1.2582e-27 -5.7380e-31 5.9499e-28 -4.6343e-34 6.0653e-29 6.3601e-28 5.2398e-29 -1.9297e-34 -1.2536e-31
+ 217.85 -1.1299e-31 5.4541e-05 -1.1447e-31 5.4782e-05 -1.1601e-31 5.5033e-05 -1.1763e-31 5.5295e-05 -1.2021e-31 5.5709e-05 -1.2204e-31 5.6000e-05 -1.2396e-31 5.6304e-05 2.6716e-27 1.2893e-27 -5.6842e-31 6.4922e-28 -7.8993e-35 5.8560e-29 6.6884e-28 6.0355e-29 -3.7616e-37 -9.9390e-32
+ 228.06 -1.1229e-31 5.5334e-05 -1.1375e-31 5.5578e-05 -1.1530e-31 5.5833e-05 -1.1691e-31 5.6099e-05 -1.1949e-31 5.6520e-05 -1.2132e-31 5.6816e-05 -1.2323e-31 5.7124e-05 2.8026e-27 1.3206e-27 -5.6478e-31 7.0674e-28 -6.5715e-34 5.5936e-29 7.0238e-28 6.9100e-29 -1.9297e-34 -7.5156e-32
+ 238.75 -1.1139e-31 5.6139e-05 -1.1286e-31 5.6387e-05 -1.1440e-31 5.6646e-05 -1.1601e-31 5.6916e-05 -1.1858e-31 5.7343e-05 -1.2040e-31 5.7644e-05 -1.2231e-31 5.7957e-05 2.9387e-27 1.3522e-27 -5.5998e-31 7.6766e-28 -2.7271e-34 5.2763e-29 7.3660e-28 7.8660e-29 -3.7616e-37 -5.0539e-32
+ 249.93 -1.1028e-31 5.6956e-05 -1.1174e-31 5.7208e-05 -1.1327e-31 5.7471e-05 -1.1488e-31 5.7745e-05 -1.1744e-31 5.8179e-05 -1.1926e-31 5.8485e-05 -1.2116e-31 5.8803e-05 3.0764e-27 1.3839e-27 -5.5230e-31 8.2866e-28 -4.6606e-34 4.9027e-29 7.7145e-28 8.9061e-29 -1.9335e-34 -2.3814e-32
+ 261.65 -1.0891e-31 5.7785e-05 -1.1036e-31 5.8041e-05 -1.1189e-31 5.8308e-05 -1.1349e-31 5.8587e-05 -1.1604e-31 5.9028e-05 -1.1784e-31 5.9338e-05 -1.1974e-31 5.9662e-05 3.2171e-27 1.4158e-27 -5.4923e-31 8.9101e-28 -8.1626e-35 4.4704e-29 8.0686e-28 1.0031e-28 -7.5232e-37 -3.0540e-33
+ 273.91 -1.0722e-31 5.8628e-05 -1.0867e-31 5.8888e-05 -1.1018e-31 5.9159e-05 -1.1177e-31 5.9442e-05 -1.1431e-31 5.9890e-05 -1.1611e-31 6.0205e-05 -1.1799e-31 6.0533e-05 3.3623e-27 1.4479e-27 -5.4598e-31 9.5627e-28 -8.2379e-35 3.9785e-29 8.4280e-28 1.1243e-28 -3.7616e-37 1.6738e-32
+ 286.75 -1.0517e-31 5.9483e-05 -1.0660e-31 5.9747e-05 -1.0810e-31 6.0022e-05 -1.0968e-31 6.0310e-05 -1.1220e-31 6.0765e-05 -1.1398e-31 6.1085e-05 -1.1585e-31 6.1418e-05 3.5119e-27 1.4803e-27 -5.4330e-31 1.0245e-27 3.0281e-34 3.3942e-29 8.7921e-28 1.2543e-28 -3.7616e-37 3.4407e-32
+ 300.19 -1.0267e-31 6.0351e-05 -1.0409e-31 6.0619e-05 -1.0558e-31 6.0899e-05 -1.0715e-31 6.1191e-05 -1.0964e-31 6.1653e-05 -1.1141e-31 6.1978e-05 -1.1326e-31 6.2317e-05 3.6660e-27 1.5128e-27 -5.4869e-31 1.0957e-27 -8.3507e-35 2.8090e-29 9.1603e-28 1.3930e-28 -3.7616e-37 4.1314e-32
+ 314.26 -9.9658e-32 6.1233e-05 -1.0106e-31 6.1505e-05 -1.0253e-31 6.1789e-05 -1.0408e-31 6.2086e-05 -1.0655e-31 6.2555e-05 -1.0829e-31 6.2885e-05 -1.1013e-31 6.3230e-05 3.8244e-27 1.5454e-27 -7.0864e-31 1.1698e-27 -8.5012e-35 2.0967e-29 9.5307e-28 1.5390e-28 -3.8556e-34 -1.0826e-31
+ 328.98 -9.6021e-32 6.2128e-05 -9.7405e-32 6.2404e-05 -9.8857e-32 6.2693e-05 -1.0038e-31 6.2994e-05 -1.0281e-31 6.3471e-05 -1.0453e-31 6.3806e-05 -1.0634e-31 6.4156e-05 3.9876e-27 1.5785e-27 -5.3145e-31 1.2473e-27 -8.5012e-35 1.3867e-29 9.9077e-28 1.6970e-28 -3.8556e-34 7.8544e-32
+ 344.40 -9.1665e-32 6.3036e-05 -9.3024e-32 6.3317e-05 -9.4451e-32 6.3611e-05 -9.5949e-32 6.3917e-05 -9.8337e-32 6.4401e-05 -1.0003e-31 6.4741e-05 -1.0181e-31 6.5097e-05 4.1551e-27 1.6118e-27 -5.3493e-31 1.3278e-27 2.9905e-34 5.7656e-30 1.0286e-27 1.8619e-28 -3.8556e-34 6.6938e-32
+ 360.54 -8.6467e-32 6.3959e-05 -8.7797e-32 6.4244e-05 -8.9194e-32 6.4542e-05 -9.0660e-32 6.4853e-05 -9.2999e-32 6.5345e-05 -9.4656e-32 6.5691e-05 -9.6396e-32 6.6051e-05 4.3258e-27 1.6450e-27 -7.8767e-31 1.4103e-27 2.9792e-34 -3.2586e-30 1.0663e-27 2.0329e-28 -3.8556e-34 -1.9429e-31
+ 377.44 -8.0287e-32 6.4895e-05 -8.1583e-32 6.5185e-05 -8.2943e-32 6.5488e-05 -8.4372e-32 6.5803e-05 -8.6651e-32 6.6303e-05 -8.8267e-32 6.6654e-05 -8.9963e-32 6.7021e-05 4.5010e-27 1.6790e-27 -2.3571e-31 1.4961e-27 6.8273e-34 -1.2241e-29 1.1048e-27 2.2174e-28 -3.8556e-34 5.5232e-32
+ 395.13 -7.2961e-32 6.5846e-05 -7.4216e-32 6.6140e-05 -7.5534e-32 6.6448e-05 -7.6919e-32 6.6769e-05 -7.9128e-32 6.7276e-05 -8.0693e-32 6.7633e-05 -8.2338e-32 6.8005e-05 4.6801e-27 1.7129e-27 -5.5039e-31 1.5846e-27 1.0668e-33 -2.2581e-29 1.1431e-27 2.4072e-28 -7.5232e-37 1.9752e-32
+ 413.65 -6.4303e-32 6.6811e-05 -6.5510e-32 6.7110e-05 -6.6779e-32 6.7422e-05 -6.8111e-32 6.7748e-05 -7.0237e-32 6.8264e-05 -7.1744e-32 6.8626e-05 -7.3328e-32 6.9004e-05 4.8631e-27 1.7468e-27 -9.0711e-31 1.6759e-27 6.8047e-34 -3.3359e-29 1.1812e-27 2.6013e-28 -3.8556e-34 -3.7936e-31
+ 433.03 -5.4100e-32 6.7791e-05 -5.5251e-32 6.8094e-05 -5.6461e-32 6.8412e-05 -5.7731e-32 6.8743e-05 -5.9760e-32 6.9266e-05 -6.1199e-32 6.9635e-05 -6.2711e-32 7.0018e-05 5.0508e-27 1.7817e-27 -1.0952e-31 1.7709e-27 6.7972e-34 -4.4899e-29 1.2201e-27 2.8106e-28 -3.8594e-34 -3.3983e-32
+ 453.33 -4.2110e-32 6.8785e-05 -4.3195e-32 6.9094e-05 -4.4336e-32 6.9416e-05 -4.5535e-32 6.9752e-05 -4.7449e-32 7.0284e-05 -4.8808e-32 7.0658e-05 -5.0237e-32 7.1048e-05 5.2417e-27 1.8160e-27 -1.0158e-30 1.8682e-27 1.4490e-33 -5.6944e-29 1.2582e-27 3.0186e-28 -3.8556e-34 -5.5055e-31
+ 474.57 -2.8056e-32 6.9795e-05 -2.9064e-32 7.0108e-05 -3.0125e-32 7.0436e-05 -3.1240e-32 7.0777e-05 -3.3022e-32 7.1318e-05 -3.4287e-32 7.1697e-05 -3.5618e-32 7.2093e-05 5.4377e-27 1.8516e-27 -2.5630e-32 1.9697e-27 1.8334e-33 -7.0022e-29 1.2971e-27 3.2428e-28 -3.7616e-37 -1.4317e-31
+ 496.82 -1.1626e-32 7.0820e-05 -1.2546e-32 7.1138e-05 -1.3513e-32 7.1471e-05 -1.4531e-32 7.1818e-05 -1.6159e-32 7.2366e-05 -1.7316e-32 7.2752e-05 -1.8533e-32 7.3155e-05 5.6367e-27 1.8864e-27 -1.1314e-30 2.0733e-27 2.2171e-33 -8.3333e-29 1.3350e-27 3.4634e-28 -3.7616e-37 -7.8681e-31
+ 520.10 7.5303e-33 7.1860e-05 6.7141e-33 7.2184e-05 5.8548e-33 7.2521e-05 4.9498e-33 7.2874e-05 3.5009e-33 7.3431e-05 2.4699e-33 7.3823e-05 1.3837e-33 7.4232e-05 5.8409e-27 1.9226e-27 2.8220e-32 2.1814e-27 2.6015e-33 -9.3994e-29 1.3739e-27 3.7010e-28 -3.8556e-34 -3.3784e-31
+ 544.48 2.9811e-32 7.2916e-05 2.9115e-32 7.3245e-05 2.8380e-32 7.3588e-05 2.7606e-32 7.3946e-05 2.6363e-32 7.4512e-05 2.5478e-32 7.4910e-05 2.4544e-32 7.5325e-05 6.0486e-27 1.9586e-27 -6.0074e-31 2.2923e-27 2.6000e-33 -1.0465e-28 1.4122e-27 3.9393e-28 -3.8556e-34 -4.1846e-31
+ 569.99 5.5661e-32 7.3988e-05 5.5102e-32 7.4322e-05 5.4512e-32 7.4670e-05 5.3888e-32 7.5034e-05 5.2884e-32 7.5609e-05 5.2166e-32 7.6013e-05 5.1408e-32 7.6435e-05 6.2604e-27 1.9949e-27 1.3247e-31 2.4066e-27 2.9841e-33 -1.1487e-28 1.4503e-27 4.1828e-28 -3.8556e-34 -5.3180e-31
+ 596.71 8.5637e-32 7.5076e-05 8.5237e-32 7.5415e-05 8.4812e-32 7.5769e-05 8.4362e-32 7.6138e-05 8.3632e-32 7.6722e-05 8.3108e-32 7.7133e-05 8.2551e-32 7.7561e-05 6.4763e-27 2.0315e-27 -5.6699e-31 2.5244e-27 3.7533e-33 -1.2463e-28 1.4883e-27 4.4312e-28 -3.7616e-37 -6.5941e-31
+ 624.67 1.2053e-31 7.6180e-05 1.2031e-31 7.6524e-05 1.2008e-31 7.6883e-05 1.1983e-31 7.7258e-05 1.1942e-31 7.7852e-05 1.1912e-31 7.8269e-05 1.1879e-31 7.8704e-05 6.6962e-27 2.0684e-27 -6.0863e-31 2.6457e-27 3.7514e-33 -1.3393e-28 1.5260e-27 4.6843e-28 -7.5232e-37 -8.0358e-31
+ 653.95 1.6077e-31 7.7300e-05 1.6077e-31 7.7650e-05 1.6075e-31 7.8015e-05 1.6073e-31 7.8396e-05 1.6068e-31 7.8998e-05 1.6064e-31 7.9422e-05 1.6058e-31 7.9863e-05 6.9202e-27 2.1057e-27 -6.1871e-31 2.7706e-27 4.5210e-33 -1.4282e-28 1.5636e-27 4.9415e-28 -3.7616e-37 -8.0910e-31
+ 684.60 2.0707e-31 7.8437e-05 2.0730e-31 7.8792e-05 2.0754e-31 7.9163e-05 2.0778e-31 7.9549e-05 2.0815e-31 8.0161e-05 2.0839e-31 8.0592e-05 2.0864e-31 8.1040e-05 7.1483e-27 2.1434e-27 -6.3264e-31 2.8992e-27 4.5192e-33 -1.5146e-28 1.6010e-27 5.2024e-28 -3.7616e-37 -9.7331e-31
+ 716.68 2.6020e-31 7.9590e-05 2.6070e-31 7.9951e-05 2.6123e-31 8.0327e-05 2.6177e-31 8.0720e-05 2.6261e-31 8.1342e-05 2.6319e-31 8.1779e-05 2.6379e-31 8.2234e-05 7.3806e-27 2.1814e-27 -6.4658e-31 3.0314e-27 3.7473e-33 -1.5966e-28 1.6381e-27 5.4668e-28 -7.7075e-34 -1.1660e-30
+ 750.27 3.2102e-31 8.0761e-05 3.2184e-31 8.1127e-05 3.2269e-31 8.1509e-05 3.2357e-31 8.1908e-05 3.2495e-31 8.2540e-05 3.2591e-31 8.2983e-05 3.2690e-31 8.3446e-05 7.6170e-27 2.2197e-27 -6.5975e-31 3.1675e-27 4.5162e-33 -1.6760e-28 1.6750e-27 5.7341e-28 -7.7075e-34 -1.5737e-30
+ 785.43 3.9047e-31 8.1949e-05 3.9165e-31 8.2320e-05 3.9287e-31 8.2709e-05 3.9414e-31 8.3114e-05 3.9613e-31 8.3755e-05 3.9752e-31 8.4205e-05 3.9896e-31 8.4675e-05 7.8576e-27 2.2585e-27 -6.7369e-31 3.3075e-27 5.2846e-33 -1.7537e-28 1.7116e-27 6.0040e-28 -7.7075e-34 -1.8358e-30
+ 822.24 4.7010e-31 8.3153e-05 4.7168e-31 8.3531e-05 4.7332e-31 8.3925e-05 4.7503e-31 8.4337e-05 4.7772e-31 8.4988e-05 4.7960e-31 8.5445e-05 4.8156e-31 8.5923e-05 8.1026e-27 2.2977e-27 -6.8764e-31 3.4514e-27 6.0535e-33 -1.8304e-28 1.7480e-27 6.2763e-28 -1.5411e-33 -2.1225e-30
+ 860.78 5.6128e-31 8.4376e-05 5.6331e-31 8.4759e-05 5.6543e-31 8.5160e-05 5.6764e-31 8.5578e-05 5.7113e-31 8.6239e-05 5.7357e-31 8.6703e-05 5.7611e-31 8.7188e-05 8.3518e-27 2.3373e-27 -7.0162e-31 3.5994e-27 7.5871e-33 -1.9068e-28 1.7841e-27 6.5505e-28 -3.7616e-37 -2.4439e-30
+ 901.12 6.6457e-31 8.5616e-05 6.6712e-31 8.6006e-05 6.6978e-31 8.6412e-05 6.7256e-31 8.6836e-05 6.7694e-31 8.7508e-05 6.8001e-31 8.7979e-05 6.8320e-31 8.8471e-05 8.6046e-27 2.3765e-27 -6.7867e-31 3.7507e-27 8.3548e-33 -1.9922e-28 1.8192e-27 6.8307e-28 -7.7112e-34 -3.6661e-30
+ 943.35 7.8130e-31 8.6874e-05 7.8444e-31 8.7269e-05 7.8771e-31 8.7682e-05 7.9112e-31 8.8113e-05 7.9651e-31 8.8795e-05 8.0028e-31 8.9274e-05 8.0422e-31 8.9773e-05 8.8634e-27 2.4175e-27 -7.1706e-31 3.9076e-27 8.3526e-33 -2.0649e-28 1.8554e-27 7.1000e-28 -1.5415e-33 -3.5424e-30
+ 987.57 9.1292e-31 8.8150e-05 9.1671e-31 8.8551e-05 9.2067e-31 8.8970e-05 9.2479e-31 8.9408e-05 9.3130e-31 9.0100e-05 9.3587e-31 9.0586e-05 9.4064e-31 9.1094e-05 9.1258e-27 2.4582e-27 -7.3033e-31 4.0681e-27 9.1207e-33 -2.1478e-28 1.8907e-27 7.3896e-28 -7.5232e-37 -4.3161e-30
+ 1033.8 1.0611e-30 8.9449e-05 1.0656e-30 8.9851e-05 1.0703e-30 9.0277e-05 1.0752e-30 9.0721e-05 1.0830e-30 9.1423e-05 1.0884e-30 9.1917e-05 1.0941e-30 9.2432e-05 9.3936e-27 2.5000e-27 -7.5818e-31 4.2336e-27 9.8892e-33 -2.2250e-28 1.9264e-27 7.6586e-28 -7.5232e-37 -4.5821e-30
+ 1082.3 1.2273e-30 9.0763e-05 1.2326e-30 9.1170e-05 1.2382e-30 9.1602e-05 1.2440e-30 9.2052e-05 1.2532e-30 9.2766e-05 1.2596e-30 9.3267e-05 1.2663e-30 9.3790e-05 9.6656e-27 2.5417e-27 -7.6062e-31 4.4031e-27 1.0657e-32 -2.3117e-28 1.9614e-27 7.9349e-28 -7.5232e-37 -5.5091e-30
+ 1133.0 1.4139e-30 9.2095e-05 1.4200e-30 9.2507e-05 1.4265e-30 9.2945e-05 1.4334e-30 9.3403e-05 1.4441e-30 9.4127e-05 1.4517e-30 9.4636e-05 1.4596e-30 9.5166e-05 9.9429e-27 2.5843e-27 -7.8233e-31 4.5777e-27 1.2195e-32 -2.3980e-28 1.9966e-27 8.2163e-28 -7.5232e-37 -5.9210e-30
+ 1186.1 1.6221e-30 9.3445e-05 1.6294e-30 9.3872e-05 1.6368e-30 9.4307e-05 1.6447e-30 9.4771e-05 1.6573e-30 9.5506e-05 1.6661e-30 9.6023e-05 1.6753e-30 9.6562e-05 1.0225e-26 2.6274e-27 -7.9865e-31 4.7570e-27 1.2192e-32 -2.4919e-28 2.0308e-27 8.4957e-28 -7.7112e-34 -6.9032e-30
+ 1241.7 1.8412e-30 9.4821e-05 1.8496e-30 9.5254e-05 1.8581e-30 9.5694e-05 1.8672e-30 9.6165e-05 1.8816e-30 9.6911e-05 1.8917e-30 9.7435e-05 1.9022e-30 9.7982e-05 1.0513e-26 2.6713e-27 -8.2575e-31 4.9415e-27 1.2960e-32 -2.5891e-28 2.0671e-27 8.7884e-28 -7.7112e-34 -8.1725e-30
+ 1299.9 2.0777e-30 9.6218e-05 2.0872e-30 9.6659e-05 2.0969e-30 9.7102e-05 2.1073e-30 9.7581e-05 2.1236e-30 9.8338e-05 2.1351e-30 9.8870e-05 2.1476e-30 9.9448e-05 1.0806e-26 2.7159e-27 -8.5593e-31 5.1311e-27 1.3728e-32 -2.6915e-28 2.1025e-27 9.0628e-28 -7.7075e-34 -9.3522e-30
+ 1360.8 2.3371e-30 9.7636e-05 2.3479e-30 9.8083e-05 2.3591e-30 9.8550e-05 2.3705e-30 9.9017e-05 2.3890e-30 9.9785e-05 2.4020e-30 0.00010033 2.4160e-30 0.00010091 1.1104e-26 2.7612e-27 -8.9074e-31 5.3260e-27 1.5266e-32 -2.7995e-28 2.1382e-27 9.3485e-28 -7.5232e-37 -1.0664e-29
+ 1424.6 2.6208e-30 9.9074e-05 2.6329e-30 9.9527e-05 2.6456e-30 0.00010000 2.6583e-30 0.00010047 2.6790e-30 0.00010125 2.6942e-30 0.00010183 2.7094e-30 0.00010240 1.1409e-26 2.8074e-27 -9.2941e-31 5.5264e-27 1.4493e-32 -2.9131e-28 2.1738e-27 9.6286e-28 -7.7075e-34 -1.2178e-29
+ 1491.4 2.9302e-30 0.00010053 2.9437e-30 0.00010099 2.9578e-30 0.00010147 2.9726e-30 0.00010197 2.9960e-30 0.00010277 3.0123e-30 0.00010332 3.0294e-30 0.00010390 1.1720e-26 2.8545e-27 -9.7194e-31 5.7325e-27 1.6030e-32 -3.0323e-28 2.2106e-27 9.9158e-28 -7.7075e-34 -1.3907e-29
+ 1561.3 3.2666e-30 0.00010201 3.2817e-30 0.00010247 3.2974e-30 0.00010296 3.3139e-30 0.00010347 3.3401e-30 0.00010427 3.3584e-30 0.00010483 3.3775e-30 0.00010542 1.2037e-26 2.9026e-27 -1.0137e-30 5.9444e-27 1.7567e-32 -3.1573e-28 2.2476e-27 1.0197e-27 -7.5232e-37 -1.5876e-29
+ 1634.4 3.6315e-30 0.00010350 3.6483e-30 0.00010397 3.6659e-30 0.00010446 3.6842e-30 0.00010498 3.7135e-30 0.00010579 3.7339e-30 0.00010636 3.7552e-30 0.00010696 1.2361e-26 2.9517e-27 -1.0639e-30 6.1624e-27 1.7564e-32 -3.2882e-28 2.2859e-27 1.0486e-27 -7.7112e-34 -1.8112e-29
+ 1711.0 3.9679e-30 0.00010350 4.0452e-30 0.00010549 4.0647e-30 0.00010599 4.0851e-30 0.00010651 4.1177e-30 0.00010734 4.1403e-30 0.00010792 4.1640e-30 0.00010852 1.2691e-26 3.0021e-27 -1.1142e-30 6.3867e-27 1.8331e-32 -3.4248e-28 2.3247e-27 1.0772e-27 -7.7112e-34 -2.0634e-29
+ 1791.2 4.4531e-30 0.00010654 4.4735e-30 0.00010702 4.4952e-30 0.00010753 4.5177e-30 0.00010806 4.5539e-30 0.00010890 4.5790e-30 0.00010949 4.6053e-30 0.00011010 1.3029e-26 3.0538e-27 -1.1675e-30 6.6174e-27 1.9869e-32 -3.5671e-28 2.3654e-27 1.1060e-27 -7.5232e-37 -2.3457e-29
+ 1875.2 4.9121e-30 0.00010809 4.8634e-30 0.00010702 4.9586e-30 0.00010909 4.9835e-30 0.00010963 5.0231e-30 0.00011048 5.0513e-30 0.00011108 5.0803e-30 0.00011170 1.3375e-26 3.1068e-27 -1.2186e-30 6.8546e-27 2.1405e-32 -3.7178e-28 2.4071e-27 1.1350e-27 -1.5415e-33 -2.6596e-29
+ 1963.1 5.4047e-30 0.00010966 5.4301e-30 0.00011015 5.4561e-30 0.00011067 5.4836e-30 0.00011122 5.5271e-30 0.00011208 5.5583e-30 0.00011269 5.5903e-30 0.00011332 1.3729e-26 3.1612e-27 -1.2619e-30 7.0987e-27 2.2943e-32 -3.8756e-28 2.4512e-27 1.1639e-27 -1.5407e-33 -3.0360e-29
+ 2055.1 5.9322e-30 0.00011124 5.9602e-30 0.00011176 5.9028e-30 0.00011067 6.0190e-30 0.00011283 6.0673e-30 0.00011371 6.1011e-30 0.00011433 6.1362e-30 0.00011496 1.4092e-26 3.2183e-27 -1.3315e-30 7.3507e-27 2.2939e-32 -4.0808e-28 2.4982e-27 1.1937e-27 -1.5415e-33 -3.4361e-29
+ 2151.4 6.4955e-30 0.00011285 6.5260e-30 0.00011337 6.5580e-30 0.00011390 6.4960e-30 0.00011283 6.6435e-30 0.00011536 6.6805e-30 0.00011599 6.7191e-30 0.00011664 1.4466e-26 3.2780e-27 -1.4087e-30 7.6107e-27 2.4475e-32 -4.3240e-28 2.5502e-27 1.2242e-27 -7.5232e-37 -3.9240e-29
+ 2252.2 7.0952e-30 0.00011448 7.1285e-30 0.00011500 7.1635e-30 0.00011555 7.2024e-30 0.00011617 7.2570e-30 0.00011703 7.2974e-30 0.00011766 7.3395e-30 0.00011832 1.4850e-26 3.3400e-27 -1.4798e-30 7.8785e-27 2.6011e-32 -4.5746e-28 2.6047e-27 1.2552e-27 -1.5046e-36 -4.4611e-29
+ 2357.8 7.7320e-30 0.00011613 7.7682e-30 0.00011666 7.8061e-30 0.00011722 7.8456e-30 0.00011779 7.9084e-30 0.00011871 7.9523e-30 0.00011936 7.9982e-30 0.00012003 1.5245e-26 3.4045e-27 -1.5355e-30 8.1546e-27 2.7548e-32 -4.8325e-28 2.6644e-27 1.2868e-27 -7.5232e-37 -5.0489e-29
+ 2468.3 8.4083e-30 0.00011783 8.4454e-30 0.00011834 8.4865e-30 0.00011890 8.5294e-30 0.00011949 8.4757e-30 0.00011871 8.6457e-30 0.00012108 8.6955e-30 0.00012176 1.5651e-26 3.4718e-27 -1.5758e-30 8.4393e-27 2.7544e-32 -5.0975e-28 2.7298e-27 1.3192e-27 -7.5232e-37 -5.7057e-29
+ 2583.9 9.1171e-30 0.00011947 9.1633e-30 0.00012007 9.2051e-30 0.00012061 9.2515e-30 0.00012120 9.3303e-30 0.00012221 9.2445e-30 0.00012108 9.4358e-30 0.00012356 1.6070e-26 3.5426e-27 -9.3828e-31 8.7336e-27 2.7540e-32 -5.3627e-28 2.8000e-27 1.3530e-27 -7.5232e-37 -6.3391e-29
+ 2705.0 9.8677e-30 0.00012120 9.9168e-30 0.00012179 9.9653e-30 0.00012237 1.0012e-29 0.00012293 1.0097e-29 0.00012396 1.0154e-29 0.00012464 1.0212e-29 0.00012534 1.6502e-26 3.6159e-27 -1.6672e-30 9.0367e-27 2.9076e-32 -5.6369e-28 2.8773e-27 1.3871e-27 3.0807e-33 -7.0929e-29
+ 2831.8 1.0657e-29 0.00012294 1.0705e-29 0.00012348 1.0761e-29 0.00012412 1.0816e-29 0.00012474 1.0902e-29 0.00012572 1.0964e-29 0.00012641 1.0872e-29 0.00012534 1.6947e-26 3.6925e-27 -1.6104e-30 9.3497e-27 3.2152e-32 -5.9181e-28 2.9621e-27 1.4224e-27 7.7030e-33 -8.4919e-29
+ 2964.5 1.1483e-29 0.00012469 1.1537e-29 0.00012526 1.1591e-29 0.00012583 1.1654e-29 0.00012651 1.1747e-29 0.00012751 1.1813e-29 0.00012821 1.1883e-29 0.00012894 1.7407e-26 3.7728e-27 -1.4442e-30 9.6734e-27 3.2147e-32 -6.2067e-28 3.0554e-27 1.4591e-27 1.2325e-32 -9.4702e-29
+ 3103.5 1.2351e-29 0.00012648 1.2406e-29 0.00012704 1.2466e-29 0.00012764 1.2532e-29 0.00012830 1.2632e-29 0.00012930 1.2703e-29 0.00013002 1.2777e-29 0.00013077 1.7865e-26 3.8579e-27 -1.2350e-30 1.0008e-26 3.3683e-32 -6.5299e-28 3.1473e-27 1.4901e-27 2.1569e-32 -1.0571e-28
+ 3248.9 1.3262e-29 0.00012830 1.3320e-29 0.00012886 1.3382e-29 0.00012944 1.3449e-29 0.00013007 1.3559e-29 0.00013113 1.3635e-29 0.00013184 1.3714e-29 0.00013261 1.8333e-26 3.9477e-27 -9.5019e-31 1.0356e-26 3.3677e-32 -6.8709e-28 3.2453e-27 1.5204e-27 3.6977e-32 -1.1778e-28
+ 3401.2 1.4217e-29 0.00013015 1.4280e-29 0.00013071 1.4345e-29 0.00013130 1.4414e-29 0.00013192 1.4525e-29 0.00013291 1.4612e-29 0.00013370 1.4696e-29 0.00013446 1.8819e-26 4.0421e-27 -5.5912e-31 1.0715e-26 3.3672e-32 -7.2213e-28 3.3541e-27 1.5529e-27 6.0088e-32 -1.2429e-28
+ 3560.6 1.5228e-29 0.00013206 1.5288e-29 0.00013259 1.5358e-29 0.00013318 1.5433e-29 0.00013381 1.5547e-29 0.00013479 1.5631e-29 0.00013550 1.5727e-29 0.00013633 1.9323e-26 4.1414e-27 -2.3219e-32 1.1089e-26 3.5207e-32 -7.5838e-28 3.4738e-27 1.5878e-27 1.0477e-31 -1.4209e-28
+ 3727.5 1.6263e-29 0.00013379 1.6351e-29 0.00013449 1.6424e-29 0.00013505 1.6505e-29 0.00013572 1.6628e-29 0.00013672 1.6715e-29 0.00013742 1.6808e-29 0.00013816 1.9847e-26 4.2457e-27 6.9294e-31 1.1475e-26 3.6742e-32 -7.9630e-28 3.6051e-27 1.6151e-27 1.6177e-31 -1.5691e-28
+ 3902.2 1.7272e-29 0.00013570 1.7350e-29 0.00013630 1.7449e-29 0.00013706 1.7531e-29 0.00013766 1.7662e-29 0.00013869 1.7753e-29 0.00013940 1.7849e-29 0.00014014 2.0389e-26 4.3537e-27 1.6064e-30 1.1875e-26 3.8276e-32 -8.3697e-28 3.7442e-27 1.6618e-27 2.4805e-31 -1.8084e-28
+ 4085.0 1.8875e-29 0.00013744 1.8987e-29 0.00013827 1.9077e-29 0.00013890 1.9170e-29 0.00013957 1.9332e-29 0.00014072 1.9433e-29 0.00014143 1.9536e-29 0.00014218 2.0951e-26 4.4664e-27 2.8049e-30 1.2289e-26 4.1352e-32 -8.8005e-28 3.8904e-27 1.7037e-27 3.8055e-31 -1.9873e-28
+ 4276.5 2.1659e-29 0.00013937 2.1761e-29 0.00014002 2.1898e-29 0.00014090 2.2005e-29 0.00014158 2.2208e-29 0.00014282 2.2310e-29 0.00014349 2.2430e-29 0.00014424 2.1533e-26 4.5836e-27 4.3932e-30 1.2724e-26 4.2886e-32 -9.2919e-28 4.0400e-27 1.7503e-27 5.8545e-31 -2.1757e-28
+ 4476.9 2.4780e-29 0.00014131 2.4897e-29 0.00014197 2.5019e-29 0.00014265 2.5184e-29 0.00014361 2.5376e-29 0.00014468 2.5556e-29 0.00014565 2.5676e-29 0.00014635 2.2137e-26 4.7048e-27 6.4885e-30 1.3167e-26 4.9043e-32 -9.8648e-28 4.1878e-27 1.8000e-27 9.1822e-31 -2.3550e-28
+ 4686.7 2.8267e-29 0.00014320 2.8401e-29 0.00014388 2.8551e-29 0.00014464 2.8695e-29 0.00014536 2.8970e-29 0.00014676 2.9123e-29 0.00014752 2.9284e-29 0.00014832 2.2753e-26 4.8273e-27 9.1523e-30 1.3622e-26 5.2117e-32 -1.0557e-27 4.3276e-27 1.8546e-27 1.4620e-30 -2.5632e-28
+ 4906.4 3.2184e-29 0.00014516 3.2336e-29 0.00014585 3.2495e-29 0.00014656 3.2661e-29 0.00014730 3.2935e-29 0.00014853 3.3176e-29 0.00014964 3.3358e-29 0.00015044 2.3383e-26 4.9538e-27 1.2616e-29 1.4089e-26 5.9814e-32 -1.1413e-27 4.4326e-27 1.9049e-27 2.5236e-30 -2.7854e-28
+ 5136.3 3.6510e-29 0.00014714 3.6682e-29 0.00014784 3.6862e-29 0.00014856 3.7050e-29 0.00014931 3.7347e-29 0.00015050 3.7570e-29 0.00015140 3.7858e-29 0.00015259 2.4023e-26 5.0744e-27 1.7101e-29 1.4567e-26 6.5970e-32 -1.2477e-27 4.5384e-27 1.9597e-27 4.2137e-30 -3.0092e-28
+ 5377.1 4.1308e-29 0.00014914 4.1502e-29 0.00014985 4.1698e-29 0.00015058 4.1909e-29 0.00015134 4.2244e-29 0.00015255 4.2479e-29 0.00015340 4.2741e-29 0.00015435 2.4664e-26 5.1875e-27 2.2710e-29 1.5048e-26 7.5207e-32 -1.3844e-27 4.6160e-27 2.0128e-27 6.8528e-30 -3.2047e-28
+ 5629.1 4.6677e-29 0.00015116 4.6895e-29 0.00015187 4.7122e-29 0.00015261 4.7359e-29 0.00015338 4.7727e-29 0.00015461 4.7991e-29 0.00015547 4.8267e-29 0.00015637 2.5331e-26 5.3142e-27 5.7784e-29 1.5570e-26 8.5982e-32 -1.5300e-27 4.6902e-27 2.0821e-27 3.8952e-29 -3.1064e-28
+ 5892.9 5.2700e-29 0.00015310 5.2945e-29 0.00015383 5.3225e-29 0.00015466 5.3489e-29 0.00015545 5.3910e-29 0.00015669 5.4205e-29 0.00015756 5.4505e-29 0.00015847 2.5966e-26 5.4018e-27 3.7895e-29 1.6071e-26 9.5215e-32 -1.7446e-27 4.7296e-27 2.1088e-27 1.4071e-29 -3.4043e-28
+ 6169.1 5.8276e-29 0.00015199 5.8466e-29 0.00015252 5.8662e-29 0.00015307 5.8869e-29 0.00015364 5.9198e-29 0.00015456 5.9430e-29 0.00015521 5.9681e-29 0.00015588 2.6586e-26 5.5006e-27 4.8213e-29 1.6571e-26 9.5203e-32 -1.9754e-27 4.7076e-27 2.1255e-27 2.0903e-29 -3.6583e-28
+ 6458.2 6.6160e-29 0.00015385 6.6383e-29 0.00015441 6.6616e-29 0.00015500 6.6858e-29 0.00015561 6.7241e-29 0.00015658 6.7510e-29 0.00015727 6.7791e-29 0.00015798 2.7224e-26 5.5776e-27 5.7739e-29 1.7061e-26 9.8272e-32 -2.2669e-27 4.6793e-27 2.1233e-27 2.7930e-29 -3.9373e-28
+ 6760.8 7.6106e-29 0.00015616 7.6353e-29 0.00015673 7.6611e-29 0.00015733 7.6878e-29 0.00015794 7.7303e-29 0.00015892 7.7601e-29 0.00015961 7.7913e-29 0.00016033 2.7891e-26 5.6103e-27 6.9589e-29 1.7543e-26 9.8257e-32 -2.5810e-27 4.6610e-27 2.1058e-27 3.8335e-29 -4.4702e-28
+ 7077.7 8.9719e-29 0.00015916 8.9993e-29 0.00015973 9.0280e-29 0.00016033 9.0577e-29 0.00016095 9.1049e-29 0.00016194 9.1381e-29 0.00016263 9.1726e-29 0.00016335 2.8627e-26 5.6733e-27 7.9856e-29 1.8026e-26 7.3589e-32 -2.8850e-27 4.6945e-27 2.0713e-27 4.8645e-29 -4.7167e-28
+ 7409.4 1.1069e-28 0.00016403 1.1099e-28 0.00016461 1.1131e-28 0.00016521 1.1165e-28 0.00016583 1.1218e-28 0.00016682 1.1255e-28 0.00016752 1.1294e-28 0.00016825 2.9485e-26 5.6398e-27 8.2358e-29 1.8504e-26 3.3516e-32 -3.1311e-27 4.8338e-27 1.9799e-27 5.5833e-29 -4.5472e-28
+ 7756.7 1.4688e-28 0.00017347 1.4722e-28 0.00017404 1.4759e-28 0.00017463 1.4797e-28 0.00017525 1.4857e-28 0.00017623 1.4899e-28 0.00017692 1.4944e-28 0.00017764 3.0572e-26 5.6659e-27 8.7355e-29 1.8985e-26 8.8555e-33 -3.2273e-27 5.1850e-27 1.9070e-27 7.4516e-29 -5.0043e-28
+ 8120.2 2.1681e-28 0.00019445 2.1721e-28 0.00019499 2.1763e-28 0.00019556 2.1807e-28 0.00019616 2.1876e-28 0.00019710 2.1924e-28 0.00019776 2.1975e-28 0.00019845 3.1966e-26 5.7451e-27 8.6634e-29 1.9557e-26 -2.1958e-32 -3.0437e-27 5.8147e-27 1.8796e-27 1.0125e-28 -4.3391e-28
+ 8500.8 3.6710e-28 0.00024244 3.6755e-28 0.00024293 3.6802e-28 0.00024345 3.6857e-28 0.00024403 3.6935e-28 0.00024489 3.6990e-28 0.00024549 3.7047e-28 0.00024612 3.3795e-26 5.7642e-27 6.6236e-29 2.0113e-26 1.8142e-32 -2.5535e-27 6.8419e-27 1.8596e-27 1.3344e-28 -1.4859e-28
+ 8899.2 7.3148e-28 0.00035264 7.3195e-28 0.00035306 7.3244e-28 0.00035350 7.3295e-28 0.00035395 7.3377e-28 0.00035468 7.3435e-28 0.00035519 7.3495e-28 0.00035573 3.5928e-26 5.8896e-27 7.1039e-29 2.0738e-26 1.2605e-31 -2.0373e-27 8.0991e-27 1.8563e-27 1.9858e-28 1.1349e-28
+ 9316.2 1.7200e-27 0.00059630 1.7205e-27 0.00059665 1.7209e-27 0.00059702 1.7214e-27 0.00059740 1.7222e-27 0.00059801 1.7228e-27 0.00059843 1.7233e-27 0.00059888 3.8269e-26 6.1077e-27 6.7477e-29 2.1363e-26 1.7233e-31 -1.9622e-27 9.3433e-27 1.8302e-27 3.1293e-28 4.3510e-28
+ 9752.9 4.6713e-27 0.0011223 4.6719e-27 0.0011227 4.6726e-27 0.0011231 4.6733e-27 0.0011236 4.6744e-27 0.0011243 4.6751e-27 0.0011247 4.6759e-27 0.0011252 4.1329e-26 6.5850e-27 4.7032e-29 2.1891e-26 1.6313e-31 -2.7856e-27 1.0488e-26 1.6888e-27 5.9301e-28 9.6009e-28
+ 10210. 1.3909e-26 0.0022172 1.3912e-26 0.0022179 1.3914e-26 0.0022187 1.3918e-26 0.0022195 1.3922e-26 0.0022208 1.3925e-26 0.0022217 1.3928e-26 0.0022226 4.7696e-26 8.0913e-27 1.6857e-29 2.2732e-26 1.3542e-31 -4.4999e-27 1.1436e-26 1.6857e-27 1.3305e-27 2.3482e-27
+ 10688. 4.3430e-26 0.0044615 4.3444e-26 0.0044633 4.3458e-26 0.0044652 4.3473e-26 0.0044672 4.3497e-26 0.0044703 4.3513e-26 0.0044724 4.3531e-26 0.0044747 6.4449e-26 1.3271e-26 3.9170e-28 2.5409e-26 1.1078e-31 -5.8533e-27 1.2844e-26 3.4550e-27 3.1061e-27 6.0365e-27
+ 11189. 1.3789e-25 0.0090282 1.3794e-25 0.0090321 1.3800e-25 0.0090362 1.3806e-25 0.0090407 1.3816e-25 0.0090474 1.3822e-25 0.0090521 1.3829e-25 0.0090571 1.0606e-25 2.5130e-26 2.0978e-27 3.1144e-26 1.9701e-31 -4.9667e-27 1.5948e-26 8.8581e-27 7.2057e-27 1.5107e-26
+ 11714. 4.3840e-25 0.018379 4.3854e-25 0.018385 4.3869e-25 0.018391 4.3885e-25 0.018399 4.3910e-25 0.018410 4.3927e-25 0.018417 4.3945e-25 0.018425 2.0629e-25 4.8587e-26 6.6887e-27 4.2659e-26 6.9002e-31 3.6714e-27 2.2221e-26 2.1212e-26 1.5805e-26 3.9621e-26
+ 12263. 1.3435e-24 0.036748 1.3438e-24 0.036755 1.3440e-24 0.036762 1.3443e-24 0.036770 1.3447e-24 0.036782 1.3450e-24 0.036790 1.3453e-24 0.036799 4.3448e-25 9.0820e-26 1.7201e-26 6.3088e-26 2.1690e-30 3.6357e-26 3.5315e-26 4.7148e-26 3.2225e-26 9.7709e-26
+ 12837. 3.7986e-24 0.069942 3.7988e-24 0.069947 3.7991e-24 0.069953 3.7995e-24 0.069960 3.8000e-24 0.069969 3.8003e-24 0.069976 3.8006e-24 0.069982 9.1325e-25 1.6077e-25 4.0148e-26 1.0511e-25 8.2826e-30 1.2491e-25 6.0860e-26 1.0209e-25 5.8868e-26 2.2446e-25
+ 13439. 9.6406e-24 0.12469 9.6408e-24 0.12470 9.6411e-24 0.12470 9.6415e-24 0.12471 9.6419e-24 0.12471 9.6422e-24 0.12472 9.6424e-24 0.12472 1.7968e-24 2.6477e-25 8.6981e-26 1.6701e-25 2.6820e-29 3.1680e-25 1.0738e-25 2.0009e-25 9.3948e-26 4.7510e-25
+ 14069. 2.1541e-23 0.20675 2.1542e-23 0.20676 2.1542e-23 0.20676 2.1542e-23 0.20676 2.1543e-23 0.20677 2.1543e-23 0.20677 2.1543e-23 0.20677 3.3577e-24 4.1427e-25 1.7577e-25 3.4029e-25 8.5195e-29 6.7873e-25 1.8663e-25 3.6150e-25 1.3074e-25 9.0972e-25
+ 14728. 4.1518e-23 0.31595 4.1518e-23 0.31595 4.1518e-23 0.31595 4.1519e-23 0.31596 4.1519e-23 0.31596 4.1519e-23 0.31596 4.1519e-23 0.31596 5.7551e-24 6.1264e-25 3.2270e-25 6.9772e-25 2.3034e-28 1.2300e-24 3.1049e-25 5.9522e-25 1.5790e-25 1.5661e-24
+ 15419. 6.8254e-23 0.44355 6.8253e-23 0.44355 6.8254e-23 0.44355 6.8255e-23 0.44356 6.8255e-23 0.44356 6.8255e-23 0.44356 6.8255e-23 0.44356 8.9603e-24 8.6323e-25 5.3134e-25 1.3565e-24 5.8060e-28 1.9142e-24 4.8563e-25 8.9179e-25 1.6732e-25 2.3699e-24
+ 16141. 9.5726e-23 0.57210 9.5726e-23 0.57210 9.5726e-23 0.57210 9.5729e-23 0.57211 9.5729e-23 0.57210 9.5729e-23 0.57210 9.5729e-23 0.57210 1.2561e-23 1.1450e-24 7.8049e-25 2.1464e-24 1.3758e-27 2.5473e-24 7.0665e-25 1.2191e-24 1.5800e-25 3.1651e-24
+ 16898. 1.1727e-22 0.68800 1.1727e-22 0.68799 1.1727e-22 0.68800 1.1727e-22 0.68801 1.1727e-22 0.68801 1.1727e-22 0.68801 1.1727e-22 0.68801 1.6036e-23 1.4938e-24 1.0463e-24 3.4835e-24 3.1049e-27 2.9483e-24 9.8172e-25 1.5438e-24 1.3678e-25 3.6781e-24
+ 17690. 1.2858e-22 0.77933 1.2858e-22 0.77933 1.2858e-22 0.77933 1.2859e-22 0.77935 1.2859e-22 0.77935 1.2859e-22 0.77935 1.2860e-22 0.77935 1.8879e-23 1.8604e-24 1.2953e-24 4.6707e-24 6.4623e-27 2.9897e-24 1.3004e-24 1.8349e-24 1.1082e-25 3.8223e-24
+ 18519. 1.3073e-22 0.84859 1.3074e-22 0.84859 1.3074e-22 0.84860 1.3075e-22 0.84862 1.3076e-22 0.84863 1.3076e-22 0.84863 1.3077e-22 0.84864 2.1155e-23 2.3040e-24 1.5265e-24 6.2497e-24 1.2205e-26 2.7423e-24 1.6779e-24 2.0873e-24 8.6308e-26 3.5806e-24
+ 19387. 1.2592e-22 0.89580 1.2593e-22 0.89581 1.2594e-22 0.89582 1.2595e-22 0.89586 1.2596e-22 0.89588 1.2597e-22 0.89589 1.2598e-22 0.89591 2.3006e-23 2.7718e-24 1.7294e-24 7.4349e-24 2.0939e-26 2.3181e-24 2.1152e-24 2.2973e-24 6.5532e-26 3.1834e-24
+ 20295. 1.1736e-22 0.92741 1.1767e-22 0.92982 1.1769e-22 0.92985 1.1770e-22 0.92990 1.1773e-22 0.92995 1.1775e-22 0.92999 1.1777e-22 0.93003 2.4838e-23 3.6695e-24 1.9217e-24 8.8464e-24 3.2299e-26 1.8657e-24 2.6252e-24 2.4776e-24 4.9275e-26 2.7218e-24
+ 21246. 1.0763e-22 0.95124 1.0769e-22 0.95161 1.0771e-22 0.95167 1.0774e-22 0.95175 1.0778e-22 0.95185 1.0781e-22 0.95192 1.0785e-22 0.95200 2.6751e-23 3.9802e-24 2.1003e-24 9.8812e-24 4.4390e-26 1.4476e-24 3.1982e-24 2.6275e-24 3.6893e-26 2.3485e-24
+ 22242. 9.7745e-23 0.96822 9.7790e-23 0.96837 9.7832e-23 0.96849 9.7878e-23 0.96863 9.7949e-23 0.96883 9.7998e-23 0.96897 9.8050e-23 0.96912 2.8967e-23 4.6724e-24 2.2844e-24 1.1095e-23 5.5460e-26 1.1078e-24 3.8395e-24 2.7595e-24 2.7755e-26 2.0401e-24
+ 23284. 8.8293e-23 0.97903 8.8356e-23 0.97924 8.8423e-23 0.97944 8.8494e-23 0.97968 8.8603e-23 0.98002 8.8681e-23 0.98027 8.8762e-23 0.98052 3.1435e-23 5.4794e-24 2.4698e-24 1.1999e-23 6.3702e-26 8.3694e-25 4.5331e-24 2.8796e-24 2.0990e-26 1.8540e-24
+ 24376. 8.0036e-23 0.98946 8.0134e-23 0.98981 8.0237e-23 0.99017 8.0346e-23 0.99058 8.0516e-23 0.99118 8.0636e-23 0.99160 8.0762e-23 0.99205 3.4322e-23 6.4481e-24 2.6753e-24 1.3088e-23 6.9533e-26 6.3419e-25 5.2963e-24 2.9980e-24 1.6042e-26 1.7273e-24
+ 25518. 7.2887e-23 0.99965 7.3029e-23 1.0002 7.3177e-23 1.0008 7.3334e-23 1.0015 7.3581e-23 1.0025 7.3756e-23 1.0032 7.3939e-23 1.0040 3.7641e-23 7.5930e-24 2.9032e-24 1.4200e-23 7.3408e-26 4.8293e-25 6.1322e-24 3.1181e-24 1.2458e-26 1.6599e-24
+ 26714. 6.6781e-23 1.0103 6.6974e-23 1.0112 6.7177e-23 1.0122 6.7391e-23 1.0132 6.7729e-23 1.0148 6.7968e-23 1.0159 6.8219e-23 1.0171 4.1446e-23 8.9475e-24 3.1574e-24 1.5339e-23 7.6046e-26 3.7001e-25 7.0495e-24 3.2467e-24 9.8450e-27 1.6467e-24
+ 27966. 6.1520e-23 1.0217 6.1766e-23 1.0230 6.2025e-23 1.0244 6.2297e-23 1.0258 6.2729e-23 1.0282 6.3034e-23 1.0298 6.3355e-23 1.0315 4.5793e-23 1.0555e-23 3.4412e-24 1.6542e-23 7.8115e-26 2.8544e-25 8.0563e-24 3.3911e-24 7.9517e-27 1.6779e-24
+ 29277. 5.6947e-23 1.0332 5.7243e-23 1.0350 5.7555e-23 1.0369 5.7884e-23 1.0389 5.8405e-23 1.0420 5.8774e-23 1.0442 5.9162e-23 1.0465 5.0715e-23 1.2457e-23 3.7573e-24 1.7839e-23 8.0160e-26 2.2193e-25 9.1542e-24 3.5574e-24 6.6138e-27 1.7420e-24
+ 30649. 5.2638e-23 1.0441 5.2966e-23 1.0463 5.3311e-23 1.0487 5.3674e-23 1.0512 5.4251e-23 1.0551 5.4660e-23 1.0578 5.5090e-23 1.0607 5.6221e-23 1.4691e-23 4.1087e-24 1.9234e-23 8.2621e-26 1.7416e-25 1.0337e-23 3.7503e-24 5.6924e-27 1.8291e-24
+ 32085. 4.8565e-23 1.0534 4.8907e-23 1.0561 4.9266e-23 1.0588 4.9645e-23 1.0617 5.0248e-23 1.0663 5.0676e-23 1.0696 5.1125e-23 1.0730 6.2318e-23 1.7289e-23 4.5022e-24 2.0711e-23 8.6080e-26 1.3817e-25 1.1596e-23 3.9751e-24 5.1371e-27 1.9342e-24
+ 33589. 4.4603e-23 1.0582 4.4939e-23 1.0611 4.5412e-23 1.0669 4.5790e-23 1.0701 4.6393e-23 1.0753 4.6820e-23 1.0789 4.7270e-23 1.0827 6.9027e-23 2.0282e-23 4.9463e-24 2.2247e-23 9.1330e-26 1.1095e-25 1.2923e-23 4.2389e-24 4.9477e-27 2.0569e-24
+ 35163. 4.1130e-23 1.0631 4.1462e-23 1.0661 4.1868e-23 1.0708 4.2239e-23 1.0742 4.2829e-23 1.0796 4.3249e-23 1.0835 4.3690e-23 1.0875 7.6206e-23 2.3631e-23 5.4346e-24 2.3555e-23 9.9408e-26 8.5146e-26 1.4284e-23 4.5418e-24 5.0992e-27 2.2442e-24
+ 36811. 3.7843e-23 1.0672 3.8160e-23 1.0705 3.8521e-23 1.0746 3.8875e-23 1.0782 3.9438e-23 1.0839 3.9838e-23 1.0879 4.0259e-23 1.0921 8.4174e-23 2.7489e-23 5.9965e-24 2.5100e-23 1.1235e-25 6.5974e-26 1.5727e-23 4.9078e-24 5.6546e-27 2.4387e-24
+ 38536. 3.4906e-23 1.0705 3.5210e-23 1.0739 3.5542e-23 1.0778 3.5880e-23 1.0815 3.6418e-23 1.0874 3.6800e-23 1.0916 3.7201e-23 1.0960 9.2886e-23 3.1876e-23 6.6338e-24 2.6780e-23 1.3254e-25 5.2330e-26 1.7214e-23 5.3429e-24 6.7148e-27 2.6324e-24
+ 40342. 3.2344e-23 1.0730 3.2637e-23 1.0765 3.2953e-23 1.0803 3.3279e-23 1.0842 3.3799e-23 1.0902 3.4169e-23 1.0945 3.4557e-23 1.0990 1.0232e-22 3.6784e-23 7.3466e-24 2.8546e-23 1.6331e-25 4.2788e-26 1.8739e-23 5.8539e-24 8.4061e-27 2.8249e-24
+ 42233. 3.0304e-23 1.0748 3.0601e-23 1.0784 3.0917e-23 1.0822 3.1247e-23 1.0861 3.1774e-23 1.0923 3.2148e-23 1.0967 3.2542e-23 1.1013 1.1256e-22 4.2251e-23 8.1372e-24 3.0373e-23 2.0915e-25 3.6136e-26 2.0318e-23 6.4453e-24 1.0918e-26 3.0157e-24
+ 44213. 2.8597e-23 1.0761 2.8903e-23 1.0797 2.9227e-23 1.0836 2.9567e-23 1.0876 3.0110e-23 1.0939 3.0496e-23 1.0983 3.0902e-23 1.1030 1.2358e-22 4.8217e-23 9.0042e-24 3.2379e-23 2.7527e-25 3.1441e-26 2.1939e-23 7.1267e-24 1.4477e-26 3.2007e-24
+ 46285. 2.7425e-23 1.0771 2.7758e-23 1.0808 2.8109e-23 1.0846 2.8479e-23 1.0886 2.9069e-23 1.0950 2.9488e-23 1.0995 2.9930e-23 1.1042 1.3543e-22 5.4671e-23 9.9508e-24 3.4239e-23 3.6779e-25 2.8109e-26 2.3598e-23 7.9044e-24 1.9450e-26 3.3738e-24
+ 48454. 2.6901e-23 1.0779 2.7285e-23 1.0816 2.7689e-23 1.0854 2.8114e-23 1.0895 2.8794e-23 1.0959 2.9278e-23 1.1004 2.9788e-23 1.1052 1.4814e-22 6.1596e-23 1.0980e-23 3.6412e-23 4.9318e-25 2.5685e-26 2.5291e-23 8.7834e-24 2.6228e-26 3.5275e-24
+ 50725. 2.7253e-23 1.0785 2.7723e-23 1.0822 2.8219e-23 1.0861 2.8742e-23 1.0902 2.9578e-23 1.0967 3.0173e-23 1.1013 3.0800e-23 1.1060 1.6175e-22 6.8960e-23 1.2096e-23 3.8566e-23 6.5768e-25 2.3830e-26 2.7015e-23 9.7674e-24 3.5354e-26 3.6553e-24
+ 53102. 2.8515e-23 1.0792 2.9113e-23 1.0829 2.9743e-23 1.0869 3.0406e-23 1.0910 3.1468e-23 1.0975 3.2225e-23 1.1021 3.3022e-23 1.1069 1.7626e-22 7.6731e-23 1.3301e-23 4.1148e-23 8.6674e-25 2.2214e-26 2.8752e-23 1.0858e-23 4.7382e-26 3.7548e-24
+ 55591. 3.1003e-23 1.0800 3.1784e-23 1.0838 3.2607e-23 1.0878 3.3474e-23 1.0919 3.4863e-23 1.0985 3.5853e-23 1.1031 3.6897e-23 1.1080 1.9171e-22 8.4885e-23 1.4602e-23 4.3716e-23 1.1245e-24 2.0473e-26 3.0491e-23 1.2057e-23 6.3084e-26 3.8296e-24
+ 58196. 3.4950e-23 1.0812 3.5983e-23 1.0850 3.7073e-23 1.0890 3.8221e-23 1.0932 4.0061e-23 1.0999 4.1372e-23 1.1046 4.2756e-23 1.1095 2.0813e-22 9.3406e-23 1.6007e-23 4.6714e-23 1.4340e-24 1.8201e-26 3.2206e-23 1.3364e-23 8.3253e-26 3.8897e-24
+ 60923. 4.0597e-23 1.0828 4.1966e-23 1.0868 4.3409e-23 1.0908 4.4932e-23 1.0951 4.7371e-23 1.1020 4.9109e-23 1.1068 5.0944e-23 1.1118 2.2554e-22 1.0229e-22 1.7527e-23 5.0023e-23 1.7972e-24 1.4616e-26 3.3850e-23 1.4777e-23 1.0880e-25 3.9507e-24
+ 63779. 4.7805e-23 1.0853 4.9587e-23 1.0894 5.1466e-23 1.0936 5.3448e-23 1.0980 5.6626e-23 1.1050 5.8891e-23 1.1100 6.1282e-23 1.1151 2.4389e-22 1.1155e-22 1.9171e-23 5.3655e-23 2.2161e-24 8.8857e-27 3.5313e-23 1.6298e-23 1.4076e-25 4.0324e-24
+ 66768. 5.6336e-23 1.0889 5.8598e-23 1.0931 6.0984e-23 1.0975 6.3503e-23 1.1021 6.7540e-23 1.1094 7.0420e-23 1.1145 7.3461e-23 1.1199 2.6319e-22 1.2121e-22 2.0957e-23 5.7683e-23 2.6938e-24 1.2622e-28 3.6430e-23 1.7925e-23 1.8019e-25 4.1532e-24
+ 69897. 6.5453e-23 1.0937 6.8227e-23 1.0981 7.1154e-23 1.1028 7.4444e-23 1.1106 7.9429e-23 1.1185 8.2987e-23 1.1241 8.6746e-23 1.1299 2.8416e-22 1.3175e-22 2.2981e-23 6.3297e-23 3.2467e-24 8.9867e-27 3.7044e-23 1.9708e-23 2.2896e-25 4.1000e-24
+ 73173. 7.4301e-23 1.1031 7.7587e-23 1.1079 8.1055e-23 1.1130 8.4778e-23 1.1191 9.0669e-23 1.1277 9.4877e-23 1.1337 9.9325e-23 1.1400 3.0532e-22 1.4252e-22 2.5154e-23 6.9157e-23 3.8693e-24 1.2496e-26 3.6629e-23 2.1567e-23 2.8737e-25 4.1143e-24
+ 76602. 8.1203e-23 1.1116 8.4900e-23 1.1169 8.8804e-23 1.1224 9.2948e-23 1.1284 9.9582e-23 1.1376 1.0432e-22 1.1440 1.0934e-22 1.1508 3.2651e-22 1.5353e-22 2.7499e-23 7.5716e-23 4.5747e-24 1.4136e-26 3.4846e-23 2.3499e-23 3.5669e-25 4.1605e-24
+ 80192. 8.5326e-23 1.1200 8.9290e-23 1.1257 9.3479e-23 1.1316 9.7914e-23 1.1378 1.0504e-22 1.1477 1.1013e-22 1.1547 1.1553e-22 1.1619 3.4739e-22 1.6455e-22 3.0022e-23 8.3172e-23 5.3764e-24 1.7115e-26 3.1552e-23 2.5474e-23 4.3757e-25 4.2136e-24
+ 83951. 8.6150e-23 1.1251 9.0198e-23 1.1310 9.4727e-23 1.1402 9.9278e-23 1.1468 1.0660e-22 1.1573 1.1184e-22 1.1647 1.1739e-22 1.1725 3.6781e-22 1.7515e-22 3.2710e-23 9.1617e-23 6.2892e-24 2.3624e-26 2.7025e-23 2.7452e-23 5.3047e-25 4.2537e-24
+ 87885. 8.4591e-23 1.1341 8.8607e-23 1.1404 9.2703e-23 1.1451 9.7187e-23 1.1520 1.0440e-22 1.1629 1.0986e-22 1.1737 1.1536e-22 1.1818 3.8779e-22 1.8542e-22 3.5546e-23 1.0107e-22 7.3295e-24 3.4982e-26 2.1946e-23 2.9385e-23 6.3558e-25 4.2629e-24
+ 92004. 8.0665e-23 1.1382 8.4506e-23 1.1447 8.8496e-23 1.1505 9.3034e-23 1.1607 9.9986e-23 1.1722 1.0481e-22 1.1785 1.1007e-22 1.1869 4.0620e-22 1.9123e-22 3.8414e-23 1.1041e-22 8.4956e-24 3.2608e-26 1.7036e-23 3.1170e-23 7.5100e-25 4.4569e-24
+ 96316. 7.5560e-23 1.1423 7.9162e-23 1.1490 8.2936e-23 1.1555 8.7086e-23 1.1644 9.3598e-23 1.1762 9.8188e-23 1.1836 1.0313e-22 1.1922 4.2364e-22 1.9536e-22 4.1442e-23 1.2147e-22 9.8326e-24 4.2401e-26 1.2865e-23 3.2871e-23 8.7903e-25 4.5949e-24
+ 1.0083e+05 6.9896e-23 1.1460 7.3223e-23 1.1528 7.6727e-23 1.1598 8.0512e-23 1.1681 8.6528e-23 1.1801 9.0802e-23 1.1882 9.5369e-23 1.1970 4.3832e-22 1.9455e-22 4.4587e-23 1.3389e-22 1.1349e-23 6.8248e-26 9.5739e-24 3.4434e-23 1.0191e-24 4.6134e-24
+ 1.0556e+05 6.4139e-23 1.1490 6.7183e-23 1.1560 7.0397e-23 1.1632 7.3837e-23 1.1713 7.9341e-23 1.1836 8.3268e-23 1.1920 8.7450e-23 1.2010 4.4846e-22 1.8724e-22 4.7806e-23 1.4739e-22 1.3046e-23 1.1081e-25 7.0934e-24 3.5833e-23 1.1708e-24 4.5765e-24
+ 1.1050e+05 5.8559e-23 1.1513 6.1325e-23 1.1585 6.4250e-23 1.1659 6.7365e-23 1.1739 7.2368e-23 1.1864 7.5946e-23 1.1950 7.9749e-23 1.2042 4.5308e-22 1.7285e-22 5.1059e-23 1.6176e-22 1.4915e-23 1.6972e-25 5.2697e-24 3.7038e-23 1.3340e-24 4.4911e-24
+ 1.1568e+05 5.3331e-23 1.1532 5.5836e-23 1.1604 5.8486e-23 1.1679 6.1301e-23 1.1760 6.5831e-23 1.1885 6.9076e-23 1.1974 7.2520e-23 1.2066 4.5284e-22 1.5238e-22 5.4302e-23 1.7681e-22 1.6936e-23 2.4495e-25 3.9432e-24 3.8038e-23 1.5087e-24 4.3900e-24
+ 1.2110e+05 4.8532e-23 1.1546 5.0796e-23 1.1619 5.3192e-23 1.1695 5.5734e-23 1.1775 5.9829e-23 1.1902 6.2763e-23 1.1991 6.5877e-23 1.2085 4.5002e-22 1.2849e-22 5.7489e-23 1.9241e-22 1.9081e-23 3.3688e-25 2.9807e-24 3.8823e-23 1.6950e-24 4.3036e-24
+ 1.2678e+05 4.4188e-23 1.1556 4.6233e-23 1.1629 4.8398e-23 1.1706 5.0694e-23 1.1787 5.4393e-23 1.1915 5.7046e-23 1.2005 5.9860e-23 1.2099 4.4749e-22 1.0434e-22 6.0561e-23 2.0863e-22 2.1319e-23 4.4664e-25 2.2804e-24 3.9381e-23 1.8933e-24 4.2578e-24
+ 1.3272e+05 4.0277e-23 1.1564 4.2126e-23 1.1638 4.4082e-23 1.1715 4.6156e-23 1.1796 4.9500e-23 1.1924 5.1898e-23 1.2015 5.4441e-23 1.2110 4.4743e-22 8.2407e-23 6.3433e-23 2.2472e-22 2.3619e-23 5.7599e-25 1.7684e-24 3.9680e-23 2.1042e-24 4.2738e-24
+ 1.3894e+05 3.6778e-23 1.1570 3.8450e-23 1.1644 4.0220e-23 1.1721 4.2097e-23 1.1803 4.5122e-23 1.1931 4.7292e-23 1.2022 4.9593e-23 1.2118 4.5078e-22 6.3973e-23 6.5975e-23 2.4140e-22 2.5955e-23 7.2750e-25 1.3919e-24 3.9656e-23 2.3281e-24 4.3690e-24
+ 1.4545e+05 3.3641e-23 1.1570 3.5155e-23 1.1644 3.6758e-23 1.1721 3.8457e-23 1.1803 4.1197e-23 1.1931 4.3161e-23 1.2022 4.5267e-23 1.2124 4.5736e-22 4.9465e-23 6.7973e-23 2.5825e-22 2.8309e-23 9.0476e-25 1.1135e-24 3.9185e-23 2.5657e-24 4.5588e-24
+ 1.5227e+05 3.0849e-23 1.1570 3.2239e-23 1.1649 3.3695e-23 1.1727 3.5238e-23 1.1809 3.7726e-23 1.1938 3.9510e-23 1.2029 4.1398e-23 1.2124 4.6595e-22 3.7753e-23 6.9065e-23 2.7481e-22 3.0654e-23 1.1083e-24 9.0626e-25 3.8057e-23 2.8161e-24 4.6460e-24
+ 1.5941e+05 2.8375e-23 1.1576 2.9624e-23 1.1649 3.0948e-23 1.1727 3.2351e-23 1.1809 3.4613e-23 1.1938 3.6235e-23 1.2029 3.7952e-23 1.2124 4.7574e-22 2.9320e-23 6.8865e-23 2.9205e-22 3.3029e-23 1.3521e-24 7.5278e-25 3.6065e-23 3.0828e-24 5.3459e-24
+ 1.6688e+05 2.6154e-23 1.1576 2.7292e-23 1.1649 2.8499e-23 1.1727 2.9777e-23 1.1809 3.1839e-23 1.1938 3.3318e-23 1.2029 3.4900e-23 1.2130 4.8476e-22 2.2504e-23 6.6753e-23 3.0912e-22 3.5390e-23 1.6344e-24 6.3864e-25 3.2964e-23 3.3622e-24 5.6711e-24
+ 1.7470e+05 2.4171e-23 1.1576 2.5210e-23 1.1649 2.6313e-23 1.1727 2.7481e-23 1.1809 2.9364e-23 1.1938 3.0730e-23 1.2035 3.2160e-23 1.2130 4.9223e-22 1.7543e-23 6.2361e-23 3.2617e-22 3.7770e-23 1.9646e-24 5.5513e-25 2.8775e-23 3.6550e-24 6.3433e-24
+ 1.8288e+05 2.2399e-23 1.1576 2.3351e-23 1.1649 2.4360e-23 1.1727 2.5430e-23 1.1809 2.7168e-23 1.1944 2.8405e-23 1.2035 2.9714e-23 1.2130 4.9824e-22 1.4060e-23 5.5758e-23 3.4329e-22 4.0208e-23 2.3526e-24 4.9657e-25 2.3864e-23 3.9622e-24 7.4076e-24
+ 1.9146e+05 2.0810e-23 1.1576 2.1684e-23 1.1649 2.2622e-23 1.1733 2.3604e-23 1.1815 2.5187e-23 1.1944 2.6322e-23 1.2035 2.7524e-23 1.2130 5.0288e-22 1.1208e-23 4.7512e-23 3.5963e-22 4.2656e-23 2.7920e-24 4.5815e-25 1.8819e-23 4.2772e-24 8.0895e-24
+ 2.0043e+05 1.9385e-23 1.1576 2.0198e-23 1.1655 2.1051e-23 1.1733 2.1954e-23 1.1815 2.3411e-23 1.1944 2.4455e-23 1.2035 2.5560e-23 1.2130 5.0742e-22 8.7475e-24 3.8759e-23 3.7499e-22 4.5151e-23 3.2879e-24 4.3821e-25 1.4268e-23 4.5991e-24 9.1096e-24
+ 2.0982e+05 1.8103e-23 1.1576 1.8853e-23 1.1655 1.9639e-23 1.1733 2.0472e-23 1.1815 2.1815e-23 1.1944 2.2777e-23 1.2035 2.3796e-23 1.2130 5.1233e-22 7.0602e-24 3.0559e-23 3.8862e-22 4.7701e-23 3.8381e-24 4.3609e-25 1.0555e-23 4.9247e-24 1.0234e-23
+ 2.1966e+05 1.6948e-23 1.1576 1.7642e-23 1.1655 1.8368e-23 1.1733 1.9138e-23 1.1815 2.0379e-23 1.1944 2.1268e-23 1.2035 2.2209e-23 1.2130 5.1726e-22 6.0149e-24 2.3829e-23 3.9959e-22 5.0578e-23 4.4459e-24 4.5270e-25 7.7442e-24 5.2531e-24 1.1715e-23
+ 2.2995e+05 1.5906e-23 1.1576 1.6548e-23 1.1655 1.7221e-23 1.1733 1.7934e-23 1.1815 1.9083e-23 1.1944 1.9906e-23 1.2035 2.0778e-23 1.2130 5.1977e-22 4.9921e-24 1.7981e-23 4.0550e-22 5.3021e-23 5.0946e-24 4.8855e-25 5.6933e-24 5.5747e-24 1.2792e-23
+ 2.4073e+05 1.4971e-23 1.1582 1.5560e-23 1.1655 1.6184e-23 1.1733 1.6846e-23 1.1815 1.7912e-23 1.1944 1.8676e-23 1.2035 1.9485e-23 1.2130 5.1708e-22 4.1796e-24 1.3679e-23 4.0379e-22 5.5795e-23 5.7880e-24 5.4636e-25 4.2352e-24 5.8886e-24 1.4174e-23
+ 2.5201e+05 1.4117e-23 1.1582 1.4665e-23 1.1655 1.5246e-23 1.1733 1.5861e-23 1.1815 1.6853e-23 1.1944 1.7563e-23 1.2035 1.8316e-23 1.2130 5.0543e-22 3.2512e-24 1.0442e-23 3.9140e-22 5.8669e-23 6.5259e-24 6.2921e-25 3.2058e-24 6.1913e-24 1.5628e-23
+ 2.6382e+05 1.3343e-23 1.1582 1.3854e-23 1.1655 1.4395e-23 1.1733 1.4968e-23 1.1815 1.5893e-23 1.1944 1.6555e-23 1.2035 1.7264e-23 1.2136 4.8160e-22 2.7247e-24 8.0270e-24 3.6540e-22 6.1647e-23 7.3106e-24 7.4089e-25 2.4773e-24 6.4800e-24 1.7147e-23
+ 2.7618e+05 1.2639e-23 1.1582 1.3116e-23 1.1655 1.3622e-23 1.1733 1.4158e-23 1.1815 1.5021e-23 1.1944 1.5639e-23 1.2035 1.6302e-23 1.2136 4.4514e-22 2.5391e-24 6.2507e-24 3.2566e-22 6.4787e-23 8.1556e-24 8.8695e-25 1.9617e-24 6.7560e-24 1.8770e-23
+ 2.8913e+05 1.1999e-23 1.1582 1.2445e-23 1.1655 1.2919e-23 1.1733 1.3420e-23 1.1815 1.4228e-23 1.1944 1.4807e-23 1.2035 1.5427e-23 1.2136 3.9897e-22 2.1610e-24 4.8944e-24 2.7538e-22 6.7971e-23 9.0495e-24 1.0695e-24 1.5868e-24 7.0098e-24 2.0396e-23
+ 3.0268e+05 1.0583e-23 1.1582 1.0996e-23 1.1655 1.1435e-23 1.1733 1.1899e-23 1.1815 1.2647e-23 1.1944 1.3183e-23 1.2035 1.3758e-23 1.2136 3.5008e-22 1.6502e-24 3.8681e-24 2.2178e-22 7.1229e-23 1.0006e-23 1.2943e-24 1.3143e-24 7.2433e-24 2.2066e-23
+ 3.1686e+05 1.0059e-23 1.1582 1.0447e-23 1.1655 1.0859e-23 1.1733 1.1295e-23 1.1815 1.1997e-23 1.1944 1.2501e-23 1.2035 1.3040e-23 1.2136 3.0526e-22 1.4068e-24 3.0863e-24 1.7184e-22 7.4520e-23 1.1026e-23 1.5655e-24 1.1158e-24 7.4552e-24 2.3653e-23
+ 3.3171e+05 9.5892e-24 1.1582 9.9545e-24 1.1655 1.0342e-23 1.1733 1.0752e-23 1.1815 1.1414e-23 1.1944 1.1887e-23 1.2035 1.2395e-23 1.2136 2.6871e-22 1.3501e-24 2.4954e-24 1.3000e-22 7.7922e-23 1.2117e-23 1.8877e-24 9.7328e-25 7.6271e-24 2.5573e-23
+ 3.4726e+05 9.1621e-24 1.1582 9.5067e-24 1.1655 9.8720e-24 1.1733 1.0259e-23 1.1815 1.0883e-23 1.1944 1.1330e-23 1.2035 1.1808e-23 1.2136 2.4116e-22 1.1769e-24 2.0296e-24 9.7097e-23 8.0972e-23 1.3252e-23 2.2582e-24 8.7044e-25 7.7928e-24 2.7341e-23
+ 3.6353e+05 8.7738e-24 1.1582 9.0994e-24 1.1655 9.4446e-24 1.1733 9.8104e-24 1.1815 1.0400e-23 1.1944 1.0822e-23 1.2035 1.1274e-23 1.2136 2.2174e-22 1.0373e-24 1.6663e-24 7.2405e-23 8.3905e-23 1.4427e-23 2.6793e-24 8.0004e-25 7.9334e-24 2.9139e-23
+ 3.8057e+05 8.4205e-24 1.1582 8.7287e-24 1.1655 9.0556e-24 1.1733 9.4019e-24 1.1815 9.9599e-24 1.1944 1.0360e-23 1.2035 1.0788e-23 1.2136 2.0873e-22 9.2700e-25 1.3809e-24 5.4281e-23 8.6506e-23 1.5625e-23 3.1506e-24 7.5609e-25 8.0400e-24 3.0976e-23
+ 3.9841e+05 8.0987e-24 1.1582 8.3912e-24 1.1655 8.7013e-24 1.1733 9.0298e-24 1.1815 9.5591e-24 1.1944 9.9382e-24 1.2035 1.0344e-23 1.2136 2.0041e-22 8.4116e-25 1.1549e-24 4.1082e-23 8.8646e-23 1.6829e-23 3.6714e-24 7.3492e-25 8.1270e-24 3.2855e-23
+ 4.1708e+05 7.8058e-24 1.1582 8.0837e-24 1.1655 8.3784e-24 1.1733 8.6907e-24 1.1815 9.1937e-24 1.1944 9.5539e-24 1.2035 9.9401e-24 1.2136 1.9532e-22 7.7613e-25 9.7470e-25 3.1458e-23 9.0181e-23 1.8024e-23 4.2405e-24 7.3433e-25 8.1848e-24 3.4795e-23
+ 4.3663e+05 7.5389e-24 1.1582 7.8036e-24 1.1655 8.0842e-24 1.1733 8.3815e-24 1.1815 8.8604e-24 1.1944 9.2035e-24 1.2035 9.5711e-24 1.2136 1.9224e-22 6.2718e-25 8.2995e-25 2.4393e-23 9.0949e-23 1.9199e-23 4.8565e-24 7.5338e-25 8.1731e-24 3.6822e-23
+ 4.5709e+05 7.2958e-24 1.1582 7.5483e-24 1.1655 7.8160e-24 1.1733 8.0997e-24 1.1815 8.5565e-24 1.1944 8.8837e-24 1.2035 9.2345e-24 1.2136 1.9040e-22 5.9649e-25 7.1301e-25 1.9157e-23 9.0754e-23 2.0351e-23 5.5182e-24 7.9196e-25 8.1660e-24 3.8896e-23
+ 4.7851e+05 7.0744e-24 1.1582 7.3157e-24 1.1655 7.5716e-24 1.1733 7.8427e-24 1.1815 8.2793e-24 1.1944 8.5919e-24 1.2035 8.9271e-24 1.2136 1.8894e-22 5.8273e-25 6.1800e-25 1.5233e-23 8.9354e-23 2.1481e-23 6.2249e-24 8.5064e-25 8.1222e-24 4.1177e-23
+ 5.0094e+05 6.8716e-24 1.1582 7.1026e-24 1.1655 7.3475e-24 1.1733 7.6069e-24 1.1815 8.0248e-24 1.1944 8.3241e-24 1.2035 8.6449e-24 1.2136 1.8722e-22 5.8415e-25 5.4049e-25 1.2257e-23 8.6456e-23 2.2594e-23 6.9765e-24 9.3039e-25 8.0340e-24 4.3629e-23
+ 5.2442e+05 6.6607e-24 1.1582 6.8808e-24 1.1655 7.1142e-24 1.1733 7.3614e-24 1.1815 7.7595e-24 1.1944 8.0446e-24 1.2035 8.3502e-24 1.2136 1.8464e-22 6.0087e-25 4.7708e-25 9.9743e-24 8.1760e-23 2.3699e-23 7.7742e-24 1.0325e-24 7.8712e-24 4.6272e-23
+ 5.4899e+05 6.4704e-24 1.1582 6.6806e-24 1.1655 6.9034e-24 1.1733 7.1394e-24 1.1815 7.5195e-24 1.1944 7.7917e-24 1.2035 8.0835e-24 1.2136 1.8096e-22 7.2342e-25 5.1534e-25 8.2928e-24 7.5171e-23 2.4889e-23 8.7102e-24 1.1593e-24 7.6521e-24 4.9213e-23
+ 5.7472e+05 6.2987e-24 1.1582 6.4998e-24 1.1655 6.7130e-24 1.1733 6.9389e-24 1.1815 7.3026e-24 1.1944 7.5629e-24 1.2035 7.8422e-24 1.2136 1.7586e-22 7.7094e-25 3.8438e-25 6.9024e-24 6.6641e-23 2.5905e-23 9.5231e-24 1.3100e-24 7.2530e-24 5.2277e-23
+ 6.0166e+05 6.1441e-24 1.1582 6.3369e-24 1.1655 6.5414e-24 1.1733 6.7579e-24 1.1815 7.1066e-24 1.1944 7.3563e-24 1.2035 7.6240e-24 1.2136 1.7005e-22 8.3286e-25 3.4891e-25 5.7999e-24 5.6847e-23 2.6972e-23 1.0473e-23 1.4868e-24 6.7948e-24 5.5547e-23
+ 6.2986e+05 6.0050e-24 1.1582 6.1903e-24 1.1655 6.3867e-24 1.1733 6.5948e-24 1.1815 6.9299e-24 1.1944 7.1697e-24 1.2035 7.4270e-24 1.2136 1.6422e-22 9.1110e-25 3.2288e-25 4.9209e-24 4.6735e-23 2.7991e-23 1.1479e-23 1.6907e-24 6.1718e-24 5.9012e-23
+ 6.5938e+05 5.8801e-24 1.1582 6.0585e-24 1.1655 6.2477e-24 1.1733 6.4480e-24 1.1815 6.7706e-24 1.1944 7.0015e-24 1.2035 7.2492e-24 1.2136 1.5932e-22 1.0055e-24 3.0428e-25 4.2177e-24 3.7274e-23 2.8918e-23 1.2538e-23 1.9221e-24 5.4724e-24 6.2645e-23
+ 6.9028e+05 5.7682e-24 1.1582 5.9404e-24 1.1655 6.1229e-24 1.1733 6.3162e-24 1.1815 6.6274e-24 1.1944 6.8501e-24 1.2035 7.0891e-24 1.2136 1.5587e-22 1.1147e-24 2.9281e-25 3.6545e-24 2.9119e-23 2.9699e-23 1.3647e-23 2.1812e-24 4.7181e-24 6.6412e-23
+ 7.2263e+05 5.6688e-24 1.1582 5.8353e-24 1.1655 6.0118e-24 1.1733 6.1987e-24 1.1815 6.4996e-24 1.1944 6.7149e-24 1.2035 6.9460e-24 1.2136 1.5387e-22 1.2362e-24 2.8830e-25 3.2037e-24 2.2507e-23 3.0269e-23 1.4794e-23 2.4677e-24 3.8356e-24 7.0263e-23
+ 7.5650e+05 5.5804e-24 1.1582 5.7416e-24 1.1655 5.9126e-24 1.1733 6.0937e-24 1.1815 6.3851e-24 1.1944 6.5937e-24 1.2035 6.8176e-24 1.2136 1.5338e-22 1.3676e-24 2.9072e-25 2.8452e-24 1.7360e-23 3.0556e-23 1.5966e-23 2.7806e-24 3.1348e-24 7.4106e-23
+ 7.9195e+05 5.5019e-24 1.1582 5.6585e-24 1.1655 5.8244e-24 1.1733 6.0002e-24 1.1815 6.2830e-24 1.1944 6.4855e-24 1.2035 6.7027e-24 1.2136 1.5398e-22 1.5054e-24 3.0003e-25 2.5624e-24 1.3377e-23 3.0481e-23 1.7143e-23 3.1188e-24 2.5937e-24 7.7937e-23
+ 8.2907e+05 5.4330e-24 1.1582 5.5852e-24 1.1655 5.7465e-24 1.1733 5.9174e-24 1.1815 6.1925e-24 1.1944 6.3893e-24 1.2035 6.6005e-24 1.2136 1.5515e-22 1.6464e-24 3.1618e-25 2.3431e-24 1.0426e-23 2.9968e-23 1.8304e-23 3.4804e-24 2.1570e-24 8.1633e-23
+ 8.6792e+05 5.3725e-24 1.1582 5.5208e-24 1.1655 5.6779e-24 1.1733 5.8444e-24 1.1815 6.1123e-24 1.1944 6.3040e-24 1.2035 6.5098e-24 1.2136 1.5646e-22 1.7871e-24 3.3912e-25 2.1781e-24 8.2085e-24 2.8943e-23 1.9423e-23 3.8631e-24 1.8126e-24 8.5092e-23
+ 9.0860e+05 5.3198e-24 1.1582 5.4645e-24 1.1655 5.6179e-24 1.1733 5.7804e-24 1.1815 6.0417e-24 1.1944 6.2288e-24 1.2035 6.4296e-24 1.2136 1.5749e-22 1.9235e-24 3.6874e-25 2.0606e-24 6.5340e-24 2.7349e-23 2.0474e-23 4.2647e-24 1.5440e-24 8.8203e-23
+ 9.5118e+05 5.2744e-24 1.1582 5.4159e-24 1.1655 5.5658e-24 1.1733 5.7246e-24 1.1815 5.9800e-24 1.1944 6.1628e-24 1.2035 6.3591e-24 1.2136 1.5802e-22 2.0472e-24 4.8250e-25 2.0639e-24 5.3379e-24 2.5248e-23 2.1510e-23 4.6861e-24 1.3363e-24 9.0920e-23
+ 9.9576e+05 5.2357e-24 1.1582 5.3742e-24 1.1655 5.5210e-24 1.1733 5.6765e-24 1.1815 5.9265e-24 1.1944 6.1055e-24 1.2035 6.2976e-24 1.2136 1.5768e-22 2.1593e-24 4.4914e-25 2.0315e-24 4.3620e-24 2.2548e-23 2.2356e-23 5.1178e-24 1.1735e-24 9.2976e-23
+ 1.0424e+06 5.2151e-24 1.1582 5.3511e-24 1.1655 5.4953e-24 1.1733 5.6479e-24 1.1815 5.8935e-24 1.1944 6.0692e-24 1.2035 6.2579e-24 1.2136 1.5647e-22 2.2500e-24 4.9504e-25 1.8735e-24 3.6042e-24 1.9488e-23 2.3001e-23 5.5603e-24 1.0461e-24 9.4336e-23
+ 1.0913e+06 5.2020e-24 1.1582 5.3358e-24 1.1655 5.4777e-24 1.1733 5.6278e-24 1.1815 5.8694e-24 1.1944 6.0422e-24 1.2035 6.2278e-24 1.2136 1.5450e-22 2.3127e-24 5.4755e-25 1.9152e-24 3.0113e-24 1.6246e-23 2.3564e-23 6.0109e-24 9.4596e-25 9.4930e-23
+ 1.1424e+06 5.1948e-24 1.1582 5.3267e-24 1.1655 5.4664e-24 1.1733 5.6144e-24 1.1815 5.8524e-24 1.1944 6.0227e-24 1.2035 6.2055e-24 1.2136 1.5191e-22 2.3425e-24 6.0394e-25 2.0010e-24 2.5434e-24 1.3220e-23 2.3972e-23 6.4665e-24 8.6719e-25 9.4713e-23
+ 1.1960e+06 5.1932e-24 1.1582 5.3233e-24 1.1655 5.4612e-24 1.1733 5.6072e-24 1.1815 5.8421e-24 1.1944 6.0101e-24 1.2035 6.1905e-24 1.2136 1.4884e-22 2.3371e-24 6.6308e-25 2.1278e-24 2.1714e-24 1.0545e-23 2.4210e-23 6.9238e-24 8.0534e-25 9.3674e-23
+ 1.2520e+06 5.1968e-24 1.1582 5.3254e-24 1.1655 5.4617e-24 1.1733 5.6060e-24 1.1815 5.8381e-24 1.1944 6.0040e-24 1.2035 6.1824e-24 1.2136 1.4537e-22 2.2976e-24 7.2364e-25 2.2962e-24 1.8739e-24 8.3140e-24 2.4265e-23 7.3788e-24 7.5714e-25 9.1896e-23
+ 1.3107e+06 5.2054e-24 1.1582 5.3326e-24 1.1655 5.4675e-24 1.1733 5.6103e-24 1.1815 5.8399e-24 1.1944 6.0042e-24 1.2035 6.1806e-24 1.2136 1.4151e-22 2.2277e-24 7.8400e-25 2.5061e-24 1.5668e-24 6.5305e-24 2.4114e-23 7.8270e-24 7.2024e-25 8.9435e-23
+ 1.3721e+06 5.2185e-24 1.1582 5.3446e-24 1.1655 5.4783e-24 1.1733 5.6198e-24 1.1815 5.8473e-24 1.1944 6.0100e-24 1.2035 6.1849e-24 1.2136 1.3720e-22 2.1337e-24 8.4226e-25 2.7568e-24 1.3743e-24 5.1421e-24 2.3723e-23 8.2632e-24 6.9286e-25 8.6355e-23
+ 1.4364e+06 5.2360e-24 1.1582 5.3611e-24 1.1655 5.4938e-24 1.1733 5.6341e-24 1.1815 5.8599e-24 1.1944 6.0213e-24 1.2035 6.1948e-24 1.2136 1.3242e-22 2.0861e-24 9.5950e-25 3.1097e-24 1.2849e-24 4.1394e-24 2.3103e-23 8.7451e-24 7.3710e-25 8.2783e-23
+ 1.5038e+06 5.2576e-24 1.1582 5.3819e-24 1.1655 5.5137e-24 1.1733 5.6531e-24 1.1815 5.8773e-24 1.1944 6.0376e-24 1.2035 6.2100e-24 1.2136 1.2691e-22 1.9640e-24 1.0056e-24 3.4343e-24 1.1622e-24 3.3239e-24 2.2070e-23 9.0813e-24 6.6081e-25 7.8619e-23
+ 1.5742e+06 5.2831e-24 1.1582 5.4067e-24 1.1655 5.5377e-24 1.1733 5.6764e-24 1.1815 5.8994e-24 1.1944 6.0588e-24 1.2035 6.2302e-24 1.2136 1.2064e-22 1.8352e-24 9.8125e-25 3.7880e-24 1.0631e-24 2.6972e-24 2.0640e-23 9.4462e-24 6.5372e-25 7.3945e-23
+ 1.6480e+06 5.3123e-24 1.1582 5.4353e-24 1.1655 5.5658e-24 1.1733 5.7038e-24 1.1815 5.9258e-24 1.1944 6.0845e-24 1.2035 6.2551e-24 1.2136 1.1358e-22 1.7061e-24 1.0045e-24 4.1671e-24 9.8546e-25 2.2137e-24 1.8766e-23 9.7791e-24 6.5439e-25 6.8779e-23
+ 1.7252e+06 5.3449e-24 1.1582 5.4676e-24 1.1655 5.5975e-24 1.1733 5.7351e-24 1.1815 5.9563e-24 1.1944 6.1145e-24 1.2035 6.2845e-24 1.2136 1.0583e-22 1.5800e-24 1.0155e-24 4.5645e-24 9.2643e-25 1.7843e-24 1.6618e-23 1.0075e-23 6.6052e-25 6.3181e-23
+ 1.8061e+06 5.3809e-24 1.1582 5.5032e-24 1.1655 5.6329e-24 1.1733 5.7701e-24 1.1815 5.9908e-24 1.1944 6.1485e-24 1.2035 6.3181e-24 1.2136 9.7614e-23 1.4082e-24 1.0120e-24 4.9719e-24 8.8399e-25 1.4916e-24 1.4297e-23 1.0330e-23 6.7171e-25 5.7245e-23
+ 1.8907e+06 5.4200e-24 1.1582 5.5421e-24 1.1655 5.6716e-24 1.1733 5.8087e-24 1.1815 6.0290e-24 1.1944 6.1864e-24 1.2035 6.3558e-24 1.2136 8.9284e-23 1.2975e-24 9.9455e-25 5.3787e-24 8.1332e-25 1.2623e-24 1.1987e-23 1.0541e-23 6.8755e-25 5.1194e-23
+ 1.9794e+06 5.4621e-24 1.1582 5.5842e-24 1.1655 5.7135e-24 1.1733 5.8505e-24 1.1815 6.0706e-24 1.1944 6.2280e-24 1.2035 6.3972e-24 1.2136 8.1215e-23 1.1965e-24 9.6491e-25 5.7723e-24 8.0267e-25 1.0803e-24 9.8511e-24 1.0703e-23 7.0772e-25 4.5230e-23
+ 2.0721e+06 5.5070e-24 1.1582 5.6291e-24 1.1655 5.7586e-24 1.1733 5.8955e-24 1.1815 6.1157e-24 1.1944 6.2730e-24 1.2035 6.4423e-24 1.2136 7.3756e-23 1.1410e-24 9.6274e-25 6.1749e-24 8.4382e-25 9.7225e-25 8.0296e-24 1.0846e-23 7.6899e-25 3.9617e-23
+ 2.1692e+06 5.5547e-24 1.1582 5.6770e-24 1.1655 5.8065e-24 1.1733 5.9436e-24 1.1815 6.1639e-24 1.1944 6.3214e-24 1.2035 6.4908e-24 1.2136 6.7016e-23 1.0548e-24 9.1469e-25 6.4931e-24 8.5845e-25 8.5400e-25 6.4815e-24 1.0849e-23 7.5996e-25 3.4460e-23
+ 2.2709e+06 5.6051e-24 1.1582 5.7275e-24 1.1655 5.8572e-24 1.1733 5.9945e-24 1.1815 6.2152e-24 1.1944 6.3730e-24 1.2035 6.5427e-24 1.2136 6.1092e-23 9.7549e-25 8.6162e-25 6.7478e-24 8.8402e-25 7.5776e-25 5.2311e-24 1.0789e-23 7.8973e-25 2.9906e-23
+ 2.3773e+06 5.6579e-24 1.1582 5.7806e-24 1.1655 5.9106e-24 1.1733 6.0483e-24 1.1815 6.2695e-24 1.1944 6.4275e-24 1.2035 6.5976e-24 1.2136 5.5934e-23 9.0390e-25 7.7773e-25 6.9248e-24 9.2125e-25 6.5204e-25 4.2142e-24 1.0607e-23 8.2356e-25 2.5992e-23
+ 2.4887e+06 5.7131e-24 1.1582 5.8361e-24 1.1655 5.9666e-24 1.1733 6.1046e-24 1.1815 6.3265e-24 1.1944 6.4850e-24 1.2035 6.6556e-24 1.2136 5.1421e-23 8.3926e-25 7.2475e-25 7.0131e-24 9.6935e-25 5.9112e-25 3.4377e-24 1.0269e-23 8.5971e-25 2.2680e-23
+ 2.6054e+06 5.7706e-24 1.1582 5.8941e-24 1.1655 6.0250e-24 1.1733 6.1635e-24 1.1815 6.3861e-24 1.1944 6.5452e-24 1.2035 6.7164e-24 1.2136 4.7414e-23 7.8084e-25 6.7440e-25 7.0080e-24 1.0275e-24 5.4384e-25 2.8312e-24 9.7491e-24 8.9769e-25 1.9939e-23
+ 2.7275e+06 5.8303e-24 1.1582 5.9543e-24 1.1655 6.0857e-24 1.1733 6.2248e-24 1.1815 6.4484e-24 1.1944 6.6081e-24 1.2035 6.7800e-24 1.2136 4.3782e-23 7.0230e-25 6.2641e-25 6.9126e-24 1.0717e-24 5.0712e-25 2.3563e-24 9.0394e-24 9.3698e-25 1.7682e-23
+ 2.8553e+06 5.8921e-24 1.1582 6.0167e-24 1.1655 6.1487e-24 1.1733 6.2885e-24 1.1815 6.5130e-24 1.1944 6.6735e-24 1.2035 6.8462e-24 1.2136 4.0444e-23 6.5498e-25 5.8130e-25 6.7366e-24 1.1478e-24 4.7942e-25 1.9831e-24 8.1644e-24 9.7697e-25 1.5834e-23
+ 2.9891e+06 5.9559e-24 1.1582 6.0812e-24 1.1655 6.2139e-24 1.1733 6.3544e-24 1.1815 6.5801e-24 1.1944 6.7413e-24 1.2035 6.9149e-24 1.2136 3.7388e-23 6.3370e-25 5.6008e-25 6.5158e-24 1.2523e-24 4.8029e-25 1.7091e-24 7.2013e-24 1.0377e-24 1.4351e-23
+ 3.1292e+06 6.0217e-24 1.1582 6.1477e-24 1.1655 6.2812e-24 1.1733 6.4224e-24 1.1815 6.6494e-24 1.1944 6.8115e-24 1.2035 6.9860e-24 1.2136 3.4578e-23 5.9510e-25 5.2091e-25 6.2253e-24 1.3409e-24 4.6690e-25 1.4747e-24 6.1839e-24 1.0578e-24 1.3135e-23
+ 3.2759e+06 6.1075e-24 1.1582 6.2345e-24 1.1655 6.3691e-24 1.1733 6.5116e-24 1.1815 6.7405e-24 1.1944 6.9040e-24 1.2035 7.0800e-24 1.2136 3.2060e-23 5.5943e-25 4.8429e-25 5.9034e-24 1.4321e-24 4.5903e-25 1.2870e-24 5.1904e-24 1.0949e-24 1.2158e-23
+ 3.4294e+06 6.2013e-24 1.1582 6.3296e-24 1.1655 6.4655e-24 1.1733 6.6094e-24 1.1815 6.8405e-24 1.1944 7.0057e-24 1.2035 7.1834e-24 1.2136 2.9846e-23 5.2713e-25 4.5092e-25 5.5660e-24 1.5247e-24 4.5694e-25 1.1368e-24 4.3064e-24 1.1305e-24 1.1388e-23
+ 3.5901e+06 6.2980e-24 1.1582 6.4276e-24 1.1655 6.5649e-24 1.1733 6.7103e-24 1.1815 6.9438e-24 1.1944 7.1106e-24 1.2035 7.2902e-24 1.2136 2.7935e-23 4.9787e-25 4.0482e-25 5.2256e-24 1.6158e-24 4.6012e-25 1.0163e-24 3.5448e-24 1.1627e-24 1.0793e-23
+ 3.7584e+06 6.3974e-24 1.1582 6.5284e-24 1.1655 6.6672e-24 1.1733 6.8141e-24 1.1815 7.0501e-24 1.1944 7.2187e-24 1.2035 7.4002e-24 1.2136 2.6311e-23 4.7135e-25 3.7724e-25 4.8916e-24 1.7020e-24 4.5268e-25 9.0469e-25 2.9104e-24 1.1902e-24 1.0343e-23
+ 3.9345e+06 6.4996e-24 1.1582 6.6321e-24 1.1655 6.7724e-24 1.1733 6.9210e-24 1.1815 7.1596e-24 1.1944 7.3300e-24 1.2035 7.5135e-24 1.2136 2.4950e-23 4.4732e-25 3.5287e-25 4.5708e-24 1.7800e-24 4.6504e-25 8.2741e-25 2.3945e-24 1.2114e-24 1.0037e-23
+ 4.1189e+06 6.6045e-24 1.1582 6.7385e-24 1.1655 6.8805e-24 1.1733 7.0307e-24 1.1815 7.2720e-24 1.1944 7.4444e-24 1.2035 7.6300e-24 1.2136 2.3825e-23 4.2552e-25 3.3073e-25 4.2672e-24 1.8461e-24 4.8209e-25 7.6675e-25 1.9809e-24 1.2244e-24 9.8527e-24
+ 4.3120e+06 6.7121e-24 1.1582 6.8477e-24 1.1655 6.9913e-24 1.1733 7.1433e-24 1.1815 7.3875e-24 1.1944 7.5619e-24 1.2035 7.7497e-24 1.2136 2.2912e-23 4.0519e-25 3.1062e-25 3.9832e-24 1.8966e-24 5.0275e-25 7.1938e-25 1.6523e-24 1.2268e-24 9.7768e-24
+ 4.5141e+06 6.8223e-24 1.1582 6.9595e-24 1.1655 7.1049e-24 1.1733 7.2588e-24 1.1815 7.5059e-24 1.1944 7.6824e-24 1.2035 7.8725e-24 1.2136 2.2182e-23 3.8522e-25 2.9235e-25 3.7198e-24 1.9288e-24 5.2664e-25 6.8323e-25 1.3920e-24 1.2157e-24 9.7988e-24
+ 4.7256e+06 6.9351e-24 1.1582 7.0740e-24 1.1655 7.2212e-24 1.1733 7.3770e-24 1.1815 7.6272e-24 1.1944 7.8059e-24 1.2035 7.9983e-24 1.2136 2.1614e-23 3.6715e-25 2.7573e-25 3.4769e-24 1.9407e-24 5.5335e-25 6.5670e-25 1.1861e-24 1.1877e-24 9.9093e-24
+ 4.9471e+06 7.0505e-24 1.1582 7.1911e-24 1.1655 7.3402e-24 1.1733 7.4979e-24 1.1815 7.7513e-24 1.1944 7.9323e-24 1.2035 8.1271e-24 1.2136 2.1184e-23 3.5080e-25 2.6060e-25 3.2539e-24 1.9319e-24 5.8242e-25 6.3851e-25 1.0229e-24 1.1400e-24 1.0099e-23
+ 5.1790e+06 7.1684e-24 1.1582 7.3109e-24 1.1655 7.4619e-24 1.1733 7.6217e-24 1.1815 7.8783e-24 1.1944 8.0616e-24 1.2035 8.2590e-24 1.2136 2.0868e-23 3.2234e-25 2.4682e-25 3.0498e-24 1.9033e-24 6.1331e-25 6.2763e-25 8.9340e-25 1.0712e-24 1.0360e-23
+ 5.4217e+06 7.2889e-24 1.1582 7.4332e-24 1.1655 7.5862e-24 1.1733 7.7481e-24 1.1815 8.0081e-24 1.1944 8.1938e-24 1.2035 8.3937e-24 1.2136 2.0649e-23 3.0810e-25 2.3425e-25 2.8632e-24 1.8571e-24 6.4539e-25 6.2323e-25 7.9038e-25 9.8279e-25 1.0681e-23
+ 5.6758e+06 7.4118e-24 1.1582 7.5581e-24 1.1655 7.7131e-24 1.1733 7.8771e-24 1.1815 8.1406e-24 1.1944 8.3287e-24 1.2035 8.5314e-24 1.2136 2.0516e-23 2.9593e-25 2.2277e-25 2.6930e-24 1.7964e-24 6.7781e-25 6.2460e-25 7.0836e-25 8.7978e-25 1.1055e-23
+ 5.9418e+06 7.5371e-24 1.1582 7.6854e-24 1.1655 7.8425e-24 1.1733 8.0087e-24 1.1815 8.2758e-24 1.1944 8.4664e-24 1.2035 8.6718e-24 1.2136 2.0457e-23 2.8487e-25 2.1168e-25 2.5131e-24 1.7247e-24 7.0985e-25 6.3116e-25 6.4309e-25 7.6995e-25 1.1469e-23
+ 6.2202e+06 7.6648e-24 1.1582 7.8151e-24 1.1655 7.9744e-24 1.1733 8.1429e-24 1.1815 8.4136e-24 1.1944 8.6069e-24 1.2035 8.8151e-24 1.2136 2.0466e-23 2.7481e-25 2.0104e-25 2.3693e-24 1.6457e-24 7.4041e-25 6.4237e-25 5.9130e-25 6.6162e-25 1.1913e-23
+ 6.5118e+06 7.7949e-24 1.1582 7.9473e-24 1.1655 8.1088e-24 1.1733 8.2796e-24 1.1815 8.5540e-24 1.1944 8.7500e-24 1.2035 8.9611e-24 1.2136 2.0546e-23 2.7860e-25 2.0430e-25 2.2528e-24 1.5635e-24 7.8135e-25 6.7069e-25 5.6342e-25 5.7441e-25 1.2389e-23
+ 6.8170e+06 7.9273e-24 1.1582 8.0818e-24 1.1655 8.2456e-24 1.1733 8.4188e-24 1.1815 8.6970e-24 1.1944 8.8957e-24 1.2035 9.1098e-24 1.2136 2.0660e-23 2.7137e-25 1.9659e-25 2.1356e-24 1.4791e-24 8.0673e-25 6.9088e-25 5.3273e-25 4.8747e-25 1.2858e-23
+ 7.1364e+06 8.0620e-24 1.1582 8.2187e-24 1.1655 8.3848e-24 1.1733 8.5605e-24 1.1815 8.8426e-24 1.1944 9.0441e-24 1.2035 9.2611e-24 1.2136 2.0801e-23 2.6393e-25 1.8869e-25 2.0277e-24 1.3957e-24 8.2630e-25 7.1334e-25 5.0855e-25 4.1294e-25 1.3317e-23
+ 7.4709e+06 8.1990e-24 1.1582 8.3579e-24 1.1655 8.5263e-24 1.1733 8.7045e-24 1.1815 8.9907e-24 1.1944 9.1950e-24 1.2035 9.4151e-24 1.2136 2.0953e-23 2.5715e-25 1.8149e-25 1.9290e-24 1.3149e-24 8.4006e-25 7.3856e-25 4.9067e-25 3.5127e-25 1.3755e-23
+ 7.8210e+06 8.3382e-24 1.1582 8.4994e-24 1.1655 8.6702e-24 1.1733 8.8510e-24 1.1815 9.1412e-24 1.1944 9.3484e-24 1.2035 9.5717e-24 1.2136 2.1090e-23 2.5096e-25 1.7492e-25 1.8318e-24 1.2377e-24 8.4729e-25 7.6592e-25 4.7813e-25 2.8778e-25 1.4155e-23
+ 8.1876e+06 8.4797e-24 1.1582 8.6432e-24 1.1655 8.8164e-24 1.1733 8.9998e-24 1.1815 9.2941e-24 1.1944 9.5044e-24 1.2035 9.7308e-24 1.2136 2.1197e-23 2.4529e-25 1.6890e-25 1.7402e-24 1.1647e-24 8.4761e-25 7.9495e-25 4.7015e-25 2.4579e-25 1.4503e-23
+ 8.5713e+06 8.6233e-24 1.1582 8.7891e-24 1.1655 8.9649e-24 1.1733 9.1509e-24 1.1815 9.4495e-24 1.1944 9.6627e-24 1.2035 9.8924e-24 1.2136 2.1258e-23 2.4007e-25 1.6338e-25 1.6565e-24 1.0965e-24 8.4106e-25 8.2490e-25 4.6610e-25 2.1277e-25 1.4786e-23
+ 8.9730e+06 8.7690e-24 1.1582 8.9373e-24 1.1655 9.1156e-24 1.1733 9.3043e-24 1.1815 9.6072e-24 1.1944 9.8235e-24 1.2035 1.0057e-23 1.2136 2.1256e-23 2.3524e-25 1.5829e-25 1.5799e-24 1.0329e-24 8.2806e-25 8.5500e-25 4.5227e-25 1.8608e-25 1.4989e-23
+ 9.3935e+06 8.9169e-24 1.1582 9.0876e-24 1.1655 9.2685e-24 1.1733 9.4599e-24 1.1815 9.7673e-24 1.1944 9.9867e-24 1.2035 1.0223e-23 1.2136 2.1176e-23 2.3074e-25 1.5357e-25 1.5098e-24 9.7407e-25 8.0936e-25 8.8439e-25 4.5340e-25 1.6445e-25 1.5099e-23
+ 9.8338e+06 9.0669e-24 1.1582 9.2401e-24 1.1655 9.4236e-24 1.1733 9.6178e-24 1.1815 9.9296e-24 1.1944 1.0152e-23 1.2035 1.0392e-23 1.2136 2.1004e-23 2.2653e-25 1.4918e-25 1.4454e-24 9.1969e-25 7.8594e-25 9.1209e-25 4.5827e-25 1.4687e-25 1.5105e-23
+ 1.0295e+07 9.2430e-24 1.1582 9.4192e-24 1.1655 9.6059e-24 1.1733 9.8034e-24 1.1815 1.0121e-23 1.1944 1.0347e-23 1.2035 1.0591e-23 1.2136 2.0732e-23 2.2276e-25 1.4519e-25 1.3869e-24 8.6980e-25 7.5899e-25 9.3723e-25 4.6548e-25 1.3256e-25 1.4999e-23
+ 1.0777e+07 9.4366e-24 1.1582 9.6161e-24 1.1655 9.8063e-24 1.1733 1.0008e-23 1.1815 1.0331e-23 1.1944 1.0561e-23 1.2035 1.0810e-23 1.2136 2.0350e-23 2.1933e-25 1.4151e-25 1.3335e-24 8.2401e-25 7.2959e-25 9.5875e-25 4.7463e-25 1.2088e-25 1.4773e-23
+ 1.1282e+07 9.6342e-24 1.1582 9.8170e-24 1.1655 1.0011e-23 1.1733 1.0216e-23 1.1815 1.0545e-23 1.1944 1.0780e-23 1.2035 1.1033e-23 1.2136 1.9854e-23 2.1607e-25 1.3805e-25 1.2844e-24 7.8190e-25 6.9868e-25 9.7562e-25 4.8542e-25 1.1134e-25 1.4423e-23
+ 1.1811e+07 9.8356e-24 1.1582 1.0022e-23 1.1655 1.0219e-23 1.1733 1.0428e-23 1.1815 1.0764e-23 1.1944 1.1003e-23 1.2035 1.1261e-23 1.2136 1.9241e-23 2.1297e-25 1.2160e-25 1.2391e-24 7.4318e-25 6.6712e-25 9.8708e-25 4.9748e-25 1.0354e-25 1.3950e-23
+ 1.2365e+07 1.0041e-23 1.1582 1.0231e-23 1.1655 1.0432e-23 1.1733 1.0645e-23 1.1815 1.0987e-23 1.1944 1.1231e-23 1.2035 1.1493e-23 1.2136 1.8512e-23 2.1001e-25 1.1771e-25 1.1973e-24 7.0415e-25 6.3565e-25 9.9256e-25 5.1047e-25 9.7178e-26 1.3357e-23
+ 1.2944e+07 1.0250e-23 1.1582 1.0444e-23 1.1655 1.0649e-23 1.1733 1.0865e-23 1.1815 1.1214e-23 1.1944 1.1462e-23 1.2035 1.1730e-23 1.2136 1.7681e-23 2.0718e-25 1.1508e-25 1.1587e-24 6.6821e-25 6.0479e-25 9.9181e-25 5.2402e-25 9.2025e-26 1.2656e-23
+ 1.3551e+07 1.0463e-23 1.1582 1.0660e-23 1.1655 1.0869e-23 1.1733 1.1090e-23 1.1815 1.1445e-23 1.1944 1.1698e-23 1.2035 1.1971e-23 1.2136 1.6763e-23 2.0449e-25 1.1265e-25 1.1231e-24 6.3530e-25 5.7498e-25 9.8490e-25 5.3773e-25 8.7888e-26 1.1861e-23
+ 1.4186e+07 1.0680e-23 1.1582 1.0881e-23 1.1655 1.1094e-23 1.1733 1.1319e-23 1.1815 1.1681e-23 1.1944 1.1939e-23 1.2035 1.2217e-23 1.2136 1.5780e-23 2.0195e-25 1.1040e-25 1.0902e-24 6.0517e-25 5.4648e-25 9.6032e-25 5.5115e-25 8.4607e-26 1.0997e-23
+ 1.4851e+07 1.0901e-23 1.1582 1.1106e-23 1.1655 1.1323e-23 1.1733 1.1552e-23 1.1815 1.1921e-23 1.1944 1.2184e-23 1.2035 1.2467e-23 1.2136 1.4761e-23 1.9958e-25 1.0834e-25 1.0599e-24 5.7758e-25 5.1947e-25 9.4203e-25 5.6385e-25 8.2060e-26 1.0092e-23
+ 1.5547e+07 1.1126e-23 1.1582 1.1335e-23 1.1655 1.1556e-23 1.1733 1.1790e-23 1.1815 1.2165e-23 1.1944 1.2433e-23 1.2035 1.2722e-23 1.2136 1.3735e-23 1.9740e-25 1.0646e-25 1.0320e-24 5.5231e-25 4.8242e-25 9.2019e-25 5.7533e-25 8.0150e-26 9.1759e-24
+ 1.6275e+07 1.1355e-23 1.1582 1.1568e-23 1.1655 1.1793e-23 1.1733 1.2031e-23 1.1815 1.2414e-23 1.1944 1.2687e-23 1.2035 1.2981e-23 1.2136 1.2731e-23 1.9543e-25 1.0474e-25 1.0064e-24 5.2921e-25 4.5830e-25 8.9484e-25 5.8514e-25 7.8785e-26 8.2784e-24
+ 1.7038e+07 1.1588e-23 1.1582 1.1804e-23 1.1655 1.2034e-23 1.1733 1.2277e-23 1.1815 1.2666e-23 1.1944 1.2945e-23 1.2035 1.3245e-23 1.2136 1.1775e-23 1.9370e-25 1.0320e-25 9.8311e-25 5.0809e-25 4.3644e-25 8.6690e-25 5.9283e-25 7.7897e-26 7.4182e-24
+ 1.7836e+07 1.1824e-23 1.1582 1.2045e-23 1.1655 1.2279e-23 1.1733 1.2526e-23 1.1815 1.2923e-23 1.1944 1.3207e-23 1.2035 1.3512e-23 1.2136 1.0882e-23 1.9222e-25 1.0181e-25 9.6188e-25 4.8880e-25 4.1416e-25 8.3726e-25 5.9808e-25 7.7431e-26 6.6279e-24
+ 1.8672e+07 1.2065e-23 1.1582 1.2290e-23 1.1655 1.2528e-23 1.1733 1.2780e-23 1.1815 1.3185e-23 1.1944 1.3473e-23 1.2035 1.3785e-23 1.2136 1.0065e-23 1.9099e-25 1.0058e-25 9.4263e-25 4.7118e-25 3.9353e-25 8.0668e-25 6.0061e-25 7.7330e-26 5.9124e-24
+ 1.9547e+07 1.2309e-23 1.1582 1.2538e-23 1.1655 1.2781e-23 1.1733 1.3038e-23 1.1815 1.3450e-23 1.1944 1.3744e-23 1.2035 1.4062e-23 1.2136 9.3434e-24 1.9003e-25 9.9504e-26 9.2529e-25 4.5511e-25 3.7450e-25 7.7581e-25 6.0033e-25 7.7550e-26 5.2889e-24
+ 2.0464e+07 1.2557e-23 1.1582 1.2791e-23 1.1655 1.3038e-23 1.1733 1.3300e-23 1.1815 1.3720e-23 1.1944 1.4020e-23 1.2035 1.4343e-23 1.2136 8.6919e-24 1.8929e-25 9.8562e-26 9.0966e-25 4.4045e-25 3.5698e-25 7.4518e-25 5.9721e-25 7.8047e-26 4.7342e-24
+ 2.1423e+07 1.2810e-23 1.1582 1.3047e-23 1.1655 1.3299e-23 1.1733 1.3566e-23 1.1815 1.3994e-23 1.1944 1.4299e-23 1.2035 1.4628e-23 1.2136 8.1166e-24 1.8878e-25 9.7751e-26 8.9565e-25 4.2708e-25 3.4087e-25 7.1521e-25 5.9139e-25 7.8785e-26 4.2538e-24
+ 2.2427e+07 1.3065e-23 1.1582 1.3308e-23 1.1655 1.3564e-23 1.1733 1.3836e-23 1.1815 1.4272e-23 1.1944 1.4583e-23 1.2035 1.4918e-23 1.2136 7.6109e-24 1.8849e-25 9.7063e-26 8.8315e-25 4.1490e-25 3.2604e-25 6.8619e-25 5.8308e-25 7.9725e-26 3.8409e-24
+ 2.3478e+07 1.3325e-23 1.1582 1.3572e-23 1.1655 1.3833e-23 1.1733 1.4110e-23 1.1815 1.4554e-23 1.1944 1.4871e-23 1.2035 1.5212e-23 1.2136 7.1671e-24 1.8839e-25 9.6487e-26 8.7203e-25 4.0380e-25 3.1242e-25 6.5759e-25 5.7260e-25 8.0830e-26 3.4879e-24
+ 2.4578e+07 1.3589e-23 1.1582 1.3840e-23 1.1655 1.4106e-23 1.1733 1.4388e-23 1.1815 1.4840e-23 1.1944 1.5163e-23 1.2035 1.5511e-23 1.2136 6.7762e-24 1.8847e-25 9.6017e-26 8.6219e-25 3.9369e-25 2.9992e-25 6.2826e-25 5.6030e-25 8.2060e-26 3.1869e-24
+ 2.5730e+07 1.3856e-23 1.1582 1.4112e-23 1.1655 1.4383e-23 1.1733 1.4670e-23 1.1815 1.5130e-23 1.1944 1.5459e-23 1.2035 1.5813e-23 1.2136 6.4339e-24 1.8872e-25 9.5645e-26 8.5354e-25 3.8450e-25 2.8843e-25 6.0056e-25 5.4656e-25 8.3376e-26 2.9308e-24
+ 2.6936e+07 1.4127e-23 1.1582 1.4387e-23 1.1655 1.4663e-23 1.1733 1.4956e-23 1.1815 1.5425e-23 1.1944 1.5759e-23 1.2035 1.6120e-23 1.2136 6.1338e-24 1.8912e-25 9.5362e-26 8.4600e-25 3.7614e-25 2.7789e-25 5.7451e-25 5.3177e-25 8.4736e-26 2.7129e-24
+ 2.8198e+07 1.4401e-23 1.1582 1.4667e-23 1.1655 1.4948e-23 1.1733 1.5245e-23 1.1815 1.5723e-23 1.1944 1.6064e-23 1.2035 1.6431e-23 1.2136 5.8705e-24 1.8966e-25 9.5165e-26 8.3947e-25 3.6855e-25 2.6820e-25 5.5012e-25 5.1627e-25 8.6099e-26 2.5274e-24
+ 2.9520e+07 1.4680e-23 1.1582 1.4950e-23 1.1655 1.5236e-23 1.1733 1.5539e-23 1.1815 1.6025e-23 1.1944 1.6372e-23 1.2035 1.6747e-23 1.2136 5.6392e-24 1.9034e-25 9.5048e-26 8.3390e-25 3.6167e-25 2.5932e-25 5.2736e-25 5.0038e-25 8.7418e-26 2.3695e-24
+ 3.0903e+07 1.4961e-23 1.1582 1.5237e-23 1.1655 1.5528e-23 1.1733 1.5837e-23 1.1815 1.6332e-23 1.1944 1.6685e-23 1.2035 1.7066e-23 1.2136 5.4351e-24 1.9115e-25 9.5003e-26 8.2920e-25 3.5544e-25 2.5116e-25 5.0616e-25 4.8357e-25 8.8643e-26 2.2349e-24
+ 3.2352e+07 1.5277e-23 1.1582 1.5558e-23 1.1655 1.5855e-23 1.1733 1.6170e-23 1.1815 1.6675e-23 1.1944 1.7035e-23 1.2035 1.7424e-23 1.2136 5.2572e-24 1.9238e-25 9.5156e-26 8.2629e-25 3.5012e-25 2.4381e-25 4.8662e-25 4.6594e-25 8.9764e-26 2.1207e-24
+ 3.3868e+07 1.5629e-23 1.1582 1.5916e-23 1.1655 1.6220e-23 1.1733 1.6542e-23 1.1815 1.7058e-23 1.1944 1.7427e-23 1.2035 1.7824e-23 1.2136 5.1038e-24 1.9404e-25 9.5512e-26 8.2518e-25 3.4567e-25 2.3723e-25 4.6873e-25 4.4885e-25 9.0741e-26 2.0239e-24
+ 3.5455e+07 1.5988e-23 1.1582 1.6281e-23 1.1655 1.6592e-23 1.1733 1.6921e-23 1.1815 1.7449e-23 1.1944 1.7825e-23 1.2035 1.8231e-23 1.2136 4.9697e-24 1.9583e-25 9.5940e-26 8.2486e-25 3.4175e-25 2.3123e-25 4.5220e-25 4.3232e-25 9.1511e-26 1.9416e-24
+ 3.7117e+07 1.6354e-23 1.1582 1.6654e-23 1.1655 1.6971e-23 1.1733 1.7307e-23 1.1815 1.7847e-23 1.1944 1.8232e-23 1.2035 1.8647e-23 1.2136 4.8527e-24 1.9774e-25 9.6437e-26 8.2529e-25 3.3834e-25 2.2576e-25 4.3693e-25 4.1648e-25 9.2051e-26 1.8718e-24
+ 3.8856e+07 1.6727e-23 1.1582 1.7033e-23 1.1655 1.7358e-23 1.1733 1.7701e-23 1.1815 1.8252e-23 1.1944 1.8646e-23 1.2035 1.9070e-23 1.2136 4.7508e-24 1.9977e-25 9.7000e-26 8.2643e-25 3.3539e-25 2.2078e-25 4.2285e-25 4.0138e-25 9.2341e-26 1.8127e-24
+ 4.0677e+07 1.7107e-23 1.1582 1.7420e-23 1.1655 1.7751e-23 1.1733 1.8102e-23 1.1815 1.8665e-23 1.1944 1.9067e-23 1.2035 1.9501e-23 1.2136 4.6623e-24 2.0191e-25 9.7628e-26 8.2825e-25 3.3288e-25 2.1626e-25 4.0988e-25 3.8709e-25 9.2371e-26 1.7630e-24
+ 4.2584e+07 1.7493e-23 1.1582 1.7813e-23 1.1655 1.8152e-23 1.1733 1.8511e-23 1.1815 1.9086e-23 1.1944 1.9497e-23 1.2035 1.9940e-23 1.2136 4.5860e-24 2.0416e-25 9.8324e-26 8.3071e-25 3.3077e-25 2.1216e-25 3.9795e-25 3.7358e-25 9.2141e-26 1.7214e-24
+ 4.4579e+07 1.7887e-23 1.1582 1.8214e-23 1.1655 1.8560e-23 1.1733 1.8926e-23 1.1815 1.9514e-23 1.1944 1.9934e-23 1.2035 2.0387e-23 1.2136 4.5207e-24 2.0651e-25 9.9078e-26 8.3378e-25 3.2904e-25 2.0845e-25 3.8699e-25 3.6093e-25 9.1664e-26 1.6868e-24
+ 4.6669e+07 1.8288e-23 1.1582 1.8622e-23 1.1655 1.8975e-23 1.1733 1.9350e-23 1.1815 1.9950e-23 1.1944 2.0379e-23 1.2035 2.0841e-23 1.2136 4.4654e-24 2.0896e-25 9.9887e-26 8.3742e-25 3.2766e-25 2.0510e-25 3.7692e-25 3.4909e-25 9.0951e-26 1.6585e-24
+ 4.8856e+07 1.8696e-23 1.1582 1.9037e-23 1.1655 1.9398e-23 1.1733 1.9780e-23 1.1815 2.0394e-23 1.1944 2.0832e-23 1.2035 2.1304e-23 1.2136 4.4190e-24 2.1151e-25 1.0075e-25 8.4161e-25 3.2662e-25 2.0209e-25 3.6770e-25 3.3804e-25 8.9842e-26 1.6357e-24
+ 5.1146e+07 1.9110e-23 1.1582 1.9459e-23 1.1655 1.9828e-23 1.1733 2.0218e-23 1.1815 2.0845e-23 1.1944 2.1293e-23 1.2035 2.1775e-23 1.2136 4.3807e-24 2.1415e-25 1.0166e-25 8.4633e-25 3.2590e-25 1.9939e-25 3.5925e-25 3.2776e-25 8.8453e-26 1.6177e-24
+ 5.3543e+07 1.9532e-23 1.1582 1.9888e-23 1.1655 2.0265e-23 1.1733 2.0664e-23 1.1815 2.1304e-23 1.1944 2.1761e-23 1.2035 2.2254e-23 1.2136 4.3499e-24 2.1689e-25 1.0262e-25 8.5157e-25 3.2547e-25 1.9698e-25 3.5152e-25 3.1822e-25 8.6907e-26 1.6039e-24
+ 5.6052e+07 1.9961e-23 1.1582 2.0325e-23 1.1655 2.0710e-23 1.1733 2.1117e-23 1.1815 2.1771e-23 1.1944 2.2238e-23 1.2035 2.2741e-23 1.2136 4.3261e-24 2.1971e-25 1.0364e-25 8.5736e-25 3.2532e-25 1.9485e-25 3.4447e-25 3.0938e-25 8.5238e-26 1.5939e-24
+ 5.8679e+07 2.0397e-23 1.1582 2.0769e-23 1.1655 2.1162e-23 1.1733 2.1578e-23 1.1815 2.2246e-23 1.1944 2.2722e-23 1.2035 2.3236e-23 1.2136 4.3085e-24 2.2262e-25 1.0469e-25 8.6361e-25 3.2543e-25 1.9296e-25 3.3804e-25 3.0121e-25 8.3480e-26 1.5872e-24
+ 6.1429e+07 2.0841e-23 1.1582 2.1220e-23 1.1655 2.1621e-23 1.1733 2.2046e-23 1.1815 2.2728e-23 1.1944 2.3214e-23 1.2035 2.3739e-23 1.2136 4.2966e-24 2.2562e-25 1.0580e-25 8.7030e-25 3.2579e-25 1.9131e-25 3.3220e-25 2.9367e-25 8.1669e-26 1.5833e-24
+ 6.4308e+07 2.1291e-23 1.1582 2.1678e-23 1.1655 2.2088e-23 1.1733 2.2521e-23 1.1815 2.3218e-23 1.1944 2.3714e-23 1.2035 2.4250e-23 1.2136 4.2898e-24 2.2869e-25 1.0694e-25 8.7741e-25 3.2638e-25 1.8989e-25 3.2690e-25 2.8673e-25 7.9833e-26 1.5820e-24
+ 6.7322e+07 2.1748e-23 1.1582 2.2143e-23 1.1655 2.2562e-23 1.1733 2.3004e-23 1.1815 2.3715e-23 1.1944 2.4222e-23 1.2035 2.4769e-23 1.2136 4.2876e-24 2.3185e-25 1.0812e-25 8.8492e-25 3.2719e-25 1.8866e-25 3.2210e-25 2.8034e-25 7.7980e-26 1.5828e-24
+ 7.0477e+07 2.2213e-23 1.1582 2.2616e-23 1.1655 2.3043e-23 1.1733 2.3495e-23 1.1815 2.4220e-23 1.1944 2.4738e-23 1.2035 2.5296e-23 1.2136 4.2896e-24 2.3508e-25 1.0935e-25 8.9282e-25 3.2822e-25 1.8764e-25 3.1778e-25 2.7448e-25 7.6160e-26 1.5854e-24
+ 7.3780e+07 2.2684e-23 1.1582 2.3096e-23 1.1655 2.3532e-23 1.1733 2.3993e-23 1.1815 2.4733e-23 1.1944 2.5262e-23 1.2035 2.5831e-23 1.2136 4.2952e-24 2.3839e-25 1.1061e-25 9.0109e-25 3.2944e-25 1.8679e-25 3.1390e-25 2.6912e-25 7.4377e-26 1.5894e-24
+ 7.7238e+07 2.3163e-23 1.1582 2.3583e-23 1.1655 2.4028e-23 1.1733 2.4498e-23 1.1815 2.5254e-23 1.1944 2.5793e-23 1.2035 2.6374e-23 1.2136 4.3042e-24 2.4177e-25 1.1191e-25 9.0973e-25 3.3085e-25 1.8611e-25 3.1044e-25 2.6421e-25 7.2641e-26 1.5947e-24
+ 8.0858e+07 2.3648e-23 1.1582 2.4077e-23 1.1655 2.4531e-23 1.1733 2.5011e-23 1.1815 2.5782e-23 1.1944 2.6332e-23 1.2035 2.6925e-23 1.2136 4.3154e-24 2.4523e-25 1.1325e-25 9.1871e-25 3.3245e-25 1.8560e-25 3.0735e-25 2.5975e-25 7.0972e-26 1.6002e-24
+ 8.4647e+07 2.4141e-23 1.1582 2.4578e-23 1.1655 2.5041e-23 1.1733 2.5531e-23 1.1815 2.6318e-23 1.1944 2.6879e-23 1.2035 2.7484e-23 1.2136 4.3274e-24 2.4875e-25 1.1462e-25 9.2801e-25 3.3423e-25 1.8524e-25 3.0463e-25 2.5568e-25 6.9369e-26 1.6047e-24
+ 8.8614e+07 2.4641e-23 1.1582 2.5087e-23 1.1655 2.5559e-23 1.1733 2.6059e-23 1.1815 2.6861e-23 1.1944 2.7434e-23 1.2035 2.8051e-23 1.2136 4.3410e-24 2.5234e-25 1.1603e-25 9.3764e-25 3.3619e-25 1.8502e-25 3.0225e-25 2.5200e-25 6.7842e-26 1.6091e-24
+ 9.2767e+07 2.5147e-23 1.1582 2.5602e-23 1.1655 2.6084e-23 1.1733 2.6594e-23 1.1815 2.7412e-23 1.1944 2.7996e-23 1.2035 2.8626e-23 1.2136 4.3559e-24 2.5599e-25 1.1747e-25 9.4757e-25 3.3830e-25 1.8492e-25 3.0018e-25 2.4867e-25 6.6391e-26 1.6132e-24
+ 9.7115e+07 2.5661e-23 1.1582 2.6124e-23 1.1655 2.6616e-23 1.1733 2.7136e-23 1.1815 2.7971e-23 1.1944 2.8566e-23 1.2035 2.9208e-23 1.2136 4.3713e-24 2.5971e-25 1.1894e-25 9.5779e-25 3.4057e-25 1.8497e-25 2.9842e-25 2.4567e-25 6.5021e-26 1.6164e-24
+ 1.0167e+08 2.6216e-23 1.1582 2.6690e-23 1.1655 2.7192e-23 1.1733 2.7723e-23 1.1815 2.8575e-23 1.1944 2.9184e-23 1.2035 2.9839e-23 1.2136 4.3909e-24 2.6386e-25 1.2061e-25 9.6961e-25 3.4338e-25 1.8531e-25 2.9717e-25 2.4316e-25 6.3762e-26 1.6193e-24
+ 1.0643e+08 2.6846e-23 1.1582 2.7331e-23 1.1655 2.7845e-23 1.1733 2.8388e-23 1.1815 2.9261e-23 1.1944 2.9883e-23 1.2035 3.0554e-23 1.2136 4.4176e-24 2.6880e-25 1.2263e-25 9.8414e-25 3.4709e-25 1.8611e-25 2.9665e-25 2.4124e-25 6.2639e-26 1.6224e-24
+ 1.1142e+08 2.7488e-23 1.1582 2.7985e-23 1.1655 2.8510e-23 1.1733 2.9067e-23 1.1815 2.9960e-23 1.1944 3.0597e-23 1.2035 3.1284e-23 1.2136 4.4451e-24 2.7384e-25 1.2470e-25 9.9910e-25 3.5098e-25 1.8704e-25 2.9640e-25 2.3962e-25 6.1601e-26 1.6245e-24
+ 1.1664e+08 2.8143e-23 1.1582 2.8651e-23 1.1655 2.9189e-23 1.1733 2.9759e-23 1.1815 3.0672e-23 1.1944 3.1325e-23 1.2035 3.2028e-23 1.2136 4.4723e-24 2.7899e-25 1.2683e-25 1.0145e-24 3.5505e-25 1.8809e-25 2.9641e-25 2.3827e-25 6.0641e-26 1.6250e-24
+ 1.2211e+08 2.8811e-23 1.1582 2.9331e-23 1.1655 2.9882e-23 1.1733 3.0464e-23 1.1815 3.1399e-23 1.1944 3.2067e-23 1.2035 3.2786e-23 1.2136 4.5002e-24 2.8426e-25 1.2900e-25 1.0303e-24 3.5929e-25 1.8928e-25 2.9667e-25 2.3718e-25 5.9761e-26 1.6246e-24
+ 1.2783e+08 2.9492e-23 1.1582 3.0024e-23 1.1655 3.0587e-23 1.1733 3.1183e-23 1.1815 3.2140e-23 1.1944 3.2823e-23 1.2035 3.3559e-23 1.2136 4.5283e-24 2.8963e-25 1.3123e-25 1.0466e-24 3.6369e-25 1.9059e-25 2.9717e-25 2.3633e-25 5.8956e-26 1.6230e-24
+ 1.3382e+08 3.0186e-23 1.1582 3.0730e-23 1.1655 3.1307e-23 1.1733 3.1917e-23 1.1815 3.2896e-23 1.1944 3.3594e-23 1.2035 3.4348e-23 1.2136 4.5567e-24 2.9511e-25 1.3350e-25 1.0632e-24 3.6827e-25 1.9201e-25 2.9789e-25 2.3572e-25 5.8224e-26 1.6203e-24
+ 1.4009e+08 3.0893e-23 1.1582 3.1450e-23 1.1655 3.2040e-23 1.1733 3.2664e-23 1.1815 3.3665e-23 1.1944 3.4380e-23 1.2035 3.5151e-23 1.2136 4.5851e-24 2.8114e-25 1.3582e-25 1.0803e-24 3.7300e-25 1.9353e-25 2.9882e-25 2.3532e-25 5.7562e-26 1.6164e-24
+ 1.4666e+08 3.1614e-23 1.1582 3.2183e-23 1.1655 3.2787e-23 1.1733 3.3425e-23 1.1815 3.4449e-23 1.1944 3.5180e-23 1.2035 3.5969e-23 1.2136 4.6139e-24 2.8641e-25 1.3820e-25 1.0978e-24 3.7789e-25 1.9516e-25 2.9996e-25 2.3513e-25 5.6968e-26 1.6115e-24
+ 1.5353e+08 3.2348e-23 1.1582 3.2930e-23 1.1655 3.3547e-23 1.1733 3.4200e-23 1.1815 3.5248e-23 1.1944 3.5996e-23 1.2035 3.6802e-23 1.2136 4.6431e-24 2.9180e-25 1.4063e-25 1.1157e-24 3.8293e-25 1.9689e-25 3.0130e-25 2.3514e-25 5.6438e-26 1.6058e-24
+ 1.6073e+08 3.3095e-23 1.1582 3.3691e-23 1.1655 3.4322e-23 1.1733 3.4990e-23 1.1815 3.6061e-23 1.1944 3.6826e-23 1.2035 3.7651e-23 1.2136 4.6728e-24 2.9728e-25 1.4310e-25 1.1340e-24 3.8813e-25 1.9871e-25 3.0282e-25 2.3533e-25 5.5965e-26 1.5993e-24
+ 1.6826e+08 3.3857e-23 1.1582 3.4466e-23 1.1655 3.5111e-23 1.1733 3.5794e-23 1.1815 3.6890e-23 1.1944 3.7672e-23 1.2035 3.8515e-23 1.2136 4.7031e-24 3.0287e-25 1.4562e-25 1.1527e-24 3.9347e-25 2.0063e-25 3.0455e-25 2.3569e-25 5.5555e-26 1.5921e-24
+ 1.7615e+08 3.4631e-23 1.1582 3.5254e-23 1.1655 3.5914e-23 1.1733 3.6612e-23 1.1815 3.7733e-23 1.1944 3.8532e-23 1.2035 3.9395e-23 1.2136 4.7341e-24 3.0855e-25 1.4819e-25 1.1717e-24 3.9896e-25 2.0264e-25 3.0645e-25 2.3622e-25 5.5198e-26 1.5845e-24
+ 1.8440e+08 3.5420e-23 1.1582 3.6057e-23 1.1655 3.6732e-23 1.1733 3.7445e-23 1.1815 3.8591e-23 1.1944 3.9409e-23 1.2035 4.0290e-23 1.2136 4.7659e-24 3.1433e-25 1.5080e-25 1.1912e-24 4.0459e-25 2.0473e-25 3.0852e-25 2.3691e-25 5.4895e-26 1.5765e-24
+ 1.9304e+08 3.6223e-23 1.1582 3.6874e-23 1.1655 3.7564e-23 1.1733 3.8293e-23 1.1815 3.9464e-23 1.1944 4.0300e-23 1.2035 4.1201e-23 1.2136 4.7988e-24 3.2021e-25 1.5347e-25 1.2110e-24 4.1036e-25 2.0690e-25 3.1074e-25 2.3775e-25 5.4640e-26 1.5684e-24
+ 2.0209e+08 3.7040e-23 1.1582 3.7705e-23 1.1655 3.8410e-23 1.1733 3.9156e-23 1.1815 4.0353e-23 1.1944 4.1207e-23 1.2035 4.2128e-23 1.2136 4.8327e-24 3.2620e-25 1.5618e-25 1.2313e-24 4.1627e-25 2.0916e-25 3.1312e-25 2.3873e-25 5.4435e-26 1.5602e-24
+ 2.1156e+08 3.7871e-23 1.1582 3.8551e-23 1.1655 3.9271e-23 1.1733 4.0033e-23 1.1815 4.1257e-23 1.1944 4.2130e-23 1.2035 4.3071e-23 1.2136 4.8678e-24 3.3227e-25 1.5894e-25 1.2519e-24 4.2231e-25 2.1149e-25 3.1564e-25 2.3985e-25 5.4270e-26 1.5520e-24
+ 2.2148e+08 3.8716e-23 1.1582 3.9411e-23 1.1655 4.0147e-23 1.1733 4.0926e-23 1.1815 4.2176e-23 1.1944 4.3068e-23 1.2035 4.4031e-23 1.2136 4.9042e-24 3.3846e-25 1.6174e-25 1.2728e-24 4.2849e-25 2.1390e-25 3.1830e-25 2.4113e-25 5.4154e-26 1.5439e-24
+ 2.3186e+08 3.9576e-23 1.1582 4.0286e-23 1.1655 4.1038e-23 1.1733 4.1834e-23 1.1815 4.3111e-23 1.1944 4.4023e-23 1.2035 4.5006e-23 1.2136 4.9421e-24 3.4473e-25 1.6460e-25 1.2942e-24 4.3480e-25 2.1639e-25 3.2109e-25 2.4253e-25 5.4075e-26 1.5363e-24
+ 2.4272e+08 4.0450e-23 1.1582 4.1175e-23 1.1655 4.1944e-23 1.1733 4.2757e-23 1.1815 4.4062e-23 1.1944 4.4993e-23 1.2035 4.5998e-23 1.2136 4.9813e-24 3.5111e-25 1.6749e-25 1.3159e-24 4.4124e-25 2.1894e-25 3.2402e-25 2.4406e-25 5.4037e-26 1.5289e-24
+ 2.5410e+08 4.1338e-23 1.1582 4.2079e-23 1.1655 4.2865e-23 1.1733 4.3695e-23 1.1815 4.5028e-23 1.1944 4.5980e-23 1.2035 4.7006e-23 1.2136 5.0221e-24 3.5757e-25 1.7043e-25 1.3380e-24 4.4780e-25 2.2157e-25 3.2706e-25 2.4569e-25 5.4034e-26 1.5219e-24
+ 2.6601e+08 4.2242e-23 1.1582 4.2999e-23 1.1655 4.3801e-23 1.1733 4.4649e-23 1.1815 4.6011e-23 1.1944 4.6983e-23 1.2035 4.8031e-23 1.2136 5.0645e-24 3.6414e-25 1.7342e-25 1.3604e-24 4.5448e-25 2.2426e-25 3.3024e-25 2.4743e-25 5.4065e-26 1.5154e-24
+ 2.7848e+08 4.3160e-23 1.1582 4.3933e-23 1.1655 4.4752e-23 1.1733 4.5619e-23 1.1815 4.7010e-23 1.1944 4.8002e-23 1.2035 4.9073e-23 1.2136 5.1085e-24 3.7080e-25 1.7645e-25 1.3832e-24 4.6129e-25 2.2702e-25 3.3352e-25 2.4928e-25 5.4128e-26 1.5096e-24
+ 2.9153e+08 4.4094e-23 1.1582 4.4883e-23 1.1655 4.5720e-23 1.1733 4.6604e-23 1.1815 4.8025e-23 1.1944 4.9038e-23 1.2035 5.0131e-23 1.2136 5.1541e-24 3.7756e-25 1.7953e-25 1.4063e-24 4.6822e-25 2.2985e-25 3.3692e-25 2.5123e-25 5.4223e-26 1.5043e-24
+ 3.0519e+08 4.5042e-23 1.1582 4.5848e-23 1.1655 4.6703e-23 1.1733 4.7606e-23 1.1815 4.9056e-23 1.1944 5.0091e-23 1.2035 5.1207e-23 1.2136 5.2014e-24 3.8441e-25 1.8265e-25 1.4298e-24 4.7527e-25 2.3273e-25 3.4042e-25 2.5327e-25 5.4349e-26 1.4996e-24
+ 3.1949e+08 4.6043e-23 1.1582 4.6867e-23 1.1655 4.7740e-23 1.1733 4.8663e-23 1.1815 5.0145e-23 1.1944 5.1202e-23 1.2035 5.2343e-23 1.2136 5.2544e-24 3.9171e-25 1.8599e-25 1.4550e-24 4.8288e-25 2.3589e-25 3.4432e-25 2.5562e-25 5.4539e-26 1.4964e-24
+ 3.3447e+08 4.7194e-23 1.1582 4.8038e-23 1.1655 4.8933e-23 1.1733 4.9879e-23 1.1815 5.1397e-23 1.1944 5.2480e-23 1.2035 5.3649e-23 1.2136 5.3236e-24 4.0040e-25 1.8999e-25 1.4854e-24 4.9219e-25 2.3986e-25 3.4937e-25 2.5877e-25 5.4892e-26 1.4964e-24
+ 3.5014e+08 4.8372e-23 1.1582 4.9236e-23 1.1655 5.0153e-23 1.1733 5.1122e-23 1.1815 5.2677e-23 1.1944 5.3787e-23 1.2035 5.4984e-23 1.2136 5.3953e-24 4.0927e-25 1.9407e-25 1.5163e-24 5.0171e-25 2.4393e-25 3.5457e-25 2.6205e-25 5.5277e-26 1.4973e-24
+ 3.6655e+08 4.9576e-23 1.1582 5.0461e-23 1.1655 5.1400e-23 1.1733 5.2393e-23 1.1815 5.3987e-23 1.1944 5.5124e-23 1.2035 5.6350e-23 1.2136 5.4696e-24 4.1831e-25 1.9823e-25 1.5480e-24 5.1143e-25 2.4811e-25 3.5994e-25 2.6545e-25 5.5694e-26 1.4991e-24
+ 3.8373e+08 5.0807e-23 1.1582 5.1715e-23 1.1655 5.2676e-23 1.1733 5.3693e-23 1.1815 5.5326e-23 1.1944 5.6491e-23 1.2035 5.7747e-23 1.2136 5.5465e-24 4.2752e-25 2.0247e-25 1.5803e-24 5.2137e-25 2.5238e-25 3.6544e-25 2.6897e-25 5.6135e-26 1.5017e-24
+ 4.0171e+08 5.2067e-23 1.1582 5.2996e-23 1.1655 5.3981e-23 1.1733 5.5023e-23 1.1815 5.6695e-23 1.1944 5.7889e-23 1.2035 5.9176e-23 1.2136 5.6259e-24 4.3693e-25 2.0680e-25 1.6132e-24 5.3152e-25 2.5675e-25 3.7111e-25 2.7261e-25 5.6615e-26 1.5052e-24
+ 4.2054e+08 5.3355e-23 1.1582 5.4307e-23 1.1655 5.5316e-23 1.1733 5.6383e-23 1.1815 5.8096e-23 1.1944 5.9318e-23 1.2035 6.0636e-23 1.2136 5.7080e-24 4.4651e-25 2.1121e-25 1.6468e-24 5.4188e-25 2.6123e-25 3.7693e-25 2.7638e-25 5.7120e-26 1.5095e-24
+ 4.4025e+08 5.4672e-23 1.1582 5.5647e-23 1.1655 5.6681e-23 1.1733 5.7774e-23 1.1815 5.9528e-23 1.1944 6.0780e-23 1.2035 6.2130e-23 1.2136 5.7926e-24 4.5627e-25 2.1571e-25 1.6810e-24 5.5246e-25 2.6580e-25 3.8290e-25 2.8026e-25 5.7656e-26 1.5147e-24
+ 4.6088e+08 5.6020e-23 1.1582 5.7019e-23 1.1655 5.8077e-23 1.1733 5.9196e-23 1.1815 6.0993e-23 1.1944 6.2275e-23 1.2035 6.3658e-23 1.2136 5.8799e-24 4.6622e-25 2.2029e-25 1.7159e-24 5.6325e-25 2.7047e-25 3.8902e-25 2.8425e-25 5.8212e-26 1.5207e-24
+ 4.8248e+08 5.7398e-23 1.1582 5.8421e-23 1.1655 5.9505e-23 1.1733 6.0651e-23 1.1815 6.2491e-23 1.1944 6.3804e-23 1.2035 6.5220e-23 1.2136 5.9692e-24 4.7635e-25 2.2496e-25 1.7515e-24 5.7424e-25 2.7522e-25 3.9527e-25 2.8835e-25 5.8799e-26 1.5271e-24
+ 5.0510e+08 5.8808e-23 1.1582 5.9856e-23 1.1655 6.0966e-23 1.1733 6.2140e-23 1.1815 6.4024e-23 1.1944 6.5368e-23 1.2035 6.6818e-23 1.2136 6.0615e-24 4.8666e-25 2.2971e-25 1.7877e-24 5.8545e-25 2.8008e-25 4.0167e-25 2.9257e-25 5.9404e-26 1.5348e-24
+ 5.2877e+08 6.0251e-23 1.1582 6.1324e-23 1.1655 6.2460e-23 1.1733 6.3662e-23 1.1815 6.5591e-23 1.1944 6.6968e-23 1.2035 6.8453e-23 1.2136 6.1562e-24 4.9717e-25 2.3454e-25 1.8246e-24 5.9688e-25 2.8504e-25 4.0821e-25 2.9688e-25 6.0042e-26 1.5431e-24
+ 5.5355e+08 6.1727e-23 1.1582 6.2826e-23 1.1655 6.3989e-23 1.1733 6.5220e-23 1.1815 6.7195e-23 1.1944 6.8605e-23 1.2035 7.0126e-23 1.2136 6.2535e-24 5.0786e-25 2.3947e-25 1.8622e-24 6.0851e-25 2.9009e-25 4.1490e-25 3.0131e-25 6.0698e-26 1.5522e-24
+ 5.7949e+08 6.3238e-23 1.1582 6.4363e-23 1.1655 6.5554e-23 1.1733 6.6814e-23 1.1815 6.8837e-23 1.1944 7.0280e-23 1.2035 7.1837e-23 1.2136 6.3533e-24 5.1875e-25 2.4448e-25 1.9004e-24 6.2037e-25 2.9524e-25 4.2173e-25 3.0585e-25 6.1380e-26 1.5622e-24
+ 6.0665e+08 6.4785e-23 1.1582 6.5936e-23 1.1655 6.7156e-23 1.1733 6.8446e-23 1.1815 7.0516e-23 1.1944 7.1994e-23 1.2035 7.3588e-23 1.2136 6.4557e-24 5.2982e-25 2.4958e-25 1.9394e-24 6.3244e-25 3.0047e-25 4.2869e-25 3.1049e-25 6.2080e-26 1.5729e-24
+ 6.3508e+08 6.6368e-23 1.1582 6.7547e-23 1.1655 6.8795e-23 1.1733 7.0116e-23 1.1815 7.2236e-23 1.1944 7.3748e-23 1.2035 7.5380e-23 1.2136 6.5605e-24 5.4110e-25 2.5476e-25 1.9790e-24 6.4473e-25 3.0580e-25 4.3578e-25 3.1523e-25 6.2806e-26 1.5843e-24
+ 6.6485e+08 6.7990e-23 1.1582 6.9196e-23 1.1655 7.0474e-23 1.1733 7.1826e-23 1.1815 7.3996e-23 1.1944 7.5545e-23 1.2035 7.7216e-23 1.2136 6.6678e-24 5.5256e-25 2.6003e-25 2.0193e-24 6.5723e-25 3.1122e-25 4.4301e-25 3.2007e-25 6.3551e-26 1.5964e-24
+ 6.9601e+08 6.9651e-23 1.1582 7.0885e-23 1.1655 7.2194e-23 1.1733 7.3578e-23 1.1815 7.5799e-23 1.1944 7.7385e-23 1.2035 7.9095e-23 1.2136 6.7776e-24 5.6422e-25 2.6539e-25 2.0603e-24 6.6995e-25 3.1673e-25 4.5037e-25 3.2500e-25 6.4314e-26 1.6092e-24
+ 7.2863e+08 7.1353e-23 1.1582 7.2617e-23 1.1655 7.3956e-23 1.1733 7.5373e-23 1.1815 7.7647e-23 1.1944 7.9270e-23 1.2035 8.1020e-23 1.2136 6.8897e-24 5.7608e-25 2.7084e-25 2.1020e-24 6.8289e-25 3.2233e-25 4.5787e-25 3.3005e-25 6.5097e-26 1.6226e-24
+ 7.6277e+08 7.3098e-23 1.1582 7.4391e-23 1.1655 7.5762e-23 1.1733 7.7213e-23 1.1815 7.9540e-23 1.1944 8.1201e-23 1.2035 8.2993e-23 1.2136 7.0044e-24 5.8814e-25 2.7639e-25 2.1445e-24 6.9606e-25 3.2802e-25 4.6549e-25 3.3518e-25 6.5905e-26 1.6367e-24
+ 7.9852e+08 7.4887e-23 1.1582 7.6211e-23 1.1655 7.7615e-23 1.1733 7.9099e-23 1.1815 8.1482e-23 1.1944 8.3182e-23 1.2035 8.5016e-23 1.2136 7.1214e-24 6.0040e-25 2.8202e-25 2.1876e-24 7.0944e-25 3.3380e-25 4.7325e-25 3.4041e-25 6.6719e-26 1.6513e-24
+ 8.3595e+08 7.6723e-23 1.1582 7.8078e-23 1.1655 7.9515e-23 1.1733 8.1034e-23 1.1815 8.3473e-23 1.1944 8.5213e-23 1.2035 8.7091e-23 1.2136 7.2409e-24 6.1286e-25 2.8774e-25 2.2315e-24 7.2306e-25 3.3967e-25 4.8113e-25 3.4573e-25 6.7558e-26 1.6666e-24
+ 8.7512e+08 7.8607e-23 1.1582 7.9995e-23 1.1655 8.1465e-23 1.1733 8.3020e-23 1.1815 8.5516e-23 1.1944 8.7297e-23 1.2035 8.9220e-23 1.2136 7.3629e-24 6.2554e-25 2.9356e-25 2.2761e-24 7.3690e-25 3.4562e-25 4.8913e-25 3.5114e-25 6.8410e-26 1.6824e-24
+ 9.1614e+08 8.0543e-23 1.1582 8.1963e-23 1.1655 8.3468e-23 1.1733 8.5060e-23 1.1815 8.7615e-23 1.1944 8.9438e-23 1.2035 9.1405e-23 1.2136 7.4873e-24 6.3842e-25 2.9948e-25 2.3214e-24 7.5097e-25 3.5166e-25 4.9727e-25 3.5666e-25 6.9287e-26 1.6989e-24
+ 9.5907e+08 8.2532e-23 1.1582 8.3985e-23 1.1655 8.5526e-23 1.1733 8.7156e-23 1.1815 8.9771e-23 1.1944 9.1637e-23 1.2035 9.3651e-23 1.2136 7.6142e-24 6.5152e-25 3.0548e-25 2.3675e-24 7.6527e-25 3.5778e-25 5.0552e-25 3.6225e-25 7.0171e-26 1.7158e-24
diff --git a/PyCool/work/cooling_total/Readme b/PyCool/work/cooling_total/Readme
new file mode 100644
index 0000000..83d869d
--- /dev/null
+++ b/PyCool/work/cooling_total/Readme
@@ -0,0 +1,68 @@
+
+Sutherland & Dopita
+
+m000.dat
+m-00.dat
+m-05.dat
+m+05.dat
+m-10.dat
+m-15.dat
+m-20.dat
+m-25.dat
+m-30.dat
+
+
+
+./get_cooling.py : routine principale
+ parametres:
+ T
+ Fe/H
+ xe : 1e-4 (fraction electron)
+
+
+
+cree les:
+
+ cooling_+00.5.dat
+ cooling_+00.0.dat
+ cooling_-00.5.dat
+ cooling_-01.0.dat
+ cooling_-01.5.dat
+ cooling_-02.0.dat
+ cooling_-02.5.dat
+ cooling_-03.0.dat
+ cooling_-10.0.dat
+
+
+
+
+
+
+
+
+
+
+
+./new-convert.py (diff d'arondi par rapport ä convert.py numarray ?)
+ (vient des fichiers cooling, et pas de convert.py )
+
+
+ ce qui cree le cooling.dat
+ a partir des:
+ 'cooling_-10.0.dat',
+ 'cooling_-03.0.dat',
+ 'cooling_-02.5.dat',
+ 'cooling_-02.0.dat',
+ 'cooling_-01.5.dat',
+ 'cooling_-01.0.dat',
+ 'cooling_-00.5.dat',
+ 'cooling_+00.0.dat',
+ 'cooling_+00.5.dat'
+
+
+
+
+
+./plot.py
+
+
diff --git a/PyCool/work/cooling_total/Readme.old b/PyCool/work/cooling_total/Readme.old
new file mode 100644
index 0000000..52eedca
--- /dev/null
+++ b/PyCool/work/cooling_total/Readme.old
@@ -0,0 +1,105 @@
+cree une fonction de cooling qui dépend de la métallicité
+
+T > 1e4K : Sutherland & Dopita
+T < 1e4K : - H2 (Galli & Palla )
+ - FeII, OI, SiII, CII (Maio et al 04)
+
+
+
+fonction de la metalicité:
+-------------------------
+
+Sutherland & Dopita :
+ # pour etre compatible avec Poirier
+
+m000.dat
+m-30.dat
+m-25.dat <-- a faire
+m-20.dat
+m-15.dat <-- a faire
+m-10.dat
+m-05.dat
+m-00.dat
+m+05.dat
+
+
+./mkmean.py m-30.dat m-20.dat m-25.dat
+./mkmean.py m-20.dat m-10.dat m-15.dat
+
+
+
+---------------------------------------------------
+
+définition de la metalicité chez Sutherland & Dopita ?
+
+[Fe/H] : standard
+
+-------------------------------------------
+définition de la metalicité chez Poirier ?
+
+Z = log10( metal(i,2)/FeHSolar + 1.e-10 )
+
+FeHSolar = 0.00181
+
+que vaut metal(i,2) : 2eme éléments
+
+
+met(p,2) = log10(metal(p,1) / SolarAbun_Met + 1.0d-10) ! Metal abundance, Z
+met(p,2) = log10(metal(p,2) / + 1.0d-10) ! Iron abundance, Fe/H
+met(p,3) = log10(metal(p,3) / SolarAbun_Mg + 1.0d-10) ! Magnesium abundance, Mg/H
+
+
+
+-------------------------------------------
+
+
+
+
+[Fe/H] = log10( (nFe/nH) / 0.00181)
+
+MFe = nFe*mFe = nFe*55.8*mH
+
+MH = nH *mH
+
+==> MFe/MH = nFe/nH * 55.8
+==> Z = log10( (nFe/nH * 55.8) / 0.02 )
+
+
+-------------------------------------------
+
+idée :
+----
+
+on donne : ZFe (metal(i,2)), XH2
+
+
+FeH = log10( ZFe / 0.00181)
+
+ZFe = 0.00181*10**(FeH)
+
+
+-> Sutherland : ok
+-> H2 : ok
+-> metals :
+ nH /nt = 0.76
+ nHe/nt = 0.24
+ => XFe = ZFe * 0.0234
+
+
+
+------------------------------------------------
+
+
+python get_cooling.py
+ -> cree les cooling_+xxx.dat
+
+
+
+./plot.py
+
+convert.py # create a cooling.dat file, compatible with treeasph
+
+
+
+
+
diff --git a/PyCool/work/cooling_total/convert.py b/PyCool/work/cooling_total/convert.py
new file mode 100755
index 0000000..9953ed8
--- /dev/null
+++ b/PyCool/work/cooling_total/convert.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+
+from numarray import *
+import SM
+
+
+g = SM.plot()
+
+
+files = [
+'cooling_-10.0.dat',
+'cooling_-03.0.dat',
+'cooling_-02.5.dat',
+'cooling_-02.0.dat',
+'cooling_-01.5.dat',
+'cooling_-01.0.dat',
+'cooling_-00.5.dat',
+'cooling_+00.0.dat',
+'cooling_+00.5.dat'
+]
+
+g.limits(1,8,-30,-20)
+g.box()
+
+
+f = open('cooling.dat','w')
+f.write("-3.0 0.5 0.5\n")
+f.write(" 0.0 8.5 0.05\n")
+f.write(" 0.00181\n")
+f.write(" 9 171\n")
+
+
+for file in files:
+
+ logT,logL = g.read(file,[0,1])
+
+ for i in range(len(logT)):
+ f.write("%8.3f\n"%logL[i])
+
+
+
+f.close()
+
+
diff --git a/PyCool/work/cooling_total/cooling.dat b/PyCool/work/cooling_total/cooling.dat
new file mode 100644
index 0000000..86cfa46
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling.dat
@@ -0,0 +1,1543 @@
+-3.0 0.5 0.5
+ 0.0 8.5 0.05
+ 0.00181
+ 9 171
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.996
+ -39.987
+ -39.962
+ -39.905
+ -39.798
+ -39.638
+ -39.439
+ -39.226
+ -39.013
+ -38.801
+ -38.562
+ -38.221
+ -37.722
+ -37.130
+ -36.533
+ -35.968
+ -35.443
+ -34.960
+ -34.516
+ -34.108
+ -33.733
+ -33.388
+ -33.071
+ -32.779
+ -32.508
+ -32.257
+ -32.024
+ -31.805
+ -31.599
+ -31.404
+ -31.219
+ -31.041
+ -30.869
+ -30.701
+ -30.537
+ -30.375
+ -30.215
+ -30.055
+ -29.894
+ -29.733
+ -29.570
+ -29.405
+ -29.239
+ -29.071
+ -28.901
+ -28.730
+ -28.557
+ -28.384
+ -28.210
+ -28.038
+ -27.867
+ -27.698
+ -27.534
+ -27.375
+ -27.222
+ -27.078
+ -26.943
+ -26.821
+ -26.712
+ -26.619
+ -26.544
+ -26.490
+ -25.900
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.976
+ -39.712
+ -38.909
+ -37.978
+ -37.123
+ -36.359
+ -35.677
+ -35.069
+ -34.526
+ -34.043
+ -33.612
+ -33.228
+ -32.885
+ -32.579
+ -32.306
+ -32.063
+ -31.846
+ -31.652
+ -31.479
+ -31.323
+ -31.184
+ -31.058
+ -30.942
+ -30.834
+ -30.732
+ -30.633
+ -30.535
+ -30.436
+ -30.338
+ -30.239
+ -30.141
+ -30.045
+ -29.952
+ -29.863
+ -29.779
+ -29.700
+ -29.625
+ -29.556
+ -29.491
+ -29.430
+ -29.374
+ -29.320
+ -29.268
+ -29.217
+ -29.167
+ -29.115
+ -29.061
+ -29.001
+ -28.934
+ -28.858
+ -28.770
+ -28.669
+ -28.555
+ -28.429
+ -28.291
+ -28.144
+ -27.991
+ -27.834
+ -27.675
+ -27.518
+ -27.363
+ -27.214
+ -27.072
+ -26.939
+ -26.817
+ -26.709
+ -26.617
+ -26.542
+ -26.488
+ -25.899
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.927
+ -39.400
+ -38.433
+ -37.481
+ -36.624
+ -35.859
+ -35.177
+ -34.569
+ -34.026
+ -33.543
+ -33.112
+ -32.728
+ -32.385
+ -32.079
+ -31.806
+ -31.563
+ -31.346
+ -31.152
+ -30.979
+ -30.823
+ -30.684
+ -30.558
+ -30.442
+ -30.334
+ -30.232
+ -30.133
+ -30.035
+ -29.937
+ -29.838
+ -29.739
+ -29.642
+ -29.546
+ -29.454
+ -29.365
+ -29.282
+ -29.203
+ -29.130
+ -29.062
+ -29.000
+ -28.941
+ -28.888
+ -28.838
+ -28.792
+ -28.748
+ -28.707
+ -28.668
+ -28.629
+ -28.590
+ -28.548
+ -28.503
+ -28.452
+ -28.392
+ -28.321
+ -28.238
+ -28.140
+ -28.029
+ -27.905
+ -27.771
+ -27.630
+ -27.485
+ -27.339
+ -27.196
+ -27.059
+ -26.929
+ -26.810
+ -26.703
+ -26.612
+ -26.538
+ -26.485
+ -25.895
+ -24.678
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.025
+ -22.125
+ -22.235
+ -22.320
+ -22.385
+ -22.465
+ -22.530
+ -22.570
+ -22.560
+ -22.475
+ -22.330
+ -22.180
+ -22.100
+ -22.105
+ -22.170
+ -22.245
+ -22.320
+ -22.375
+ -22.425
+ -22.460
+ -22.490
+ -22.515
+ -22.560
+ -22.660
+ -22.785
+ -22.890
+ -22.950
+ -22.990
+ -23.005
+ -23.025
+ -23.055
+ -23.100
+ -23.140
+ -23.160
+ -23.165
+ -23.180
+ -23.180
+ -23.175
+ -23.175
+ -23.175
+ -23.175
+ -23.190
+ -23.190
+ -23.185
+ -23.180
+ -23.170
+ -23.155
+ -23.145
+ -23.130
+ -23.120
+ -23.100
+ -23.085
+ -23.070
+ -23.055
+ -23.035
+ -23.020
+ -23.005
+ -22.985
+ -22.965
+ -22.945
+ -22.925
+ -22.905
+ -22.885
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.755
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.645
+ -22.620
+ -22.600
+ -22.580
+ -22.555
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.989
+ -39.802
+ -38.982
+ -37.941
+ -36.982
+ -36.124
+ -35.359
+ -34.677
+ -34.069
+ -33.526
+ -33.043
+ -32.612
+ -32.228
+ -31.885
+ -31.579
+ -31.306
+ -31.063
+ -30.846
+ -30.652
+ -30.479
+ -30.323
+ -30.184
+ -30.058
+ -29.942
+ -29.834
+ -29.732
+ -29.633
+ -29.535
+ -29.437
+ -29.338
+ -29.240
+ -29.142
+ -29.046
+ -28.954
+ -28.866
+ -28.783
+ -28.705
+ -28.632
+ -28.564
+ -28.502
+ -28.445
+ -28.392
+ -28.344
+ -28.300
+ -28.259
+ -28.221
+ -28.186
+ -28.153
+ -28.122
+ -28.092
+ -28.061
+ -28.029
+ -27.995
+ -27.956
+ -27.910
+ -27.855
+ -27.789
+ -27.709
+ -27.616
+ -27.510
+ -27.394
+ -27.272
+ -27.146
+ -27.021
+ -26.900
+ -26.787
+ -26.685
+ -26.597
+ -26.525
+ -26.473
+ -25.888
+ -24.672
+ -23.529
+ -22.630
+ -22.120
+ -21.980
+ -22.020
+ -22.120
+ -22.230
+ -22.310
+ -22.370
+ -22.440
+ -22.490
+ -22.510
+ -22.490
+ -22.400
+ -22.270
+ -22.130
+ -22.050
+ -22.050
+ -22.100
+ -22.160
+ -22.210
+ -22.230
+ -22.250
+ -22.260
+ -22.260
+ -22.260
+ -22.300
+ -22.420
+ -22.590
+ -22.740
+ -22.820
+ -22.860
+ -22.870
+ -22.890
+ -22.930
+ -23.000
+ -23.060
+ -23.090
+ -23.100
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.130
+ -23.150
+ -23.160
+ -23.160
+ -23.160
+ -23.150
+ -23.140
+ -23.130
+ -23.120
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.050
+ -23.030
+ -23.010
+ -23.000
+ -22.980
+ -22.960
+ -22.940
+ -22.920
+ -22.900
+ -22.880
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.750
+ -22.730
+ -22.710
+ -22.690
+ -22.669
+ -22.639
+ -22.619
+ -22.599
+ -22.579
+ -22.549
+ -22.529
+ -22.509
+ -22.489
+ -22.459
+ -22.439
+ -22.419
+ -22.389
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.967
+ -39.548
+ -38.511
+ -37.444
+ -36.482
+ -35.624
+ -34.859
+ -34.177
+ -33.569
+ -33.026
+ -32.543
+ -32.112
+ -31.728
+ -31.385
+ -31.079
+ -30.806
+ -30.563
+ -30.346
+ -30.152
+ -29.979
+ -29.823
+ -29.684
+ -29.558
+ -29.442
+ -29.334
+ -29.232
+ -29.133
+ -29.035
+ -28.937
+ -28.838
+ -28.740
+ -28.642
+ -28.547
+ -28.454
+ -28.366
+ -28.283
+ -28.205
+ -28.132
+ -28.065
+ -28.003
+ -27.946
+ -27.894
+ -27.846
+ -27.802
+ -27.762
+ -27.725
+ -27.692
+ -27.661
+ -27.633
+ -27.606
+ -27.581
+ -27.557
+ -27.534
+ -27.509
+ -27.483
+ -27.453
+ -27.419
+ -27.377
+ -27.326
+ -27.264
+ -27.192
+ -27.108
+ -27.016
+ -26.918
+ -26.819
+ -26.722
+ -26.632
+ -26.552
+ -26.486
+ -26.437
+ -25.846
+ -24.637
+ -23.509
+ -22.615
+ -22.110
+ -21.965
+ -22.005
+ -22.095
+ -22.180
+ -22.230
+ -22.260
+ -22.275
+ -22.275
+ -22.245
+ -22.195
+ -22.105
+ -21.995
+ -21.880
+ -21.810
+ -21.795
+ -21.815
+ -21.840
+ -21.855
+ -21.850
+ -21.845
+ -21.835
+ -21.820
+ -21.810
+ -21.850
+ -21.975
+ -22.170
+ -22.345
+ -22.445
+ -22.485
+ -22.495
+ -22.515
+ -22.565
+ -22.665
+ -22.755
+ -22.800
+ -22.825
+ -22.850
+ -22.860
+ -22.855
+ -22.855
+ -22.865
+ -22.900
+ -22.945
+ -22.980
+ -23.000
+ -23.015
+ -23.020
+ -23.024
+ -23.024
+ -23.024
+ -23.024
+ -23.014
+ -23.009
+ -22.994
+ -22.984
+ -22.969
+ -22.954
+ -22.949
+ -22.939
+ -22.924
+ -22.909
+ -22.894
+ -22.874
+ -22.859
+ -22.839
+ -22.824
+ -22.804
+ -22.784
+ -22.764
+ -22.739
+ -22.719
+ -22.699
+ -22.678
+ -22.658
+ -22.628
+ -22.608
+ -22.588
+ -22.568
+ -22.543
+ -22.518
+ -22.498
+ -22.478
+ -22.453
+ -22.428
+ -22.408
+ -22.383
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.902
+ -39.168
+ -38.021
+ -36.945
+ -35.982
+ -35.124
+ -34.359
+ -33.677
+ -33.069
+ -32.526
+ -32.043
+ -31.612
+ -31.228
+ -30.885
+ -30.579
+ -30.306
+ -30.063
+ -29.846
+ -29.652
+ -29.479
+ -29.323
+ -29.184
+ -29.058
+ -28.942
+ -28.834
+ -28.732
+ -28.633
+ -28.535
+ -28.437
+ -28.338
+ -28.240
+ -28.142
+ -28.047
+ -27.954
+ -27.866
+ -27.783
+ -27.705
+ -27.633
+ -27.565
+ -27.503
+ -27.446
+ -27.394
+ -27.346
+ -27.303
+ -27.263
+ -27.227
+ -27.194
+ -27.164
+ -27.136
+ -27.111
+ -27.088
+ -27.066
+ -27.046
+ -27.027
+ -27.009
+ -26.990
+ -26.969
+ -26.947
+ -26.921
+ -26.890
+ -26.853
+ -26.809
+ -26.756
+ -26.697
+ -26.632
+ -26.564
+ -26.497
+ -26.435
+ -26.382
+ -26.341
+ -25.788
+ -24.601
+ -23.489
+ -22.600
+ -22.100
+ -21.950
+ -21.990
+ -22.070
+ -22.130
+ -22.150
+ -22.150
+ -22.110
+ -22.060
+ -21.980
+ -21.900
+ -21.810
+ -21.720
+ -21.630
+ -21.570
+ -21.540
+ -21.530
+ -21.520
+ -21.500
+ -21.470
+ -21.440
+ -21.410
+ -21.380
+ -21.360
+ -21.400
+ -21.530
+ -21.750
+ -21.950
+ -22.070
+ -22.110
+ -22.120
+ -22.140
+ -22.200
+ -22.330
+ -22.450
+ -22.510
+ -22.550
+ -22.580
+ -22.600
+ -22.590
+ -22.590
+ -22.610
+ -22.670
+ -22.739
+ -22.799
+ -22.839
+ -22.869
+ -22.889
+ -22.909
+ -22.919
+ -22.928
+ -22.938
+ -22.938
+ -22.938
+ -22.928
+ -22.918
+ -22.908
+ -22.898
+ -22.897
+ -22.897
+ -22.887
+ -22.877
+ -22.867
+ -22.847
+ -22.836
+ -22.816
+ -22.806
+ -22.786
+ -22.766
+ -22.746
+ -22.726
+ -22.706
+ -22.685
+ -22.665
+ -22.645
+ -22.615
+ -22.595
+ -22.575
+ -22.555
+ -22.535
+ -22.505
+ -22.484
+ -22.464
+ -22.444
+ -22.414
+ -22.394
+ -22.374
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.990
+ -39.745
+ -38.715
+ -37.524
+ -36.445
+ -35.482
+ -34.624
+ -33.859
+ -33.177
+ -32.569
+ -32.026
+ -31.543
+ -31.112
+ -30.728
+ -30.385
+ -30.079
+ -29.806
+ -29.563
+ -29.346
+ -29.152
+ -28.979
+ -28.823
+ -28.684
+ -28.558
+ -28.442
+ -28.334
+ -28.232
+ -28.133
+ -28.035
+ -27.937
+ -27.838
+ -27.740
+ -27.642
+ -27.547
+ -27.454
+ -27.366
+ -27.283
+ -27.205
+ -27.133
+ -27.065
+ -27.003
+ -26.947
+ -26.894
+ -26.847
+ -26.803
+ -26.763
+ -26.727
+ -26.694
+ -26.664
+ -26.637
+ -26.612
+ -26.590
+ -26.569
+ -26.551
+ -26.533
+ -26.517
+ -26.502
+ -26.487
+ -26.472
+ -26.456
+ -26.439
+ -26.420
+ -26.398
+ -26.372
+ -26.342
+ -26.308
+ -26.271
+ -26.232
+ -26.193
+ -26.158
+ -26.130
+ -25.647
+ -24.480
+ -23.419
+ -22.560
+ -22.070
+ -21.920
+ -21.940
+ -22.000
+ -22.020
+ -22.000
+ -21.940
+ -21.870
+ -21.780
+ -21.690
+ -21.590
+ -21.500
+ -21.410
+ -21.330
+ -21.270
+ -21.230
+ -21.220
+ -21.230
+ -21.220
+ -21.190
+ -21.160
+ -21.140
+ -21.120
+ -21.100
+ -21.140
+ -21.270
+ -21.500
+ -21.700
+ -21.810
+ -21.850
+ -21.860
+ -21.870
+ -21.930
+ -22.050
+ -22.150
+ -22.190
+ -22.220
+ -22.240
+ -22.240
+ -22.240
+ -22.230
+ -22.259
+ -22.339
+ -22.439
+ -22.529
+ -22.588
+ -22.638
+ -22.658
+ -22.688
+ -22.707
+ -22.727
+ -22.747
+ -22.756
+ -22.746
+ -22.736
+ -22.735
+ -22.725
+ -22.725
+ -22.744
+ -22.754
+ -22.763
+ -22.762
+ -22.762
+ -22.751
+ -22.741
+ -22.730
+ -22.720
+ -22.709
+ -22.689
+ -22.669
+ -22.648
+ -22.638
+ -22.617
+ -22.597
+ -22.577
+ -22.556
+ -22.536
+ -22.516
+ -22.486
+ -22.465
+ -22.445
+ -22.425
+ -22.404
+ -22.384
+ -22.363
+ -22.334
+ -22.313
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.968
+ -39.453
+ -38.230
+ -37.025
+ -35.945
+ -34.982
+ -34.124
+ -33.359
+ -32.677
+ -32.069
+ -31.526
+ -31.043
+ -30.612
+ -30.228
+ -29.885
+ -29.579
+ -29.306
+ -29.063
+ -28.846
+ -28.652
+ -28.479
+ -28.323
+ -28.184
+ -28.058
+ -27.942
+ -27.834
+ -27.732
+ -27.633
+ -27.535
+ -27.437
+ -27.338
+ -27.240
+ -27.142
+ -27.047
+ -26.954
+ -26.866
+ -26.783
+ -26.705
+ -26.633
+ -26.565
+ -26.503
+ -26.447
+ -26.394
+ -26.347
+ -26.303
+ -26.263
+ -26.227
+ -26.194
+ -26.165
+ -26.137
+ -26.113
+ -26.091
+ -26.070
+ -26.052
+ -26.035
+ -26.020
+ -26.006
+ -25.993
+ -25.980
+ -25.968
+ -25.956
+ -25.944
+ -25.930
+ -25.916
+ -25.901
+ -25.883
+ -25.864
+ -25.843
+ -25.822
+ -25.802
+ -25.784
+ -25.405
+ -24.256
+ -23.279
+ -22.470
+ -21.990
+ -21.840
+ -21.850
+ -21.870
+ -21.840
+ -21.770
+ -21.660
+ -21.560
+ -21.450
+ -21.340
+ -21.240
+ -21.140
+ -21.050
+ -20.970
+ -20.910
+ -20.870
+ -20.870
+ -20.900
+ -20.910
+ -20.890
+ -20.860
+ -20.850
+ -20.840
+ -20.840
+ -20.870
+ -21.010
+ -21.230
+ -21.430
+ -21.540
+ -21.580
+ -21.590
+ -21.590
+ -21.640
+ -21.740
+ -21.810
+ -21.830
+ -21.840
+ -21.840
+ -21.830
+ -21.819
+ -21.819
+ -21.849
+ -21.949
+ -22.079
+ -22.188
+ -22.268
+ -22.317
+ -22.347
+ -22.376
+ -22.406
+ -22.435
+ -22.454
+ -22.474
+ -22.473
+ -22.453
+ -22.443
+ -22.442
+ -22.451
+ -22.480
+ -22.518
+ -22.546
+ -22.564
+ -22.582
+ -22.591
+ -22.589
+ -22.588
+ -22.576
+ -22.575
+ -22.563
+ -22.543
+ -22.531
+ -22.511
+ -22.499
+ -22.478
+ -22.457
+ -22.446
+ -22.425
+ -22.404
+ -22.383
+ -22.362
+ -22.341
+ -22.321
+ -22.300
+ -22.279
+ -22.258
+ -22.237
+ -22.216
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.998
+ -39.907
+ -39.046
+ -37.735
+ -36.525
+ -35.445
+ -34.482
+ -33.624
+ -32.859
+ -32.177
+ -31.569
+ -31.026
+ -30.543
+ -30.112
+ -29.728
+ -29.385
+ -29.079
+ -28.806
+ -28.563
+ -28.346
+ -28.152
+ -27.979
+ -27.823
+ -27.684
+ -27.558
+ -27.442
+ -27.334
+ -27.232
+ -27.133
+ -27.035
+ -26.937
+ -26.838
+ -26.740
+ -26.642
+ -26.547
+ -26.454
+ -26.366
+ -26.283
+ -26.205
+ -26.133
+ -26.065
+ -26.004
+ -25.947
+ -25.894
+ -25.847
+ -25.803
+ -25.764
+ -25.727
+ -25.695
+ -25.665
+ -25.638
+ -25.613
+ -25.591
+ -25.571
+ -25.552
+ -25.536
+ -25.521
+ -25.507
+ -25.494
+ -25.483
+ -25.472
+ -25.461
+ -25.451
+ -25.441
+ -25.431
+ -25.421
+ -25.410
+ -25.398
+ -25.385
+ -25.372
+ -25.359
+ -25.347
+ -25.164
+ -24.233
+ -22.978
+ -22.260
+ -21.800
+ -21.640
+ -21.610
+ -21.570
+ -21.480
+ -21.360
+ -21.220
+ -21.090
+ -20.970
+ -20.860
+ -20.750
+ -20.650
+ -20.570
+ -20.500
+ -20.430
+ -20.390
+ -20.390
+ -20.420
+ -20.420
+ -20.400
+ -20.370
+ -20.350
+ -20.340
+ -20.340
+ -20.370
+ -20.510
+ -20.730
+ -20.930
+ -21.050
+ -21.090
+ -21.090
+ -21.090
+ -21.140
+ -21.240
+ -21.320
+ -21.340
+ -21.350
+ -21.350
+ -21.339
+ -21.329
+ -21.319
+ -21.349
+ -21.459
+ -21.589
+ -21.708
+ -21.798
+ -21.857
+ -21.896
+ -21.926
+ -21.955
+ -21.994
+ -22.033
+ -22.052
+ -22.052
+ -22.041
+ -22.031
+ -22.030
+ -22.049
+ -22.097
+ -22.144
+ -22.191
+ -22.237
+ -22.272
+ -22.289
+ -22.314
+ -22.321
+ -22.327
+ -22.324
+ -22.321
+ -22.317
+ -22.313
+ -22.301
+ -22.288
+ -22.275
+ -22.262
+ -22.240
+ -22.227
+ -22.213
+ -22.192
+ -22.178
+ -22.164
+ -22.143
+ -22.121
+ -22.107
+ -22.085
+ -22.063
+ -22.041
diff --git a/PyCool/work/cooling_total/cooling.pnbody b/PyCool/work/cooling_total/cooling.pnbody
new file mode 100644
index 0000000..a1679f1
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling.pnbody
@@ -0,0 +1,173 @@
+# 000171
+# logT m000 m-30 m-20 m-10 m-05 m-00 m+05
+ 0.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.050 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.100 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.150 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.200 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.250 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.300 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.350 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000 -40.000
+ 0.400 -40.000 -40.000 -40.000 -40.000 -40.000 -39.999 -39.998
+ 0.450 -40.000 -40.000 -40.000 -39.997 -39.990 -39.968 -39.907
+ 0.500 -40.000 -39.999 -39.989 -39.902 -39.745 -39.453 -39.046
+ 0.550 -40.000 -39.976 -39.802 -39.168 -38.715 -38.230 -37.735
+ 0.600 -40.000 -39.712 -38.982 -38.021 -37.524 -37.025 -36.525
+ 0.650 -40.000 -38.909 -37.941 -36.945 -36.445 -35.945 -35.445
+ 0.700 -40.000 -37.978 -36.982 -35.982 -35.482 -34.982 -34.482
+ 0.750 -40.000 -37.123 -36.124 -35.124 -34.624 -34.124 -33.624
+ 0.800 -40.000 -36.359 -35.359 -34.359 -33.859 -33.359 -32.859
+ 0.850 -39.999 -35.677 -34.677 -33.677 -33.177 -32.677 -32.177
+ 0.900 -39.996 -35.069 -34.069 -33.069 -32.569 -32.069 -31.569
+ 0.950 -39.987 -34.526 -33.526 -32.526 -32.026 -31.526 -31.026
+ 1.000 -39.962 -34.043 -33.043 -32.043 -31.543 -31.043 -30.543
+ 1.050 -39.905 -33.612 -32.612 -31.612 -31.112 -30.612 -30.112
+ 1.100 -39.798 -33.228 -32.228 -31.228 -30.728 -30.228 -29.728
+ 1.150 -39.638 -32.885 -31.885 -30.885 -30.385 -29.885 -29.385
+ 1.200 -39.439 -32.579 -31.579 -30.579 -30.079 -29.579 -29.079
+ 1.250 -39.226 -32.306 -31.306 -30.306 -29.806 -29.306 -28.806
+ 1.300 -39.013 -32.063 -31.063 -30.063 -29.563 -29.063 -28.563
+ 1.350 -38.801 -31.846 -30.846 -29.846 -29.346 -28.846 -28.346
+ 1.400 -38.562 -31.652 -30.652 -29.652 -29.152 -28.652 -28.152
+ 1.450 -38.221 -31.479 -30.479 -29.479 -28.979 -28.479 -27.979
+ 1.500 -37.722 -31.323 -30.323 -29.323 -28.823 -28.323 -27.823
+ 1.550 -37.130 -31.184 -30.184 -29.184 -28.684 -28.184 -27.684
+ 1.600 -36.533 -31.058 -30.058 -29.058 -28.558 -28.058 -27.558
+ 1.650 -35.968 -30.942 -29.942 -28.942 -28.442 -27.942 -27.442
+ 1.700 -35.443 -30.834 -29.834 -28.834 -28.334 -27.834 -27.334
+ 1.750 -34.960 -30.732 -29.732 -28.732 -28.232 -27.732 -27.232
+ 1.800 -34.516 -30.633 -29.633 -28.633 -28.133 -27.633 -27.133
+ 1.850 -34.108 -30.535 -29.535 -28.535 -28.035 -27.535 -27.035
+ 1.900 -33.733 -30.436 -29.437 -28.437 -27.937 -27.437 -26.937
+ 1.950 -33.388 -30.338 -29.338 -28.338 -27.838 -27.338 -26.838
+ 2.000 -33.071 -30.239 -29.240 -28.240 -27.740 -27.240 -26.740
+ 2.050 -32.779 -30.141 -29.142 -28.142 -27.642 -27.142 -26.642
+ 2.100 -32.508 -30.045 -29.046 -28.047 -27.547 -27.047 -26.547
+ 2.150 -32.257 -29.952 -28.954 -27.954 -27.454 -26.954 -26.454
+ 2.200 -32.024 -29.863 -28.866 -27.866 -27.366 -26.866 -26.366
+ 2.250 -31.805 -29.779 -28.783 -27.783 -27.283 -26.783 -26.283
+ 2.300 -31.599 -29.700 -28.705 -27.705 -27.205 -26.705 -26.205
+ 2.350 -31.404 -29.625 -28.632 -27.633 -27.133 -26.633 -26.133
+ 2.400 -31.219 -29.556 -28.564 -27.565 -27.065 -26.565 -26.065
+ 2.450 -31.041 -29.491 -28.502 -27.503 -27.003 -26.503 -26.004
+ 2.500 -30.869 -29.430 -28.445 -27.446 -26.947 -26.447 -25.947
+ 2.550 -30.701 -29.374 -28.392 -27.394 -26.894 -26.394 -25.894
+ 2.600 -30.537 -29.320 -28.344 -27.346 -26.847 -26.347 -25.847
+ 2.650 -30.375 -29.268 -28.300 -27.303 -26.803 -26.303 -25.803
+ 2.700 -30.215 -29.217 -28.259 -27.263 -26.763 -26.263 -25.764
+ 2.750 -30.055 -29.167 -28.221 -27.227 -26.727 -26.227 -25.727
+ 2.800 -29.894 -29.115 -28.186 -27.194 -26.694 -26.194 -25.695
+ 2.850 -29.733 -29.061 -28.153 -27.164 -26.664 -26.165 -25.665
+ 2.900 -29.570 -29.001 -28.122 -27.136 -26.637 -26.137 -25.638
+ 2.950 -29.405 -28.934 -28.092 -27.111 -26.612 -26.113 -25.613
+ 3.000 -29.239 -28.858 -28.061 -27.088 -26.590 -26.091 -25.591
+ 3.050 -29.071 -28.770 -28.029 -27.066 -26.569 -26.070 -25.571
+ 3.100 -28.901 -28.669 -27.995 -27.046 -26.551 -26.052 -25.552
+ 3.150 -28.730 -28.555 -27.956 -27.027 -26.533 -26.035 -25.536
+ 3.200 -28.557 -28.429 -27.910 -27.009 -26.517 -26.020 -25.521
+ 3.250 -28.384 -28.291 -27.855 -26.990 -26.502 -26.006 -25.507
+ 3.300 -28.210 -28.144 -27.789 -26.969 -26.487 -25.993 -25.494
+ 3.350 -28.038 -27.991 -27.709 -26.947 -26.472 -25.980 -25.483
+ 3.400 -27.867 -27.834 -27.616 -26.921 -26.456 -25.968 -25.472
+ 3.450 -27.698 -27.675 -27.510 -26.890 -26.439 -25.956 -25.461
+ 3.500 -27.534 -27.518 -27.394 -26.853 -26.420 -25.944 -25.451
+ 3.550 -27.375 -27.363 -27.272 -26.809 -26.398 -25.930 -25.441
+ 3.600 -27.222 -27.214 -27.146 -26.756 -26.372 -25.916 -25.431
+ 3.650 -27.078 -27.072 -27.021 -26.697 -26.342 -25.901 -25.421
+ 3.700 -26.943 -26.939 -26.900 -26.632 -26.308 -25.883 -25.410
+ 3.750 -26.821 -26.817 -26.787 -26.564 -26.271 -25.864 -25.398
+ 3.800 -26.712 -26.709 -26.685 -26.497 -26.232 -25.843 -25.385
+ 3.850 -26.619 -26.617 -26.597 -26.435 -26.193 -25.822 -25.372
+ 3.900 -26.544 -26.542 -26.525 -26.382 -26.158 -25.802 -25.359
+ 3.950 -26.490 -26.488 -26.473 -26.341 -26.130 -25.784 -25.347
+ 4.000 -25.900 -25.899 -25.888 -25.788 -25.647 -25.405 -25.164
+ 4.050 -24.683 -24.683 -24.672 -24.601 -24.480 -24.256 -24.233
+ 4.100 -23.530 -23.530 -23.529 -23.489 -23.419 -23.279 -22.978
+ 4.150 -22.630 -22.630 -22.630 -22.600 -22.560 -22.470 -22.260
+ 4.200 -22.120 -22.120 -22.120 -22.100 -22.070 -21.990 -21.800
+ 4.250 -21.980 -21.980 -21.980 -21.950 -21.920 -21.840 -21.640
+ 4.300 -22.030 -22.030 -22.020 -21.990 -21.940 -21.850 -21.610
+ 4.350 -22.130 -22.130 -22.120 -22.070 -22.000 -21.870 -21.570
+ 4.400 -22.240 -22.240 -22.230 -22.130 -22.020 -21.840 -21.480
+ 4.450 -22.330 -22.330 -22.310 -22.150 -22.000 -21.770 -21.360
+ 4.500 -22.400 -22.400 -22.370 -22.150 -21.940 -21.660 -21.220
+ 4.550 -22.490 -22.490 -22.440 -22.110 -21.870 -21.560 -21.090
+ 4.600 -22.570 -22.570 -22.490 -22.060 -21.780 -21.450 -20.970
+ 4.650 -22.630 -22.630 -22.510 -21.980 -21.690 -21.340 -20.860
+ 4.700 -22.630 -22.630 -22.490 -21.900 -21.590 -21.240 -20.750
+ 4.750 -22.550 -22.550 -22.400 -21.810 -21.500 -21.140 -20.650
+ 4.800 -22.390 -22.390 -22.270 -21.720 -21.410 -21.050 -20.570
+ 4.850 -22.230 -22.230 -22.130 -21.630 -21.330 -20.970 -20.500
+ 4.900 -22.150 -22.150 -22.050 -21.570 -21.270 -20.910 -20.430
+ 4.950 -22.160 -22.160 -22.050 -21.540 -21.230 -20.870 -20.390
+ 5.000 -22.240 -22.240 -22.100 -21.530 -21.220 -20.870 -20.390
+ 5.050 -22.330 -22.330 -22.160 -21.520 -21.230 -20.900 -20.420
+ 5.100 -22.430 -22.430 -22.210 -21.500 -21.220 -20.910 -20.420
+ 5.150 -22.520 -22.520 -22.230 -21.470 -21.190 -20.890 -20.400
+ 5.200 -22.600 -22.600 -22.250 -21.440 -21.160 -20.860 -20.370
+ 5.250 -22.660 -22.660 -22.260 -21.410 -21.140 -20.850 -20.350
+ 5.300 -22.720 -22.720 -22.260 -21.380 -21.120 -20.840 -20.340
+ 5.350 -22.770 -22.770 -22.260 -21.360 -21.100 -20.840 -20.340
+ 5.400 -22.820 -22.820 -22.300 -21.400 -21.140 -20.870 -20.370
+ 5.450 -22.900 -22.900 -22.420 -21.530 -21.270 -21.010 -20.510
+ 5.500 -22.980 -22.980 -22.590 -21.750 -21.500 -21.230 -20.730
+ 5.550 -23.040 -23.040 -22.740 -21.950 -21.700 -21.430 -20.930
+ 5.600 -23.080 -23.080 -22.820 -22.070 -21.810 -21.540 -21.050
+ 5.650 -23.120 -23.120 -22.860 -22.110 -21.850 -21.580 -21.090
+ 5.700 -23.140 -23.140 -22.870 -22.120 -21.860 -21.590 -21.090
+ 5.750 -23.160 -23.160 -22.890 -22.140 -21.870 -21.590 -21.090
+ 5.800 -23.180 -23.180 -22.930 -22.200 -21.930 -21.640 -21.140
+ 5.850 -23.200 -23.200 -23.000 -22.330 -22.050 -21.740 -21.240
+ 5.900 -23.220 -23.220 -23.060 -22.450 -22.150 -21.810 -21.320
+ 5.950 -23.230 -23.230 -23.090 -22.510 -22.190 -21.830 -21.340
+ 6.000 -23.230 -23.230 -23.100 -22.550 -22.220 -21.840 -21.350
+ 6.050 -23.240 -23.240 -23.120 -22.580 -22.240 -21.840 -21.350
+ 6.100 -23.240 -23.240 -23.120 -22.600 -22.240 -21.830 -21.339
+ 6.150 -23.230 -23.230 -23.120 -22.590 -22.240 -21.819 -21.329
+ 6.200 -23.230 -23.230 -23.120 -22.590 -22.230 -21.819 -21.319
+ 6.250 -23.230 -23.230 -23.120 -22.610 -22.259 -21.849 -21.349
+ 6.300 -23.220 -23.220 -23.130 -22.670 -22.339 -21.949 -21.459
+ 6.350 -23.230 -23.230 -23.150 -22.739 -22.439 -22.079 -21.589
+ 6.400 -23.220 -23.220 -23.160 -22.799 -22.529 -22.188 -21.708
+ 6.450 -23.210 -23.210 -23.160 -22.839 -22.588 -22.268 -21.798
+ 6.500 -23.200 -23.200 -23.160 -22.869 -22.638 -22.317 -21.857
+ 6.550 -23.190 -23.190 -23.150 -22.889 -22.658 -22.347 -21.896
+ 6.600 -23.170 -23.170 -23.140 -22.909 -22.688 -22.376 -21.926
+ 6.650 -23.160 -23.160 -23.130 -22.919 -22.707 -22.406 -21.955
+ 6.700 -23.140 -23.140 -23.120 -22.928 -22.727 -22.435 -21.994
+ 6.750 -23.130 -23.130 -23.110 -22.938 -22.747 -22.454 -22.033
+ 6.800 -23.110 -23.110 -23.090 -22.938 -22.756 -22.474 -22.052
+ 6.850 -23.090 -23.090 -23.080 -22.938 -22.746 -22.473 -22.052
+ 6.900 -23.080 -23.080 -23.060 -22.928 -22.736 -22.453 -22.041
+ 6.950 -23.060 -23.060 -23.050 -22.918 -22.735 -22.443 -22.031
+ 7.000 -23.040 -23.040 -23.030 -22.908 -22.725 -22.442 -22.030
+ 7.050 -23.030 -23.030 -23.010 -22.898 -22.725 -22.451 -22.049
+ 7.100 -23.010 -23.010 -23.000 -22.897 -22.744 -22.480 -22.097
+ 7.150 -22.990 -22.990 -22.980 -22.897 -22.754 -22.518 -22.144
+ 7.200 -22.970 -22.970 -22.960 -22.887 -22.763 -22.546 -22.191
+ 7.250 -22.950 -22.950 -22.940 -22.877 -22.762 -22.564 -22.237
+ 7.300 -22.930 -22.930 -22.920 -22.867 -22.762 -22.582 -22.272
+ 7.350 -22.910 -22.910 -22.900 -22.847 -22.751 -22.591 -22.289
+ 7.400 -22.890 -22.890 -22.880 -22.836 -22.741 -22.589 -22.314
+ 7.450 -22.860 -22.860 -22.860 -22.816 -22.730 -22.588 -22.321
+ 7.500 -22.840 -22.840 -22.840 -22.806 -22.720 -22.576 -22.327
+ 7.550 -22.820 -22.820 -22.820 -22.786 -22.709 -22.575 -22.324
+ 7.600 -22.800 -22.800 -22.800 -22.766 -22.689 -22.563 -22.321
+ 7.650 -22.780 -22.780 -22.780 -22.746 -22.669 -22.543 -22.317
+ 7.700 -22.760 -22.760 -22.750 -22.726 -22.648 -22.531 -22.313
+ 7.750 -22.730 -22.730 -22.730 -22.706 -22.638 -22.511 -22.301
+ 7.800 -22.710 -22.710 -22.710 -22.685 -22.617 -22.499 -22.288
+ 7.850 -22.690 -22.690 -22.690 -22.665 -22.597 -22.478 -22.275
+ 7.900 -22.670 -22.670 -22.669 -22.645 -22.577 -22.457 -22.262
+ 7.950 -22.650 -22.650 -22.639 -22.615 -22.556 -22.446 -22.240
+ 8.000 -22.620 -22.620 -22.619 -22.595 -22.536 -22.425 -22.227
+ 8.050 -22.600 -22.600 -22.599 -22.575 -22.516 -22.404 -22.213
+ 8.100 -22.580 -22.580 -22.579 -22.555 -22.486 -22.383 -22.192
+ 8.150 -22.560 -22.560 -22.549 -22.535 -22.465 -22.362 -22.178
+ 8.200 -22.530 -22.530 -22.529 -22.505 -22.445 -22.341 -22.164
+ 8.250 -22.510 -22.510 -22.509 -22.484 -22.425 -22.321 -22.143
+ 8.300 -22.490 -22.490 -22.489 -22.464 -22.404 -22.300 -22.121
+ 8.350 -22.460 -22.460 -22.459 -22.444 -22.384 -22.279 -22.107
+ 8.400 -22.440 -22.440 -22.439 -22.414 -22.363 -22.258 -22.085
+ 8.450 -22.420 -22.420 -22.419 -22.394 -22.334 -22.237 -22.063
+ 8.500 -22.390 -22.390 -22.389 -22.374 -22.313 -22.216 -22.041
diff --git a/PyCool/work/cooling_total/cooling_+00.0.dat b/PyCool/work/cooling_total/cooling_+00.0.dat
new file mode 100644
index 0000000..671a844
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_+00.0.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -39.999
+ 0.450 -39.968
+ 0.500 -39.453
+ 0.550 -38.230
+ 0.600 -37.025
+ 0.650 -35.945
+ 0.700 -34.982
+ 0.750 -34.124
+ 0.800 -33.359
+ 0.850 -32.677
+ 0.900 -32.069
+ 0.950 -31.526
+ 1.000 -31.043
+ 1.050 -30.612
+ 1.100 -30.228
+ 1.150 -29.885
+ 1.200 -29.579
+ 1.250 -29.306
+ 1.300 -29.063
+ 1.350 -28.846
+ 1.400 -28.652
+ 1.450 -28.479
+ 1.500 -28.323
+ 1.550 -28.184
+ 1.600 -28.058
+ 1.650 -27.942
+ 1.700 -27.834
+ 1.750 -27.732
+ 1.800 -27.633
+ 1.850 -27.535
+ 1.900 -27.437
+ 1.950 -27.338
+ 2.000 -27.240
+ 2.050 -27.142
+ 2.100 -27.047
+ 2.150 -26.954
+ 2.200 -26.866
+ 2.250 -26.783
+ 2.300 -26.705
+ 2.350 -26.633
+ 2.400 -26.565
+ 2.450 -26.503
+ 2.500 -26.447
+ 2.550 -26.394
+ 2.600 -26.347
+ 2.650 -26.303
+ 2.700 -26.263
+ 2.750 -26.227
+ 2.800 -26.194
+ 2.850 -26.165
+ 2.900 -26.137
+ 2.950 -26.113
+ 3.000 -26.091
+ 3.050 -26.070
+ 3.100 -26.052
+ 3.150 -26.035
+ 3.200 -26.020
+ 3.250 -26.006
+ 3.300 -25.993
+ 3.350 -25.980
+ 3.400 -25.968
+ 3.450 -25.956
+ 3.500 -25.944
+ 3.550 -25.930
+ 3.600 -25.916
+ 3.650 -25.901
+ 3.700 -25.883
+ 3.750 -25.864
+ 3.800 -25.843
+ 3.850 -25.822
+ 3.900 -25.802
+ 3.950 -25.784
+ 4.000 -25.405
+ 4.050 -24.256
+ 4.100 -23.279
+ 4.150 -22.470
+ 4.200 -21.990
+ 4.250 -21.840
+ 4.300 -21.850
+ 4.350 -21.870
+ 4.400 -21.840
+ 4.450 -21.770
+ 4.500 -21.660
+ 4.550 -21.560
+ 4.600 -21.450
+ 4.650 -21.340
+ 4.700 -21.240
+ 4.750 -21.140
+ 4.800 -21.050
+ 4.850 -20.970
+ 4.900 -20.910
+ 4.950 -20.870
+ 5.000 -20.870
+ 5.050 -20.900
+ 5.100 -20.910
+ 5.150 -20.890
+ 5.200 -20.860
+ 5.250 -20.850
+ 5.300 -20.840
+ 5.350 -20.840
+ 5.400 -20.870
+ 5.450 -21.010
+ 5.500 -21.230
+ 5.550 -21.430
+ 5.600 -21.540
+ 5.650 -21.580
+ 5.700 -21.590
+ 5.750 -21.590
+ 5.800 -21.640
+ 5.850 -21.740
+ 5.900 -21.810
+ 5.950 -21.830
+ 6.000 -21.840
+ 6.050 -21.840
+ 6.100 -21.830
+ 6.150 -21.819
+ 6.200 -21.819
+ 6.250 -21.849
+ 6.300 -21.949
+ 6.350 -22.079
+ 6.400 -22.188
+ 6.450 -22.268
+ 6.500 -22.317
+ 6.550 -22.347
+ 6.600 -22.376
+ 6.650 -22.406
+ 6.700 -22.435
+ 6.750 -22.454
+ 6.800 -22.474
+ 6.850 -22.473
+ 6.900 -22.453
+ 6.950 -22.443
+ 7.000 -22.442
+ 7.050 -22.451
+ 7.100 -22.480
+ 7.150 -22.518
+ 7.200 -22.546
+ 7.250 -22.564
+ 7.300 -22.582
+ 7.350 -22.591
+ 7.400 -22.589
+ 7.450 -22.588
+ 7.500 -22.576
+ 7.550 -22.575
+ 7.600 -22.563
+ 7.650 -22.543
+ 7.700 -22.531
+ 7.750 -22.511
+ 7.800 -22.499
+ 7.850 -22.478
+ 7.900 -22.457
+ 7.950 -22.446
+ 8.000 -22.425
+ 8.050 -22.404
+ 8.100 -22.383
+ 8.150 -22.362
+ 8.200 -22.341
+ 8.250 -22.321
+ 8.300 -22.300
+ 8.350 -22.279
+ 8.400 -22.258
+ 8.450 -22.237
+ 8.500 -22.216
diff --git a/PyCool/work/cooling_total/cooling_+00.5.dat b/PyCool/work/cooling_total/cooling_+00.5.dat
new file mode 100644
index 0000000..62cd67a
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_+00.5.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -39.998
+ 0.450 -39.907
+ 0.500 -39.046
+ 0.550 -37.735
+ 0.600 -36.525
+ 0.650 -35.445
+ 0.700 -34.482
+ 0.750 -33.624
+ 0.800 -32.859
+ 0.850 -32.177
+ 0.900 -31.569
+ 0.950 -31.026
+ 1.000 -30.543
+ 1.050 -30.112
+ 1.100 -29.728
+ 1.150 -29.385
+ 1.200 -29.079
+ 1.250 -28.806
+ 1.300 -28.563
+ 1.350 -28.346
+ 1.400 -28.152
+ 1.450 -27.979
+ 1.500 -27.823
+ 1.550 -27.684
+ 1.600 -27.558
+ 1.650 -27.442
+ 1.700 -27.334
+ 1.750 -27.232
+ 1.800 -27.133
+ 1.850 -27.035
+ 1.900 -26.937
+ 1.950 -26.838
+ 2.000 -26.740
+ 2.050 -26.642
+ 2.100 -26.547
+ 2.150 -26.454
+ 2.200 -26.366
+ 2.250 -26.283
+ 2.300 -26.205
+ 2.350 -26.133
+ 2.400 -26.065
+ 2.450 -26.004
+ 2.500 -25.947
+ 2.550 -25.894
+ 2.600 -25.847
+ 2.650 -25.803
+ 2.700 -25.764
+ 2.750 -25.727
+ 2.800 -25.695
+ 2.850 -25.665
+ 2.900 -25.638
+ 2.950 -25.613
+ 3.000 -25.591
+ 3.050 -25.571
+ 3.100 -25.552
+ 3.150 -25.536
+ 3.200 -25.521
+ 3.250 -25.507
+ 3.300 -25.494
+ 3.350 -25.483
+ 3.400 -25.472
+ 3.450 -25.461
+ 3.500 -25.451
+ 3.550 -25.441
+ 3.600 -25.431
+ 3.650 -25.421
+ 3.700 -25.410
+ 3.750 -25.398
+ 3.800 -25.385
+ 3.850 -25.372
+ 3.900 -25.359
+ 3.950 -25.347
+ 4.000 -25.164
+ 4.050 -24.233
+ 4.100 -22.978
+ 4.150 -22.260
+ 4.200 -21.800
+ 4.250 -21.640
+ 4.300 -21.610
+ 4.350 -21.570
+ 4.400 -21.480
+ 4.450 -21.360
+ 4.500 -21.220
+ 4.550 -21.090
+ 4.600 -20.970
+ 4.650 -20.860
+ 4.700 -20.750
+ 4.750 -20.650
+ 4.800 -20.570
+ 4.850 -20.500
+ 4.900 -20.430
+ 4.950 -20.390
+ 5.000 -20.390
+ 5.050 -20.420
+ 5.100 -20.420
+ 5.150 -20.400
+ 5.200 -20.370
+ 5.250 -20.350
+ 5.300 -20.340
+ 5.350 -20.340
+ 5.400 -20.370
+ 5.450 -20.510
+ 5.500 -20.730
+ 5.550 -20.930
+ 5.600 -21.050
+ 5.650 -21.090
+ 5.700 -21.090
+ 5.750 -21.090
+ 5.800 -21.140
+ 5.850 -21.240
+ 5.900 -21.320
+ 5.950 -21.340
+ 6.000 -21.350
+ 6.050 -21.350
+ 6.100 -21.339
+ 6.150 -21.329
+ 6.200 -21.319
+ 6.250 -21.349
+ 6.300 -21.459
+ 6.350 -21.589
+ 6.400 -21.708
+ 6.450 -21.798
+ 6.500 -21.857
+ 6.550 -21.896
+ 6.600 -21.926
+ 6.650 -21.955
+ 6.700 -21.994
+ 6.750 -22.033
+ 6.800 -22.052
+ 6.850 -22.052
+ 6.900 -22.041
+ 6.950 -22.031
+ 7.000 -22.030
+ 7.050 -22.049
+ 7.100 -22.097
+ 7.150 -22.144
+ 7.200 -22.191
+ 7.250 -22.237
+ 7.300 -22.272
+ 7.350 -22.289
+ 7.400 -22.314
+ 7.450 -22.321
+ 7.500 -22.327
+ 7.550 -22.324
+ 7.600 -22.321
+ 7.650 -22.317
+ 7.700 -22.313
+ 7.750 -22.301
+ 7.800 -22.288
+ 7.850 -22.275
+ 7.900 -22.262
+ 7.950 -22.240
+ 8.000 -22.227
+ 8.050 -22.213
+ 8.100 -22.192
+ 8.150 -22.178
+ 8.200 -22.164
+ 8.250 -22.143
+ 8.300 -22.121
+ 8.350 -22.107
+ 8.400 -22.085
+ 8.450 -22.063
+ 8.500 -22.041
diff --git a/PyCool/work/cooling_total/cooling_-00.5.dat b/PyCool/work/cooling_total/cooling_-00.5.dat
new file mode 100644
index 0000000..a238876
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-00.5.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -39.990
+ 0.500 -39.745
+ 0.550 -38.715
+ 0.600 -37.524
+ 0.650 -36.445
+ 0.700 -35.482
+ 0.750 -34.624
+ 0.800 -33.859
+ 0.850 -33.177
+ 0.900 -32.569
+ 0.950 -32.026
+ 1.000 -31.543
+ 1.050 -31.112
+ 1.100 -30.728
+ 1.150 -30.385
+ 1.200 -30.079
+ 1.250 -29.806
+ 1.300 -29.563
+ 1.350 -29.346
+ 1.400 -29.152
+ 1.450 -28.979
+ 1.500 -28.823
+ 1.550 -28.684
+ 1.600 -28.558
+ 1.650 -28.442
+ 1.700 -28.334
+ 1.750 -28.232
+ 1.800 -28.133
+ 1.850 -28.035
+ 1.900 -27.937
+ 1.950 -27.838
+ 2.000 -27.740
+ 2.050 -27.642
+ 2.100 -27.547
+ 2.150 -27.454
+ 2.200 -27.366
+ 2.250 -27.283
+ 2.300 -27.205
+ 2.350 -27.133
+ 2.400 -27.065
+ 2.450 -27.003
+ 2.500 -26.947
+ 2.550 -26.894
+ 2.600 -26.847
+ 2.650 -26.803
+ 2.700 -26.763
+ 2.750 -26.727
+ 2.800 -26.694
+ 2.850 -26.664
+ 2.900 -26.637
+ 2.950 -26.612
+ 3.000 -26.590
+ 3.050 -26.569
+ 3.100 -26.551
+ 3.150 -26.533
+ 3.200 -26.517
+ 3.250 -26.502
+ 3.300 -26.487
+ 3.350 -26.472
+ 3.400 -26.456
+ 3.450 -26.439
+ 3.500 -26.420
+ 3.550 -26.398
+ 3.600 -26.372
+ 3.650 -26.342
+ 3.700 -26.308
+ 3.750 -26.271
+ 3.800 -26.232
+ 3.850 -26.193
+ 3.900 -26.158
+ 3.950 -26.130
+ 4.000 -25.647
+ 4.050 -24.480
+ 4.100 -23.419
+ 4.150 -22.560
+ 4.200 -22.070
+ 4.250 -21.920
+ 4.300 -21.940
+ 4.350 -22.000
+ 4.400 -22.020
+ 4.450 -22.000
+ 4.500 -21.940
+ 4.550 -21.870
+ 4.600 -21.780
+ 4.650 -21.690
+ 4.700 -21.590
+ 4.750 -21.500
+ 4.800 -21.410
+ 4.850 -21.330
+ 4.900 -21.270
+ 4.950 -21.230
+ 5.000 -21.220
+ 5.050 -21.230
+ 5.100 -21.220
+ 5.150 -21.190
+ 5.200 -21.160
+ 5.250 -21.140
+ 5.300 -21.120
+ 5.350 -21.100
+ 5.400 -21.140
+ 5.450 -21.270
+ 5.500 -21.500
+ 5.550 -21.700
+ 5.600 -21.810
+ 5.650 -21.850
+ 5.700 -21.860
+ 5.750 -21.870
+ 5.800 -21.930
+ 5.850 -22.050
+ 5.900 -22.150
+ 5.950 -22.190
+ 6.000 -22.220
+ 6.050 -22.240
+ 6.100 -22.240
+ 6.150 -22.240
+ 6.200 -22.230
+ 6.250 -22.259
+ 6.300 -22.339
+ 6.350 -22.439
+ 6.400 -22.529
+ 6.450 -22.588
+ 6.500 -22.638
+ 6.550 -22.658
+ 6.600 -22.688
+ 6.650 -22.707
+ 6.700 -22.727
+ 6.750 -22.747
+ 6.800 -22.756
+ 6.850 -22.746
+ 6.900 -22.736
+ 6.950 -22.735
+ 7.000 -22.725
+ 7.050 -22.725
+ 7.100 -22.744
+ 7.150 -22.754
+ 7.200 -22.763
+ 7.250 -22.762
+ 7.300 -22.762
+ 7.350 -22.751
+ 7.400 -22.741
+ 7.450 -22.730
+ 7.500 -22.720
+ 7.550 -22.709
+ 7.600 -22.689
+ 7.650 -22.669
+ 7.700 -22.648
+ 7.750 -22.638
+ 7.800 -22.617
+ 7.850 -22.597
+ 7.900 -22.577
+ 7.950 -22.556
+ 8.000 -22.536
+ 8.050 -22.516
+ 8.100 -22.486
+ 8.150 -22.465
+ 8.200 -22.445
+ 8.250 -22.425
+ 8.300 -22.404
+ 8.350 -22.384
+ 8.400 -22.363
+ 8.450 -22.334
+ 8.500 -22.313
diff --git a/PyCool/work/cooling_total/cooling_-01.0.dat b/PyCool/work/cooling_total/cooling_-01.0.dat
new file mode 100644
index 0000000..ce15ac4
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-01.0.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -39.997
+ 0.500 -39.902
+ 0.550 -39.168
+ 0.600 -38.021
+ 0.650 -36.945
+ 0.700 -35.982
+ 0.750 -35.124
+ 0.800 -34.359
+ 0.850 -33.677
+ 0.900 -33.069
+ 0.950 -32.526
+ 1.000 -32.043
+ 1.050 -31.612
+ 1.100 -31.228
+ 1.150 -30.885
+ 1.200 -30.579
+ 1.250 -30.306
+ 1.300 -30.063
+ 1.350 -29.846
+ 1.400 -29.652
+ 1.450 -29.479
+ 1.500 -29.323
+ 1.550 -29.184
+ 1.600 -29.058
+ 1.650 -28.942
+ 1.700 -28.834
+ 1.750 -28.732
+ 1.800 -28.633
+ 1.850 -28.535
+ 1.900 -28.437
+ 1.950 -28.338
+ 2.000 -28.240
+ 2.050 -28.142
+ 2.100 -28.047
+ 2.150 -27.954
+ 2.200 -27.866
+ 2.250 -27.783
+ 2.300 -27.705
+ 2.350 -27.633
+ 2.400 -27.565
+ 2.450 -27.503
+ 2.500 -27.446
+ 2.550 -27.394
+ 2.600 -27.346
+ 2.650 -27.303
+ 2.700 -27.263
+ 2.750 -27.227
+ 2.800 -27.194
+ 2.850 -27.164
+ 2.900 -27.136
+ 2.950 -27.111
+ 3.000 -27.088
+ 3.050 -27.066
+ 3.100 -27.046
+ 3.150 -27.027
+ 3.200 -27.009
+ 3.250 -26.990
+ 3.300 -26.969
+ 3.350 -26.947
+ 3.400 -26.921
+ 3.450 -26.890
+ 3.500 -26.853
+ 3.550 -26.809
+ 3.600 -26.756
+ 3.650 -26.697
+ 3.700 -26.632
+ 3.750 -26.564
+ 3.800 -26.497
+ 3.850 -26.435
+ 3.900 -26.382
+ 3.950 -26.341
+ 4.000 -25.788
+ 4.050 -24.601
+ 4.100 -23.489
+ 4.150 -22.600
+ 4.200 -22.100
+ 4.250 -21.950
+ 4.300 -21.990
+ 4.350 -22.070
+ 4.400 -22.130
+ 4.450 -22.150
+ 4.500 -22.150
+ 4.550 -22.110
+ 4.600 -22.060
+ 4.650 -21.980
+ 4.700 -21.900
+ 4.750 -21.810
+ 4.800 -21.720
+ 4.850 -21.630
+ 4.900 -21.570
+ 4.950 -21.540
+ 5.000 -21.530
+ 5.050 -21.520
+ 5.100 -21.500
+ 5.150 -21.470
+ 5.200 -21.440
+ 5.250 -21.410
+ 5.300 -21.380
+ 5.350 -21.360
+ 5.400 -21.400
+ 5.450 -21.530
+ 5.500 -21.750
+ 5.550 -21.950
+ 5.600 -22.070
+ 5.650 -22.110
+ 5.700 -22.120
+ 5.750 -22.140
+ 5.800 -22.200
+ 5.850 -22.330
+ 5.900 -22.450
+ 5.950 -22.510
+ 6.000 -22.550
+ 6.050 -22.580
+ 6.100 -22.600
+ 6.150 -22.590
+ 6.200 -22.590
+ 6.250 -22.610
+ 6.300 -22.670
+ 6.350 -22.739
+ 6.400 -22.799
+ 6.450 -22.839
+ 6.500 -22.869
+ 6.550 -22.889
+ 6.600 -22.909
+ 6.650 -22.919
+ 6.700 -22.928
+ 6.750 -22.938
+ 6.800 -22.938
+ 6.850 -22.938
+ 6.900 -22.928
+ 6.950 -22.918
+ 7.000 -22.908
+ 7.050 -22.898
+ 7.100 -22.897
+ 7.150 -22.897
+ 7.200 -22.887
+ 7.250 -22.877
+ 7.300 -22.867
+ 7.350 -22.847
+ 7.400 -22.836
+ 7.450 -22.816
+ 7.500 -22.806
+ 7.550 -22.786
+ 7.600 -22.766
+ 7.650 -22.746
+ 7.700 -22.726
+ 7.750 -22.706
+ 7.800 -22.685
+ 7.850 -22.665
+ 7.900 -22.645
+ 7.950 -22.615
+ 8.000 -22.595
+ 8.050 -22.575
+ 8.100 -22.555
+ 8.150 -22.535
+ 8.200 -22.505
+ 8.250 -22.484
+ 8.300 -22.464
+ 8.350 -22.444
+ 8.400 -22.414
+ 8.450 -22.394
+ 8.500 -22.374
diff --git a/PyCool/work/cooling_total/cooling_-01.5.dat b/PyCool/work/cooling_total/cooling_-01.5.dat
new file mode 100644
index 0000000..b2c02e4
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-01.5.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -39.999
+ 0.500 -39.967
+ 0.550 -39.548
+ 0.600 -38.511
+ 0.650 -37.444
+ 0.700 -36.482
+ 0.750 -35.624
+ 0.800 -34.859
+ 0.850 -34.177
+ 0.900 -33.569
+ 0.950 -33.026
+ 1.000 -32.543
+ 1.050 -32.112
+ 1.100 -31.728
+ 1.150 -31.385
+ 1.200 -31.079
+ 1.250 -30.806
+ 1.300 -30.563
+ 1.350 -30.346
+ 1.400 -30.152
+ 1.450 -29.979
+ 1.500 -29.823
+ 1.550 -29.684
+ 1.600 -29.558
+ 1.650 -29.442
+ 1.700 -29.334
+ 1.750 -29.232
+ 1.800 -29.133
+ 1.850 -29.035
+ 1.900 -28.937
+ 1.950 -28.838
+ 2.000 -28.740
+ 2.050 -28.642
+ 2.100 -28.547
+ 2.150 -28.454
+ 2.200 -28.366
+ 2.250 -28.283
+ 2.300 -28.205
+ 2.350 -28.132
+ 2.400 -28.065
+ 2.450 -28.003
+ 2.500 -27.946
+ 2.550 -27.894
+ 2.600 -27.846
+ 2.650 -27.802
+ 2.700 -27.762
+ 2.750 -27.725
+ 2.800 -27.692
+ 2.850 -27.661
+ 2.900 -27.633
+ 2.950 -27.606
+ 3.000 -27.581
+ 3.050 -27.557
+ 3.100 -27.534
+ 3.150 -27.509
+ 3.200 -27.483
+ 3.250 -27.453
+ 3.300 -27.419
+ 3.350 -27.377
+ 3.400 -27.326
+ 3.450 -27.264
+ 3.500 -27.192
+ 3.550 -27.108
+ 3.600 -27.016
+ 3.650 -26.918
+ 3.700 -26.819
+ 3.750 -26.722
+ 3.800 -26.632
+ 3.850 -26.552
+ 3.900 -26.486
+ 3.950 -26.437
+ 4.000 -25.846
+ 4.050 -24.637
+ 4.100 -23.509
+ 4.150 -22.615
+ 4.200 -22.110
+ 4.250 -21.965
+ 4.300 -22.005
+ 4.350 -22.095
+ 4.400 -22.180
+ 4.450 -22.230
+ 4.500 -22.260
+ 4.550 -22.275
+ 4.600 -22.275
+ 4.650 -22.245
+ 4.700 -22.195
+ 4.750 -22.105
+ 4.800 -21.995
+ 4.850 -21.880
+ 4.900 -21.810
+ 4.950 -21.795
+ 5.000 -21.815
+ 5.050 -21.840
+ 5.100 -21.855
+ 5.150 -21.850
+ 5.200 -21.845
+ 5.250 -21.835
+ 5.300 -21.820
+ 5.350 -21.810
+ 5.400 -21.850
+ 5.450 -21.975
+ 5.500 -22.170
+ 5.550 -22.345
+ 5.600 -22.445
+ 5.650 -22.485
+ 5.700 -22.495
+ 5.750 -22.515
+ 5.800 -22.565
+ 5.850 -22.665
+ 5.900 -22.755
+ 5.950 -22.800
+ 6.000 -22.825
+ 6.050 -22.850
+ 6.100 -22.860
+ 6.150 -22.855
+ 6.200 -22.855
+ 6.250 -22.865
+ 6.300 -22.900
+ 6.350 -22.945
+ 6.400 -22.980
+ 6.450 -23.000
+ 6.500 -23.015
+ 6.550 -23.020
+ 6.600 -23.024
+ 6.650 -23.024
+ 6.700 -23.024
+ 6.750 -23.024
+ 6.800 -23.014
+ 6.850 -23.009
+ 6.900 -22.994
+ 6.950 -22.984
+ 7.000 -22.969
+ 7.050 -22.954
+ 7.100 -22.949
+ 7.150 -22.939
+ 7.200 -22.924
+ 7.250 -22.909
+ 7.300 -22.894
+ 7.350 -22.874
+ 7.400 -22.859
+ 7.450 -22.839
+ 7.500 -22.824
+ 7.550 -22.804
+ 7.600 -22.784
+ 7.650 -22.764
+ 7.700 -22.739
+ 7.750 -22.719
+ 7.800 -22.699
+ 7.850 -22.678
+ 7.900 -22.658
+ 7.950 -22.628
+ 8.000 -22.608
+ 8.050 -22.588
+ 8.100 -22.568
+ 8.150 -22.543
+ 8.200 -22.518
+ 8.250 -22.498
+ 8.300 -22.478
+ 8.350 -22.453
+ 8.400 -22.428
+ 8.450 -22.408
+ 8.500 -22.383
diff --git a/PyCool/work/cooling_total/cooling_-02.0.dat b/PyCool/work/cooling_total/cooling_-02.0.dat
new file mode 100644
index 0000000..e21d5a9
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-02.0.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -40.000
+ 0.500 -39.989
+ 0.550 -39.802
+ 0.600 -38.982
+ 0.650 -37.941
+ 0.700 -36.982
+ 0.750 -36.124
+ 0.800 -35.359
+ 0.850 -34.677
+ 0.900 -34.069
+ 0.950 -33.526
+ 1.000 -33.043
+ 1.050 -32.612
+ 1.100 -32.228
+ 1.150 -31.885
+ 1.200 -31.579
+ 1.250 -31.306
+ 1.300 -31.063
+ 1.350 -30.846
+ 1.400 -30.652
+ 1.450 -30.479
+ 1.500 -30.323
+ 1.550 -30.184
+ 1.600 -30.058
+ 1.650 -29.942
+ 1.700 -29.834
+ 1.750 -29.732
+ 1.800 -29.633
+ 1.850 -29.535
+ 1.900 -29.437
+ 1.950 -29.338
+ 2.000 -29.240
+ 2.050 -29.142
+ 2.100 -29.046
+ 2.150 -28.954
+ 2.200 -28.866
+ 2.250 -28.783
+ 2.300 -28.705
+ 2.350 -28.632
+ 2.400 -28.564
+ 2.450 -28.502
+ 2.500 -28.445
+ 2.550 -28.392
+ 2.600 -28.344
+ 2.650 -28.300
+ 2.700 -28.259
+ 2.750 -28.221
+ 2.800 -28.186
+ 2.850 -28.153
+ 2.900 -28.122
+ 2.950 -28.092
+ 3.000 -28.061
+ 3.050 -28.029
+ 3.100 -27.995
+ 3.150 -27.956
+ 3.200 -27.910
+ 3.250 -27.855
+ 3.300 -27.789
+ 3.350 -27.709
+ 3.400 -27.616
+ 3.450 -27.510
+ 3.500 -27.394
+ 3.550 -27.272
+ 3.600 -27.146
+ 3.650 -27.021
+ 3.700 -26.900
+ 3.750 -26.787
+ 3.800 -26.685
+ 3.850 -26.597
+ 3.900 -26.525
+ 3.950 -26.473
+ 4.000 -25.888
+ 4.050 -24.672
+ 4.100 -23.529
+ 4.150 -22.630
+ 4.200 -22.120
+ 4.250 -21.980
+ 4.300 -22.020
+ 4.350 -22.120
+ 4.400 -22.230
+ 4.450 -22.310
+ 4.500 -22.370
+ 4.550 -22.440
+ 4.600 -22.490
+ 4.650 -22.510
+ 4.700 -22.490
+ 4.750 -22.400
+ 4.800 -22.270
+ 4.850 -22.130
+ 4.900 -22.050
+ 4.950 -22.050
+ 5.000 -22.100
+ 5.050 -22.160
+ 5.100 -22.210
+ 5.150 -22.230
+ 5.200 -22.250
+ 5.250 -22.260
+ 5.300 -22.260
+ 5.350 -22.260
+ 5.400 -22.300
+ 5.450 -22.420
+ 5.500 -22.590
+ 5.550 -22.740
+ 5.600 -22.820
+ 5.650 -22.860
+ 5.700 -22.870
+ 5.750 -22.890
+ 5.800 -22.930
+ 5.850 -23.000
+ 5.900 -23.060
+ 5.950 -23.090
+ 6.000 -23.100
+ 6.050 -23.120
+ 6.100 -23.120
+ 6.150 -23.120
+ 6.200 -23.120
+ 6.250 -23.120
+ 6.300 -23.130
+ 6.350 -23.150
+ 6.400 -23.160
+ 6.450 -23.160
+ 6.500 -23.160
+ 6.550 -23.150
+ 6.600 -23.140
+ 6.650 -23.130
+ 6.700 -23.120
+ 6.750 -23.110
+ 6.800 -23.090
+ 6.850 -23.080
+ 6.900 -23.060
+ 6.950 -23.050
+ 7.000 -23.030
+ 7.050 -23.010
+ 7.100 -23.000
+ 7.150 -22.980
+ 7.200 -22.960
+ 7.250 -22.940
+ 7.300 -22.920
+ 7.350 -22.900
+ 7.400 -22.880
+ 7.450 -22.860
+ 7.500 -22.840
+ 7.550 -22.820
+ 7.600 -22.800
+ 7.650 -22.780
+ 7.700 -22.750
+ 7.750 -22.730
+ 7.800 -22.710
+ 7.850 -22.690
+ 7.900 -22.669
+ 7.950 -22.639
+ 8.000 -22.619
+ 8.050 -22.599
+ 8.100 -22.579
+ 8.150 -22.549
+ 8.200 -22.529
+ 8.250 -22.509
+ 8.300 -22.489
+ 8.350 -22.459
+ 8.400 -22.439
+ 8.450 -22.419
+ 8.500 -22.389
diff --git a/PyCool/work/cooling_total/cooling_-02.5.dat b/PyCool/work/cooling_total/cooling_-02.5.dat
new file mode 100644
index 0000000..fc9ecfc
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-02.5.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -40.000
+ 0.500 -39.997
+ 0.550 -39.927
+ 0.600 -39.400
+ 0.650 -38.433
+ 0.700 -37.481
+ 0.750 -36.624
+ 0.800 -35.859
+ 0.850 -35.177
+ 0.900 -34.569
+ 0.950 -34.026
+ 1.000 -33.543
+ 1.050 -33.112
+ 1.100 -32.728
+ 1.150 -32.385
+ 1.200 -32.079
+ 1.250 -31.806
+ 1.300 -31.563
+ 1.350 -31.346
+ 1.400 -31.152
+ 1.450 -30.979
+ 1.500 -30.823
+ 1.550 -30.684
+ 1.600 -30.558
+ 1.650 -30.442
+ 1.700 -30.334
+ 1.750 -30.232
+ 1.800 -30.133
+ 1.850 -30.035
+ 1.900 -29.937
+ 1.950 -29.838
+ 2.000 -29.739
+ 2.050 -29.642
+ 2.100 -29.546
+ 2.150 -29.454
+ 2.200 -29.365
+ 2.250 -29.282
+ 2.300 -29.203
+ 2.350 -29.130
+ 2.400 -29.062
+ 2.450 -29.000
+ 2.500 -28.941
+ 2.550 -28.888
+ 2.600 -28.838
+ 2.650 -28.792
+ 2.700 -28.748
+ 2.750 -28.707
+ 2.800 -28.668
+ 2.850 -28.629
+ 2.900 -28.590
+ 2.950 -28.548
+ 3.000 -28.503
+ 3.050 -28.452
+ 3.100 -28.392
+ 3.150 -28.321
+ 3.200 -28.238
+ 3.250 -28.140
+ 3.300 -28.029
+ 3.350 -27.905
+ 3.400 -27.771
+ 3.450 -27.630
+ 3.500 -27.485
+ 3.550 -27.339
+ 3.600 -27.196
+ 3.650 -27.059
+ 3.700 -26.929
+ 3.750 -26.810
+ 3.800 -26.703
+ 3.850 -26.612
+ 3.900 -26.538
+ 3.950 -26.485
+ 4.000 -25.895
+ 4.050 -24.678
+ 4.100 -23.530
+ 4.150 -22.630
+ 4.200 -22.120
+ 4.250 -21.980
+ 4.300 -22.025
+ 4.350 -22.125
+ 4.400 -22.235
+ 4.450 -22.320
+ 4.500 -22.385
+ 4.550 -22.465
+ 4.600 -22.530
+ 4.650 -22.570
+ 4.700 -22.560
+ 4.750 -22.475
+ 4.800 -22.330
+ 4.850 -22.180
+ 4.900 -22.100
+ 4.950 -22.105
+ 5.000 -22.170
+ 5.050 -22.245
+ 5.100 -22.320
+ 5.150 -22.375
+ 5.200 -22.425
+ 5.250 -22.460
+ 5.300 -22.490
+ 5.350 -22.515
+ 5.400 -22.560
+ 5.450 -22.660
+ 5.500 -22.785
+ 5.550 -22.890
+ 5.600 -22.950
+ 5.650 -22.990
+ 5.700 -23.005
+ 5.750 -23.025
+ 5.800 -23.055
+ 5.850 -23.100
+ 5.900 -23.140
+ 5.950 -23.160
+ 6.000 -23.165
+ 6.050 -23.180
+ 6.100 -23.180
+ 6.150 -23.175
+ 6.200 -23.175
+ 6.250 -23.175
+ 6.300 -23.175
+ 6.350 -23.190
+ 6.400 -23.190
+ 6.450 -23.185
+ 6.500 -23.180
+ 6.550 -23.170
+ 6.600 -23.155
+ 6.650 -23.145
+ 6.700 -23.130
+ 6.750 -23.120
+ 6.800 -23.100
+ 6.850 -23.085
+ 6.900 -23.070
+ 6.950 -23.055
+ 7.000 -23.035
+ 7.050 -23.020
+ 7.100 -23.005
+ 7.150 -22.985
+ 7.200 -22.965
+ 7.250 -22.945
+ 7.300 -22.925
+ 7.350 -22.905
+ 7.400 -22.885
+ 7.450 -22.860
+ 7.500 -22.840
+ 7.550 -22.820
+ 7.600 -22.800
+ 7.650 -22.780
+ 7.700 -22.755
+ 7.750 -22.730
+ 7.800 -22.710
+ 7.850 -22.690
+ 7.900 -22.670
+ 7.950 -22.645
+ 8.000 -22.620
+ 8.050 -22.600
+ 8.100 -22.580
+ 8.150 -22.555
+ 8.200 -22.530
+ 8.250 -22.510
+ 8.300 -22.490
+ 8.350 -22.460
+ 8.400 -22.440
+ 8.450 -22.420
+ 8.500 -22.390
diff --git a/PyCool/work/cooling_total/cooling_-03.0.dat b/PyCool/work/cooling_total/cooling_-03.0.dat
new file mode 100644
index 0000000..20095bf
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-03.0.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -40.000
+ 0.500 -39.999
+ 0.550 -39.976
+ 0.600 -39.712
+ 0.650 -38.909
+ 0.700 -37.978
+ 0.750 -37.123
+ 0.800 -36.359
+ 0.850 -35.677
+ 0.900 -35.069
+ 0.950 -34.526
+ 1.000 -34.043
+ 1.050 -33.612
+ 1.100 -33.228
+ 1.150 -32.885
+ 1.200 -32.579
+ 1.250 -32.306
+ 1.300 -32.063
+ 1.350 -31.846
+ 1.400 -31.652
+ 1.450 -31.479
+ 1.500 -31.323
+ 1.550 -31.184
+ 1.600 -31.058
+ 1.650 -30.942
+ 1.700 -30.834
+ 1.750 -30.732
+ 1.800 -30.633
+ 1.850 -30.535
+ 1.900 -30.436
+ 1.950 -30.338
+ 2.000 -30.239
+ 2.050 -30.141
+ 2.100 -30.045
+ 2.150 -29.952
+ 2.200 -29.863
+ 2.250 -29.779
+ 2.300 -29.700
+ 2.350 -29.625
+ 2.400 -29.556
+ 2.450 -29.491
+ 2.500 -29.430
+ 2.550 -29.374
+ 2.600 -29.320
+ 2.650 -29.268
+ 2.700 -29.217
+ 2.750 -29.167
+ 2.800 -29.115
+ 2.850 -29.061
+ 2.900 -29.001
+ 2.950 -28.934
+ 3.000 -28.858
+ 3.050 -28.770
+ 3.100 -28.669
+ 3.150 -28.555
+ 3.200 -28.429
+ 3.250 -28.291
+ 3.300 -28.144
+ 3.350 -27.991
+ 3.400 -27.834
+ 3.450 -27.675
+ 3.500 -27.518
+ 3.550 -27.363
+ 3.600 -27.214
+ 3.650 -27.072
+ 3.700 -26.939
+ 3.750 -26.817
+ 3.800 -26.709
+ 3.850 -26.617
+ 3.900 -26.542
+ 3.950 -26.488
+ 4.000 -25.899
+ 4.050 -24.683
+ 4.100 -23.530
+ 4.150 -22.630
+ 4.200 -22.120
+ 4.250 -21.980
+ 4.300 -22.030
+ 4.350 -22.130
+ 4.400 -22.240
+ 4.450 -22.330
+ 4.500 -22.400
+ 4.550 -22.490
+ 4.600 -22.570
+ 4.650 -22.630
+ 4.700 -22.630
+ 4.750 -22.550
+ 4.800 -22.390
+ 4.850 -22.230
+ 4.900 -22.150
+ 4.950 -22.160
+ 5.000 -22.240
+ 5.050 -22.330
+ 5.100 -22.430
+ 5.150 -22.520
+ 5.200 -22.600
+ 5.250 -22.660
+ 5.300 -22.720
+ 5.350 -22.770
+ 5.400 -22.820
+ 5.450 -22.900
+ 5.500 -22.980
+ 5.550 -23.040
+ 5.600 -23.080
+ 5.650 -23.120
+ 5.700 -23.140
+ 5.750 -23.160
+ 5.800 -23.180
+ 5.850 -23.200
+ 5.900 -23.220
+ 5.950 -23.230
+ 6.000 -23.230
+ 6.050 -23.240
+ 6.100 -23.240
+ 6.150 -23.230
+ 6.200 -23.230
+ 6.250 -23.230
+ 6.300 -23.220
+ 6.350 -23.230
+ 6.400 -23.220
+ 6.450 -23.210
+ 6.500 -23.200
+ 6.550 -23.190
+ 6.600 -23.170
+ 6.650 -23.160
+ 6.700 -23.140
+ 6.750 -23.130
+ 6.800 -23.110
+ 6.850 -23.090
+ 6.900 -23.080
+ 6.950 -23.060
+ 7.000 -23.040
+ 7.050 -23.030
+ 7.100 -23.010
+ 7.150 -22.990
+ 7.200 -22.970
+ 7.250 -22.950
+ 7.300 -22.930
+ 7.350 -22.910
+ 7.400 -22.890
+ 7.450 -22.860
+ 7.500 -22.840
+ 7.550 -22.820
+ 7.600 -22.800
+ 7.650 -22.780
+ 7.700 -22.760
+ 7.750 -22.730
+ 7.800 -22.710
+ 7.850 -22.690
+ 7.900 -22.670
+ 7.950 -22.650
+ 8.000 -22.620
+ 8.050 -22.600
+ 8.100 -22.580
+ 8.150 -22.560
+ 8.200 -22.530
+ 8.250 -22.510
+ 8.300 -22.490
+ 8.350 -22.460
+ 8.400 -22.440
+ 8.450 -22.420
+ 8.500 -22.390
diff --git a/PyCool/work/cooling_total/cooling_-10.0.dat b/PyCool/work/cooling_total/cooling_-10.0.dat
new file mode 100644
index 0000000..fc28463
--- /dev/null
+++ b/PyCool/work/cooling_total/cooling_-10.0.dat
@@ -0,0 +1,171 @@
+ 0.000 -40.000
+ 0.050 -40.000
+ 0.100 -40.000
+ 0.150 -40.000
+ 0.200 -40.000
+ 0.250 -40.000
+ 0.300 -40.000
+ 0.350 -40.000
+ 0.400 -40.000
+ 0.450 -40.000
+ 0.500 -40.000
+ 0.550 -40.000
+ 0.600 -40.000
+ 0.650 -40.000
+ 0.700 -40.000
+ 0.750 -40.000
+ 0.800 -40.000
+ 0.850 -39.999
+ 0.900 -39.996
+ 0.950 -39.987
+ 1.000 -39.962
+ 1.050 -39.905
+ 1.100 -39.798
+ 1.150 -39.638
+ 1.200 -39.439
+ 1.250 -39.226
+ 1.300 -39.013
+ 1.350 -38.801
+ 1.400 -38.562
+ 1.450 -38.221
+ 1.500 -37.722
+ 1.550 -37.130
+ 1.600 -36.533
+ 1.650 -35.968
+ 1.700 -35.443
+ 1.750 -34.960
+ 1.800 -34.516
+ 1.850 -34.108
+ 1.900 -33.733
+ 1.950 -33.388
+ 2.000 -33.071
+ 2.050 -32.779
+ 2.100 -32.508
+ 2.150 -32.257
+ 2.200 -32.024
+ 2.250 -31.805
+ 2.300 -31.599
+ 2.350 -31.404
+ 2.400 -31.219
+ 2.450 -31.041
+ 2.500 -30.869
+ 2.550 -30.701
+ 2.600 -30.537
+ 2.650 -30.375
+ 2.700 -30.215
+ 2.750 -30.055
+ 2.800 -29.894
+ 2.850 -29.733
+ 2.900 -29.570
+ 2.950 -29.405
+ 3.000 -29.239
+ 3.050 -29.071
+ 3.100 -28.901
+ 3.150 -28.730
+ 3.200 -28.557
+ 3.250 -28.384
+ 3.300 -28.210
+ 3.350 -28.038
+ 3.400 -27.867
+ 3.450 -27.698
+ 3.500 -27.534
+ 3.550 -27.375
+ 3.600 -27.222
+ 3.650 -27.078
+ 3.700 -26.943
+ 3.750 -26.821
+ 3.800 -26.712
+ 3.850 -26.619
+ 3.900 -26.544
+ 3.950 -26.490
+ 4.000 -25.900
+ 4.050 -24.683
+ 4.100 -23.530
+ 4.150 -22.630
+ 4.200 -22.120
+ 4.250 -21.980
+ 4.300 -22.030
+ 4.350 -22.130
+ 4.400 -22.240
+ 4.450 -22.330
+ 4.500 -22.400
+ 4.550 -22.490
+ 4.600 -22.570
+ 4.650 -22.630
+ 4.700 -22.630
+ 4.750 -22.550
+ 4.800 -22.390
+ 4.850 -22.230
+ 4.900 -22.150
+ 4.950 -22.160
+ 5.000 -22.240
+ 5.050 -22.330
+ 5.100 -22.430
+ 5.150 -22.520
+ 5.200 -22.600
+ 5.250 -22.660
+ 5.300 -22.720
+ 5.350 -22.770
+ 5.400 -22.820
+ 5.450 -22.900
+ 5.500 -22.980
+ 5.550 -23.040
+ 5.600 -23.080
+ 5.650 -23.120
+ 5.700 -23.140
+ 5.750 -23.160
+ 5.800 -23.180
+ 5.850 -23.200
+ 5.900 -23.220
+ 5.950 -23.230
+ 6.000 -23.230
+ 6.050 -23.240
+ 6.100 -23.240
+ 6.150 -23.230
+ 6.200 -23.230
+ 6.250 -23.230
+ 6.300 -23.220
+ 6.350 -23.230
+ 6.400 -23.220
+ 6.450 -23.210
+ 6.500 -23.200
+ 6.550 -23.190
+ 6.600 -23.170
+ 6.650 -23.160
+ 6.700 -23.140
+ 6.750 -23.130
+ 6.800 -23.110
+ 6.850 -23.090
+ 6.900 -23.080
+ 6.950 -23.060
+ 7.000 -23.040
+ 7.050 -23.030
+ 7.100 -23.010
+ 7.150 -22.990
+ 7.200 -22.970
+ 7.250 -22.950
+ 7.300 -22.930
+ 7.350 -22.910
+ 7.400 -22.890
+ 7.450 -22.860
+ 7.500 -22.840
+ 7.550 -22.820
+ 7.600 -22.800
+ 7.650 -22.780
+ 7.700 -22.760
+ 7.750 -22.730
+ 7.800 -22.710
+ 7.850 -22.690
+ 7.900 -22.670
+ 7.950 -22.650
+ 8.000 -22.620
+ 8.050 -22.600
+ 8.100 -22.580
+ 8.150 -22.560
+ 8.200 -22.530
+ 8.250 -22.510
+ 8.300 -22.490
+ 8.350 -22.460
+ 8.400 -22.440
+ 8.450 -22.420
+ 8.500 -22.390
diff --git a/PyCool/work/cooling_total/get_cooling.py b/PyCool/work/cooling_total/get_cooling.py
new file mode 100755
index 0000000..cdf31eb
--- /dev/null
+++ b/PyCool/work/cooling_total/get_cooling.py
@@ -0,0 +1,201 @@
+#!/usr/bin/env python
+
+from numpy import *
+import Ptools as pt
+from hclib import *
+
+
+
+
+
+# parametres
+dlT = 0.05
+lT0 = 0.00
+lT1 = 8.5+dlT
+
+logTs = arange(lT0,lT1,dlT)
+
+
+FeHs = [0.5,0.0,-0.5,-1.0,-1.5,-2.0,-2.5,-3.0,-10]
+files = {}
+files[ 0.5] = 'm+05.dat'
+files[ 0.0] = 'm-00.dat'
+files[-0.5] = 'm-05.dat'
+files[-1.0] = 'm-10.dat'
+files[-1.5] = 'm-15.dat'
+files[-2.0] = 'm-20.dat'
+files[-2.5] = 'm-25.dat'
+files[-3.0] = 'm-30.dat'
+files[-10.0] = 'm-30.dat'
+
+xe = 1e-4 # ne/nH free electron density over H density
+
+nH_H2 = 1e-1 # H density, for H2 cooling
+XH2 = 1e-5 # H2 mass fraction, for H2 cooling
+
+
+for FeH in FeHs:
+
+ file = files[FeH]
+
+ #ZFe = 0.00181*10**(FeH)
+ #XFe = ZFe * 0.0234 # = 1./(56 * 0.76)
+
+ # Thu Oct 2 11:27:59 CEST 2008
+ muFe = 55.8 # Fe atomic mass
+ MFeMgas = 0.00181*10**(FeH) # Fe mass over total mass
+ MFeMH = MFeMgas/0.76
+ XFe = MFeMH/muFe # nFe over nH
+
+ if FeH < 0:
+ filename = "cooling_%05.1f.dat"%(FeH)
+ else:
+ filename = "cooling_+%04.1f.dat"%(FeH)
+
+
+ ##########################################################################
+ # H2 cooling
+ ##########################################################################
+
+
+ def L0(T):
+ lT = log10(T)
+ return 10**( -103 + 97.59*lT - 48.05*lT**2 + 10.80*lT**3 - 0.9032*lT**4 )
+
+
+ def ncr(T,nH):
+ return (LrH2(T,nH)+LvH2(T,nH))/L0(T)*nH
+
+ def LrH2(T,nH2):
+ T3 = T/1000.0
+ return (1./nH2)* ( (9.5* 1e-22*T3**3.76)/(1.0+0.12*T3**2.1)*exp(-(0.13/T3)**3) + 3e-24*exp(-0.51/T3) )
+
+
+ def LvH2(T,nH2):
+ T3 = T/1000.0
+ return (1./nH2)* ( 6.7e-19 * exp(-5.86/T3) + 1.6e-18*exp(-11.7/T3) )
+
+ def LambdaH2(T,nH):
+ return (LrH2(T,nH)+LvH2(T,nH) ) /(1.0 + ncr(T,nH)/nH)
+
+
+ ##########################################################################
+ # metal cooling
+ ##########################################################################
+
+
+
+ nH = 1 # on fixe nH=1, car Lmbda faible dep. en nH, sauf pour large nH
+ xm = XFe # 1e-6
+ xCII = xm
+ xSiII = xm
+ xOI = xm
+ xFeII = xm
+
+ # secondary parameters
+ ne = xe * nH
+ nCII = xCII * nH
+ nSiII = xSiII * nH
+ nOI = xOI * nH
+ nFeII = xFeII * nH
+
+
+ ################################################
+ # loop
+ ################################################
+
+ logTs = arange(lT0,lT1,dlT)
+ Ts = 10** logTs
+
+ Ls_CII = array([],float)
+ Ls_SiII = array([],float)
+ Ls_OI = array([],float)
+ Ls_FeII = array([],float)
+
+ for T in Ts:
+
+ L_CII = Lambda_CII(T,nH,ne,nCII)
+ L_SiII = Lambda_SiII(T,nH,ne,nSiII)
+ L_OI = Lambda_OI(T,nH,ne,nOI)
+ L_FeII = Lambda_FeII(T,nH,ne,nFeII)
+
+ Ls_CII = concatenate((Ls_CII, [L_CII]))
+ Ls_SiII = concatenate((Ls_SiII,[L_SiII]))
+ Ls_OI = concatenate((Ls_OI, [L_OI]))
+ Ls_FeII = concatenate((Ls_FeII,[L_FeII]))
+
+
+ # here, we normalize !!!!!!
+ Ls_CII = Ls_CII /(nH*nH)
+ Ls_SiII = Ls_SiII/(nH*nH)
+ Ls_OI = Ls_OI /(nH*nH)
+ Ls_FeII = Ls_FeII/(nH*nH)
+
+ Ls_ToT = Ls_CII+Ls_SiII+Ls_OI+Ls_FeII
+
+ logLs_CII = log10(Ls_CII )
+ logLs_SiII = log10(Ls_SiII)
+ logLs_OI = log10(Ls_OI )
+ logLs_FeII = log10(Ls_FeII)
+
+ logL_Metal = log10(Ls_ToT)
+ logT_Metal = logTs
+
+
+
+
+
+
+
+
+ ##########################################################################
+ # main
+ ##########################################################################
+
+
+ nH = nH_H2
+
+ # Cooling H2
+ T_H2 = 10**logTs
+ L_H2 = LambdaH2(T_H2,nH)
+
+ logT_H2 = log10(T_H2)
+ logL_H2 = log10(L_H2*XH2)
+
+
+ # Sutherland & Dopita
+ logT,ne,nh,nt,logL = pt.io.read_ascii(file,[0,1,2,3,4])
+
+ logT = concatenate((arange(lT0,4,dlT),logT))
+ logL = concatenate((-40*ones( len((arange(lT0,4,dlT))) ),logL))
+
+
+ # sum
+ logLtot = log10( 10**logL_H2 + 10**logL + 10**logL_Metal )
+ logTtot = logT_H2
+
+
+ # write output
+
+ f = open(filename,'w')
+ for i in range(len(logT)):
+ line = "%8.3f %8.3f\n"%(logTtot[i],logLtot[i])
+ f.write(line)
+ f.close()
+
+
+
+ logT_H2,logL_H2 = pt.CleanVectors(logT_H2,logL_H2)
+ logT,logL = pt.CleanVectors(logT,logL)
+ logT_Metal,logL_Metal = pt.CleanVectors(logT_Metal,logL_Metal)
+ logTtot,logLtot = pt.CleanVectors(logTtot,logLtot)
+
+ pt.plot(logT_H2,logL_H2)
+ pt.plot(logT,logL)
+ pt.plot(logT_Metal,logL_Metal)
+ pt.plot(logTtot,logLtot)
+
+
+pt.axis([1,8,-30,-20])
+pt.show()
+
diff --git a/PyCool/work/cooling_total/hclib.py b/PyCool/work/cooling_total/hclib.py
new file mode 100644
index 0000000..bdd283f
--- /dev/null
+++ b/PyCool/work/cooling_total/hclib.py
@@ -0,0 +1,526 @@
+######################################################################
+#
+# this library gives cooling and heating functions
+# at low temperature (>1e4K)
+#
+# all units are in cgs
+#
+# parameters:
+#
+# X # normalized energy density
+# T # temperature
+# nH # hydrogen density
+# xe # ne/nH
+# xi # ni/nH
+#
+# secondary parameters:
+#
+# ne # electronic density
+# ni # metal i density
+# XTne # X*sqrt(T)/ne
+# e # heating efficiency
+#
+# Ref : Maio et al. 2007
+#
+#######################################################################
+
+from numpy import *
+
+BOLTZMANN = 1.3806e-16 # in cgs
+
+def heating_efficiency(T,XTne):
+ return 4.87e-2/(1+4e-3*(XTne**0.73)) + 3.65e-2*(T/1e4)/(1+2e-4*XTne)
+
+
+############################################################
+#
+# cooling
+#
+############################################################
+
+############################################################
+# CII line emission
+############################################################
+def Lambda_CII(T,nH,ne,nCII):
+
+
+ T100 = T/100.
+ b = 1/(BOLTZMANN*T)
+
+ g1 = 2* (1.0/2.0) + 1
+ g2 = 2* (3.0/2.0) + 1
+
+ E21 = 1.259e-14
+
+ gH21 = 8.0e-10 * T100**0.07
+ gH12 = gH21*g2/g1*exp(-b*E21)
+
+ ge21 = 2.8e-7 * T100**-0.5
+ ge12 = ge21*g2/g1*exp(-b*E21)
+
+ A21 = 2.4e-6
+
+ Lambda = ( gH12+ge12*(ne/nH) )/( gH12+gH21+(ge12+ge21)*(ne/nH) + (A21/nH) )*nCII*A21*E21
+
+ return Lambda
+
+################################################
+# SiII line emission
+################################################
+
+def Lambda_SiII(T,nH,ne,nSiII):
+
+ T100 = T/100.
+ b = 1/(BOLTZMANN*T)
+
+ g1 = 2* (1.0/2.0) + 1
+ g2 = 2* (3.0/2.0) + 1
+
+ E21 = 5.71e-14
+
+ gH21 = 8.0e-10 * T100**-0.07
+ gH12 = gH21*g2/g1*exp(-b*E21)
+
+ ge21 = 1.7e-7 * T100**-0.5
+ ge12 = ge21*g2/g1*exp(-b*E21)
+
+ A21 = 2.1e-4
+
+ Lambda = ( gH12+ge12*(ne/nH) )/( gH12+gH21+(ge12+ge21)*(ne/nH) + (A21/nH) )*nSiII*A21*E21
+
+ return Lambda
+
+
+################################################
+# OI line emission
+################################################
+
+def Lambda_OI(T,nH,ne,nOI):
+
+ T100 = T/100.
+ b = 1/(BOLTZMANN*T)
+
+ g1 = 2.0* (2.0) + 1.0
+ g2 = 2.0* (1.0) + 1.0
+ g3 = 2.0* (0.0) + 1.0
+ g4 = 2.0* (2.0) + 1.0
+ g5 = 2.0* (0.0) + 1.0
+
+ E21 = 3.144e-14
+ E32 = 1.365e-14
+ E43 = 3.140e-12
+ E53 = 3.560e-12
+
+ E54 = E53-E43
+
+ E31 = E32+E21
+ E41 = E43+E31
+ E42 = E43+E32
+ E51 = E54+E41
+ E52 = E54+E42
+
+ gH11 = 0.0
+ gH21 = 9.2e-11 * T100**0.67
+ gH31 = 4.3e-11 * T100**0.8
+ gH41 = 1e-12
+ gH51 = 1e-12
+ gH12 = gH21*g2/g1*exp(-b*E21)
+ gH22 = 0.0
+ gH32 = 1.1e-10 * T100**0.44
+ gH42 = 1e-12
+ gH52 = 1e-12
+ gH13 = 0.0# gH31*g3/g1*exp(-b*E31) # here, we get an odd results if not equal to zero !!!
+ gH23 = gH32*g3/g2*exp(-b*E32)
+ gH33 = 0.0
+ gH43 = 1e-12
+ gH53 = 1e-12
+ gH14 = gH41*g4/g1*exp(-b*E41)
+ gH24 = gH42*g4/g2*exp(-b*E42)
+ gH34 = gH43*g4/g3*exp(-b*E43)
+ gH44 = 0.0
+ gH54 = 0.0
+ gH15 = gH51*g5/g1*exp(-b*E51)
+ gH25 = gH52*g5/g2*exp(-b*E52)
+ gH35 = gH53*g5/g3*exp(-b*E53)
+ gH45 = gH54*g5/g4*exp(-b*E54)
+ gH55 = 0.0
+
+ ge11 = 0.0
+ ge21 = 1.40e-8
+ ge31 = 1.40e-8
+ ge41 = 1e-10
+ ge51 = 1e-10
+ ge12 = ge21*g2/g1*exp(-b*E21)
+ ge22 = 0.0
+ ge32 = 5.00e-9
+ ge42 = 1e-10
+ ge52 = 1e-10
+ ge13 = ge31*g3/g1*exp(-b*E31)
+ ge23 = ge32*g3/g2*exp(-b*E32)
+ ge33 = 0.0
+ ge43 = 1e-10
+ ge53 = 1e-10
+ ge14 = ge41*g4/g1*exp(-b*E41)
+ ge24 = ge42*g4/g2*exp(-b*E42)
+ ge34 = ge43*g4/g3*exp(-b*E43)
+ ge44 = 0.0
+ ge54 = 0.0
+ ge15 = ge51*g5/g1*exp(-b*E51)
+ ge25 = ge52*g5/g2*exp(-b*E52)
+ ge35 = ge53*g5/g3*exp(-b*E53)
+ ge45 = 0.0
+ ge55 = 0.0
+
+ A11 = 0.0
+ A21 = 8.9e-5
+ A31 = 1.0e-10
+ A41 = 6.3e-3
+ A51 = 2.9e-4
+ A12 = 0.0
+ A22 = 0.0
+ A32 = 1.7e-5
+ A42 = 2.1e-3
+ A52 = 7.3e-2
+ A13 = 0.0
+ A23 = 0.0
+ A33 = 0.0
+ A43 = 7.3e-7
+ A53 = 0.0
+ A14 = 0.0
+ A24 = 0.0
+ A34 = 0.0
+ A44 = 0.0
+ A54 = 1.2
+ A15 = 0.0
+ A25 = 0.0
+ A35 = 0.0
+ A45 = 0.0
+ A55 = 0.0
+
+ # equation
+ #
+ # A n = B
+
+ A = zeros([5,5],float)
+ B = zeros([5,],float)
+
+ B[0] = nOI
+
+
+ A[0,0] = 1.0
+ A[0,1] = 1.0
+ A[0,2] = 1.0
+ A[0,3] = 1.0
+ A[0,4] = 1.0
+
+ A[1,0] = nH*(gH11 + gH12 + gH13 + gH14 + gH15) + ne*(ge11 + ge12 + ge13 + ge14 + ge15)
+ A[1,1] = -nH*gH21 -ne*ge21 - A21
+ A[1,2] = -nH*gH31 -ne*ge31 - A31
+ A[1,3] = -nH*gH41 -ne*ge41 - A41
+ A[1,4] = -nH*gH51 -ne*ge51 - A51
+
+ A[2,0] = -nH*gH12 -ne*ge12 - A12
+ A[2,1] = nH*(gH21 + gH22 + gH23 + gH24 + gH25) + ne*(ge21 + ge22 + ge23 + ge24 + ge25)
+ A[2,2] = -nH*gH32 -ne*ge32 - A32
+ A[2,3] = -nH*gH42 -ne*ge42 - A42
+ A[2,4] = -nH*gH52 -ne*ge52 - A52
+
+ A[3,0] = -nH*gH13 -ne*ge13 - A13
+ A[3,1] = -nH*gH23 -ne*ge23 - A23
+ A[3,2] = nH*(gH31 + gH32 + gH33 + gH34 + gH35) + ne*(ge31 + ge32 + ge33 + ge34 + ge35)
+ A[3,3] = -nH*gH43 -ne*ge43 - A43
+ A[3,4] = -nH*gH53 -ne*ge53 - A53
+
+ A[4,0] = -nH*gH14 -ne*ge14 - A14
+ A[4,1] = -nH*gH24 -ne*ge24 - A24
+ A[4,2] = -nH*gH34 -ne*ge34 - A34
+ A[4,3] = nH*(gH41 + gH42 + gH43 + gH44 + gH45) + ne*(ge41 + ge42 + ge43 + ge44 + ge45)
+ A[4,4] = -nH*gH54 -ne*ge54 - A54
+
+ N = linalg.solve(A,B)
+
+ n1 = max(0,N[0])
+ n2 = max(0,N[1])
+ n3 = max(0,N[2])
+ n4 = max(0,N[3])
+ n5 = max(0,N[4])
+
+ Lambda = 0.0
+ Lambda = Lambda + n2*A21*E21
+ Lambda = Lambda + n3*A31*E31 + n3*A32*E32
+ Lambda = Lambda + n4*A41*E41 + n4*A42*E42 + n4*A43*E43
+ Lambda = Lambda + n5*A51*E51 + n5*A52*E52 + n5*A53*E53 + n5*A54*E54
+
+ return Lambda
+
+################################################
+# FeII line emission
+################################################
+
+def Lambda_FeII(T,nH,ne,nFeII):
+
+ T100 = T/100.
+ b = 1/(BOLTZMANN*T)
+
+ g1 = 2* (9.0/2.0) + 1
+ g2 = 2* (7.0/2.0) + 1
+ g3 = 2* (5.0/2.0) + 1
+ g4 = 2* (3.0/2.0) + 1
+ g5 = 2* (1.0/2.0) + 1
+
+ E21 = 7.64e-14
+ E32 = 5.62e-14
+ E43 = 3.87e-14
+ E54 = 2.27e-14
+
+ E31 = E32+E21
+ E41 = E43+E31
+ E42 = E43+E32
+ E51 = E54+E41
+ E52 = E54+E42
+ E53 = E54+E43
+
+ gH11 = 0.0
+ gH21 = 9.5e-10
+ gH31 = 5.7e-10
+ gH41 = 5.0e-10
+ gH51 = 5.0e-10
+ gH12 = gH21*g2/g1*exp(-b*E21)
+ gH22 = 0.0
+ gH32 = 4.7e-10
+ gH42 = 5.0e-10
+ gH52 = 5.0e-10
+ gH13 = gH31*g3/g1*exp(-b*E31)
+ gH23 = gH32*g3/g2*exp(-b*E32)
+ gH33 = 0.0
+ gH43 = 5.0e-10
+ gH53 = 5.0e-10
+ gH14 = gH41*g4/g1*exp(-b*E41)
+ gH24 = gH42*g4/g2*exp(-b*E42)
+ gH34 = gH43*g4/g3*exp(-b*E43)
+ gH44 = 0.0
+ gH54 = 5.0e-10
+ gH15 = gH51*g5/g1*exp(-b*E51)
+ gH25 = gH52*g5/g2*exp(-b*E52)
+ gH35 = gH53*g5/g3*exp(-b*E53)
+ gH45 = gH54*g5/g4*exp(-b*E54)
+ gH55 = 0.0
+
+ ge11 = 0.0
+ ge21 = 1.8e-6 * T100**-0.5
+ ge31 = 1.8e-6 * T100**-0.5
+ ge41 = 1.0e-5 * T**-0.5
+ ge51 = 1.0e-5 * T**-0.5
+ ge12 = ge21*g2/g1*exp(-b*E21)
+ ge22 = 0.0
+ ge32 = 8.7e-7 * T100**-0.5
+ ge42 = 1.0e-5 * T**-0.5
+ ge52 = 1.0e-5 * T**-0.5
+ ge13 = ge31*g3/g1*exp(-b*E31)
+ ge23 = ge32*g3/g2*exp(-b*E32)
+ ge33 = 0.0
+ ge43 = 1.0e-5 * T**-0.5
+ ge53 = 1.0e-5 * T**-0.5
+ ge14 = ge41*g4/g1*exp(-b*E41)
+ ge24 = ge42*g4/g2*exp(-b*E42)
+ ge34 = ge43*g4/g3*exp(-b*E43)
+ ge44 = 0.0
+ ge54 = 1.0e-5 * T**-0.5
+ ge15 = ge51*g5/g1*exp(-b*E51)
+ ge25 = ge52*g5/g2*exp(-b*E52)
+ ge35 = ge53*g5/g3*exp(-b*E53)
+ ge45 = ge54*g5/g4*exp(-b*E54)
+ ge55 = 0.0
+
+ A11 = 0.0
+ A21 = 2.13e-3
+ A31 = 1.50e-9
+ A41 = 0.0
+ A51 = 0.0
+ A12 = 0.0
+ A22 = 0.0
+ A32 = 1.57e-3
+ A42 = 0.0
+ A52 = 0.0
+ A13 = 0.0
+ A23 = 0.0
+ A33 = 0.0
+ A43 = 7.18e-4
+ A53 = 0.0
+ A14 = 0.0
+ A24 = 0.0
+ A34 = 0.0
+ A44 = 0.0
+ A54 = 1.88e-4
+ A15 = 0.0
+ A25 = 0.0
+ A35 = 0.0
+ A45 = 0.0
+ A55 = 0.0
+
+ # equation
+ #
+ # A n = B
+
+ A = zeros([5,5],float)
+ B = zeros([5,],float)
+
+ B[0] = nFeII
+
+
+ A[0,0] = 1.0
+ A[0,1] = 1.0
+ A[0,2] = 1.0
+ A[0,3] = 1.0
+ A[0,4] = 1.0
+
+ A[1,0] = nH*(gH11 + gH12 + gH13 + gH14 + gH15) + ne*(ge11 + ge12 + ge13 + ge14 + ge15)
+ A[1,1] = -nH*gH21 -ne*ge21 - A21
+ A[1,2] = -nH*gH31 -ne*ge31 - A31
+ A[1,3] = -nH*gH41 -ne*ge41 - A41
+ A[1,4] = -nH*gH51 -ne*ge51 - A51
+
+ A[2,0] = -nH*gH12 -ne*ge12 - A12
+ A[2,1] = nH*(gH21 + gH22 + gH23 + gH24 + gH25) + ne*(ge21 + ge22 + ge23 + ge24 + ge25)
+ A[2,2] = -nH*gH32 -ne*ge32 - A32
+ A[2,3] = -nH*gH42 -ne*ge42 - A42
+ A[2,4] = -nH*gH52 -ne*ge52 - A52
+
+ A[3,0] = -nH*gH13 -ne*ge13 - A13
+ A[3,1] = -nH*gH23 -ne*ge23 - A23
+ A[3,2] = nH*(gH31 + gH32 + gH33 + gH34 + gH35) + ne*(ge31 + ge32 + ge33 + ge34 + ge35)
+ A[3,3] = -nH*gH43 -ne*ge43 - A43
+ A[3,4] = -nH*gH53 -ne*ge53 - A53
+
+ A[4,0] = -nH*gH14 -ne*ge14 - A14
+ A[4,1] = -nH*gH24 -ne*ge24 - A24
+ A[4,2] = -nH*gH34 -ne*ge34 - A34
+ A[4,3] = nH*(gH41 + gH42 + gH43 + gH44 + gH45) + ne*(ge41 + ge42 + ge43 + ge44 + ge45)
+ A[4,4] = -nH*gH54 -ne*ge54 - A54
+
+ N = linalg.solve(A,B)
+
+ n1 = max(0,N[0])
+ n2 = max(0,N[1])
+ n3 = max(0,N[2])
+ n4 = max(0,N[3])
+ n5 = max(0,N[4])
+
+ Lambda = 0.0
+ Lambda = Lambda + n2*A21*E21
+ Lambda = Lambda + n3*A31*E31 + n3*A32*E32
+ Lambda = Lambda + n4*A41*E41 + n4*A42*E42 + n4*A43*E43
+ Lambda = Lambda + n5*A51*E51 + n5*A52*E52 + n5*A53*E53 + n5*A54*E54
+
+ return Lambda
+
+
+
+
+############################################################
+# charged particles recombinason on grains
+############################################################
+def Lambda_rec(T,nH,ne,XTne):
+
+ Lambda = 3.49e-30 * T**0.944*XTne**(0.735*T**(-0.068))*ne*nH
+ return Lambda
+
+
+
+############################################################
+#
+# heating
+#
+############################################################
+
+
+############################################################
+# photo-electric heating
+############################################################
+def Gamma_pe(T,nH,e,X):
+ Gamma = 1e-24 * e *X * nH
+ return Gamma
+
+
+
+
+############################################################
+#
+# other functions
+#
+############################################################
+
+
+def Lambda_total(nH,ne,nCII,nSiII,nOI,nFeII,X,T):
+ '''
+ Return the total cooling function, for a given X and temperature T.
+ '''
+
+ XTne = X*sqrt(T)/ne
+ e = heating_efficiency(T,XTne)
+
+ # cooling function
+ L_CII = Lambda_CII(T,nH,ne,nCII)
+ L_SiII = Lambda_SiII(T,nH,ne,nSiII)
+ L_OI = Lambda_OI(T,nH,ne,nOI)
+ L_FeII = Lambda_FeII(T,nH,ne,nFeII)
+
+ L_met = L_CII+L_SiII+L_FeII+L_CII
+
+ L_rec = Lambda_rec(T,nH,ne,XTne)
+ G_pe = Gamma_pe(T,nH,e,X)
+
+ Ltot = L_met+L_rec - G_pe
+
+ return Ltot
+
+
+
+def Equilibrium_Temperature(nH,ne,nCII,nSiII,nOI,nFeII,X):
+ '''
+ Compute the equilibrium temperature of the gas, for a given parameter set
+ '''
+
+ T_left = 1.
+ T_right = 1e5
+ T_maxe = 1.0
+ T_error = 10*T_maxe
+
+ L_left = Lambda_total(nH,ne,nCII,nSiII,nOI,nFeII,X,T_left)
+ L_right = Lambda_total(nH,ne,nCII,nSiII,nOI,nFeII,X,T_right)
+
+ if (L_left*L_right>0):
+ print "error, L_left,L_right have same sign (%g%g)"%(L_left,L_right)
+ return 1.0
+
+
+ while (T_error > 0.01):
+
+
+ T_mid = 0.5*(T_left+T_right)
+ L_mid = Lambda_total(nH,ne,nCII,nSiII,nOI,nFeII,X,T_mid)
+
+ if (L_mid*L_left > 0):
+ T_left = T_mid
+ L_left = L_mid
+ else:
+ T_right = T_mid
+ L_right = L_mid
+
+
+ T_error = fabs((T_right-T_left)/T_right)
+
+
+
+ return 0.5*(T_left+T_right)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PyCool/work/cooling_total/hclib.pyc b/PyCool/work/cooling_total/hclib.pyc
new file mode 100644
index 0000000..f83f974
Binary files /dev/null and b/PyCool/work/cooling_total/hclib.pyc differ
diff --git a/PyCool/work/cooling_total/m+05.dat b/PyCool/work/cooling_total/m+05.dat
new file mode 100644
index 0000000..35ea3fc
--- /dev/null
+++ b/PyCool/work/cooling_total/m+05.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.099 -25.650 -23.060 -11.640 11.370 1.532 2.386 8.012 2.166
+ 4.050 0.014 1.000 1.099 -24.270 -22.460 -11.590 10.830 1.737 2.386 8.533 2.143
+ 4.100 0.071 1.000 1.103 -22.980 -21.880 -11.510 10.290 2.055 2.486 9.092 2.117
+ 4.150 0.255 1.000 1.103 -22.260 -21.710 -11.400 10.170 2.666 2.486 10.360 1.831
+ 4.200 0.570 1.000 1.103 -21.800 -21.600 -11.260 10.110 3.686 2.486 12.180 1.486
+ 4.250 0.820 1.000 1.103 -21.640 -21.600 -11.150 10.160 4.755 2.486 13.830 1.293
+ 4.300 0.936 1.000 1.103 -21.610 -21.620 -11.070 10.240 5.655 2.487 15.080 1.220
+ 4.350 0.981 1.000 1.103 -21.570 -21.600 -11.010 10.270 6.487 2.487 16.150 1.193
+ 4.400 1.008 1.000 1.103 -21.480 -21.530 -10.960 10.240 7.371 2.487 17.220 1.178
+ 4.450 1.039 1.000 1.103 -21.360 -21.420 -10.900 10.190 8.393 2.487 18.370 1.161
+ 4.500 1.071 1.000 1.103 -21.220 -21.300 -10.850 10.110 9.559 2.487 19.610 1.144
+ 4.550 1.090 1.000 1.103 -21.090 -21.170 -10.790 10.040 10.820 2.487 20.860 1.134
+ 4.600 1.098 1.000 1.103 -20.970 -21.050 -10.740 9.969 12.190 2.487 22.140 1.130
+ 4.650 1.102 1.000 1.103 -20.860 -20.940 -10.690 9.911 13.690 2.487 23.470 1.128
+ 4.700 1.104 1.000 1.103 -20.750 -20.830 -10.640 9.852 15.380 2.487 24.870 1.127
+ 4.750 1.107 1.000 1.103 -20.650 -20.740 -10.590 9.803 17.280 2.487 26.360 1.125
+ 4.800 1.116 1.000 1.103 -20.570 -20.660 -10.540 9.776 19.460 2.487 27.980 1.121
+ 4.850 1.134 1.000 1.103 -20.500 -20.590 -10.480 9.763 22.020 2.487 29.760 1.112
+ 4.900 1.160 1.000 1.103 -20.430 -20.540 -10.430 9.753 25.000 2.487 31.710 1.099
+ 4.950 1.183 1.000 1.103 -20.390 -20.500 -10.370 9.772 28.330 2.487 33.750 1.088
+ 5.000 1.197 1.000 1.103 -20.390 -20.510 -10.320 9.827 31.970 2.487 35.860 1.082
+ 5.050 1.204 1.000 1.103 -20.420 -20.540 -10.270 9.909 35.990 2.487 38.040 1.078
+ 5.100 1.208 1.000 1.103 -20.420 -20.550 -10.220 9.961 40.440 2.487 40.330 1.076
+ 5.150 1.210 1.000 1.103 -20.400 -20.520 -10.170 9.992 45.420 2.487 42.740 1.075
+ 5.200 1.211 1.000 1.103 -20.370 -20.490 -10.120 10.010 50.990 2.487 45.280 1.075
+ 5.250 1.212 1.000 1.103 -20.350 -20.480 -10.070 10.040 57.240 2.487 47.980 1.074
+ 5.300 1.213 1.000 1.103 -20.340 -20.470 -10.020 10.080 64.260 2.487 50.830 1.074
+ 5.350 1.215 1.000 1.103 -20.340 -20.460 -9.969 10.130 72.140 2.487 53.860 1.073
+ 5.400 1.216 1.000 1.103 -20.370 -20.500 -9.919 10.210 81.000 2.487 57.070 1.072
+ 5.450 1.219 1.000 1.103 -20.510 -20.630 -9.868 10.400 90.970 2.487 60.480 1.071
+ 5.500 1.221 1.000 1.103 -20.730 -20.860 -9.818 10.680 102.200 2.487 64.090 1.070
+ 5.550 1.221 1.000 1.103 -20.930 -21.060 -9.768 10.930 114.700 2.487 67.910 1.070
+ 5.600 1.222 1.000 1.103 -21.050 -21.180 -9.717 11.100 128.700 2.487 71.940 1.070
+ 5.650 1.222 1.000 1.103 -21.090 -21.220 -9.667 11.190 144.400 2.487 76.210 1.069
+ 5.700 1.223 1.000 1.103 -21.090 -21.220 -9.617 11.240 162.100 2.487 80.730 1.069
+ 5.750 1.223 1.000 1.103 -21.090 -21.220 -9.567 11.290 181.900 2.487 85.520 1.069
+ 5.800 1.224 1.000 1.103 -21.140 -21.270 -9.517 11.390 204.100 2.487 90.600 1.069
+ 5.850 1.224 1.000 1.103 -21.240 -21.380 -9.467 11.540 229.100 2.487 95.980 1.069
+ 5.900 1.225 1.000 1.103 -21.320 -21.450 -9.417 11.670 257.100 2.487 101.700 1.068
+ 5.950 1.226 1.000 1.103 -21.340 -21.470 -9.367 11.740 288.500 2.487 107.700 1.068
+ 6.000 1.226 1.000 1.103 -21.350 -21.480 -9.317 11.800 323.800 2.487 114.100 1.068
+ 6.050 1.227 1.000 1.103 -21.350 -21.480 -9.266 11.850 363.400 2.487 120.900 1.067
+ 6.100 1.227 1.000 1.103 -21.340 -21.470 -9.216 11.890 407.900 2.487 128.100 1.067
+ 6.150 1.228 1.000 1.103 -21.330 -21.460 -9.166 11.930 457.900 2.487 135.700 1.067
+ 6.200 1.229 1.000 1.103 -21.320 -21.460 -9.116 11.970 513.900 2.487 143.800 1.066
+ 6.250 1.230 1.000 1.103 -21.350 -21.490 -9.066 12.050 576.800 2.487 152.300 1.066
+ 6.300 1.231 1.000 1.103 -21.460 -21.590 -9.016 12.210 647.500 2.487 161.400 1.066
+ 6.350 1.232 1.000 1.103 -21.590 -21.730 -8.966 12.390 726.800 2.487 171.000 1.065
+ 6.400 1.233 1.000 1.103 -21.710 -21.850 -8.915 12.560 815.800 2.487 181.100 1.065
+ 6.450 1.234 1.000 1.103 -21.800 -21.940 -8.865 12.700 915.700 2.487 191.900 1.064
+ 6.500 1.234 1.000 1.103 -21.860 -22.000 -8.815 12.810 1027.700 2.487 203.300 1.064
+ 6.550 1.235 1.000 1.103 -21.900 -22.030 -8.765 12.900 1153.300 2.487 215.400 1.064
+ 6.600 1.235 1.000 1.103 -21.930 -22.070 -8.715 12.980 1294.300 2.487 228.100 1.064
+ 6.650 1.236 1.000 1.103 -21.960 -22.100 -8.665 13.060 1452.500 2.487 241.700 1.063
+ 6.700 1.236 1.000 1.103 -22.000 -22.140 -8.615 13.150 1629.900 2.487 256.000 1.063
+ 6.750 1.236 1.000 1.103 -22.040 -22.170 -8.565 13.240 1829.000 2.487 271.200 1.063
+ 6.800 1.237 1.000 1.103 -22.060 -22.200 -8.515 13.310 2052.300 2.487 287.300 1.063
+ 6.850 1.237 1.000 1.103 -22.060 -22.200 -8.465 13.360 2303.000 2.487 304.300 1.063
+ 6.900 1.237 1.000 1.103 -22.050 -22.180 -8.415 13.400 2584.200 2.487 322.400 1.063
+ 6.950 1.237 1.000 1.103 -22.040 -22.170 -8.365 13.440 2899.700 2.487 341.500 1.063
+ 7.000 1.237 1.000 1.103 -22.040 -22.170 -8.315 13.490 3253.800 2.487 361.700 1.063
+ 7.050 1.237 1.000 1.103 -22.060 -22.200 -8.265 13.560 3651.200 2.487 383.200 1.063
+ 7.100 1.238 1.000 1.103 -22.110 -22.240 -8.214 13.660 4097.000 2.487 405.900 1.063
+ 7.150 1.238 1.000 1.103 -22.160 -22.300 -8.164 13.760 4597.200 2.487 430.000 1.062
+ 7.200 1.238 1.000 1.103 -22.210 -22.350 -8.114 13.860 5158.400 2.487 455.400 1.062
+ 7.250 1.238 1.000 1.103 -22.260 -22.400 -8.064 13.960 5788.000 2.487 482.400 1.062
+ 7.300 1.238 1.000 1.103 -22.300 -22.430 -8.014 14.050 6494.400 2.487 511.000 1.062
+ 7.350 1.238 1.000 1.103 -22.320 -22.460 -7.964 14.120 7287.000 2.487 541.300 1.062
+ 7.400 1.238 1.000 1.103 -22.350 -22.480 -7.914 14.200 8176.300 2.487 573.400 1.062
+ 7.450 1.238 1.000 1.103 -22.360 -22.490 -7.864 14.260 9174.000 2.487 607.400 1.062
+ 7.500 1.238 1.000 1.103 -22.370 -22.500 -7.814 14.320 10293.600 2.487 643.400 1.062
+ 7.550 1.238 1.000 1.103 -22.370 -22.510 -7.764 14.370 11549.700 2.487 681.500 1.062
+ 7.600 1.238 1.000 1.103 -22.370 -22.510 -7.714 14.420 12959.100 2.487 721.900 1.062
+ 7.650 1.238 1.000 1.103 -22.370 -22.510 -7.664 14.470 14540.500 2.487 764.700 1.062
+ 7.700 1.238 1.000 1.103 -22.370 -22.500 -7.614 14.520 16314.800 2.487 810.000 1.062
+ 7.750 1.238 1.000 1.103 -22.360 -22.490 -7.564 14.560 18305.700 2.487 858.000 1.062
+ 7.800 1.238 1.000 1.103 -22.350 -22.480 -7.514 14.600 20539.600 2.487 908.800 1.062
+ 7.850 1.238 1.000 1.103 -22.340 -22.470 -7.464 14.640 23046.000 2.487 962.700 1.062
+ 7.900 1.238 1.000 1.103 -22.330 -22.460 -7.414 14.680 25858.300 2.487 1019.700 1.062
+ 7.950 1.238 1.000 1.103 -22.310 -22.450 -7.364 14.710 29013.800 2.487 1080.100 1.062
+ 8.000 1.238 1.000 1.103 -22.300 -22.440 -7.314 14.750 32554.300 2.487 1144.200 1.062
+ 8.050 1.238 1.000 1.103 -22.290 -22.420 -7.264 14.790 36526.900 2.487 1211.900 1.062
+ 8.100 1.238 1.000 1.103 -22.270 -22.410 -7.214 14.820 40984.200 2.487 1283.800 1.062
+ 8.150 1.238 1.000 1.103 -22.260 -22.400 -7.164 14.860 45985.400 2.487 1359.800 1.062
+ 8.200 1.238 1.000 1.103 -22.250 -22.380 -7.114 14.900 51596.800 2.487 1440.400 1.062
+ 8.250 1.238 1.000 1.103 -22.230 -22.370 -7.064 14.930 57892.900 2.487 1525.800 1.062
+ 8.300 1.238 1.000 1.103 -22.210 -22.350 -7.014 14.960 64957.300 2.487 1616.200 1.062
+ 8.350 1.239 1.000 1.103 -22.200 -22.330 -6.964 15.000 72883.600 2.487 1712.000 1.062
+ 8.400 1.239 1.000 1.103 -22.180 -22.320 -6.914 15.030 81777.000 2.487 1813.400 1.062
+ 8.450 1.239 1.000 1.103 -22.160 -22.300 -6.864 15.060 91755.600 2.487 1920.900 1.062
+ 8.500 1.239 1.000 1.103 -22.140 -22.280 -6.814 15.090 102952.000 2.487 2034.700 1.062
diff --git a/PyCool/work/cooling_total/m-00.dat b/PyCool/work/cooling_total/m-00.dat
new file mode 100644
index 0000000..7833bb4
--- /dev/null
+++ b/PyCool/work/cooling_total/m-00.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.099 -25.650 -23.060 -11.640 11.370 1.532 2.386 8.012 2.166
+ 4.050 0.014 1.000 1.099 -24.270 -22.460 -11.590 10.830 1.737 2.386 8.533 2.143
+ 4.100 0.070 1.000 1.099 -23.280 -22.170 -11.520 10.580 2.048 2.386 9.264 2.040
+ 4.150 0.253 1.000 1.099 -22.470 -21.920 -11.400 10.380 2.657 2.386 10.550 1.764
+ 4.200 0.568 1.000 1.099 -21.990 -21.790 -11.260 10.300 3.674 2.387 12.410 1.431
+ 4.250 0.818 1.000 1.099 -21.840 -21.800 -11.150 10.360 4.740 2.387 14.090 1.245
+ 4.300 0.932 1.000 1.099 -21.850 -21.860 -11.080 10.480 5.637 2.387 15.370 1.175
+ 4.350 0.978 1.000 1.099 -21.870 -21.900 -11.020 10.570 6.467 2.387 16.460 1.149
+ 4.400 1.004 1.000 1.099 -21.840 -21.880 -10.960 10.600 7.347 2.387 17.540 1.135
+ 4.450 1.035 1.000 1.099 -21.770 -21.820 -10.900 10.590 8.366 2.387 18.720 1.118
+ 4.500 1.067 1.000 1.099 -21.660 -21.730 -10.850 10.550 9.528 2.387 19.980 1.102
+ 4.550 1.086 1.000 1.099 -21.560 -21.630 -10.790 10.500 10.780 2.387 21.250 1.092
+ 4.600 1.094 1.000 1.099 -21.450 -21.530 -10.740 10.450 12.140 2.387 22.560 1.088
+ 4.650 1.098 1.000 1.099 -21.340 -21.420 -10.690 10.390 13.650 2.387 23.910 1.087
+ 4.700 1.100 1.000 1.099 -21.240 -21.320 -10.640 10.340 15.320 2.387 25.340 1.086
+ 4.750 1.102 1.000 1.099 -21.140 -21.220 -10.590 10.290 17.220 2.387 26.860 1.084
+ 4.800 1.110 1.000 1.099 -21.050 -21.140 -10.540 10.250 19.380 2.387 28.500 1.080
+ 4.850 1.128 1.000 1.099 -20.970 -21.070 -10.490 10.230 21.920 2.387 30.310 1.072
+ 4.900 1.154 1.000 1.099 -20.910 -21.010 -10.430 10.230 24.890 2.387 32.290 1.059
+ 4.950 1.176 1.000 1.099 -20.870 -20.980 -10.380 10.250 28.190 2.387 34.370 1.049
+ 5.000 1.188 1.000 1.099 -20.870 -20.990 -10.320 10.300 31.810 2.387 36.500 1.043
+ 5.050 1.195 1.000 1.099 -20.900 -21.020 -10.270 10.380 35.790 2.387 38.720 1.041
+ 5.100 1.198 1.000 1.099 -20.910 -21.030 -10.220 10.450 40.210 2.387 41.040 1.039
+ 5.150 1.199 1.000 1.099 -20.890 -21.010 -10.170 10.480 45.140 2.387 43.490 1.039
+ 5.200 1.200 1.000 1.099 -20.860 -20.980 -10.120 10.500 50.670 2.387 46.070 1.038
+ 5.250 1.201 1.000 1.099 -20.850 -20.970 -10.070 10.540 56.870 2.387 48.810 1.038
+ 5.300 1.201 1.000 1.099 -20.840 -20.960 -10.020 10.580 63.820 2.387 51.710 1.038
+ 5.350 1.201 1.000 1.099 -20.840 -20.960 -9.972 10.630 71.620 2.387 54.780 1.038
+ 5.400 1.202 1.000 1.099 -20.870 -20.990 -9.922 10.710 80.380 2.387 58.030 1.037
+ 5.450 1.203 1.000 1.099 -21.010 -21.130 -9.872 10.900 90.220 2.387 61.480 1.037
+ 5.500 1.203 1.000 1.099 -21.230 -21.350 -9.822 11.170 101.200 2.387 65.130 1.037
+ 5.550 1.204 1.000 1.099 -21.430 -21.550 -9.772 11.420 113.600 2.387 68.990 1.037
+ 5.600 1.204 1.000 1.099 -21.540 -21.660 -9.722 11.580 127.500 2.387 73.080 1.036
+ 5.650 1.204 1.000 1.099 -21.580 -21.710 -9.672 11.670 143.100 2.387 77.410 1.036
+ 5.700 1.204 1.000 1.099 -21.590 -21.710 -9.622 11.730 160.500 2.387 82.000 1.036
+ 5.750 1.204 1.000 1.099 -21.590 -21.710 -9.572 11.780 180.100 2.387 86.870 1.036
+ 5.800 1.204 1.000 1.099 -21.640 -21.760 -9.522 11.880 202.100 2.387 92.020 1.036
+ 5.850 1.205 1.000 1.099 -21.740 -21.860 -9.471 12.030 226.800 2.387 97.470 1.036
+ 5.900 1.205 1.000 1.099 -21.810 -21.930 -9.421 12.150 254.500 2.387 103.300 1.036
+ 5.950 1.205 1.000 1.099 -21.830 -21.950 -9.371 12.220 285.600 2.387 109.400 1.036
+ 6.000 1.205 1.000 1.099 -21.840 -21.960 -9.321 12.280 320.400 2.387 115.900 1.036
+ 6.050 1.205 1.000 1.099 -21.840 -21.960 -9.271 12.330 359.600 2.387 122.700 1.036
+ 6.100 1.206 1.000 1.099 -21.830 -21.960 -9.221 12.370 403.500 2.387 130.000 1.036
+ 6.150 1.206 1.000 1.099 -21.820 -21.950 -9.171 12.410 452.800 2.387 137.700 1.036
+ 6.200 1.206 1.000 1.099 -21.820 -21.940 -9.121 12.460 508.100 2.387 145.900 1.035
+ 6.250 1.206 1.000 1.099 -21.850 -21.970 -9.071 12.540 570.100 2.387 154.500 1.035
+ 6.300 1.207 1.000 1.099 -21.950 -22.070 -9.021 12.690 639.800 2.387 163.700 1.035
+ 6.350 1.207 1.000 1.099 -22.080 -22.200 -8.971 12.870 717.900 2.387 173.400 1.035
+ 6.400 1.207 1.000 1.099 -22.190 -22.310 -8.921 13.030 805.600 2.387 183.700 1.035
+ 6.450 1.208 1.000 1.099 -22.270 -22.390 -8.871 13.160 904.000 2.387 194.600 1.035
+ 6.500 1.208 1.000 1.099 -22.320 -22.440 -8.821 13.260 1014.500 2.387 206.100 1.035
+ 6.550 1.208 1.000 1.099 -22.350 -22.480 -8.771 13.340 1138.300 2.387 218.400 1.035
+ 6.600 1.208 1.000 1.099 -22.380 -22.500 -8.721 13.420 1277.300 2.387 231.300 1.035
+ 6.650 1.208 1.000 1.099 -22.410 -22.530 -8.671 13.500 1433.200 2.387 245.000 1.034
+ 6.700 1.208 1.000 1.099 -22.440 -22.560 -8.621 13.580 1608.200 2.387 259.600 1.034
+ 6.750 1.208 1.000 1.099 -22.460 -22.590 -8.571 13.650 1804.400 2.387 274.900 1.034
+ 6.800 1.208 1.000 1.099 -22.480 -22.600 -8.521 13.720 2024.700 2.387 291.200 1.034
+ 6.850 1.209 1.000 1.099 -22.480 -22.600 -8.471 13.770 2271.800 2.387 308.500 1.034
+ 6.900 1.209 1.000 1.099 -22.460 -22.590 -8.421 13.800 2549.100 2.387 326.800 1.034
+ 6.950 1.209 1.000 1.099 -22.450 -22.570 -8.371 13.840 2860.200 2.387 346.100 1.034
+ 7.000 1.209 1.000 1.099 -22.450 -22.570 -8.321 13.890 3209.200 2.387 366.700 1.034
+ 7.050 1.209 1.000 1.099 -22.460 -22.590 -8.271 13.950 3600.900 2.387 388.400 1.034
+ 7.100 1.209 1.000 1.099 -22.490 -22.620 -8.221 14.030 4040.400 2.387 411.400 1.034
+ 7.150 1.209 1.000 1.099 -22.530 -22.650 -8.171 14.120 4533.500 2.387 435.800 1.034
+ 7.200 1.209 1.000 1.099 -22.560 -22.680 -8.121 14.200 5086.800 2.387 461.600 1.034
+ 7.250 1.209 1.000 1.099 -22.580 -22.700 -8.071 14.270 5707.500 2.387 489.000 1.034
+ 7.300 1.209 1.000 1.099 -22.600 -22.720 -8.021 14.340 6404.000 2.387 518.000 1.034
+ 7.350 1.209 1.000 1.099 -22.610 -22.730 -7.971 14.400 7185.400 2.387 548.600 1.034
+ 7.400 1.209 1.000 1.099 -22.610 -22.730 -7.921 14.450 8062.200 2.387 581.200 1.034
+ 7.450 1.209 1.000 1.099 -22.610 -22.730 -7.871 14.500 9046.000 2.387 615.600 1.034
+ 7.500 1.209 1.000 1.099 -22.600 -22.730 -7.821 14.540 10149.800 2.387 652.100 1.034
+ 7.550 1.209 1.000 1.099 -22.600 -22.720 -7.771 14.590 11388.300 2.387 690.700 1.034
+ 7.600 1.209 1.000 1.099 -22.590 -22.710 -7.721 14.630 12777.900 2.387 731.600 1.034
+ 7.650 1.209 1.000 1.099 -22.570 -22.700 -7.671 14.660 14337.100 2.387 775.000 1.034
+ 7.700 1.209 1.000 1.099 -22.560 -22.680 -7.621 14.700 16086.600 2.387 820.900 1.034
+ 7.750 1.209 1.000 1.099 -22.540 -22.670 -7.571 14.730 18049.500 2.387 869.600 1.034
+ 7.800 1.209 1.000 1.099 -22.530 -22.650 -7.521 14.770 20251.900 2.387 921.100 1.034
+ 7.850 1.209 1.000 1.099 -22.510 -22.640 -7.471 14.800 22723.100 2.387 975.700 1.034
+ 7.900 1.209 1.000 1.099 -22.490 -22.620 -7.421 14.830 25495.800 2.387 1033.500 1.034
+ 7.950 1.209 1.000 1.099 -22.480 -22.600 -7.371 14.870 28606.900 2.387 1094.700 1.034
+ 8.000 1.209 1.000 1.099 -22.460 -22.580 -7.321 14.900 32097.600 2.387 1159.600 1.034
+ 8.050 1.209 1.000 1.099 -22.440 -22.560 -7.271 14.930 36014.200 2.387 1228.300 1.034
+ 8.100 1.209 1.000 1.099 -22.420 -22.540 -7.221 14.960 40408.700 2.387 1301.100 1.034
+ 8.150 1.209 1.000 1.099 -22.400 -22.530 -7.171 14.990 45339.400 2.387 1378.200 1.034
+ 8.200 1.209 1.000 1.099 -22.380 -22.510 -7.121 15.020 50871.700 2.387 1459.800 1.034
+ 8.250 1.209 1.000 1.099 -22.360 -22.490 -7.071 15.050 57079.100 2.387 1546.300 1.034
+ 8.300 1.209 1.000 1.099 -22.340 -22.470 -7.021 15.080 64044.000 2.387 1638.000 1.034
+ 8.350 1.209 1.000 1.099 -22.320 -22.450 -6.971 15.110 71858.600 2.387 1735.000 1.034
+ 8.400 1.209 1.000 1.099 -22.300 -22.430 -6.921 15.140 80626.800 2.387 1837.800 1.034
+ 8.450 1.209 1.000 1.099 -22.280 -22.400 -6.871 15.170 90464.800 2.387 1946.700 1.034
+ 8.500 1.209 1.000 1.099 -22.260 -22.380 -6.821 15.200 101503.000 2.387 2062.100 1.034
diff --git a/PyCool/work/cooling_total/m-05.dat b/PyCool/work/cooling_total/m-05.dat
new file mode 100644
index 0000000..fb8300b
--- /dev/null
+++ b/PyCool/work/cooling_total/m-05.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.080 -25.830 -23.220 -11.650 11.540 1.505 2.239 8.198 2.069
+ 4.050 0.014 1.000 1.080 -24.490 -22.680 -11.590 11.040 1.707 2.239 8.732 2.046
+ 4.100 0.070 1.000 1.080 -23.420 -22.300 -11.520 10.720 2.014 2.239 9.483 1.947
+ 4.150 0.253 1.000 1.080 -22.560 -22.000 -11.410 10.460 2.619 2.240 10.810 1.680
+ 4.200 0.567 1.000 1.080 -22.070 -21.850 -11.270 10.370 3.631 2.240 12.730 1.360
+ 4.250 0.816 1.000 1.080 -21.920 -21.860 -11.160 10.430 4.689 2.240 14.470 1.181
+ 4.300 0.932 1.000 1.080 -21.940 -21.940 -11.080 10.560 5.582 2.240 15.780 1.113
+ 4.350 0.977 1.000 1.080 -22.000 -22.020 -11.020 10.690 6.403 2.240 16.910 1.089
+ 4.400 1.001 1.000 1.080 -22.020 -22.060 -10.970 10.770 7.269 2.240 18.010 1.076
+ 4.450 1.027 1.000 1.080 -22.000 -22.050 -10.910 10.810 8.259 2.240 19.200 1.063
+ 4.500 1.054 1.000 1.080 -21.940 -22.000 -10.850 10.810 9.383 2.240 20.470 1.050
+ 4.550 1.069 1.000 1.080 -21.870 -21.930 -10.800 10.800 10.610 2.240 21.760 1.042
+ 4.600 1.076 1.000 1.080 -21.780 -21.850 -10.750 10.760 11.940 2.240 23.080 1.039
+ 4.650 1.079 1.000 1.080 -21.690 -21.750 -10.700 10.720 13.410 2.240 24.460 1.038
+ 4.700 1.080 1.000 1.080 -21.590 -21.660 -10.650 10.670 15.050 2.240 25.920 1.037
+ 4.750 1.082 1.000 1.080 -21.500 -21.570 -10.600 10.630 16.910 2.240 27.470 1.036
+ 4.800 1.088 1.000 1.080 -21.410 -21.480 -10.550 10.600 19.030 2.240 29.140 1.033
+ 4.850 1.103 1.000 1.080 -21.330 -21.410 -10.490 10.570 21.490 2.240 30.970 1.026
+ 4.900 1.124 1.000 1.080 -21.270 -21.350 -10.440 10.570 24.340 2.240 32.960 1.016
+ 4.950 1.142 1.000 1.080 -21.230 -21.320 -10.390 10.590 27.530 2.240 35.060 1.008
+ 5.000 1.152 1.000 1.080 -21.220 -21.320 -10.340 10.630 31.040 2.240 37.220 1.004
+ 5.050 1.157 1.000 1.080 -21.230 -21.330 -10.280 10.690 34.900 2.240 39.470 1.002
+ 5.100 1.159 1.000 1.080 -21.220 -21.320 -10.230 10.730 39.200 2.240 41.830 1.001
+ 5.150 1.160 1.000 1.080 -21.190 -21.290 -10.180 10.750 44.000 2.240 44.320 1.000
+ 5.200 1.161 1.000 1.080 -21.160 -21.260 -10.130 10.770 49.380 2.240 46.950 1.000
+ 5.250 1.161 1.000 1.080 -21.140 -21.230 -10.080 10.800 55.420 2.240 49.740 1.000
+ 5.300 1.161 1.000 1.080 -21.120 -21.210 -10.030 10.830 62.190 2.240 52.690 0.999
+ 5.350 1.162 1.000 1.080 -21.100 -21.200 -9.983 10.860 69.790 2.240 55.810 0.999
+ 5.400 1.162 1.000 1.080 -21.140 -21.230 -9.933 10.950 78.310 2.240 59.120 0.999
+ 5.450 1.162 1.000 1.080 -21.270 -21.370 -9.883 11.130 87.880 2.240 62.630 0.999
+ 5.500 1.163 1.000 1.080 -21.500 -21.600 -9.833 11.420 98.620 2.240 66.350 0.999
+ 5.550 1.163 1.000 1.080 -21.700 -21.790 -9.783 11.670 110.700 2.240 70.280 0.999
+ 5.600 1.163 1.000 1.080 -21.810 -21.910 -9.733 11.830 124.200 2.240 74.450 0.999
+ 5.650 1.163 1.000 1.080 -21.850 -21.950 -9.683 11.920 139.300 2.240 78.860 0.999
+ 5.700 1.163 1.000 1.080 -21.860 -21.960 -9.633 11.980 156.300 2.240 83.530 0.999
+ 5.750 1.163 1.000 1.080 -21.870 -21.970 -9.583 12.040 175.400 2.240 88.480 0.999
+ 5.800 1.163 1.000 1.080 -21.930 -22.030 -9.533 12.150 196.800 2.240 93.730 0.999
+ 5.850 1.163 1.000 1.080 -22.050 -22.150 -9.483 12.320 220.900 2.240 99.290 0.999
+ 5.900 1.163 1.000 1.080 -22.150 -22.240 -9.433 12.470 247.800 2.240 105.200 0.999
+ 5.950 1.164 1.000 1.080 -22.190 -22.290 -9.383 12.560 278.100 2.240 111.400 0.999
+ 6.000 1.164 1.000 1.080 -22.220 -22.320 -9.333 12.640 312.000 2.240 118.000 0.999
+ 6.050 1.164 1.000 1.080 -22.240 -22.340 -9.283 12.710 350.100 2.240 125.000 0.998
+ 6.100 1.164 1.000 1.080 -22.240 -22.340 -9.233 12.760 392.800 2.240 132.400 0.998
+ 6.150 1.164 1.000 1.080 -22.240 -22.340 -9.183 12.810 440.800 2.240 140.300 0.998
+ 6.200 1.164 1.000 1.080 -22.230 -22.330 -9.133 12.850 494.600 2.240 148.600 0.998
+ 6.250 1.164 1.000 1.080 -22.260 -22.360 -9.083 12.930 554.900 2.240 157.400 0.998
+ 6.300 1.164 1.000 1.080 -22.340 -22.440 -9.033 13.060 622.700 2.240 166.700 0.998
+ 6.350 1.164 1.000 1.080 -22.440 -22.540 -8.983 13.210 698.700 2.240 176.600 0.998
+ 6.400 1.164 1.000 1.080 -22.530 -22.630 -8.933 13.350 784.000 2.240 187.100 0.998
+ 6.450 1.165 1.000 1.080 -22.590 -22.690 -8.883 13.460 879.700 2.240 198.200 0.998
+ 6.500 1.165 1.000 1.080 -22.640 -22.740 -8.833 13.560 987.100 2.240 209.900 0.998
+ 6.550 1.165 1.000 1.080 -22.660 -22.760 -8.783 13.630 1107.600 2.240 222.300 0.998
+ 6.600 1.165 1.000 1.080 -22.690 -22.790 -8.733 13.710 1242.800 2.240 235.500 0.998
+ 6.650 1.165 1.000 1.080 -22.710 -22.810 -8.683 13.780 1394.500 2.240 249.500 0.998
+ 6.700 1.165 1.000 1.080 -22.730 -22.830 -8.633 13.850 1564.700 2.240 264.300 0.998
+ 6.750 1.165 1.000 1.080 -22.750 -22.850 -8.583 13.920 1755.600 2.240 279.900 0.998
+ 6.800 1.165 1.000 1.080 -22.760 -22.860 -8.533 13.980 1969.900 2.240 296.500 0.998
+ 6.850 1.165 1.000 1.080 -22.750 -22.850 -8.483 14.020 2210.300 2.240 314.100 0.998
+ 6.900 1.165 1.000 1.080 -22.740 -22.840 -8.433 14.060 2480.000 2.240 332.700 0.998
+ 6.950 1.165 1.000 1.080 -22.740 -22.840 -8.383 14.110 2782.600 2.240 352.400 0.998
+ 7.000 1.165 1.000 1.080 -22.730 -22.830 -8.333 14.150 3122.200 2.240 373.300 0.998
+ 7.050 1.165 1.000 1.080 -22.730 -22.830 -8.283 14.200 3503.200 2.240 395.400 0.998
+ 7.100 1.165 1.000 1.080 -22.750 -22.850 -8.233 14.270 3930.700 2.240 418.900 0.998
+ 7.150 1.165 1.000 1.080 -22.760 -22.860 -8.183 14.330 4410.400 2.240 443.700 0.998
+ 7.200 1.165 1.000 1.080 -22.770 -22.870 -8.133 14.390 4948.500 2.240 470.000 0.998
+ 7.250 1.165 1.000 1.080 -22.770 -22.870 -8.083 14.440 5552.400 2.240 497.800 0.998
+ 7.300 1.165 1.000 1.080 -22.770 -22.870 -8.033 14.490 6229.900 2.240 527.300 0.998
+ 7.350 1.165 1.000 1.080 -22.760 -22.860 -7.983 14.530 6990.000 2.240 558.600 0.998
+ 7.400 1.165 1.000 1.080 -22.750 -22.850 -7.933 14.570 7843.000 2.240 591.700 0.998
+ 7.450 1.165 1.000 1.080 -22.740 -22.840 -7.883 14.610 8800.000 2.240 626.700 0.998
+ 7.500 1.165 1.000 1.080 -22.730 -22.830 -7.833 14.650 9873.800 2.240 663.900 0.998
+ 7.550 1.165 1.000 1.080 -22.720 -22.820 -7.783 14.690 11078.600 2.240 703.200 0.998
+ 7.600 1.165 1.000 1.080 -22.700 -22.800 -7.733 14.720 12430.400 2.240 744.900 0.998
+ 7.650 1.165 1.000 1.080 -22.680 -22.780 -7.683 14.750 13947.100 2.240 789.000 0.998
+ 7.700 1.165 1.000 1.080 -22.660 -22.760 -7.633 14.780 15648.900 2.240 835.800 0.998
+ 7.750 1.165 1.000 1.080 -22.650 -22.750 -7.583 14.820 17558.400 2.240 885.300 0.998
+ 7.800 1.165 1.000 1.080 -22.630 -22.730 -7.533 14.850 19700.900 2.240 937.700 0.998
+ 7.850 1.165 1.000 1.080 -22.610 -22.710 -7.483 14.880 22104.800 2.240 993.300 0.998
+ 7.900 1.165 1.000 1.080 -22.590 -22.690 -7.433 14.910 24802.000 2.240 1052.200 0.998
+ 7.950 1.165 1.000 1.080 -22.570 -22.670 -7.383 14.940 27828.300 2.240 1114.500 0.998
+ 8.000 1.165 1.000 1.080 -22.550 -22.650 -7.333 14.970 31223.900 2.240 1180.500 0.998
+ 8.050 1.165 1.000 1.080 -22.530 -22.630 -7.283 15.000 35033.900 2.240 1250.500 0.998
+ 8.100 1.165 1.000 1.080 -22.500 -22.600 -7.233 15.020 39308.700 2.240 1324.600 0.998
+ 8.150 1.165 1.000 1.080 -22.480 -22.580 -7.183 15.050 44105.100 2.240 1403.100 0.998
+ 8.200 1.165 1.000 1.080 -22.460 -22.560 -7.133 15.080 49486.800 2.240 1486.200 0.998
+ 8.250 1.165 1.000 1.080 -22.440 -22.540 -7.083 15.110 55525.100 2.240 1574.300 0.998
+ 8.300 1.165 1.000 1.080 -22.420 -22.520 -7.033 15.140 62300.200 2.240 1667.600 0.998
+ 8.350 1.165 1.000 1.080 -22.400 -22.500 -6.983 15.170 69902.000 2.240 1766.400 0.998
+ 8.400 1.165 1.000 1.080 -22.380 -22.480 -6.933 15.200 78431.400 2.240 1871.000 0.998
+ 8.450 1.165 1.000 1.080 -22.350 -22.450 -6.883 15.220 88001.500 2.240 1981.900 0.998
+ 8.500 1.165 1.000 1.080 -22.330 -22.430 -6.833 15.250 98739.400 2.240 2099.300 0.998
diff --git a/PyCool/work/cooling_total/m-10.dat b/PyCool/work/cooling_total/m-10.dat
new file mode 100644
index 0000000..c264440
--- /dev/null
+++ b/PyCool/work/cooling_total/m-10.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -25.940 -23.310 -11.660 11.630 1.483 2.125 8.354 1.992
+ 4.050 0.014 1.000 1.064 -24.610 -22.780 -11.600 11.150 1.683 2.125 8.898 1.971
+ 4.100 0.070 1.000 1.064 -23.490 -22.360 -11.530 10.780 1.986 2.125 9.667 1.873
+ 4.150 0.253 1.000 1.064 -22.600 -22.030 -11.410 10.500 2.587 2.125 11.030 1.613
+ 4.200 0.567 1.000 1.064 -22.100 -21.880 -11.270 10.400 3.595 2.126 13.000 1.303
+ 4.250 0.816 1.000 1.064 -21.950 -21.890 -11.160 10.450 4.650 2.126 14.790 1.130
+ 4.300 0.931 1.000 1.064 -21.990 -21.980 -11.080 10.600 5.537 2.126 16.140 1.065
+ 4.350 0.976 1.000 1.064 -22.070 -22.080 -11.020 10.750 6.351 2.126 17.280 1.042
+ 4.400 0.998 1.000 1.064 -22.130 -22.160 -10.970 10.870 7.205 2.126 18.410 1.031
+ 4.450 1.021 1.000 1.064 -22.150 -22.190 -10.910 10.950 8.172 2.126 19.610 1.020
+ 4.500 1.043 1.000 1.064 -22.150 -22.190 -10.860 11.010 9.265 2.126 20.880 1.009
+ 4.550 1.055 1.000 1.064 -22.110 -22.160 -10.810 11.030 10.460 2.126 22.180 1.003
+ 4.600 1.061 1.000 1.064 -22.060 -22.110 -10.760 11.030 11.760 2.126 23.520 1.000
+ 4.650 1.063 1.000 1.064 -21.980 -22.040 -10.710 11.000 13.210 2.126 24.930 0.999
+ 4.700 1.064 1.000 1.064 -21.900 -21.950 -10.660 10.970 14.830 2.126 26.410 0.999
+ 4.750 1.066 1.000 1.064 -21.810 -21.860 -10.610 10.930 16.660 2.126 27.990 0.998
+ 4.800 1.071 1.000 1.064 -21.720 -21.770 -10.550 10.890 18.730 2.126 29.680 0.996
+ 4.850 1.082 1.000 1.064 -21.630 -21.690 -10.500 10.860 21.130 2.126 31.530 0.990
+ 4.900 1.099 1.000 1.064 -21.570 -21.640 -10.450 10.850 23.900 2.126 33.530 0.983
+ 4.950 1.114 1.000 1.064 -21.540 -21.610 -10.400 10.880 26.990 2.126 35.630 0.976
+ 5.000 1.122 1.000 1.064 -21.530 -21.600 -10.340 10.920 30.400 2.126 37.810 0.973
+ 5.050 1.126 1.000 1.064 -21.520 -21.600 -10.290 10.960 34.170 2.126 40.090 0.971
+ 5.100 1.127 1.000 1.064 -21.500 -21.580 -10.240 11.000 38.370 2.126 42.480 0.970
+ 5.150 1.128 1.000 1.064 -21.470 -21.550 -10.190 11.020 43.070 2.126 45.010 0.970
+ 5.200 1.129 1.000 1.064 -21.440 -21.520 -10.140 11.040 48.330 2.126 47.680 0.969
+ 5.250 1.129 1.000 1.064 -21.410 -21.490 -10.090 11.060 54.230 2.126 50.510 0.969
+ 5.300 1.129 1.000 1.064 -21.380 -21.460 -10.040 11.080 60.860 2.126 53.500 0.969
+ 5.350 1.129 1.000 1.064 -21.360 -21.440 -9.993 11.110 68.290 2.126 56.670 0.969
+ 5.400 1.129 1.000 1.064 -21.400 -21.480 -9.943 11.200 76.630 2.126 60.030 0.969
+ 5.450 1.130 1.000 1.064 -21.530 -21.610 -9.893 11.380 85.990 2.126 63.590 0.969
+ 5.500 1.130 1.000 1.064 -21.750 -21.840 -9.843 11.650 96.490 2.126 67.370 0.969
+ 5.550 1.130 1.000 1.064 -21.950 -22.030 -9.793 11.900 108.300 2.126 71.360 0.969
+ 5.600 1.130 1.000 1.064 -22.070 -22.150 -9.743 12.070 121.500 2.126 75.590 0.969
+ 5.650 1.130 1.000 1.064 -22.110 -22.190 -9.693 12.160 136.300 2.126 80.070 0.969
+ 5.700 1.130 1.000 1.064 -22.120 -22.200 -9.643 12.220 152.900 2.126 84.810 0.969
+ 5.750 1.130 1.000 1.064 -22.140 -22.220 -9.593 12.290 171.600 2.126 89.840 0.969
+ 5.800 1.130 1.000 1.064 -22.200 -22.280 -9.543 12.400 192.500 2.126 95.160 0.969
+ 5.850 1.130 1.000 1.064 -22.330 -22.410 -9.493 12.580 216.000 2.126 100.800 0.969
+ 5.900 1.130 1.000 1.064 -22.450 -22.530 -9.443 12.750 242.400 2.126 106.800 0.969
+ 5.950 1.130 1.000 1.064 -22.510 -22.590 -9.393 12.860 272.000 2.126 113.100 0.969
+ 6.000 1.130 1.000 1.064 -22.550 -22.630 -9.343 12.950 305.200 2.126 119.800 0.969
+ 6.050 1.130 1.000 1.064 -22.580 -22.660 -9.293 13.030 342.400 2.126 126.900 0.969
+ 6.100 1.131 1.000 1.064 -22.600 -22.680 -9.242 13.100 384.200 2.126 134.400 0.969
+ 6.150 1.131 1.000 1.064 -22.590 -22.670 -9.192 13.140 431.100 2.126 142.400 0.969
+ 6.200 1.131 1.000 1.064 -22.590 -22.670 -9.142 13.190 483.700 2.126 150.800 0.969
+ 6.250 1.131 1.000 1.064 -22.610 -22.690 -9.092 13.260 542.800 2.126 159.800 0.969
+ 6.300 1.131 1.000 1.064 -22.670 -22.750 -9.042 13.370 609.000 2.126 169.200 0.969
+ 6.350 1.131 1.000 1.064 -22.740 -22.820 -8.992 13.490 683.300 2.126 179.300 0.969
+ 6.400 1.131 1.000 1.064 -22.800 -22.880 -8.942 13.600 766.700 2.126 189.900 0.969
+ 6.450 1.131 1.000 1.064 -22.840 -22.920 -8.892 13.690 860.300 2.126 201.200 0.969
+ 6.500 1.131 1.000 1.064 -22.870 -22.950 -8.842 13.770 965.300 2.126 213.100 0.968
+ 6.550 1.131 1.000 1.064 -22.890 -22.980 -8.792 13.840 1083.100 2.126 225.700 0.968
+ 6.600 1.131 1.000 1.064 -22.910 -22.990 -8.742 13.910 1215.300 2.126 239.100 0.968
+ 6.650 1.131 1.000 1.064 -22.920 -23.000 -8.692 13.970 1363.600 2.126 253.200 0.968
+ 6.700 1.131 1.000 1.064 -22.930 -23.010 -8.642 14.030 1530.000 2.126 268.300 0.968
+ 6.750 1.131 1.000 1.064 -22.940 -23.020 -8.592 14.090 1716.700 2.126 284.200 0.968
+ 6.800 1.131 1.000 1.064 -22.940 -23.020 -8.542 14.140 1926.200 2.126 301.000 0.968
+ 6.850 1.131 1.000 1.064 -22.940 -23.020 -8.492 14.190 2161.300 2.126 318.800 0.968
+ 6.900 1.131 1.000 1.064 -22.930 -23.010 -8.442 14.230 2425.000 2.126 337.700 0.968
+ 6.950 1.131 1.000 1.064 -22.920 -23.000 -8.392 14.270 2720.900 2.126 357.700 0.968
+ 7.000 1.131 1.000 1.064 -22.910 -22.990 -8.342 14.310 3052.900 2.126 378.900 0.968
+ 7.050 1.131 1.000 1.064 -22.900 -22.980 -8.292 14.350 3425.500 2.126 401.400 0.968
+ 7.100 1.131 1.000 1.064 -22.900 -22.980 -8.242 14.400 3843.400 2.126 425.200 0.968
+ 7.150 1.131 1.000 1.064 -22.900 -22.980 -8.192 14.450 4312.400 2.126 450.400 0.968
+ 7.200 1.131 1.000 1.064 -22.890 -22.970 -8.142 14.490 4838.600 2.126 477.000 0.968
+ 7.250 1.131 1.000 1.064 -22.880 -22.960 -8.092 14.530 5429.100 2.126 505.300 0.968
+ 7.300 1.131 1.000 1.064 -22.870 -22.950 -8.042 14.570 6091.500 2.126 535.300 0.968
+ 7.350 1.131 1.000 1.064 -22.850 -22.940 -7.992 14.600 6834.800 2.126 567.000 0.968
+ 7.400 1.131 1.000 1.064 -22.840 -22.920 -7.942 14.640 7668.800 2.126 600.600 0.968
+ 7.450 1.131 1.000 1.064 -22.820 -22.900 -7.892 14.670 8604.500 2.126 636.200 0.968
+ 7.500 1.131 1.000 1.064 -22.810 -22.890 -7.842 14.710 9654.400 2.126 673.900 0.968
+ 7.550 1.131 1.000 1.064 -22.790 -22.870 -7.792 14.740 10832.400 2.126 713.800 0.968
+ 7.600 1.131 1.000 1.064 -22.770 -22.850 -7.742 14.770 12154.200 2.126 756.100 0.968
+ 7.650 1.131 1.000 1.064 -22.750 -22.830 -7.692 14.800 13637.200 2.126 800.900 0.968
+ 7.700 1.131 1.000 1.064 -22.730 -22.810 -7.642 14.830 15301.200 2.126 848.300 0.968
+ 7.750 1.131 1.000 1.064 -22.710 -22.790 -7.592 14.860 17168.300 2.126 898.600 0.968
+ 7.800 1.131 1.000 1.064 -22.690 -22.770 -7.542 14.890 19263.100 2.126 951.800 0.968
+ 7.850 1.131 1.000 1.064 -22.670 -22.750 -7.492 14.920 21613.600 2.126 1008.200 0.968
+ 7.900 1.131 1.000 1.064 -22.650 -22.730 -7.442 14.950 24250.900 2.126 1068.000 0.968
+ 7.950 1.131 1.000 1.064 -22.620 -22.700 -7.392 14.970 27209.900 2.126 1131.300 0.968
+ 8.000 1.131 1.000 1.064 -22.600 -22.680 -7.342 15.000 30530.100 2.126 1198.300 0.968
+ 8.050 1.131 1.000 1.064 -22.580 -22.660 -7.292 15.030 34255.300 2.126 1269.300 0.968
+ 8.100 1.131 1.000 1.064 -22.560 -22.640 -7.242 15.060 38435.100 2.126 1344.500 0.968
+ 8.150 1.131 1.000 1.064 -22.540 -22.620 -7.192 15.090 43124.900 2.126 1424.200 0.968
+ 8.200 1.131 1.000 1.064 -22.510 -22.600 -7.142 15.110 48387.000 2.126 1508.600 0.968
+ 8.250 1.131 1.000 1.064 -22.490 -22.570 -7.092 15.140 54291.100 2.126 1598.000 0.968
+ 8.300 1.131 1.000 1.064 -22.470 -22.550 -7.042 15.170 60915.600 2.126 1692.700 0.968
+ 8.350 1.131 1.000 1.064 -22.450 -22.530 -6.992 15.200 68348.400 2.126 1792.900 0.968
+ 8.400 1.131 1.000 1.064 -22.420 -22.510 -6.942 15.220 76688.200 2.126 1899.200 0.968
+ 8.450 1.131 1.000 1.064 -22.400 -22.480 -6.892 15.250 86045.600 2.126 2011.700 0.968
+ 8.500 1.131 1.000 1.064 -22.380 -22.460 -6.842 15.280 96544.800 2.126 2130.900 0.968
diff --git a/PyCool/work/cooling_total/m-15.dat b/PyCool/work/cooling_total/m-15.dat
new file mode 100644
index 0000000..8cf82ba
--- /dev/null
+++ b/PyCool/work/cooling_total/m-15.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -25.985 -23.355 -11.660 11.675 1.483 2.120 8.363 1.988
+ 4.050 0.014 1.000 1.064 -24.645 -22.820 -11.600 11.185 1.683 2.120 8.907 1.966
+ 4.100 0.070 1.000 1.064 -23.510 -22.380 -11.530 10.800 1.986 2.120 9.677 1.869
+ 4.150 0.253 1.000 1.064 -22.615 -22.040 -11.410 10.515 2.587 2.120 11.045 1.610
+ 4.200 0.567 1.000 1.064 -22.110 -21.890 -11.270 10.410 3.595 2.121 13.015 1.300
+ 4.250 0.816 1.000 1.064 -21.965 -21.905 -11.160 10.465 4.649 2.121 14.805 1.127
+ 4.300 0.931 1.000 1.064 -22.005 -22.000 -11.080 10.615 5.536 2.121 16.155 1.063
+ 4.350 0.976 1.000 1.064 -22.095 -22.110 -11.020 10.775 6.350 2.121 17.300 1.040
+ 4.400 0.998 1.000 1.064 -22.180 -22.205 -10.970 10.920 7.204 2.121 18.430 1.028
+ 4.450 1.020 1.000 1.064 -22.230 -22.265 -10.910 11.030 8.171 2.121 19.630 1.018
+ 4.500 1.042 1.000 1.064 -22.260 -22.305 -10.860 11.120 9.264 2.121 20.900 1.007
+ 4.550 1.055 1.000 1.064 -22.275 -22.325 -10.810 11.195 10.455 2.121 22.205 1.001
+ 4.600 1.060 1.000 1.064 -22.275 -22.325 -10.760 11.245 11.760 2.121 23.545 0.998
+ 4.650 1.062 1.000 1.064 -22.245 -22.300 -10.710 11.265 13.210 2.121 24.955 0.997
+ 4.700 1.064 1.000 1.064 -22.195 -22.245 -10.660 11.265 14.830 2.121 26.440 0.997
+ 4.750 1.066 1.000 1.064 -22.105 -22.160 -10.610 11.225 16.655 2.121 28.020 0.996
+ 4.800 1.071 1.000 1.064 -21.995 -22.045 -10.550 11.165 18.730 2.121 29.715 0.994
+ 4.850 1.082 1.000 1.064 -21.880 -21.940 -10.500 11.110 21.125 2.121 31.560 0.988
+ 4.900 1.099 1.000 1.064 -21.810 -21.880 -10.450 11.090 23.895 2.121 33.565 0.980
+ 4.950 1.114 1.000 1.064 -21.795 -21.865 -10.400 11.135 26.985 2.121 35.665 0.974
+ 5.000 1.122 1.000 1.064 -21.815 -21.885 -10.340 11.205 30.390 2.121 37.850 0.971
+ 5.050 1.125 1.000 1.064 -21.840 -21.920 -10.290 11.280 34.160 2.121 40.130 0.969
+ 5.100 1.127 1.000 1.064 -21.855 -21.930 -10.240 11.355 38.360 2.121 42.525 0.968
+ 5.150 1.127 1.000 1.064 -21.850 -21.930 -10.190 11.400 43.055 2.121 45.055 0.968
+ 5.200 1.128 1.000 1.064 -21.845 -21.925 -10.140 11.445 48.315 2.121 47.725 0.968
+ 5.250 1.128 1.000 1.064 -21.835 -21.910 -10.090 11.485 54.215 2.121 50.560 0.967
+ 5.300 1.128 1.000 1.064 -21.820 -21.900 -10.040 11.520 60.835 2.121 53.555 0.967
+ 5.350 1.128 1.000 1.064 -21.810 -21.890 -9.993 11.560 68.265 2.121 56.725 0.967
+ 5.400 1.128 1.000 1.064 -21.850 -21.930 -9.943 11.650 76.600 2.121 60.090 0.967
+ 5.450 1.129 1.000 1.064 -21.975 -22.055 -9.893 11.825 85.950 2.121 63.650 0.967
+ 5.500 1.129 1.000 1.064 -22.170 -22.255 -9.843 12.070 96.440 2.121 67.430 0.967
+ 5.550 1.129 1.000 1.064 -22.345 -22.420 -9.793 12.295 108.250 2.121 71.425 0.967
+ 5.600 1.129 1.000 1.064 -22.445 -22.525 -9.743 12.445 121.450 2.121 75.660 0.967
+ 5.650 1.129 1.000 1.064 -22.485 -22.565 -9.693 12.535 136.250 2.121 80.140 0.967
+ 5.700 1.129 1.000 1.064 -22.495 -22.575 -9.643 12.595 152.850 2.121 84.890 0.967
+ 5.750 1.129 1.000 1.064 -22.515 -22.595 -9.593 12.665 171.500 2.121 89.920 0.967
+ 5.800 1.129 1.000 1.064 -22.565 -22.645 -9.543 12.765 192.400 2.121 95.245 0.967
+ 5.850 1.129 1.000 1.064 -22.665 -22.745 -9.493 12.915 215.900 2.121 100.900 0.967
+ 5.900 1.129 1.000 1.064 -22.755 -22.835 -9.443 13.055 242.250 2.121 106.900 0.967
+ 5.950 1.129 1.000 1.064 -22.800 -22.880 -9.393 13.150 271.850 2.121 113.200 0.967
+ 6.000 1.129 1.000 1.064 -22.825 -22.905 -9.343 13.225 305.000 2.121 119.900 0.967
+ 6.050 1.129 1.000 1.064 -22.850 -22.930 -9.293 13.300 342.200 2.121 127.000 0.967
+ 6.100 1.129 1.000 1.064 -22.860 -22.940 -9.242 13.360 384.000 2.121 134.550 0.967
+ 6.150 1.129 1.000 1.064 -22.855 -22.935 -9.192 13.405 430.850 2.121 142.500 0.967
+ 6.200 1.129 1.000 1.064 -22.855 -22.935 -9.143 13.455 483.400 2.121 150.950 0.967
+ 6.250 1.129 1.000 1.064 -22.865 -22.945 -9.093 13.515 542.450 2.121 159.900 0.967
+ 6.300 1.129 1.000 1.064 -22.900 -22.980 -9.043 13.600 608.600 2.121 169.350 0.967
+ 6.350 1.129 1.000 1.064 -22.945 -23.025 -8.992 13.695 682.850 2.121 179.450 0.967
+ 6.400 1.129 1.000 1.064 -22.980 -23.060 -8.942 13.780 766.200 2.121 190.050 0.967
+ 6.450 1.129 1.000 1.064 -23.000 -23.080 -8.893 13.850 859.750 2.121 201.350 0.967
+ 6.500 1.129 1.000 1.064 -23.015 -23.095 -8.843 13.915 964.650 2.121 213.250 0.966
+ 6.550 1.129 1.000 1.064 -23.020 -23.105 -8.793 13.970 1082.350 2.121 225.900 0.966
+ 6.600 1.129 1.000 1.064 -23.025 -23.105 -8.742 14.025 1214.450 2.121 239.300 0.966
+ 6.650 1.129 1.000 1.064 -23.025 -23.105 -8.692 14.075 1362.650 2.121 253.450 0.966
+ 6.700 1.129 1.000 1.064 -23.025 -23.105 -8.643 14.125 1528.900 2.121 268.500 0.966
+ 6.750 1.129 1.000 1.064 -23.025 -23.105 -8.593 14.175 1715.500 2.121 284.400 0.966
+ 6.800 1.129 1.000 1.064 -23.015 -23.095 -8.543 14.215 1924.800 2.121 301.250 0.966
+ 6.850 1.129 1.000 1.064 -23.010 -23.090 -8.492 14.260 2159.700 2.121 319.050 0.966
+ 6.900 1.129 1.000 1.064 -22.995 -23.075 -8.442 14.295 2423.250 2.121 338.000 0.966
+ 6.950 1.129 1.000 1.064 -22.985 -23.065 -8.393 14.335 2718.900 2.121 358.000 0.966
+ 7.000 1.129 1.000 1.064 -22.970 -23.050 -8.343 14.370 3050.650 2.121 379.200 0.966
+ 7.050 1.129 1.000 1.064 -22.955 -23.035 -8.293 14.405 3422.950 2.121 401.700 0.966
+ 7.100 1.129 1.000 1.064 -22.950 -23.025 -8.242 14.450 3840.600 2.121 425.500 0.966
+ 7.150 1.129 1.000 1.064 -22.940 -23.020 -8.192 14.490 4309.200 2.121 450.750 0.966
+ 7.200 1.129 1.000 1.064 -22.925 -23.005 -8.143 14.525 4835.050 2.121 477.400 0.966
+ 7.250 1.129 1.000 1.064 -22.910 -22.990 -8.093 14.560 5425.050 2.121 505.700 0.966
+ 7.300 1.129 1.000 1.064 -22.895 -22.975 -8.043 14.595 6086.950 2.121 535.700 0.966
+ 7.350 1.129 1.000 1.064 -22.875 -22.960 -7.992 14.625 6829.700 2.121 567.450 0.966
+ 7.400 1.129 1.000 1.064 -22.860 -22.940 -7.942 14.660 7663.100 2.121 601.050 0.966
+ 7.450 1.129 1.000 1.064 -22.840 -22.920 -7.893 14.690 8598.100 2.121 636.700 0.966
+ 7.500 1.129 1.000 1.064 -22.825 -22.905 -7.842 14.725 9647.200 2.121 674.400 0.966
+ 7.550 1.129 1.000 1.064 -22.805 -22.885 -7.793 14.755 10824.350 2.121 714.350 0.966
+ 7.600 1.129 1.000 1.064 -22.785 -22.865 -7.742 14.785 12145.150 2.121 756.700 0.966
+ 7.650 1.129 1.000 1.064 -22.765 -22.845 -7.692 14.815 13627.050 2.121 801.500 0.966
+ 7.700 1.129 1.000 1.064 -22.740 -22.820 -7.643 14.840 15289.800 2.121 849.000 0.966
+ 7.750 1.129 1.000 1.064 -22.720 -22.800 -7.592 14.870 17155.500 2.121 899.300 0.966
+ 7.800 1.129 1.000 1.064 -22.700 -22.780 -7.543 14.900 19248.750 2.121 952.600 0.966
+ 7.850 1.129 1.000 1.064 -22.680 -22.760 -7.492 14.930 21597.450 2.121 1009.000 0.966
+ 7.900 1.129 1.000 1.064 -22.660 -22.740 -7.442 14.960 24232.800 2.121 1068.850 0.966
+ 7.950 1.129 1.000 1.064 -22.630 -22.710 -7.393 14.980 27189.600 2.121 1132.200 0.966
+ 8.000 1.129 1.000 1.064 -22.610 -22.690 -7.342 15.010 30507.300 2.121 1199.250 0.966
+ 8.050 1.129 1.000 1.064 -22.590 -22.670 -7.293 15.040 34229.700 2.121 1270.300 0.966
+ 8.100 1.129 1.000 1.064 -22.570 -22.650 -7.242 15.070 38406.400 2.121 1345.600 0.966
+ 8.150 1.129 1.000 1.064 -22.545 -22.625 -7.192 15.095 43092.700 2.121 1425.300 0.966
+ 8.200 1.129 1.000 1.064 -22.520 -22.605 -7.143 15.120 48350.800 2.121 1509.800 0.966
+ 8.250 1.129 1.000 1.064 -22.500 -22.580 -7.092 15.150 54250.500 2.121 1599.250 0.966
+ 8.300 1.129 1.000 1.064 -22.480 -22.555 -7.043 15.180 60870.050 2.121 1694.000 0.966
+ 8.350 1.129 1.000 1.064 -22.455 -22.535 -6.992 15.205 68297.300 2.121 1794.350 0.966
+ 8.400 1.129 1.000 1.064 -22.430 -22.515 -6.942 15.230 76630.850 2.121 1900.700 0.966
+ 8.450 1.129 1.000 1.064 -22.410 -22.490 -6.893 15.260 85981.250 2.121 2013.300 0.966
+ 8.500 1.129 1.000 1.064 -22.385 -22.465 -6.842 15.285 96472.600 2.121 2132.600 0.966
diff --git a/PyCool/work/cooling_total/m-20.dat b/PyCool/work/cooling_total/m-20.dat
new file mode 100644
index 0000000..75d325c
--- /dev/null
+++ b/PyCool/work/cooling_total/m-20.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -26.030 -23.400 -11.660 11.720 1.483 2.115 8.372 1.984
+ 4.050 0.014 1.000 1.064 -24.680 -22.860 -11.600 11.220 1.682 2.115 8.917 1.962
+ 4.100 0.070 1.000 1.064 -23.530 -22.400 -11.530 10.820 1.985 2.115 9.687 1.865
+ 4.150 0.253 1.000 1.064 -22.630 -22.050 -11.410 10.530 2.586 2.115 11.060 1.607
+ 4.200 0.567 1.000 1.064 -22.120 -21.900 -11.270 10.420 3.594 2.116 13.030 1.297
+ 4.250 0.816 1.000 1.064 -21.980 -21.920 -11.160 10.480 4.649 2.116 14.820 1.125
+ 4.300 0.931 1.000 1.064 -22.020 -22.020 -11.080 10.630 5.535 2.116 16.170 1.061
+ 4.350 0.976 1.000 1.064 -22.120 -22.140 -11.020 10.800 6.349 2.116 17.320 1.038
+ 4.400 0.998 1.000 1.064 -22.230 -22.250 -10.970 10.970 7.202 2.116 18.450 1.026
+ 4.450 1.020 1.000 1.064 -22.310 -22.340 -10.910 11.110 8.169 2.116 19.650 1.015
+ 4.500 1.042 1.000 1.064 -22.370 -22.420 -10.860 11.230 9.262 2.116 20.920 1.005
+ 4.550 1.055 1.000 1.064 -22.440 -22.490 -10.810 11.360 10.450 2.116 22.230 0.999
+ 4.600 1.060 1.000 1.064 -22.490 -22.540 -10.760 11.460 11.760 2.116 23.570 0.996
+ 4.650 1.062 1.000 1.064 -22.510 -22.560 -10.710 11.530 13.210 2.116 24.980 0.995
+ 4.700 1.064 1.000 1.064 -22.490 -22.540 -10.660 11.560 14.830 2.116 26.470 0.995
+ 4.750 1.065 1.000 1.064 -22.400 -22.460 -10.610 11.520 16.650 2.116 28.050 0.994
+ 4.800 1.070 1.000 1.064 -22.270 -22.320 -10.550 11.440 18.730 2.116 29.750 0.991
+ 4.850 1.082 1.000 1.064 -22.130 -22.190 -10.500 11.360 21.120 2.116 31.590 0.986
+ 4.900 1.099 1.000 1.064 -22.050 -22.120 -10.450 11.330 23.890 2.116 33.600 0.978
+ 4.950 1.113 1.000 1.064 -22.050 -22.120 -10.400 11.390 26.980 2.116 35.700 0.972
+ 5.000 1.121 1.000 1.064 -22.100 -22.170 -10.340 11.490 30.380 2.116 37.890 0.969
+ 5.050 1.125 1.000 1.064 -22.160 -22.240 -10.290 11.600 34.150 2.116 40.170 0.967
+ 5.100 1.127 1.000 1.064 -22.210 -22.280 -10.240 11.710 38.350 2.116 42.570 0.966
+ 5.150 1.127 1.000 1.064 -22.230 -22.310 -10.190 11.780 43.040 2.116 45.100 0.966
+ 5.200 1.128 1.000 1.064 -22.250 -22.330 -10.140 11.850 48.300 2.116 47.770 0.966
+ 5.250 1.128 1.000 1.064 -22.260 -22.330 -10.090 11.910 54.200 2.116 50.610 0.965
+ 5.300 1.128 1.000 1.064 -22.260 -22.340 -10.040 11.960 60.810 2.116 53.610 0.965
+ 5.350 1.128 1.000 1.064 -22.260 -22.340 -9.993 12.010 68.240 2.116 56.780 0.965
+ 5.400 1.128 1.000 1.064 -22.300 -22.380 -9.943 12.100 76.570 2.116 60.150 0.965
+ 5.450 1.128 1.000 1.064 -22.420 -22.500 -9.893 12.270 85.910 2.116 63.710 0.965
+ 5.500 1.128 1.000 1.064 -22.590 -22.670 -9.843 12.490 96.390 2.116 67.490 0.965
+ 5.550 1.128 1.000 1.064 -22.740 -22.810 -9.793 12.690 108.200 2.116 71.490 0.965
+ 5.600 1.128 1.000 1.064 -22.820 -22.900 -9.743 12.820 121.400 2.116 75.730 0.965
+ 5.650 1.128 1.000 1.064 -22.860 -22.940 -9.693 12.910 136.200 2.116 80.210 0.965
+ 5.700 1.128 1.000 1.064 -22.870 -22.950 -9.643 12.970 152.800 2.116 84.970 0.965
+ 5.750 1.128 1.000 1.064 -22.890 -22.970 -9.593 13.040 171.400 2.116 90.000 0.965
+ 5.800 1.128 1.000 1.064 -22.930 -23.010 -9.543 13.130 192.300 2.116 95.330 0.965
+ 5.850 1.128 1.000 1.064 -23.000 -23.080 -9.493 13.250 215.800 2.116 101.000 0.965
+ 5.900 1.128 1.000 1.064 -23.060 -23.140 -9.443 13.360 242.100 2.116 107.000 0.965
+ 5.950 1.128 1.000 1.064 -23.090 -23.170 -9.393 13.440 271.700 2.116 113.300 0.965
+ 6.000 1.128 1.000 1.064 -23.100 -23.180 -9.343 13.500 304.800 2.116 120.000 0.965
+ 6.050 1.128 1.000 1.064 -23.120 -23.200 -9.293 13.570 342.000 2.116 127.100 0.965
+ 6.100 1.128 1.000 1.064 -23.120 -23.200 -9.243 13.620 383.800 2.116 134.700 0.965
+ 6.150 1.128 1.000 1.064 -23.120 -23.200 -9.193 13.670 430.600 2.116 142.600 0.965
+ 6.200 1.128 1.000 1.064 -23.120 -23.200 -9.143 13.720 483.100 2.116 151.100 0.965
+ 6.250 1.128 1.000 1.064 -23.120 -23.200 -9.093 13.770 542.100 2.116 160.000 0.965
+ 6.300 1.128 1.000 1.064 -23.130 -23.210 -9.043 13.830 608.200 2.116 169.500 0.965
+ 6.350 1.128 1.000 1.064 -23.150 -23.230 -8.993 13.900 682.400 2.116 179.600 0.965
+ 6.400 1.128 1.000 1.064 -23.160 -23.240 -8.943 13.960 765.700 2.116 190.200 0.965
+ 6.450 1.128 1.000 1.064 -23.160 -23.240 -8.893 14.010 859.200 2.116 201.500 0.965
+ 6.500 1.128 1.000 1.064 -23.160 -23.240 -8.843 14.060 964.000 2.116 213.400 0.965
+ 6.550 1.128 1.000 1.064 -23.150 -23.230 -8.793 14.100 1081.600 2.116 226.100 0.965
+ 6.600 1.128 1.000 1.064 -23.140 -23.220 -8.743 14.140 1213.600 2.116 239.500 0.965
+ 6.650 1.128 1.000 1.064 -23.130 -23.210 -8.693 14.180 1361.700 2.116 253.700 0.965
+ 6.700 1.128 1.000 1.064 -23.120 -23.200 -8.643 14.220 1527.800 2.116 268.700 0.965
+ 6.750 1.128 1.000 1.064 -23.110 -23.190 -8.593 14.260 1714.300 2.116 284.600 0.965
+ 6.800 1.128 1.000 1.064 -23.090 -23.170 -8.543 14.290 1923.400 2.116 301.500 0.965
+ 6.850 1.128 1.000 1.064 -23.080 -23.160 -8.493 14.330 2158.100 2.116 319.300 0.965
+ 6.900 1.128 1.000 1.064 -23.060 -23.140 -8.443 14.360 2421.500 2.116 338.300 0.965
+ 6.950 1.128 1.000 1.064 -23.050 -23.130 -8.393 14.400 2716.900 2.116 358.300 0.965
+ 7.000 1.128 1.000 1.064 -23.030 -23.110 -8.343 14.430 3048.400 2.116 379.500 0.965
+ 7.050 1.128 1.000 1.064 -23.010 -23.090 -8.293 14.460 3420.400 2.116 402.000 0.965
+ 7.100 1.128 1.000 1.064 -23.000 -23.070 -8.243 14.500 3837.800 2.116 425.800 0.965
+ 7.150 1.128 1.000 1.064 -22.980 -23.060 -8.193 14.530 4306.000 2.116 451.100 0.965
+ 7.200 1.128 1.000 1.064 -22.960 -23.040 -8.143 14.560 4831.500 2.116 477.800 0.965
+ 7.250 1.128 1.000 1.064 -22.940 -23.020 -8.093 14.590 5421.000 2.116 506.100 0.965
+ 7.300 1.128 1.000 1.064 -22.920 -23.000 -8.043 14.620 6082.400 2.116 536.100 0.965
+ 7.350 1.128 1.000 1.064 -22.900 -22.980 -7.993 14.650 6824.600 2.116 567.900 0.965
+ 7.400 1.128 1.000 1.064 -22.880 -22.960 -7.943 14.680 7657.400 2.116 601.500 0.965
+ 7.450 1.128 1.000 1.064 -22.860 -22.940 -7.893 14.710 8591.700 2.116 637.200 0.965
+ 7.500 1.128 1.000 1.064 -22.840 -22.920 -7.843 14.740 9640.000 2.116 674.900 0.965
+ 7.550 1.128 1.000 1.064 -22.820 -22.900 -7.793 14.770 10816.300 2.116 714.900 0.965
+ 7.600 1.128 1.000 1.064 -22.800 -22.880 -7.743 14.800 12136.100 2.116 757.300 0.965
+ 7.650 1.128 1.000 1.064 -22.780 -22.860 -7.693 14.830 13616.900 2.116 802.100 0.965
+ 7.700 1.128 1.000 1.064 -22.750 -22.830 -7.643 14.850 15278.400 2.116 849.700 0.965
+ 7.750 1.128 1.000 1.064 -22.730 -22.810 -7.593 14.880 17142.700 2.116 900.000 0.965
+ 7.800 1.128 1.000 1.064 -22.710 -22.790 -7.543 14.910 19234.400 2.116 953.400 0.965
+ 7.850 1.128 1.000 1.064 -22.690 -22.770 -7.493 14.940 21581.300 2.116 1009.800 0.965
+ 7.900 1.128 1.000 1.064 -22.670 -22.750 -7.443 14.970 24214.700 2.116 1069.700 0.965
+ 7.950 1.128 1.000 1.064 -22.640 -22.720 -7.393 14.990 27169.300 2.116 1133.100 0.965
+ 8.000 1.128 1.000 1.064 -22.620 -22.700 -7.343 15.020 30484.500 2.116 1200.200 0.965
+ 8.050 1.128 1.000 1.064 -22.600 -22.680 -7.293 15.050 34204.100 2.116 1271.300 0.965
+ 8.100 1.128 1.000 1.064 -22.580 -22.660 -7.243 15.080 38377.700 2.116 1346.700 0.965
+ 8.150 1.128 1.000 1.064 -22.550 -22.630 -7.193 15.100 43060.500 2.116 1426.400 0.965
+ 8.200 1.128 1.000 1.064 -22.530 -22.610 -7.143 15.130 48314.600 2.116 1511.000 0.965
+ 8.250 1.128 1.000 1.064 -22.510 -22.590 -7.093 15.160 54209.900 2.116 1600.500 0.965
+ 8.300 1.128 1.000 1.064 -22.490 -22.560 -7.043 15.190 60824.500 2.116 1695.300 0.965
+ 8.350 1.128 1.000 1.064 -22.460 -22.540 -6.993 15.210 68246.200 2.116 1795.800 0.965
+ 8.400 1.128 1.000 1.064 -22.440 -22.520 -6.943 15.240 76573.500 2.116 1902.200 0.965
+ 8.450 1.128 1.000 1.064 -22.420 -22.500 -6.893 15.270 85916.900 2.116 2014.900 0.965
+ 8.500 1.128 1.000 1.064 -22.390 -22.470 -6.843 15.290 96400.400 2.116 2134.300 0.965
diff --git a/PyCool/work/cooling_total/m-25.dat b/PyCool/work/cooling_total/m-25.dat
new file mode 100644
index 0000000..86c6847
--- /dev/null
+++ b/PyCool/work/cooling_total/m-25.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -26.035 -23.405 -11.660 11.725 1.481 2.115 8.369 1.986
+ 4.050 0.014 1.000 1.064 -24.685 -22.865 -11.600 11.225 1.682 2.115 8.918 1.962
+ 4.100 0.070 1.000 1.064 -23.530 -22.400 -11.530 10.820 1.985 2.115 9.688 1.865
+ 4.150 0.253 1.000 1.064 -22.630 -22.055 -11.410 10.530 2.586 2.115 11.060 1.607
+ 4.200 0.567 1.000 1.064 -22.120 -21.900 -11.270 10.420 3.594 2.115 13.035 1.297
+ 4.250 0.816 1.000 1.064 -21.980 -21.920 -11.160 10.480 4.649 2.115 14.825 1.125
+ 4.300 0.931 1.000 1.064 -22.025 -22.020 -11.080 10.635 5.535 2.115 16.175 1.060
+ 4.350 0.976 1.000 1.064 -22.125 -22.145 -11.020 10.805 6.349 2.115 17.320 1.038
+ 4.400 0.998 1.000 1.064 -22.235 -22.255 -10.970 10.975 7.202 2.115 18.450 1.026
+ 4.450 1.020 1.000 1.064 -22.320 -22.350 -10.910 11.120 8.169 2.115 19.650 1.015
+ 4.500 1.042 1.000 1.064 -22.385 -22.435 -10.860 11.245 9.261 2.115 20.920 1.004
+ 4.550 1.055 1.000 1.064 -22.465 -22.515 -10.810 11.385 10.450 2.115 22.230 0.998
+ 4.600 1.060 1.000 1.064 -22.530 -22.580 -10.760 11.500 11.760 2.115 23.575 0.996
+ 4.650 1.062 1.000 1.064 -22.570 -22.620 -10.710 11.590 13.210 2.115 24.985 0.995
+ 4.700 1.064 1.000 1.064 -22.560 -22.615 -10.660 11.630 14.830 2.115 26.475 0.994
+ 4.750 1.065 1.000 1.064 -22.475 -22.535 -10.610 11.595 16.650 2.115 28.055 0.994
+ 4.800 1.070 1.000 1.064 -22.330 -22.385 -10.550 11.500 18.730 2.115 29.750 0.991
+ 4.850 1.082 1.000 1.064 -22.180 -22.240 -10.500 11.410 21.120 2.115 31.595 0.986
+ 4.900 1.099 1.000 1.064 -22.100 -22.165 -10.450 11.380 23.890 2.115 33.600 0.978
+ 4.950 1.113 1.000 1.064 -22.105 -22.175 -10.400 11.445 26.980 2.115 35.705 0.972
+ 5.000 1.121 1.000 1.064 -22.170 -22.240 -10.340 11.560 30.380 2.115 37.895 0.968
+ 5.050 1.125 1.000 1.064 -22.245 -22.325 -10.290 11.685 34.150 2.115 40.175 0.966
+ 5.100 1.127 1.000 1.064 -22.320 -22.395 -10.240 11.815 38.345 2.115 42.575 0.966
+ 5.150 1.127 1.000 1.064 -22.375 -22.455 -10.190 11.925 43.040 2.115 45.105 0.966
+ 5.200 1.128 1.000 1.064 -22.425 -22.500 -10.140 12.025 48.300 2.115 47.775 0.966
+ 5.250 1.128 1.000 1.064 -22.460 -22.535 -10.090 12.110 54.200 2.115 50.615 0.965
+ 5.300 1.128 1.000 1.064 -22.490 -22.570 -10.040 12.190 60.810 2.115 53.615 0.965
+ 5.350 1.128 1.000 1.064 -22.515 -22.595 -9.993 12.265 68.235 2.115 56.790 0.965
+ 5.400 1.128 1.000 1.064 -22.560 -22.640 -9.943 12.360 76.565 2.115 60.155 0.965
+ 5.450 1.128 1.000 1.064 -22.660 -22.740 -9.893 12.510 85.905 2.115 63.720 0.965
+ 5.500 1.128 1.000 1.064 -22.785 -22.865 -9.843 12.685 96.385 2.115 67.495 0.965
+ 5.550 1.128 1.000 1.064 -22.890 -22.965 -9.793 12.840 108.150 2.115 71.495 0.965
+ 5.600 1.128 1.000 1.064 -22.950 -23.030 -9.743 12.950 121.350 2.115 75.735 0.965
+ 5.650 1.128 1.000 1.064 -22.990 -23.070 -9.693 13.040 136.150 2.115 80.220 0.965
+ 5.700 1.128 1.000 1.064 -23.005 -23.085 -9.643 13.105 152.800 2.115 84.975 0.965
+ 5.750 1.128 1.000 1.064 -23.025 -23.105 -9.593 13.175 171.400 2.115 90.010 0.965
+ 5.800 1.128 1.000 1.064 -23.055 -23.135 -9.543 13.255 192.300 2.115 95.340 0.965
+ 5.850 1.128 1.000 1.064 -23.100 -23.180 -9.493 13.350 215.800 2.115 101.000 0.965
+ 5.900 1.128 1.000 1.064 -23.140 -23.220 -9.443 13.440 242.100 2.115 107.000 0.965
+ 5.950 1.128 1.000 1.064 -23.160 -23.240 -9.393 13.510 271.700 2.115 113.300 0.965
+ 6.000 1.128 1.000 1.064 -23.165 -23.245 -9.343 13.565 304.800 2.115 120.000 0.965
+ 6.050 1.128 1.000 1.064 -23.180 -23.260 -9.293 13.630 342.000 2.115 127.150 0.965
+ 6.100 1.128 1.000 1.064 -23.180 -23.260 -9.243 13.680 383.750 2.115 134.700 0.965
+ 6.150 1.128 1.000 1.064 -23.175 -23.255 -9.193 13.725 430.550 2.115 142.650 0.965
+ 6.200 1.128 1.000 1.064 -23.175 -23.255 -9.143 13.775 483.100 2.115 151.100 0.965
+ 6.250 1.128 1.000 1.064 -23.175 -23.255 -9.093 13.825 542.050 2.115 160.050 0.965
+ 6.300 1.128 1.000 1.064 -23.175 -23.255 -9.043 13.875 608.200 2.115 169.550 0.965
+ 6.350 1.128 1.000 1.064 -23.190 -23.265 -8.993 13.940 682.400 2.115 179.600 0.965
+ 6.400 1.128 1.000 1.064 -23.190 -23.270 -8.943 13.990 765.650 2.115 190.200 0.965
+ 6.450 1.128 1.000 1.064 -23.185 -23.265 -8.893 14.035 859.100 2.115 201.500 0.965
+ 6.500 1.128 1.000 1.064 -23.180 -23.260 -8.843 14.080 963.950 2.115 213.450 0.965
+ 6.550 1.128 1.000 1.064 -23.170 -23.245 -8.793 14.120 1081.550 2.115 226.100 0.965
+ 6.600 1.128 1.000 1.064 -23.155 -23.235 -8.743 14.155 1213.500 2.115 239.500 0.965
+ 6.650 1.128 1.000 1.064 -23.145 -23.225 -8.693 14.195 1361.600 2.115 253.700 0.965
+ 6.700 1.128 1.000 1.064 -23.130 -23.210 -8.643 14.230 1527.700 2.115 268.700 0.965
+ 6.750 1.128 1.000 1.064 -23.120 -23.200 -8.593 14.270 1714.150 2.115 284.650 0.965
+ 6.800 1.128 1.000 1.064 -23.100 -23.180 -8.543 14.300 1923.300 2.115 301.500 0.965
+ 6.850 1.128 1.000 1.064 -23.085 -23.165 -8.493 14.335 2157.950 2.115 319.350 0.965
+ 6.900 1.128 1.000 1.064 -23.070 -23.150 -8.443 14.370 2421.300 2.115 338.300 0.965
+ 6.950 1.128 1.000 1.064 -23.055 -23.135 -8.393 14.405 2716.700 2.115 358.350 0.965
+ 7.000 1.128 1.000 1.064 -23.035 -23.115 -8.343 14.435 3048.200 2.115 379.550 0.965
+ 7.050 1.128 1.000 1.064 -23.020 -23.095 -8.293 14.470 3420.150 2.115 402.050 0.965
+ 7.100 1.128 1.000 1.064 -23.005 -23.080 -8.243 14.505 3837.500 2.115 425.850 0.965
+ 7.150 1.128 1.000 1.064 -22.985 -23.065 -8.193 14.535 4305.700 2.115 451.150 0.965
+ 7.200 1.128 1.000 1.064 -22.965 -23.045 -8.143 14.565 4831.100 2.115 477.850 0.965
+ 7.250 1.128 1.000 1.064 -22.945 -23.025 -8.093 14.595 5420.600 2.115 506.150 0.965
+ 7.300 1.128 1.000 1.064 -22.925 -23.005 -8.043 14.625 6081.950 2.115 536.150 0.965
+ 7.350 1.128 1.000 1.064 -22.905 -22.985 -7.993 14.655 6824.100 2.115 567.950 0.965
+ 7.400 1.128 1.000 1.064 -22.885 -22.960 -7.943 14.685 7656.800 2.115 601.550 0.965
+ 7.450 1.128 1.000 1.064 -22.860 -22.940 -7.893 14.710 8591.050 2.115 637.250 0.965
+ 7.500 1.128 1.000 1.064 -22.840 -22.920 -7.843 14.740 9639.300 2.115 674.950 0.965
+ 7.550 1.128 1.000 1.064 -22.820 -22.900 -7.793 14.770 10815.500 2.115 714.950 0.965
+ 7.600 1.128 1.000 1.064 -22.800 -22.880 -7.743 14.800 12135.200 2.115 757.350 0.965
+ 7.650 1.128 1.000 1.064 -22.780 -22.860 -7.693 14.830 13615.900 2.115 802.200 0.965
+ 7.700 1.128 1.000 1.064 -22.755 -22.835 -7.643 14.855 15277.250 2.115 849.750 0.965
+ 7.750 1.128 1.000 1.064 -22.730 -22.810 -7.593 14.880 17141.400 2.115 900.100 0.965
+ 7.800 1.128 1.000 1.064 -22.710 -22.790 -7.543 14.910 19232.950 2.115 953.450 0.965
+ 7.850 1.128 1.000 1.064 -22.690 -22.770 -7.493 14.940 21579.700 2.115 1009.900 0.965
+ 7.900 1.128 1.000 1.064 -22.670 -22.750 -7.443 14.970 24212.850 2.115 1069.750 0.965
+ 7.950 1.128 1.000 1.064 -22.645 -22.725 -7.393 14.995 27167.250 2.115 1133.150 0.965
+ 8.000 1.128 1.000 1.064 -22.620 -22.700 -7.343 15.020 30482.200 2.115 1200.300 0.965
+ 8.050 1.128 1.000 1.064 -22.600 -22.680 -7.293 15.050 34201.550 2.115 1271.400 0.965
+ 8.100 1.128 1.000 1.064 -22.580 -22.660 -7.243 15.080 38374.800 2.115 1346.800 0.965
+ 8.150 1.128 1.000 1.064 -22.555 -22.630 -7.193 15.105 43057.250 2.115 1426.550 0.965
+ 8.200 1.128 1.000 1.064 -22.530 -22.610 -7.143 15.130 48311.000 2.115 1511.100 0.965
+ 8.250 1.128 1.000 1.064 -22.510 -22.590 -7.093 15.160 54205.850 2.115 1600.650 0.965
+ 8.300 1.128 1.000 1.064 -22.490 -22.565 -7.043 15.190 60819.950 2.115 1695.450 0.965
+ 8.350 1.128 1.000 1.064 -22.460 -22.540 -6.993 15.210 68241.100 2.115 1795.950 0.965
+ 8.400 1.128 1.000 1.064 -22.440 -22.520 -6.943 15.240 76567.800 2.115 1902.350 0.965
+ 8.450 1.128 1.000 1.064 -22.420 -22.500 -6.893 15.270 85910.450 2.115 2015.050 0.965
+ 8.500 1.128 1.000 1.064 -22.390 -22.470 -6.843 15.290 96393.150 2.115 2134.450 0.965
diff --git a/PyCool/work/cooling_total/m-30.dat b/PyCool/work/cooling_total/m-30.dat
new file mode 100644
index 0000000..fc7b466
--- /dev/null
+++ b/PyCool/work/cooling_total/m-30.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -26.040 -23.410 -11.660 11.730 1.479 2.114 8.365 1.987
+ 4.050 0.014 1.000 1.064 -24.690 -22.870 -11.600 11.230 1.682 2.114 8.919 1.961
+ 4.100 0.070 1.000 1.064 -23.530 -22.400 -11.530 10.820 1.985 2.114 9.690 1.864
+ 4.150 0.253 1.000 1.064 -22.630 -22.060 -11.410 10.530 2.586 2.114 11.060 1.606
+ 4.200 0.567 1.000 1.064 -22.120 -21.900 -11.270 10.420 3.594 2.115 13.040 1.297
+ 4.250 0.816 1.000 1.064 -21.980 -21.920 -11.160 10.480 4.649 2.115 14.830 1.125
+ 4.300 0.931 1.000 1.064 -22.030 -22.020 -11.080 10.640 5.535 2.115 16.180 1.060
+ 4.350 0.976 1.000 1.064 -22.130 -22.150 -11.020 10.810 6.349 2.115 17.320 1.037
+ 4.400 0.998 1.000 1.064 -22.240 -22.260 -10.970 10.980 7.202 2.115 18.450 1.026
+ 4.450 1.020 1.000 1.064 -22.330 -22.360 -10.910 11.130 8.169 2.115 19.650 1.015
+ 4.500 1.042 1.000 1.064 -22.400 -22.450 -10.860 11.260 9.261 2.115 20.920 1.004
+ 4.550 1.055 1.000 1.064 -22.490 -22.540 -10.810 11.410 10.450 2.115 22.230 0.998
+ 4.600 1.060 1.000 1.064 -22.570 -22.620 -10.760 11.540 11.760 2.115 23.580 0.996
+ 4.650 1.062 1.000 1.064 -22.630 -22.680 -10.710 11.650 13.210 2.115 24.990 0.995
+ 4.700 1.064 1.000 1.064 -22.630 -22.690 -10.660 11.700 14.830 2.115 26.480 0.994
+ 4.750 1.065 1.000 1.064 -22.550 -22.610 -10.610 11.670 16.650 2.115 28.060 0.993
+ 4.800 1.070 1.000 1.064 -22.390 -22.450 -10.550 11.560 18.730 2.115 29.750 0.991
+ 4.850 1.082 1.000 1.064 -22.230 -22.290 -10.500 11.460 21.120 2.115 31.600 0.986
+ 4.900 1.099 1.000 1.064 -22.150 -22.210 -10.450 11.430 23.890 2.115 33.600 0.978
+ 4.950 1.113 1.000 1.064 -22.160 -22.230 -10.400 11.500 26.980 2.115 35.710 0.972
+ 5.000 1.121 1.000 1.064 -22.240 -22.310 -10.340 11.630 30.380 2.115 37.900 0.968
+ 5.050 1.125 1.000 1.064 -22.330 -22.410 -10.290 11.770 34.150 2.115 40.180 0.966
+ 5.100 1.126 1.000 1.064 -22.430 -22.510 -10.240 11.920 38.340 2.115 42.580 0.966
+ 5.150 1.127 1.000 1.064 -22.520 -22.600 -10.190 12.070 43.040 2.115 45.110 0.965
+ 5.200 1.128 1.000 1.064 -22.600 -22.670 -10.140 12.200 48.300 2.115 47.780 0.965
+ 5.250 1.128 1.000 1.064 -22.660 -22.740 -10.090 12.310 54.200 2.115 50.620 0.965
+ 5.300 1.128 1.000 1.064 -22.720 -22.800 -10.040 12.420 60.810 2.115 53.620 0.965
+ 5.350 1.128 1.000 1.064 -22.770 -22.850 -9.993 12.520 68.230 2.115 56.800 0.965
+ 5.400 1.128 1.000 1.064 -22.820 -22.900 -9.943 12.620 76.560 2.115 60.160 0.965
+ 5.450 1.128 1.000 1.064 -22.900 -22.980 -9.893 12.750 85.900 2.115 63.730 0.965
+ 5.500 1.128 1.000 1.064 -22.980 -23.060 -9.843 12.880 96.380 2.115 67.500 0.965
+ 5.550 1.128 1.000 1.064 -23.040 -23.120 -9.793 12.990 108.100 2.115 71.500 0.965
+ 5.600 1.128 1.000 1.064 -23.080 -23.160 -9.743 13.080 121.300 2.115 75.740 0.965
+ 5.650 1.128 1.000 1.064 -23.120 -23.200 -9.693 13.170 136.100 2.115 80.230 0.965
+ 5.700 1.128 1.000 1.064 -23.140 -23.220 -9.643 13.240 152.800 2.115 84.980 0.965
+ 5.750 1.128 1.000 1.064 -23.160 -23.240 -9.593 13.310 171.400 2.115 90.020 0.965
+ 5.800 1.128 1.000 1.064 -23.180 -23.260 -9.543 13.380 192.300 2.115 95.350 0.965
+ 5.850 1.128 1.000 1.064 -23.200 -23.280 -9.493 13.450 215.800 2.115 101.000 0.965
+ 5.900 1.128 1.000 1.064 -23.220 -23.300 -9.443 13.520 242.100 2.115 107.000 0.965
+ 5.950 1.128 1.000 1.064 -23.230 -23.310 -9.393 13.580 271.700 2.115 113.300 0.965
+ 6.000 1.128 1.000 1.064 -23.230 -23.310 -9.343 13.630 304.800 2.115 120.000 0.965
+ 6.050 1.128 1.000 1.064 -23.240 -23.320 -9.293 13.690 342.000 2.115 127.200 0.965
+ 6.100 1.128 1.000 1.064 -23.240 -23.320 -9.243 13.740 383.700 2.115 134.700 0.965
+ 6.150 1.128 1.000 1.064 -23.230 -23.310 -9.193 13.780 430.500 2.115 142.700 0.965
+ 6.200 1.128 1.000 1.064 -23.230 -23.310 -9.143 13.830 483.100 2.115 151.100 0.965
+ 6.250 1.128 1.000 1.064 -23.230 -23.310 -9.093 13.880 542.000 2.115 160.100 0.965
+ 6.300 1.128 1.000 1.064 -23.220 -23.300 -9.043 13.920 608.200 2.115 169.600 0.965
+ 6.350 1.128 1.000 1.064 -23.230 -23.300 -8.993 13.980 682.400 2.115 179.600 0.965
+ 6.400 1.128 1.000 1.064 -23.220 -23.300 -8.943 14.020 765.600 2.115 190.200 0.965
+ 6.450 1.128 1.000 1.064 -23.210 -23.290 -8.893 14.060 859.000 2.115 201.500 0.965
+ 6.500 1.128 1.000 1.064 -23.200 -23.280 -8.843 14.100 963.900 2.115 213.500 0.965
+ 6.550 1.128 1.000 1.064 -23.190 -23.260 -8.793 14.140 1081.500 2.115 226.100 0.965
+ 6.600 1.128 1.000 1.064 -23.170 -23.250 -8.743 14.170 1213.400 2.115 239.500 0.965
+ 6.650 1.128 1.000 1.064 -23.160 -23.240 -8.693 14.210 1361.500 2.115 253.700 0.965
+ 6.700 1.128 1.000 1.064 -23.140 -23.220 -8.643 14.240 1527.600 2.115 268.700 0.965
+ 6.750 1.128 1.000 1.064 -23.130 -23.210 -8.593 14.280 1714.000 2.115 284.700 0.965
+ 6.800 1.128 1.000 1.064 -23.110 -23.190 -8.543 14.310 1923.200 2.115 301.500 0.965
+ 6.850 1.128 1.000 1.064 -23.090 -23.170 -8.493 14.340 2157.800 2.115 319.400 0.965
+ 6.900 1.128 1.000 1.064 -23.080 -23.160 -8.443 14.380 2421.100 2.115 338.300 0.965
+ 6.950 1.128 1.000 1.064 -23.060 -23.140 -8.393 14.410 2716.500 2.115 358.400 0.965
+ 7.000 1.128 1.000 1.064 -23.040 -23.120 -8.343 14.440 3048.000 2.115 379.600 0.965
+ 7.050 1.128 1.000 1.064 -23.030 -23.100 -8.293 14.480 3419.900 2.115 402.100 0.965
+ 7.100 1.128 1.000 1.064 -23.010 -23.090 -8.243 14.510 3837.200 2.115 425.900 0.965
+ 7.150 1.128 1.000 1.064 -22.990 -23.070 -8.193 14.540 4305.400 2.115 451.200 0.965
+ 7.200 1.128 1.000 1.064 -22.970 -23.050 -8.143 14.570 4830.700 2.115 477.900 0.965
+ 7.250 1.128 1.000 1.064 -22.950 -23.030 -8.093 14.600 5420.200 2.115 506.200 0.965
+ 7.300 1.128 1.000 1.064 -22.930 -23.010 -8.043 14.630 6081.500 2.115 536.200 0.965
+ 7.350 1.128 1.000 1.064 -22.910 -22.990 -7.993 14.660 6823.600 2.115 568.000 0.965
+ 7.400 1.128 1.000 1.064 -22.890 -22.960 -7.943 14.690 7656.200 2.115 601.600 0.965
+ 7.450 1.128 1.000 1.064 -22.860 -22.940 -7.893 14.710 8590.400 2.115 637.300 0.965
+ 7.500 1.128 1.000 1.064 -22.840 -22.920 -7.843 14.740 9638.600 2.115 675.000 0.965
+ 7.550 1.128 1.000 1.064 -22.820 -22.900 -7.793 14.770 10814.700 2.115 715.000 0.965
+ 7.600 1.128 1.000 1.064 -22.800 -22.880 -7.743 14.800 12134.300 2.115 757.400 0.965
+ 7.650 1.128 1.000 1.064 -22.780 -22.860 -7.693 14.830 13614.900 2.115 802.300 0.965
+ 7.700 1.128 1.000 1.064 -22.760 -22.840 -7.643 14.860 15276.100 2.115 849.800 0.965
+ 7.750 1.128 1.000 1.064 -22.730 -22.810 -7.593 14.880 17140.100 2.115 900.200 0.965
+ 7.800 1.128 1.000 1.064 -22.710 -22.790 -7.543 14.910 19231.500 2.115 953.500 0.965
+ 7.850 1.128 1.000 1.064 -22.690 -22.770 -7.493 14.940 21578.100 2.115 1010.000 0.965
+ 7.900 1.128 1.000 1.064 -22.670 -22.750 -7.443 14.970 24211.000 2.115 1069.800 0.965
+ 7.950 1.128 1.000 1.064 -22.650 -22.730 -7.393 15.000 27165.200 2.115 1133.200 0.965
+ 8.000 1.128 1.000 1.064 -22.620 -22.700 -7.343 15.020 30479.900 2.115 1200.400 0.965
+ 8.050 1.128 1.000 1.064 -22.600 -22.680 -7.293 15.050 34199.000 2.115 1271.500 0.965
+ 8.100 1.128 1.000 1.064 -22.580 -22.660 -7.243 15.080 38371.900 2.115 1346.900 0.965
+ 8.150 1.128 1.000 1.064 -22.560 -22.630 -7.193 15.110 43054.000 2.115 1426.700 0.965
+ 8.200 1.128 1.000 1.064 -22.530 -22.610 -7.143 15.130 48307.400 2.115 1511.200 0.965
+ 8.250 1.128 1.000 1.064 -22.510 -22.590 -7.093 15.160 54201.800 2.115 1600.800 0.965
+ 8.300 1.128 1.000 1.064 -22.490 -22.570 -7.043 15.190 60815.400 2.115 1695.600 0.965
+ 8.350 1.128 1.000 1.064 -22.460 -22.540 -6.993 15.210 68236.000 2.115 1796.100 0.965
+ 8.400 1.128 1.000 1.064 -22.440 -22.520 -6.943 15.240 76562.100 2.115 1902.500 0.965
+ 8.450 1.128 1.000 1.064 -22.420 -22.500 -6.893 15.270 85904.000 2.115 2015.200 0.965
+ 8.500 1.128 1.000 1.064 -22.390 -22.470 -6.843 15.290 96385.900 2.115 2134.600 0.965
diff --git a/PyCool/work/cooling_total/m000.dat b/PyCool/work/cooling_total/m000.dat
new file mode 100644
index 0000000..f9c3db2
--- /dev/null
+++ b/PyCool/work/cooling_total/m000.dat
@@ -0,0 +1,91 @@
+ 4.000 0.002 1.000 1.064 -26.040 -23.410 -11.660 11.730 1.483 2.114 8.374 1.983
+ 4.050 0.014 1.000 1.064 -24.690 -22.870 -11.600 11.230 1.682 2.114 8.919 1.961
+ 4.100 0.070 1.000 1.064 -23.530 -22.400 -11.530 10.820 1.985 2.114 9.690 1.864
+ 4.150 0.253 1.000 1.064 -22.630 -22.060 -11.410 10.530 2.586 2.114 11.060 1.606
+ 4.200 0.567 1.000 1.064 -22.120 -21.900 -11.270 10.420 3.594 2.115 13.040 1.297
+ 4.250 0.816 1.000 1.064 -21.980 -21.920 -11.160 10.480 4.649 2.115 14.830 1.125
+ 4.300 0.931 1.000 1.064 -22.030 -22.020 -11.080 10.640 5.535 2.115 16.180 1.060
+ 4.350 0.976 1.000 1.064 -22.130 -22.150 -11.020 10.810 6.349 2.115 17.330 1.037
+ 4.400 0.998 1.000 1.064 -22.240 -22.260 -10.970 10.980 7.202 2.115 18.450 1.026
+ 4.450 1.020 1.000 1.064 -22.330 -22.360 -10.910 11.130 8.169 2.115 19.650 1.015
+ 4.500 1.042 1.000 1.064 -22.410 -22.450 -10.860 11.270 9.261 2.115 20.930 1.004
+ 4.550 1.055 1.000 1.064 -22.490 -22.540 -10.810 11.410 10.450 2.115 22.230 0.998
+ 4.600 1.060 1.000 1.064 -22.580 -22.630 -10.760 11.550 11.760 2.115 23.580 0.996
+ 4.650 1.062 1.000 1.064 -22.640 -22.700 -10.710 11.660 13.210 2.115 24.990 0.995
+ 4.700 1.064 1.000 1.064 -22.650 -22.710 -10.660 11.720 14.830 2.115 26.480 0.994
+ 4.750 1.065 1.000 1.064 -22.570 -22.630 -10.610 11.690 16.650 2.115 28.060 0.993
+ 4.800 1.070 1.000 1.064 -22.410 -22.470 -10.550 11.580 18.730 2.115 29.750 0.991
+ 4.850 1.082 1.000 1.064 -22.240 -22.300 -10.500 11.470 21.120 2.115 31.600 0.986
+ 4.900 1.099 1.000 1.064 -22.160 -22.230 -10.450 11.440 23.890 2.115 33.610 0.978
+ 4.950 1.113 1.000 1.064 -22.170 -22.250 -10.400 11.510 26.980 2.115 35.710 0.972
+ 5.000 1.121 1.000 1.064 -22.250 -22.330 -10.340 11.640 30.380 2.115 37.900 0.968
+ 5.050 1.125 1.000 1.064 -22.360 -22.440 -10.290 11.800 34.150 2.115 40.180 0.966
+ 5.100 1.126 1.000 1.064 -22.460 -22.540 -10.240 11.950 38.340 2.115 42.580 0.966
+ 5.150 1.127 1.000 1.064 -22.560 -22.640 -10.190 12.110 43.040 2.115 45.110 0.965
+ 5.200 1.128 1.000 1.064 -22.660 -22.740 -10.140 12.260 48.300 2.115 47.780 0.965
+ 5.250 1.128 1.000 1.064 -22.740 -22.820 -10.090 12.390 54.190 2.115 50.620 0.965
+ 5.300 1.128 1.000 1.064 -22.820 -22.900 -10.040 12.520 60.810 2.115 53.620 0.965
+ 5.350 1.128 1.000 1.064 -22.890 -22.970 -9.993 12.640 68.230 2.115 56.800 0.965
+ 5.400 1.128 1.000 1.064 -22.950 -23.030 -9.943 12.750 76.560 2.115 60.160 0.965
+ 5.450 1.128 1.000 1.064 -23.010 -23.080 -9.893 12.860 85.900 2.115 63.730 0.965
+ 5.500 1.128 1.000 1.064 -23.050 -23.130 -9.843 12.950 96.380 2.115 67.500 0.965
+ 5.550 1.128 1.000 1.064 -23.090 -23.170 -9.793 13.040 108.100 2.115 71.500 0.965
+ 5.600 1.128 1.000 1.064 -23.130 -23.210 -9.743 13.130 121.300 2.115 75.740 0.965
+ 5.650 1.128 1.000 1.064 -23.160 -23.240 -9.693 13.210 136.100 2.115 80.230 0.965
+ 5.700 1.128 1.000 1.064 -23.180 -23.260 -9.643 13.280 152.800 2.115 84.980 0.965
+ 5.750 1.128 1.000 1.064 -23.200 -23.280 -9.593 13.350 171.400 2.115 90.020 0.965
+ 5.800 1.128 1.000 1.064 -23.220 -23.300 -9.543 13.420 192.300 2.115 95.350 0.965
+ 5.850 1.128 1.000 1.064 -23.230 -23.310 -9.493 13.480 215.800 2.115 101.000 0.965
+ 5.900 1.128 1.000 1.064 -23.240 -23.320 -9.443 13.540 242.100 2.115 107.000 0.965
+ 5.950 1.128 1.000 1.064 -23.250 -23.330 -9.393 13.600 271.600 2.115 113.300 0.965
+ 6.000 1.128 1.000 1.064 -23.250 -23.330 -9.343 13.650 304.800 2.115 120.000 0.965
+ 6.050 1.128 1.000 1.064 -23.250 -23.330 -9.293 13.700 342.000 2.115 127.200 0.965
+ 6.100 1.128 1.000 1.064 -23.250 -23.330 -9.243 13.750 383.700 2.115 134.700 0.965
+ 6.150 1.128 1.000 1.064 -23.250 -23.330 -9.193 13.800 430.500 2.115 142.700 0.965
+ 6.200 1.128 1.000 1.064 -23.250 -23.320 -9.143 13.850 483.100 2.115 151.100 0.965
+ 6.250 1.128 1.000 1.064 -23.240 -23.320 -9.093 13.890 542.000 2.115 160.100 0.965
+ 6.300 1.128 1.000 1.064 -23.230 -23.310 -9.043 13.930 608.100 2.115 169.600 0.965
+ 6.350 1.128 1.000 1.064 -23.230 -23.310 -8.993 13.980 682.300 2.115 179.600 0.965
+ 6.400 1.128 1.000 1.064 -23.230 -23.300 -8.943 14.030 765.600 2.115 190.300 0.965
+ 6.450 1.128 1.000 1.064 -23.210 -23.290 -8.893 14.060 859.000 2.115 201.500 0.965
+ 6.500 1.128 1.000 1.064 -23.200 -23.280 -8.843 14.100 963.800 2.115 213.500 0.965
+ 6.550 1.128 1.000 1.064 -23.190 -23.270 -8.793 14.140 1081.400 2.115 226.100 0.965
+ 6.600 1.128 1.000 1.064 -23.180 -23.250 -8.743 14.180 1213.400 2.115 239.500 0.965
+ 6.650 1.128 1.000 1.064 -23.160 -23.240 -8.693 14.210 1361.500 2.115 253.700 0.965
+ 6.700 1.128 1.000 1.064 -23.150 -23.220 -8.643 14.250 1527.600 2.115 268.700 0.965
+ 6.750 1.128 1.000 1.064 -23.130 -23.210 -8.593 14.280 1714.000 2.115 284.700 0.965
+ 6.800 1.128 1.000 1.064 -23.110 -23.190 -8.543 14.310 1923.100 2.115 301.500 0.965
+ 6.850 1.128 1.000 1.064 -23.100 -23.170 -8.493 14.350 2157.800 2.115 319.400 0.965
+ 6.900 1.128 1.000 1.064 -23.080 -23.160 -8.443 14.380 2421.100 2.115 338.300 0.965
+ 6.950 1.128 1.000 1.064 -23.060 -23.140 -8.393 14.410 2716.500 2.115 358.400 0.965
+ 7.000 1.128 1.000 1.064 -23.050 -23.120 -8.343 14.450 3047.900 2.115 379.600 0.965
+ 7.050 1.128 1.000 1.064 -23.030 -23.110 -8.293 14.480 3419.800 2.115 402.100 0.965
+ 7.100 1.128 1.000 1.064 -23.010 -23.090 -8.243 14.510 3837.100 2.115 425.900 0.965
+ 7.150 1.128 1.000 1.064 -22.990 -23.070 -8.193 14.540 4305.300 2.115 451.200 0.965
+ 7.200 1.128 1.000 1.064 -22.970 -23.050 -8.143 14.570 4830.700 2.115 477.900 0.965
+ 7.250 1.128 1.000 1.064 -22.950 -23.030 -8.093 14.600 5420.100 2.115 506.200 0.965
+ 7.300 1.128 1.000 1.064 -22.930 -23.010 -8.043 14.630 6081.400 2.115 536.200 0.965
+ 7.350 1.128 1.000 1.064 -22.910 -22.990 -7.993 14.660 6823.500 2.115 568.000 0.965
+ 7.400 1.128 1.000 1.064 -22.890 -22.960 -7.943 14.690 7656.100 2.115 601.600 0.965
+ 7.450 1.128 1.000 1.064 -22.860 -22.940 -7.893 14.710 8590.300 2.115 637.300 0.965
+ 7.500 1.128 1.000 1.064 -22.840 -22.920 -7.843 14.740 9638.400 2.115 675.000 0.965
+ 7.550 1.128 1.000 1.064 -22.820 -22.900 -7.793 14.770 10814.500 2.115 715.000 0.965
+ 7.600 1.128 1.000 1.064 -22.800 -22.880 -7.743 14.800 12134.100 2.115 757.400 0.965
+ 7.650 1.128 1.000 1.064 -22.780 -22.860 -7.693 14.830 13614.600 2.115 802.300 0.965
+ 7.700 1.128 1.000 1.064 -22.760 -22.840 -7.643 14.860 15275.900 2.115 849.800 0.965
+ 7.750 1.128 1.000 1.064 -22.740 -22.810 -7.593 14.890 17139.800 2.115 900.200 0.965
+ 7.800 1.128 1.000 1.064 -22.710 -22.790 -7.543 14.910 19231.200 2.115 953.500 0.965
+ 7.850 1.128 1.000 1.064 -22.690 -22.770 -7.493 14.940 21577.800 2.115 1010.000 0.965
+ 7.900 1.128 1.000 1.064 -22.670 -22.750 -7.443 14.970 24210.600 2.115 1069.900 0.965
+ 7.950 1.128 1.000 1.064 -22.650 -22.730 -7.393 15.000 27164.800 2.115 1133.300 0.965
+ 8.000 1.128 1.000 1.064 -22.620 -22.700 -7.343 15.020 30479.400 2.115 1200.400 0.965
+ 8.050 1.128 1.000 1.064 -22.600 -22.680 -7.293 15.050 34198.400 2.115 1271.500 0.965
+ 8.100 1.128 1.000 1.064 -22.580 -22.660 -7.243 15.080 38371.300 2.115 1346.900 0.965
+ 8.150 1.128 1.000 1.064 -22.560 -22.630 -7.193 15.110 43053.300 2.115 1426.700 0.965
+ 8.200 1.128 1.000 1.064 -22.530 -22.610 -7.143 15.130 48306.600 2.115 1511.200 0.965
+ 8.250 1.128 1.000 1.064 -22.510 -22.590 -7.093 15.160 54200.900 2.115 1600.800 0.965
+ 8.300 1.128 1.000 1.064 -22.490 -22.570 -7.043 15.190 60814.400 2.115 1695.600 0.965
+ 8.350 1.128 1.000 1.064 -22.460 -22.540 -6.993 15.210 68234.900 2.115 1796.100 0.965
+ 8.400 1.128 1.000 1.064 -22.440 -22.520 -6.943 15.240 76560.800 2.115 1902.500 0.965
+ 8.450 1.128 1.000 1.064 -22.420 -22.500 -6.893 15.270 85902.600 2.115 2015.300 0.965
+ 8.500 1.128 1.000 1.064 -22.390 -22.470 -6.843 15.290 96384.300 2.115 2134.700 0.965
diff --git a/PyCool/work/cooling_total/mkmean.py b/PyCool/work/cooling_total/mkmean.py
new file mode 100755
index 0000000..27fb746
--- /dev/null
+++ b/PyCool/work/cooling_total/mkmean.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+
+
+from pNbody import *
+
+file1 = sys.argv[1]
+file2 = sys.argv[2]
+file3 = sys.argv[3]
+
+
+t,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11 = io.read_ascii(file1,[0,1,2,3,4,5,6,7,8,9,10,11])
+t,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11 = io.read_ascii(file2,[0,1,2,3,4,5,6,7,8,9,10,11])
+
+
+z1 = 0.5*(x1+y1)
+z2 = 0.5*(x2+y2)
+z3 = 0.5*(x3+y3)
+z4 = 0.5*(x4+y4)
+z5 = 0.5*(x5+y5)
+z6 = 0.5*(x6+y6)
+z7 = 0.5*(x7+y7)
+z8 = 0.5*(x8+y8)
+z9 = 0.5*(x9+y9)
+z10 = 0.5*(x10+y10)
+z11 = 0.5*(x11+y11)
+
+f = open(file3,'w')
+
+for i in range(len(t)):
+ line = "%8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n"%(t[i],z1[i],z2[i],z3[i],z4[i],z5[i],z6[i],z7[i],z8[i],z9[i],z10[i],z11[i])
+ print line
+
+ f.write(line)
+
+
+f.close()
+
+
+
+
+
+
+
+
+
+
diff --git a/PyCool/work/cooling_total/new-convert.py b/PyCool/work/cooling_total/new-convert.py
new file mode 100755
index 0000000..532949e
--- /dev/null
+++ b/PyCool/work/cooling_total/new-convert.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+
+from numpy import *
+from pNbody import io
+
+
+
+files = [
+'cooling_-10.0.dat',
+'cooling_-03.0.dat',
+'cooling_-02.5.dat',
+'cooling_-02.0.dat',
+'cooling_-01.5.dat',
+'cooling_-01.0.dat',
+'cooling_-00.5.dat',
+'cooling_+00.0.dat',
+'cooling_+00.5.dat'
+]
+
+
+
+f = open('cooling.dat','w')
+f.write("-3.0 0.5 0.5\n")
+f.write(" 0.0 8.5 0.05\n")
+f.write(" 0.00181\n")
+f.write(" 9 171\n")
+
+
+for file in files:
+
+ logT,logL = io.read_ascii(file,[0,1])
+
+ for i in range(len(logT)):
+ f.write("%8.3f\n"%logL[i])
+
+
+
+f.close()
+
+
diff --git a/PyCool/work/cooling_total/plot.py b/PyCool/work/cooling_total/plot.py
new file mode 100755
index 0000000..2c2f13b
--- /dev/null
+++ b/PyCool/work/cooling_total/plot.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+
+from numpy import *
+import Ptools as pt
+
+
+
+
+files = [
+'cooling_+00.5.dat',
+'cooling_+00.0.dat',
+'cooling_-00.5.dat',
+'cooling_-01.0.dat',
+'cooling_-01.5.dat',
+'cooling_-02.0.dat',
+'cooling_-02.5.dat',
+'cooling_-03.0.dat',
+'cooling_-10.0.dat'
+]
+
+#files = ['cooling_-1.0.dat']
+
+
+
+for file in files:
+
+ logT,logL = pt.io.read_ascii(file,[0,1])
+ pt.plot(logT,logL,label=r"[Fe/H]=%s"%file[8:14])
+
+pt.axis([1,8,-30,-20])
+pt.xlabel('log T')
+pt.ylabel('log Lambda/nH2')
+pt.legend(loc=4)
+
+pt.show()
diff --git a/PyCool/work/cooling_total/plot_sutherland.py b/PyCool/work/cooling_total/plot_sutherland.py
new file mode 100755
index 0000000..a25a715
--- /dev/null
+++ b/PyCool/work/cooling_total/plot_sutherland.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+
+from numarray import *
+import SM
+
+
+def lambdap(logT):
+ return 1e-21* ( pow(10.,-0.1-1.88* pow(5.23-logT,4.)) + pow(10.,-3.24-0.085* pow(4.-logT,3)) ) ;
+
+
+g = SM.plot()
+
+
+files = ['m000.dat','m-30.dat','m-25.dat','m-20.dat','m-15.dat','m-10.dat','m-05.dat','m-00.dat','m+05.dat']
+
+g.limits(1,8,-30,-20)
+g.box()
+
+
+for file in files:
+
+ logT,ne,nh,nt,logL = g.read(file,[0,1,2,3,4])
+ #logL = log10(10**logL*(ne*ne))
+ g.connect(logT,logL)
+
+
+
+g.show()
diff --git a/PyCool/work/cooling_total/sto.cooling.dat b/PyCool/work/cooling_total/sto.cooling.dat
new file mode 100644
index 0000000..61b33d2
--- /dev/null
+++ b/PyCool/work/cooling_total/sto.cooling.dat
@@ -0,0 +1,1543 @@
+-3.0 0.5 0.5
+ 0.0 8.5 0.05
+ 0.00181
+ 9 171
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.996
+ -39.987
+ -39.963
+ -39.906
+ -39.799
+ -39.640
+ -39.442
+ -39.229
+ -39.016
+ -38.804
+ -38.565
+ -38.223
+ -37.723
+ -37.131
+ -36.533
+ -35.968
+ -35.443
+ -34.960
+ -34.516
+ -34.108
+ -33.733
+ -33.388
+ -33.071
+ -32.779
+ -32.508
+ -32.257
+ -32.024
+ -31.805
+ -31.599
+ -31.404
+ -31.219
+ -31.041
+ -30.869
+ -30.701
+ -30.537
+ -30.375
+ -30.215
+ -30.055
+ -29.894
+ -29.733
+ -29.570
+ -29.405
+ -29.239
+ -29.071
+ -28.901
+ -28.730
+ -28.557
+ -28.384
+ -28.210
+ -28.038
+ -27.867
+ -27.698
+ -27.534
+ -27.375
+ -27.222
+ -27.078
+ -26.943
+ -26.821
+ -26.712
+ -26.619
+ -26.544
+ -26.490
+ -25.900
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.976
+ -39.713
+ -38.912
+ -37.981
+ -37.127
+ -36.362
+ -35.680
+ -35.072
+ -34.530
+ -34.046
+ -33.615
+ -33.231
+ -32.888
+ -32.583
+ -32.310
+ -32.066
+ -31.849
+ -31.655
+ -31.482
+ -31.327
+ -31.187
+ -31.061
+ -30.945
+ -30.838
+ -30.735
+ -30.636
+ -30.538
+ -30.440
+ -30.341
+ -30.242
+ -30.144
+ -30.048
+ -29.956
+ -29.867
+ -29.782
+ -29.703
+ -29.629
+ -29.559
+ -29.494
+ -29.434
+ -29.377
+ -29.323
+ -29.271
+ -29.220
+ -29.170
+ -29.118
+ -29.063
+ -29.003
+ -28.936
+ -28.860
+ -28.772
+ -28.671
+ -28.556
+ -28.430
+ -28.292
+ -28.145
+ -27.991
+ -27.834
+ -27.676
+ -27.518
+ -27.363
+ -27.214
+ -27.072
+ -26.939
+ -26.817
+ -26.709
+ -26.617
+ -26.542
+ -26.488
+ -25.899
+ -24.683
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.030
+ -22.130
+ -22.240
+ -22.330
+ -22.400
+ -22.490
+ -22.570
+ -22.630
+ -22.630
+ -22.550
+ -22.390
+ -22.230
+ -22.150
+ -22.160
+ -22.240
+ -22.330
+ -22.430
+ -22.520
+ -22.600
+ -22.660
+ -22.720
+ -22.770
+ -22.820
+ -22.900
+ -22.980
+ -23.040
+ -23.080
+ -23.120
+ -23.140
+ -23.160
+ -23.180
+ -23.200
+ -23.220
+ -23.230
+ -23.230
+ -23.240
+ -23.240
+ -23.230
+ -23.230
+ -23.230
+ -23.220
+ -23.230
+ -23.220
+ -23.210
+ -23.200
+ -23.190
+ -23.170
+ -23.160
+ -23.140
+ -23.130
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.040
+ -23.030
+ -23.010
+ -22.990
+ -22.970
+ -22.950
+ -22.930
+ -22.910
+ -22.890
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.760
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.650
+ -22.620
+ -22.600
+ -22.580
+ -22.560
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.928
+ -39.402
+ -38.437
+ -37.484
+ -36.627
+ -35.862
+ -35.180
+ -34.572
+ -34.030
+ -33.546
+ -33.115
+ -32.731
+ -32.388
+ -32.083
+ -31.810
+ -31.566
+ -31.349
+ -31.155
+ -30.982
+ -30.827
+ -30.687
+ -30.561
+ -30.445
+ -30.338
+ -30.235
+ -30.136
+ -30.038
+ -29.940
+ -29.841
+ -29.743
+ -29.645
+ -29.549
+ -29.457
+ -29.369
+ -29.285
+ -29.207
+ -29.134
+ -29.066
+ -29.003
+ -28.945
+ -28.891
+ -28.841
+ -28.795
+ -28.752
+ -28.711
+ -28.671
+ -28.632
+ -28.593
+ -28.551
+ -28.506
+ -28.454
+ -28.394
+ -28.323
+ -28.239
+ -28.142
+ -28.030
+ -27.906
+ -27.771
+ -27.630
+ -27.485
+ -27.340
+ -27.197
+ -27.059
+ -26.929
+ -26.810
+ -26.703
+ -26.612
+ -26.538
+ -26.485
+ -25.895
+ -24.678
+ -23.530
+ -22.630
+ -22.120
+ -21.980
+ -22.025
+ -22.125
+ -22.235
+ -22.320
+ -22.385
+ -22.465
+ -22.530
+ -22.570
+ -22.560
+ -22.475
+ -22.330
+ -22.180
+ -22.100
+ -22.105
+ -22.170
+ -22.245
+ -22.320
+ -22.375
+ -22.425
+ -22.460
+ -22.490
+ -22.515
+ -22.560
+ -22.660
+ -22.785
+ -22.890
+ -22.950
+ -22.990
+ -23.005
+ -23.025
+ -23.055
+ -23.100
+ -23.140
+ -23.160
+ -23.165
+ -23.180
+ -23.180
+ -23.175
+ -23.175
+ -23.175
+ -23.175
+ -23.190
+ -23.190
+ -23.185
+ -23.180
+ -23.170
+ -23.155
+ -23.145
+ -23.130
+ -23.120
+ -23.100
+ -23.085
+ -23.070
+ -23.055
+ -23.035
+ -23.020
+ -23.005
+ -22.985
+ -22.965
+ -22.945
+ -22.925
+ -22.905
+ -22.885
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.755
+ -22.730
+ -22.710
+ -22.690
+ -22.670
+ -22.645
+ -22.620
+ -22.600
+ -22.580
+ -22.555
+ -22.530
+ -22.510
+ -22.490
+ -22.460
+ -22.440
+ -22.420
+ -22.390
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.989
+ -39.803
+ -38.985
+ -37.945
+ -36.985
+ -36.127
+ -35.362
+ -34.680
+ -34.072
+ -33.530
+ -33.046
+ -32.615
+ -32.231
+ -31.888
+ -31.583
+ -31.310
+ -31.066
+ -30.849
+ -30.655
+ -30.482
+ -30.327
+ -30.187
+ -30.061
+ -29.945
+ -29.838
+ -29.735
+ -29.636
+ -29.538
+ -29.440
+ -29.341
+ -29.243
+ -29.145
+ -29.050
+ -28.957
+ -28.869
+ -28.786
+ -28.708
+ -28.635
+ -28.568
+ -28.506
+ -28.448
+ -28.396
+ -28.347
+ -28.303
+ -28.262
+ -28.224
+ -28.189
+ -28.156
+ -28.125
+ -28.095
+ -28.064
+ -28.032
+ -27.998
+ -27.959
+ -27.913
+ -27.857
+ -27.791
+ -27.711
+ -27.617
+ -27.511
+ -27.395
+ -27.272
+ -27.146
+ -27.021
+ -26.900
+ -26.787
+ -26.685
+ -26.597
+ -26.525
+ -26.473
+ -25.888
+ -24.672
+ -23.529
+ -22.630
+ -22.120
+ -21.980
+ -22.020
+ -22.120
+ -22.230
+ -22.310
+ -22.370
+ -22.440
+ -22.490
+ -22.510
+ -22.490
+ -22.400
+ -22.270
+ -22.130
+ -22.050
+ -22.050
+ -22.100
+ -22.160
+ -22.210
+ -22.230
+ -22.250
+ -22.260
+ -22.260
+ -22.260
+ -22.300
+ -22.420
+ -22.590
+ -22.740
+ -22.820
+ -22.860
+ -22.870
+ -22.890
+ -22.930
+ -23.000
+ -23.060
+ -23.090
+ -23.100
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.120
+ -23.130
+ -23.150
+ -23.160
+ -23.160
+ -23.160
+ -23.150
+ -23.140
+ -23.130
+ -23.120
+ -23.110
+ -23.090
+ -23.080
+ -23.060
+ -23.050
+ -23.030
+ -23.010
+ -23.000
+ -22.980
+ -22.960
+ -22.940
+ -22.920
+ -22.900
+ -22.880
+ -22.860
+ -22.840
+ -22.820
+ -22.800
+ -22.780
+ -22.750
+ -22.730
+ -22.710
+ -22.690
+ -22.669
+ -22.639
+ -22.619
+ -22.599
+ -22.579
+ -22.549
+ -22.529
+ -22.509
+ -22.489
+ -22.459
+ -22.439
+ -22.419
+ -22.389
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.967
+ -39.550
+ -38.515
+ -37.447
+ -36.485
+ -35.627
+ -34.862
+ -34.180
+ -33.572
+ -33.030
+ -32.546
+ -32.115
+ -31.731
+ -31.388
+ -31.083
+ -30.810
+ -30.566
+ -30.349
+ -30.155
+ -29.982
+ -29.827
+ -29.687
+ -29.561
+ -29.445
+ -29.338
+ -29.235
+ -29.136
+ -29.038
+ -28.940
+ -28.841
+ -28.743
+ -28.645
+ -28.550
+ -28.458
+ -28.370
+ -28.286
+ -28.208
+ -28.136
+ -28.068
+ -28.006
+ -27.949
+ -27.897
+ -27.849
+ -27.805
+ -27.765
+ -27.729
+ -27.695
+ -27.664
+ -27.636
+ -27.609
+ -27.585
+ -27.561
+ -27.537
+ -27.512
+ -27.486
+ -27.456
+ -27.421
+ -27.379
+ -27.328
+ -27.267
+ -27.193
+ -27.110
+ -27.017
+ -26.919
+ -26.820
+ -26.723
+ -26.633
+ -26.553
+ -26.487
+ -26.438
+ -25.846
+ -24.637
+ -23.509
+ -22.615
+ -22.110
+ -21.965
+ -22.005
+ -22.095
+ -22.180
+ -22.230
+ -22.260
+ -22.275
+ -22.275
+ -22.245
+ -22.195
+ -22.105
+ -21.995
+ -21.880
+ -21.810
+ -21.795
+ -21.815
+ -21.840
+ -21.855
+ -21.850
+ -21.845
+ -21.835
+ -21.820
+ -21.810
+ -21.850
+ -21.975
+ -22.170
+ -22.345
+ -22.445
+ -22.485
+ -22.495
+ -22.515
+ -22.565
+ -22.665
+ -22.755
+ -22.800
+ -22.825
+ -22.850
+ -22.860
+ -22.855
+ -22.855
+ -22.865
+ -22.900
+ -22.945
+ -22.980
+ -23.000
+ -23.015
+ -23.020
+ -23.024
+ -23.024
+ -23.024
+ -23.024
+ -23.014
+ -23.009
+ -22.994
+ -22.984
+ -22.969
+ -22.954
+ -22.949
+ -22.939
+ -22.924
+ -22.909
+ -22.894
+ -22.874
+ -22.859
+ -22.839
+ -22.824
+ -22.804
+ -22.784
+ -22.764
+ -22.739
+ -22.719
+ -22.699
+ -22.678
+ -22.658
+ -22.628
+ -22.608
+ -22.588
+ -22.568
+ -22.543
+ -22.518
+ -22.498
+ -22.478
+ -22.453
+ -22.428
+ -22.408
+ -22.383
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.997
+ -39.903
+ -39.171
+ -38.024
+ -36.948
+ -35.986
+ -35.127
+ -34.362
+ -33.680
+ -33.072
+ -32.530
+ -32.046
+ -31.615
+ -31.231
+ -30.888
+ -30.583
+ -30.310
+ -30.066
+ -29.849
+ -29.655
+ -29.482
+ -29.327
+ -29.187
+ -29.061
+ -28.945
+ -28.838
+ -28.735
+ -28.636
+ -28.538
+ -28.440
+ -28.341
+ -28.243
+ -28.145
+ -28.050
+ -27.958
+ -27.870
+ -27.786
+ -27.708
+ -27.636
+ -27.569
+ -27.507
+ -27.450
+ -27.398
+ -27.350
+ -27.306
+ -27.266
+ -27.230
+ -27.197
+ -27.167
+ -27.139
+ -27.114
+ -27.091
+ -27.070
+ -27.050
+ -27.031
+ -27.012
+ -26.993
+ -26.973
+ -26.950
+ -26.924
+ -26.893
+ -26.856
+ -26.811
+ -26.759
+ -26.699
+ -26.634
+ -26.566
+ -26.499
+ -26.436
+ -26.383
+ -26.342
+ -25.788
+ -24.601
+ -23.489
+ -22.600
+ -22.100
+ -21.950
+ -21.990
+ -22.070
+ -22.130
+ -22.150
+ -22.150
+ -22.110
+ -22.060
+ -21.980
+ -21.900
+ -21.810
+ -21.720
+ -21.630
+ -21.570
+ -21.540
+ -21.530
+ -21.520
+ -21.500
+ -21.470
+ -21.440
+ -21.410
+ -21.380
+ -21.360
+ -21.400
+ -21.530
+ -21.750
+ -21.950
+ -22.070
+ -22.110
+ -22.120
+ -22.140
+ -22.200
+ -22.330
+ -22.450
+ -22.510
+ -22.550
+ -22.580
+ -22.600
+ -22.590
+ -22.590
+ -22.610
+ -22.670
+ -22.739
+ -22.799
+ -22.839
+ -22.869
+ -22.889
+ -22.909
+ -22.919
+ -22.928
+ -22.938
+ -22.938
+ -22.938
+ -22.928
+ -22.918
+ -22.908
+ -22.898
+ -22.897
+ -22.897
+ -22.887
+ -22.877
+ -22.867
+ -22.847
+ -22.836
+ -22.816
+ -22.806
+ -22.786
+ -22.766
+ -22.746
+ -22.726
+ -22.706
+ -22.685
+ -22.665
+ -22.645
+ -22.615
+ -22.595
+ -22.575
+ -22.555
+ -22.535
+ -22.505
+ -22.485
+ -22.464
+ -22.444
+ -22.414
+ -22.394
+ -22.374
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.990
+ -39.747
+ -38.718
+ -37.527
+ -36.448
+ -35.486
+ -34.627
+ -33.862
+ -33.180
+ -32.572
+ -32.030
+ -31.546
+ -31.115
+ -30.731
+ -30.388
+ -30.083
+ -29.810
+ -29.566
+ -29.349
+ -29.155
+ -28.982
+ -28.827
+ -28.687
+ -28.561
+ -28.445
+ -28.338
+ -28.235
+ -28.136
+ -28.038
+ -27.940
+ -27.841
+ -27.743
+ -27.645
+ -27.550
+ -27.458
+ -27.370
+ -27.286
+ -27.208
+ -27.136
+ -27.069
+ -27.007
+ -26.950
+ -26.898
+ -26.850
+ -26.806
+ -26.767
+ -26.731
+ -26.698
+ -26.668
+ -26.640
+ -26.616
+ -26.593
+ -26.573
+ -26.554
+ -26.537
+ -26.520
+ -26.505
+ -26.490
+ -26.475
+ -26.459
+ -26.442
+ -26.423
+ -26.401
+ -26.375
+ -26.345
+ -26.311
+ -26.274
+ -26.234
+ -26.195
+ -26.160
+ -26.132
+ -25.648
+ -24.480
+ -23.419
+ -22.560
+ -22.070
+ -21.920
+ -21.940
+ -22.000
+ -22.020
+ -22.000
+ -21.940
+ -21.870
+ -21.780
+ -21.690
+ -21.590
+ -21.500
+ -21.410
+ -21.330
+ -21.270
+ -21.230
+ -21.220
+ -21.230
+ -21.220
+ -21.190
+ -21.160
+ -21.140
+ -21.120
+ -21.100
+ -21.140
+ -21.270
+ -21.500
+ -21.700
+ -21.810
+ -21.850
+ -21.860
+ -21.870
+ -21.930
+ -22.050
+ -22.150
+ -22.190
+ -22.220
+ -22.240
+ -22.240
+ -22.240
+ -22.230
+ -22.259
+ -22.339
+ -22.439
+ -22.529
+ -22.588
+ -22.638
+ -22.658
+ -22.688
+ -22.707
+ -22.727
+ -22.747
+ -22.756
+ -22.746
+ -22.736
+ -22.735
+ -22.725
+ -22.725
+ -22.744
+ -22.754
+ -22.763
+ -22.762
+ -22.762
+ -22.751
+ -22.741
+ -22.730
+ -22.720
+ -22.709
+ -22.689
+ -22.669
+ -22.648
+ -22.638
+ -22.618
+ -22.597
+ -22.577
+ -22.556
+ -22.536
+ -22.516
+ -22.486
+ -22.465
+ -22.445
+ -22.425
+ -22.404
+ -22.384
+ -22.364
+ -22.334
+ -22.313
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.999
+ -39.969
+ -39.455
+ -38.234
+ -37.028
+ -35.949
+ -34.986
+ -34.127
+ -33.362
+ -32.680
+ -32.072
+ -31.530
+ -31.046
+ -30.615
+ -30.231
+ -29.888
+ -29.583
+ -29.310
+ -29.066
+ -28.849
+ -28.655
+ -28.482
+ -28.327
+ -28.187
+ -28.061
+ -27.945
+ -27.838
+ -27.735
+ -27.636
+ -27.538
+ -27.440
+ -27.341
+ -27.243
+ -27.145
+ -27.050
+ -26.958
+ -26.870
+ -26.786
+ -26.708
+ -26.636
+ -26.569
+ -26.507
+ -26.450
+ -26.398
+ -26.350
+ -26.307
+ -26.267
+ -26.231
+ -26.198
+ -26.168
+ -26.141
+ -26.116
+ -26.094
+ -26.074
+ -26.055
+ -26.039
+ -26.023
+ -26.009
+ -25.996
+ -25.983
+ -25.971
+ -25.959
+ -25.947
+ -25.934
+ -25.919
+ -25.904
+ -25.886
+ -25.867
+ -25.846
+ -25.825
+ -25.805
+ -25.787
+ -25.406
+ -24.256
+ -23.279
+ -22.470
+ -21.990
+ -21.840
+ -21.850
+ -21.870
+ -21.840
+ -21.770
+ -21.660
+ -21.560
+ -21.450
+ -21.340
+ -21.240
+ -21.140
+ -21.050
+ -20.970
+ -20.910
+ -20.870
+ -20.870
+ -20.900
+ -20.910
+ -20.890
+ -20.860
+ -20.850
+ -20.840
+ -20.840
+ -20.870
+ -21.010
+ -21.230
+ -21.430
+ -21.540
+ -21.580
+ -21.590
+ -21.590
+ -21.640
+ -21.740
+ -21.810
+ -21.830
+ -21.840
+ -21.840
+ -21.830
+ -21.819
+ -21.819
+ -21.849
+ -21.949
+ -22.079
+ -22.188
+ -22.268
+ -22.317
+ -22.347
+ -22.376
+ -22.406
+ -22.435
+ -22.454
+ -22.474
+ -22.473
+ -22.453
+ -22.443
+ -22.442
+ -22.451
+ -22.480
+ -22.518
+ -22.546
+ -22.565
+ -22.583
+ -22.591
+ -22.589
+ -22.588
+ -22.577
+ -22.575
+ -22.564
+ -22.543
+ -22.532
+ -22.511
+ -22.499
+ -22.478
+ -22.458
+ -22.446
+ -22.425
+ -22.404
+ -22.383
+ -22.363
+ -22.342
+ -22.321
+ -22.300
+ -22.279
+ -22.258
+ -22.237
+ -22.216
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -40.000
+ -39.998
+ -39.908
+ -39.049
+ -37.739
+ -36.529
+ -35.449
+ -34.486
+ -33.627
+ -32.862
+ -32.180
+ -31.572
+ -31.030
+ -30.546
+ -30.115
+ -29.731
+ -29.388
+ -29.083
+ -28.810
+ -28.566
+ -28.349
+ -28.155
+ -27.982
+ -27.827
+ -27.687
+ -27.561
+ -27.445
+ -27.338
+ -27.235
+ -27.136
+ -27.038
+ -26.940
+ -26.841
+ -26.743
+ -26.645
+ -26.550
+ -26.458
+ -26.370
+ -26.286
+ -26.208
+ -26.136
+ -26.069
+ -26.007
+ -25.950
+ -25.898
+ -25.850
+ -25.807
+ -25.767
+ -25.731
+ -25.698
+ -25.668
+ -25.641
+ -25.616
+ -25.594
+ -25.574
+ -25.556
+ -25.539
+ -25.524
+ -25.510
+ -25.498
+ -25.486
+ -25.475
+ -25.465
+ -25.455
+ -25.445
+ -25.434
+ -25.424
+ -25.413
+ -25.402
+ -25.389
+ -25.375
+ -25.362
+ -25.350
+ -25.166
+ -24.234
+ -22.978
+ -22.260
+ -21.800
+ -21.640
+ -21.610
+ -21.570
+ -21.480
+ -21.360
+ -21.220
+ -21.090
+ -20.970
+ -20.860
+ -20.750
+ -20.650
+ -20.570
+ -20.500
+ -20.430
+ -20.390
+ -20.390
+ -20.420
+ -20.420
+ -20.400
+ -20.370
+ -20.350
+ -20.340
+ -20.340
+ -20.370
+ -20.510
+ -20.730
+ -20.930
+ -21.050
+ -21.090
+ -21.090
+ -21.090
+ -21.140
+ -21.240
+ -21.320
+ -21.340
+ -21.350
+ -21.350
+ -21.339
+ -21.329
+ -21.319
+ -21.349
+ -21.459
+ -21.589
+ -21.708
+ -21.798
+ -21.857
+ -21.896
+ -21.926
+ -21.955
+ -21.994
+ -22.033
+ -22.052
+ -22.052
+ -22.041
+ -22.031
+ -22.030
+ -22.049
+ -22.097
+ -22.144
+ -22.191
+ -22.237
+ -22.273
+ -22.289
+ -22.315
+ -22.321
+ -22.327
+ -22.324
+ -22.321
+ -22.317
+ -22.314
+ -22.301
+ -22.288
+ -22.275
+ -22.262
+ -22.240
+ -22.227
+ -22.214
+ -22.192
+ -22.179
+ -22.165
+ -22.143
+ -22.121
+ -22.108
+ -22.086
+ -22.064
+ -22.042
diff --git a/PyGear/examples/cosmictime_plot_azt.py b/PyGear/examples/cosmictime_plot_azt.py
new file mode 100755
index 0000000..217f83a
--- /dev/null
+++ b/PyGear/examples/cosmictime_plot_azt.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+
+from pNbody import ic
+from pNbody import units
+
+from numpy import *
+from PyGear import cosmic
+
+import Ptools as pt
+
+import sys
+import time
+
+
+cosmic.InitDefaultParameters() # init default parameters
+
+
+params = {}
+params['Omega0'] = 0.279
+params['OmegaLambda'] = 0.721
+params['OmegaBaryon'] = 0.046
+params['HubbleParam'] = 0.7
+params['BoxSize'] = 2000.0
+
+
+
+cosmic.SetParameters(params)
+cosmic.Init()
+params = cosmic.GetParameters()
+
+# units
+system_of_units = units.Set_SystemUnits_From_Params(params)
+out_units = units.UnitSystem('local',[units.Unit_cm,units.Unit_Msol,units.Unit_Gyr,units.Unit_K])
+
+# convert in Gyr and physical units
+ft = system_of_units.convertionFactorTo(out_units.UnitTime) / params['HubbleParam']
+
+
+
+a_s = arange(0,1,0.01)
+t_s = zeros(len(a_s))
+z_s = zeros(len(t_s))
+
+for i,a in enumerate(a_s):
+
+ t_s[i] = cosmic.get_CosmicTime_from_a(a) * ft
+ z_s[i] = cosmic.get_Redshift_from_a(a)
+
+
+pt.subplot(2,1,1)
+pt.plot(a_s,t_s)
+pt.xlabel('Scaling Factor')
+pt.ylabel('Cosmic Time')
+
+pt.subplot(2,1,2)
+pt.plot(a_s,z_s)
+pt.xlabel('Scaling Factor')
+pt.ylabel('Redshift')
+
+pt.show()
+
+
+
diff --git a/PyGear/examples/cosmictime_test.py b/PyGear/examples/cosmictime_test.py
new file mode 100755
index 0000000..f4f3d2f
--- /dev/null
+++ b/PyGear/examples/cosmictime_test.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+
+from pNbody import ic
+
+from numpy import *
+from PyGear import cosmic
+
+import Ptools as pt
+
+import sys
+import time
+
+
+cosmic.InitDefaultParameters() # init default parameters
+
+
+params = {}
+#params['TimeBegin'] = 0.5
+#params['TimeMax'] = 1.0
+params['TimeBegin'] = 0.0
+params['TimeMax'] = 10.0
+
+#params['ComovingIntegrationOn'] = 1
+params['ComovingIntegrationOn'] = 0
+
+params['Omega0'] = 0.279
+params['OmegaLambda'] = 0.721
+params['OmegaBaryon'] = 0.046
+params['HubbleParam'] = 0.7
+params['BoxSize'] = 2000.0
+
+
+cosmic.SetParameters(params)
+
+
+cosmic.Init()
+params = cosmic.GetParameters()
+
+#t= cosmic.get_cosmictime_difference(0.001,1)
+#print t*14.1/3000. / params['HubbleParam']
+
+
+
+a = 0.01
+print a
+
+t= cosmic.get_CosmicTime_from_a(a)
+z= cosmic.get_Redshift_from_a(a)
+print t*14.1/3000. / params['HubbleParam']
+print t
+print z
+
+a= cosmic.get_a_from_CosmicTime(t)
+print a
+
+sys.exit()
+
+a,t=cosmic.get_FullCosmicTimeTable()
+ap,tp=cosmic.get_FullCosmicTimeTableInv()
+
+
+pt.plot(a,t)
+pt.scatter(ap,tp)
+pt.show()
+
+
+
+'''''''''''''''''
+
+il faut que ca marche sans la cosmologie, i.e.
+si la table est initializee avec d'autres valeurs....
+
+a -> z
+z -> a
+
+t -> a
+a -> t
+
+
+get_CosmicTime_from_a()
+get_a_from_CosmicTime()
+
+
+-> sortir la table
+
+get_CosmicTimeTable
+get_as
+
+
+
+
+
+'''''''''''''''''
+
+
+
+
+
diff --git a/src/allvars.h b/src/allvars.h
index c0e6f2f..22a2aaa 100644
--- a/src/allvars.h
+++ b/src/allvars.h
@@ -1,2102 +1,2104 @@
/*! \file allvars.h
* \brief declares global variables.
*
* This file declares all global variables. Further variables should be added here, and declared as
* 'extern'. The actual existence of these variables is provided by the file 'allvars.c'. To produce
* 'allvars.c' from 'allvars.h', do the following:
*
* - Erase all #define's, typedef's, and enum's
* - add #include "allvars.h", delete the #ifndef ALLVARS_H conditional
* - delete all keywords 'extern'
* - delete all struct definitions enclosed in {...}, e.g.
* "extern struct global_data_all_processes {....} All;"
* becomes "struct global_data_all_processes All;"
*/
#ifndef ALLVARS_H
#define ALLVARS_H
#include <stdio.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_spline.h>
#include <gsl/gsl_integration.h>
#include "tags.h"
#define GADGETVERSION "2.0" /*!< code version string */
#define TIMEBASE (1<<28) /*!< The simulated timespan is mapped onto the integer interval [0,TIMESPAN],
* where TIMESPAN needs to be a power of 2. Note that (1<<28) corresponds to 2^29
*/
#define MAXTOPNODES 200000 /*!< Maximum number of nodes in the top-level tree used for domain decomposition */
typedef long long peanokey; /*!< defines the variable type used for Peano-Hilbert keys */
#define BITS_PER_DIMENSION 18 /*!< Bits per dimension available for Peano-Hilbert order.
Note: If peanokey is defined as type int, the allowed maximum is 10.
If 64-bit integers are used, the maximum is 21 */
#define PEANOCELLS (((peanokey)1)<<(3*BITS_PER_DIMENSION)) /*!< The number of different Peano-Hilbert cells */
#define RNDTABLE 3000 /*!< gives the length of a table with random numbers, refreshed at every timestep.
This is used to allow application of random numbers to a specific particle
in a way that is independent of the number of processors used. */
#define MAX_REAL_NUMBER 1e37
#define MIN_REAL_NUMBER 1e-37
#define MAXLEN_FILENAME 100 /*!< Maximum number of characters for filenames (including the full path) */
#ifdef ISOTHERM_EQS
#define GAMMA (1.0) /*!< index for isothermal gas */
#else
#define GAMMA (5.0/3) /*!< adiabatic index of simulated gas */
#endif
#define GAMMA_MINUS1 (GAMMA-1)
#define HYDROGEN_MASSFRAC 0.76 /*!< mass fraction of hydrogen, relevant only for radiative cooling */
/* Some physical constants in cgs units */
#define GRAVITY 6.672e-8 /*!< Gravitational constant (in cgs units) */
#define SOLAR_MASS 1.989e33
#define SOLAR_LUM 3.826e33
#define RAD_CONST 7.565e-15
#define AVOGADRO 6.0222e23
#define BOLTZMANN 1.3806e-16
#define GAS_CONST 8.31425e7
#define C 2.9979e10
#define PLANCK 6.6262e-27
#define CM_PER_MPC 3.085678e24
#define PROTONMASS 1.6726e-24
#define ELECTRONMASS 9.10953e-28
#define THOMPSON 6.65245e-25
#define ELECTRONCHARGE 4.8032e-10
#define HUBBLE 3.2407789e-18 /* in h/sec */
#define YEAR_IN_SECOND 31536000.0 /* year in sec */
#define FEH_SOLAR 0.00181 /* used only if cooling with metal is on and chimie is off */
#define PI 3.1415926535897931
#define TWOPI 6.2831853071795862
/* Some conversion factors */
#define SEC_PER_MEGAYEAR 3.155e13
#define SEC_PER_YEAR 3.155e7
#ifndef ASMTH
#define ASMTH 1.25 /*!< ASMTH gives the scale of the short-range/long-range force split in units of FFT-mesh cells */
#endif
#ifndef RCUT
#define RCUT 4.5 /*!< RCUT gives the maximum distance (in units of the scale used for the force split) out to
which short-range forces are evaluated in the short-range tree walk. */
#endif
#define MAX_NGB 20000 /*!< defines maximum length of neighbour list */
#define MAXLEN_OUTPUTLIST 500 /*!< maxmimum number of entries in list of snapshot output times */
#define DRIFT_TABLE_LENGTH 1000 /*!< length of the lookup table used to hold the drift and kick factors */
#ifdef COSMICTIME
#define COSMICTIME_TABLE_LENGTH 1000 /*!< length of the lookup table used for the cosmic time computation */
#endif
#define MAXITER 1000 /*!< maxmimum number of steps for SPH neighbour iteration */
#ifdef DOUBLEPRECISION /*!< If defined, the variable type FLOAT is set to "double", otherwise to FLOAT */
#define FLOAT double
#else
#define FLOAT float
#endif
#ifndef TWODIMS
#define NUMDIMS 3 /*!< For 3D-normalized kernel */
#define KERNEL_COEFF_1 2.546479089470 /*!< Coefficients for SPH spline kernel and its derivative */
#define KERNEL_COEFF_2 15.278874536822
#define KERNEL_COEFF_3 45.836623610466
#define KERNEL_COEFF_4 30.557749073644
#define KERNEL_COEFF_5 5.092958178941
#define KERNEL_COEFF_6 (-15.278874536822)
#define NORM_COEFF 4.188790204786 /*!< Coefficient for kernel normalization. Note: 4.0/3 * PI = 4.188790204786 */
#else
#define NUMDIMS 2 /*!< For 2D-normalized kernel */
#define KERNEL_COEFF_1 (5.0/7*2.546479089470) /*!< Coefficients for SPH spline kernel and its derivative */
#define KERNEL_COEFF_2 (5.0/7*15.278874536822)
#define KERNEL_COEFF_3 (5.0/7*45.836623610466)
#define KERNEL_COEFF_4 (5.0/7*30.557749073644)
#define KERNEL_COEFF_5 (5.0/7*5.092958178941)
#define KERNEL_COEFF_6 (5.0/7*(-15.278874536822))
#define NORM_COEFF M_PI /*!< Coefficient for kernel normalization. */
#endif
#ifdef MULTIPHASE
#define GAS_SPH 0
#define GAS_STICKY 1
#define GAS_DARK 2
#endif
#if defined(SFR) || defined(STELLAR_PROP)
#define ST 1
#endif
#ifdef CHIMIE
#define NELEMENTS 5
#define MAXNELEMENTS 64
#define FIRST_ELEMENT "Fe"
#define FE 0
#endif
#ifdef COOLING
#define COOLING_NMETALICITIES 9
#define COOLING_NTEMPERATURES 171
#endif
#ifdef COMPUTE_VELOCITY_DISPERSION
#define VELOCITY_DISPERSION_SIZE 3
#endif
extern int SetMinTimeStepForActives;
extern int ThisTask; /*!< the rank of the local processor */
extern int NTask; /*!< number of processors */
extern int PTask; /*!< smallest integer such that NTask <= 2^PTask */
extern int NumPart; /*!< number of particles on the LOCAL processor */
extern int N_gas; /*!< number of gas particles on the LOCAL processor */
#if defined(SFR) || defined(STELLAR_PROP)
extern int N_stars; /*!< number of stars particle on the LOCAL processor */
#endif
#ifdef MULTIPHASE
extern int N_sph;
extern int N_sticky;
extern int N_stickyflaged;
extern int N_dark;
extern int NumColPotLocal; /*!< local number of potentially collisional particles */
extern int NumColPot; /*!< total number of potentially collisional particles */
extern int NumColLocal; /*!< local number of collisions */
extern int NumCol; /*!< total number of collisions */
extern int NumNoColLocal;
extern int NumNoCol;
#endif
#ifdef GAS_ACCRETION
extern int NumPart_acc;
extern int N_gas_acc;
#ifdef STELLAR_PROP
extern int N_stars_acc;
#endif
#endif
extern long long Ntype[6]; /*!< total number of particles of each type */
extern int NtypeLocal[6]; /*!< local number of particles of each type */
extern int NumForceUpdate; /*!< number of active particles on local processor in current timestep */
extern int NumSphUpdate; /*!< number of active SPH particles on local processor in current timestep */
#ifdef CHIMIE
extern int NumStUpdate;
#endif
#ifdef TESSEL
extern int NumPTUpdate;
#endif
extern double CPUThisRun; /*!< Sums the CPU time for the process (current submission only) */
#ifdef SPLIT_DOMAIN_USING_TIME
extern double CPU_Gravity;
#endif
extern int RestartFlag; /*!< taken from command line used to start code. 0 is normal start-up from
initial conditions, 1 is resuming a run from a set of restart files, while 2
marks a restart from a snapshot file. */
extern char *Exportflag; /*!< Buffer used for flagging whether a particle needs to be exported to another process */
extern int *Ngblist; /*!< Buffer to hold indices of neighbours retrieved by the neighbour search routines */
extern int TreeReconstructFlag; /*!< Signals that a new tree needs to be constructed */
#ifdef SFR
extern int RearrangeParticlesFlag;/*!< Signals that particles must be rearanged */
#endif
extern int Flag_FullStep; /*!< This flag signals that the current step involves all particles */
extern gsl_rng *random_generator; /*!< the employed random number generator of the GSL library */
extern double RndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#ifdef SFR
extern double StarFormationRndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#endif
#ifdef FEEDBACK_WIND
extern double FeedbackWindRndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#endif
#ifdef CHIMIE
extern double ChimieRndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
extern double ChimieKineticFeedbackRndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#endif
#ifdef GAS_ACCRETION
extern double gasAccretionRndTable[RNDTABLE]; /*!< Hold a table with random numbers, refreshed every timestep */
#endif
#ifdef AB_TURB
//Ornstein-Uhlenbeck variables
extern double StOUVar;
extern double* StOUPhases;
extern gsl_rng* StRng;
//forcing field in fourie space
extern double* StAmpl;
extern double* StAka; //phases (real part)
extern double* StAkb; //phases (imag part)
extern double* StMode;
extern int StNModes;
//integertime StTPrev; (yr : ask ?)
extern int StTPrev;
extern double StSolWeightNorm;
#endif
#ifdef PY_INTERFACE
extern int NumPartQ;
extern int N_gasQ;
extern long long NtypeQ[6]; /*!< total number of particles of each type */
extern int NtypeLocalQ[6]; /*!< local number of particles of each type */
extern double DomainCornerQ[3]; /*!< gives the lower left corner of simulation volume */
extern double DomainCenterQ[3]; /*!< gives the center of simulation volume */
extern double DomainLenQ; /*!< gives the (maximum) side-length of simulation volume */
extern double DomainFacQ; /*!< factor used for converting particle coordinates to a Peano-Hilbert mesh covering the simulation volume */
extern int DomainMyStartQ; /*!< first domain mesh cell that resides on the local processor */
extern int DomainMyLastQ; /*!< last domain mesh cell that resides on the local processor */
extern int *DomainStartListQ; /*!< a table that lists the first domain mesh cell for all processors */
extern int *DomainEndListQ; /*!< a table that lists the last domain mesh cell for all processors */
extern double *DomainWorkQ; /*!< a table that gives the total "work" due to the particles stored by each processor */
extern int *DomainCountQ; /*!< a table that gives the total number of particles held by each processor */
extern int *DomainCountSphQ; /*!< a table that gives the total number of SPH particles held by each processor */
extern int *DomainTaskQ; /*!< this table gives for each leaf of the top-level tree the processor it was assigned to */
extern peanokey *DomainKeyBufQ; /*!< this points to a buffer used during the exchange of particle data */
extern int NTopnodesQ; /*!< total number of nodes in top-level tree */
extern int NTopleavesQ; /*!< number of leaves in top-level tree. Each leaf can be assigned to a different processor */
extern void *CommBufferQ; /*!< points to communication buffer, which is used in the domain decomposition, the
parallel tree-force computation, the SPH routines, etc. */
#endif
extern double DomainCorner[3]; /*!< gives the lower left corner of simulation volume */
extern double DomainCenter[3]; /*!< gives the center of simulation volume */
extern double DomainLen; /*!< gives the (maximum) side-length of simulation volume */
extern double DomainFac; /*!< factor used for converting particle coordinates to a Peano-Hilbert mesh covering the simulation volume */
extern int DomainMyStart; /*!< first domain mesh cell that resides on the local processor */
extern int DomainMyLast; /*!< last domain mesh cell that resides on the local processor */
extern int *DomainStartList; /*!< a table that lists the first domain mesh cell for all processors */
extern int *DomainEndList; /*!< a table that lists the last domain mesh cell for all processors */
extern double *DomainWork; /*!< a table that gives the total "work" due to the particles stored by each processor */
extern int *DomainCount; /*!< a table that gives the total number of particles held by each processor */
extern int *DomainCountSph; /*!< a table that gives the total number of SPH particles held by each processor */
extern int *DomainTask; /*!< this table gives for each leaf of the top-level tree the processor it was assigned to */
extern int *DomainNodeIndex; /*!< this table gives for each leaf of the top-level tree the corresponding node of the gravitational tree */
extern FLOAT *DomainTreeNodeLen; /*!< this table gives for each leaf of the top-level tree the side-length of the corresponding node of the gravitational tree */
extern FLOAT *DomainHmax; /*!< this table gives for each leaf of the top-level tree the maximum SPH smoothing length among the particles of the corresponding node of the gravitational tree */
extern struct DomainNODE
{
FLOAT s[3]; /*!< center-of-mass coordinates */
FLOAT vs[3]; /*!< center-of-mass velocities */
FLOAT mass; /*!< mass of node */
#ifdef STELLAR_FLUX
FLOAT starlum; /*!< star luminosity of node */
#endif
#ifdef UNEQUALSOFTENINGS
#ifndef ADAPTIVE_GRAVSOFT_FORGAS
int bitflags; /*!< this bit-field encodes the particle type with the largest softening among the particles of the nodes, and whether there are particles with different softening in the node */
#else
FLOAT maxsoft; /*!< hold the maximum gravitational softening of particles in the
node if the ADAPTIVE_GRAVSOFT_FORGAS option is selected */
#endif
#endif
}
*DomainMoment; /*!< this table stores for each node of the top-level tree corresponding node data from the gravitational tree */
extern peanokey *DomainKeyBuf; /*!< this points to a buffer used during the exchange of particle data */
extern peanokey *Key; /*!< a table used for storing Peano-Hilbert keys for particles */
extern peanokey *KeySorted; /*!< holds a sorted table of Peano-Hilbert keys for all particles, used to construct top-level tree */
extern int NTopnodes; /*!< total number of nodes in top-level tree */
extern int NTopleaves; /*!< number of leaves in top-level tree. Each leaf can be assigned to a different processor */
extern struct topnode_data
{
int Daughter; /*!< index of first daughter cell (out of 8) of top-level node */
int Pstart; /*!< for the present top-level node, this gives the index of the first node in the concatenated list of topnodes collected from all processors */
int Blocks; /*!< for the present top-level node, this gives the number of corresponding nodes in the concatenated list of topnodes collected from all processors */
int Leaf; /*!< if the node is a leaf, this gives its number when all leaves are traversed in Peano-Hilbert order */
peanokey Size; /*!< number of Peano-Hilbert mesh-cells represented by top-level node */
peanokey StartKey; /*!< first Peano-Hilbert key in top-level node */
long long Count; /*!< counts the number of particles in this top-level node */
}
#ifdef PY_INTERFACE
*TopNodesQ,
#endif
*TopNodes; /*!< points to the root node of the top-level tree */
extern double TimeOfLastTreeConstruction; /*!< holds what it says, only used in connection with FORCETEST */
/* variables for input/output, usually only used on process 0 */
extern char ParameterFile[MAXLEN_FILENAME]; /*!< file name of parameterfile used for starting the simulation */
extern FILE *FdInfo; /*!< file handle for info.txt log-file. */
extern FILE *FdLog; /*!< file handle for log.txt log-file. */
extern FILE *FdEnergy; /*!< file handle for energy.txt log-file. */
#ifdef SYSTEMSTATISTICS
extern FILE *FdSystem;
#endif
extern FILE *FdTimings; /*!< file handle for timings.txt log-file. */
extern FILE *FdCPU; /*!< file handle for cpu.txt log-file. */
#ifdef FORCETEST
extern FILE *FdForceTest; /*!< file handle for forcetest.txt log-file. */
#endif
#ifdef SFR
extern FILE *FdSfr; /*!< file handle for sfr.txt log-file. */
#endif
#ifdef CHIMIE
extern FILE *FdChimie; /*!< file handle for chimie log-file. */
#endif
#ifdef MULTIPHASE
extern FILE *FdPhase; /*!< file handle for pase.txt log-file. */
extern FILE *FdSticky; /*!< file handle for sticky.txt log-file. */
#endif
#ifdef AGN_ACCRETION
extern FILE *FdAccretion; /*!< file handle for accretion.txt log-file. */
#endif
#ifdef BONDI_ACCRETION
extern FILE *FdBondi; /*!< file handle for bondi.txt log-file. */
#endif
#ifdef BUBBLES
extern FILE *FdBubble; /*!< file handle for bubble.txt log-file. */
#endif
#ifdef GAS_ACCRETION
extern FILE *FdGasAccretion; /*!< file handle for gas_accretion.txt log-file. */
#endif
extern double DriftTable[DRIFT_TABLE_LENGTH]; /*!< table for the cosmological drift factors */
extern double GravKickTable[DRIFT_TABLE_LENGTH]; /*!< table for the cosmological kick factor for gravitational forces */
extern double HydroKickTable[DRIFT_TABLE_LENGTH]; /*!< table for the cosmological kick factor for hydrodynmical forces */
#ifdef COSMICTIME
extern double CosmicTimeTable[COSMICTIME_TABLE_LENGTH]; /*!< table for the computation of cosmic time */
extern double FullCosmicTimeTable[COSMICTIME_TABLE_LENGTH]; /*!< table for the computation of cosmic time */
extern double FullCosmicTimeTableInv[COSMICTIME_TABLE_LENGTH]; /*!< table for the computation of cosmic time */
#endif
extern void *CommBuffer; /*!< points to communication buffer, which is used in the domain decomposition, the
parallel tree-force computation, the SPH routines, etc. */
/*! This structure contains data which is the SAME for all tasks (mostly code parameters read from the
* parameter file). Holding this data in a structure is convenient for writing/reading the restart file, and
* it allows the introduction of new global variables in a simple way. The only thing to do is to introduce
* them into this structure.
*/
extern struct global_data_all_processes
{
long long TotNumPart; /*!< total particle numbers (global value) */
long long TotN_gas; /*!< total gas particle number (global value) */
#ifdef GAS_ACCRETION
long long TotNumPart_acc;
long long TotN_gas_acc;
#endif
#ifdef PY_INTERFACE
long long TotNumPartQ; /*!< total particle numbers (global value) */
long long TotN_gasQ; /*!< total gas particle number (global value) */
int MaxPartQ; /*!< This gives the maxmimum number of particles that can be stored on one processor. */
int MaxPartSphQ; /*!< This gives the maxmimum number of SPH particles that can be stored on one processor. */
int BunchSizeSph;
int BunchSizeDensitySph;
double ForceSofteningQ;
#endif
#if defined(SFR) || defined(STELLAR_PROP)
long long TotN_stars; /*!< total stars particle number (global value) */
#endif
#ifdef MULTIPHASE
long long TotN_sph; /*!< total sph particle number (global value) */
long long TotN_sticky; /*!< total sticky particle number (global value) */
long long TotN_stickyflaged; /*!< total sticky flaged particle number (global value) */
long long TotN_stickyactive; /*!< total sticky active particle number (global value) */
long long TotN_dark; /*!< total dark particle number (global value) */
#endif
int MaxPart; /*!< This gives the maxmimum number of particles that can be stored on one processor. */
int MaxPartSph; /*!< This gives the maxmimum number of SPH particles that can be stored on one processor. */
#ifdef TESSEL
int MaxgPart;
#endif
#ifdef STELLAR_PROP
int MaxPartStars; /*!< This gives the maxmimum number of Star particles that can be stored on one processor. */
#endif
double BoxSize; /*!< Boxsize in case periodic boundary conditions are used */
int ICFormat; /*!< selects different versions of IC file-format */
int SnapFormat; /*!< selects different versions of snapshot file-formats */
int NumFilesPerSnapshot; /*!< number of files in multi-file snapshot dumps */
int NumFilesWrittenInParallel;/*!< maximum number of files that may be written simultaneously when
writing/reading restart-files, or when writing snapshot files */
int BufferSize; /*!< size of communication buffer in MB */
int BunchSizeForce; /*!< number of particles fitting into the buffer in the parallel tree-force algorithm */
int BunchSizeDensity; /*!< number of particles fitting into the communication buffer in the density computation */
int BunchSizeHydro; /*!< number of particles fitting into the communication buffer in the SPH hydrodynamical force computation */
int BunchSizeDomain; /*!< number of particles fitting into the communication buffer in the domain decomposition */
#ifdef MULTIPHASE
int BunchSizeSticky; /*!< number of particles fitting into the communication buffer in the Chimie computation */
#endif
#ifdef CHIMIE
int BunchSizeChimie; /*!< number of particles fitting into the communication buffer in the Chimie computation */
int BunchSizeStarsDensity; /*!< number of particles fitting into the communication buffer in the star density computation */
#endif
#ifdef SYNCHRONIZE_NGB_TIMESTEP
int BunchSizeSynchronizeNgBTimestep;
#endif
#ifdef TESSEL
int BunchSizeGhost;
#endif
double PartAllocFactor; /*!< in order to maintain work-load balance, the particle load will usually
NOT be balanced. Each processor allocates memory for PartAllocFactor times
the average number of particles to allow for that */
double TreeAllocFactor; /*!< Each processor allocates a number of nodes which is TreeAllocFactor times
the maximum(!) number of particles. Note: A typical local tree for N
particles needs usually about ~0.65*N nodes. */
#ifdef SFR
double StarsAllocFactor; /*!< Estimated fraction of gas particles that will form stars during the simulation
This allow to reduce the memory stored for stellar particles */
#endif
/* some SPH parameters */
double DesNumNgb; /*!< Desired number of SPH neighbours */
double MaxNumNgbDeviation; /*!< Maximum allowed deviation neighbour number */
double ArtBulkViscConst; /*!< Sets the parameter \f$\alpha\f$ of the artificial viscosity */
#ifdef ART_CONDUCTIVITY
double ArtCondConst; /*!< Sets the parameter \f$\alpha\f$ of the artificial conductivity */
double ArtCondThreshold;
#endif
double InitGasTemp; /*!< may be used to set the temperature in the IC's */
double MinGasTemp; /*!< may be used to set a floor for the gas temperature */
double MinEgySpec; /*!< the minimum allowed temperature expressed as energy per unit mass */
/* Usefull constants */
double Boltzmann;
double ProtonMass;
double mumh;
#ifdef COOLING
/* Cooling parameters */
double *logT;
double *logL;
gsl_interp_accel *acc_cooling_spline;
gsl_spline *cooling_spline;
double CoolingType;
#ifdef PYCOOL
char * CoolingFile;
#else
char CoolingFile[MAXLEN_FILENAME]; /*!< cooling file */
#endif
double CutofCoolingTemperature;
/*
new metal dependent cooling
*/
double CoolingParameters_zmin;
double CoolingParameters_zmax;
double CoolingParameters_slz;
double CoolingParameters_tmin;
double CoolingParameters_tmax;
double CoolingParameters_slt;
double CoolingParameters_FeHSolar;
double CoolingParameters_cooling_data_max;
double CoolingParameters_cooling_data[COOLING_NMETALICITIES][COOLING_NTEMPERATURES];
int CoolingParameters_p;
int CoolingParameters_q;
-#ifdef LAMBDA_DEPRAZ
+#ifdef COOLING_FCT_FROM_HDF5
+ // cooling tables loaded from HDF5 files
+ // (dimensions depend on the presence of nHe)
float*** COOLING_TABLES_METAL_FREE;
float** COOLING_TABLES_TOTAL_METAL;
float*** ELECTRON_DENSITY_OVER_N_H_TABLES;
float** ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR;
float* HYDROGEN_TABLES;
float* TEMPERATURE_TABLES;
float* HELIUM_ABOUNDANCE_TABLES;
//corresponding sizes
int SIZE_HYDROGEN_TABLES;
int SIZE_TEMPERATURE_TABLES;
int SIZE_HELIUM_ABOUNDANCE_TABLES;
// current redshift value determining the cooling file
// from which the data is interpolated
float CURRENT_TABLE_REDSHIFT;
#endif
#endif
#ifdef CHIMIE
int ChimieNumberOfParameterFiles;
#ifdef PYCHEM
char * ChimieParameterFile;
#else
char ChimieParameterFile[MAXLEN_FILENAME]; /*!< chimie parameter file */
#endif
double ChimieSupernovaEnergy;
double ChimieKineticFeedbackFraction;
double ChimieWindSpeed;
double ChimieWindTime;
double ChimieSNIaThermalTime;
double ChimieSNIIThermalTime;
double ChimieMaxSizeTimestep;
#ifdef CHIMIE_ONE_SN_ONLY /*!< explode only one sn>*/
int ChimieOneSN;
#endif
#endif
#if defined (CHIMIE) || defined (COOLING)
double InitGasMetallicity;
#endif
#if !defined (HEATING_PE)
double HeatingPeElectronFraction;
#endif
#if !defined (HEATING_PE) || defined (STELLAR_FLUX) || defined (EXTERNAL_FLUX)
double HeatingPeSolarEnergyDensity;
#endif
#if !defined (HEATING_PE) || defined (STELLAR_FLUX)
double HeatingPeLMRatioGas;
double HeatingPeLMRatioHalo;
double HeatingPeLMRatioDisk;
double HeatingPeLMRatioBulge;
double HeatingPeLMRatioStars;
double HeatingPeLMRatioBndry;
double HeatingPeLMRatio[6];
#endif
#ifdef EXTERNAL_FLUX
double HeatingExternalFLuxEnergyDensity;
#endif
#ifdef MULTIPHASE
double CriticalTemperature;
double CriticalEgySpec;
double CriticalNonCollisionalTemperature;
double CriticalNonCollisionalEgySpec;
#ifdef COLDGAS_CYCLE
double ColdGasCycleTransitionTime;
double ColdGasCycleTransitionParameter;
#endif
#endif
#ifdef MULTIPHASE
/* some STICKY parameters */
int StickyUseGridForCollisions;
double StickyTime; /*!< Cooling time of sticky particle collision */
double StickyCollisionTime;
double StickyLastCollisionTime;
double StickyIdleTime;
double StickyMinVelocity;
double StickyMaxVelocity;
int StickyGridNx;
int StickyGridNy;
int StickyGridNz;
double StickyGridXmin;
double StickyGridXmax;
double StickyGridYmin;
double StickyGridYmax;
double StickyGridZmin;
double StickyGridZmax;
double StickyLambda;
double StickyDensity;
double StickyDensityPower;
double StickyBetaR;
double StickyBetaT;
double StickyRsphFact; /*!< Fraction of the sph radius used in sticky particle */
#endif
#ifdef OUTERPOTENTIAL
#ifdef NFW
double HaloConcentration;
double HaloMass;
double GasMassFraction;
double NFWPotentialCte;
double Rs;
#endif
#ifdef PLUMMER
double PlummerMass;
double PlummerSoftenning;
double PlummerPotentialCte;
#endif
#ifdef MIYAMOTONAGAI
double MiyamotoNagaiMass;
double MiyamotoNagaiHr;
double MiyamotoNagaiHz;
double MiyamotoNagaiPotentialCte;
#endif
#ifdef PISOTHERM
double Rho0;
double Rc;
double PisothermPotentialCte;
double GasMassFraction;
double PotentialInf;
gsl_function PotentialF;
gsl_integration_workspace *Potentialw;
#endif
#ifdef CORIOLIS
double CoriolisOmegaX;
double CoriolisOmegaY;
double CoriolisOmegaZ;
double CoriolisOmegaX0;
double CoriolisOmegaY0;
double CoriolisOmegaZ0;
#endif
#endif
#ifdef SFR
int StarFormationNStarsFromGas;
double StarFormationStarMass;
double StarFormationMgMsFraction;
int StarFormationType;
double StarFormationCstar;
double StarFormationTime;
double StarFormationDensity;
double StarFormationTemperature;
double ThresholdDensity;
#endif
#ifdef FEEDBACK
double SupernovaTime;
#endif
#ifdef FEEDBACK_WIND
double SupernovaWindEgySpecPerMassUnit;
double SupernovaWindFractionInEgyKin;
double SupernovaWindParameter;
double SupernovaWindSpeed;
double SupernovaWindIntAccuracy;
#endif
#ifdef AGN_ACCRETION
double TimeBetAccretion;
double AccretionRadius;
double AGNFactor;
double MinMTotInRa;
double TimeLastAccretion;
double LastMTotInRa;
double MTotInRa;
double dMTotInRa;
#endif
#ifdef BUBBLES
char BubblesInitFile[MAXLEN_FILENAME]; /*!< bubble file */
double *BubblesTime;
double *BubblesD;
double *BubblesR;
double *BubblesE;
double *BubblesA;
double *BubblesB;
int BubblesIndex;
double BubblesAlpha;
double BubblesBeta;
double BubblesDelta;
double BubblesRadiusFactor;
double EnergyBubbles;
#endif
#ifdef AGN_HEATING
double AGNHeatingPower;
double AGNHeatingRmax;
#endif
#ifdef BONDI_ACCRETION
double BondiEfficiency;
double BondiBlackHoleMass;
double BondiHsmlFactor;
double BondiPower;
double BondiTimeBet;
double BondiTimeLast;
#endif
#if defined (AGN_ACCRETION) || defined (BONDI_ACCRETION)
double LightSpeed;
#endif
#if defined(ART_VISCO_MM)|| defined(ART_VISCO_RO) || defined(ART_VISCO_CD)
double ArtBulkViscConstMin;
double ArtBulkViscConstMax;
double ArtBulkViscConstL;
#endif
#ifdef AB_TURB
double StDecay;
double StEnergy;
double StDtFreq;
double StKmin;
double StKmax;
double StSolWeight;
double StAmplFac;
int StSpectForm;
int StSeed;
#endif
#ifdef GAS_ACCRETION
double AccretionParticleMass[6];
#endif
#ifdef SYNCHRONIZE_NGB_TIMESTEP
int NgbFactorTimestep;
#endif
/* some force counters */
long long TotNumOfForces; /*!< counts total number of force computations */
long long NumForcesSinceLastDomainDecomp; /*!< count particle updates since last domain decomposition */
/* system of units */
double G; /*!< Gravity-constant in internal units */
double UnitTime_in_s; /*!< factor to convert internal time unit to seconds/h */
double UnitMass_in_g; /*!< factor to convert internal mass unit to grams/h */
double UnitVelocity_in_cm_per_s; /*!< factor to convert intqernal velocity unit to cm/sec */
double UnitLength_in_cm; /*!< factor to convert internal length unit to cm/h */
double UnitPressure_in_cgs; /*!< factor to convert internal pressure unit to cgs units (little 'h' still around!) */
double UnitDensity_in_cgs; /*!< factor to convert internal length unit to g/cm^3*h^2 */
double UnitCoolingRate_in_cgs; /*!< factor to convert internal cooling rate to cgs units */
double UnitEnergy_in_cgs; /*!< factor to convert internal energy to cgs units */
double UnitTime_in_Megayears; /*!< factor to convert internal time to megayears/h */
double GravityConstantInternal; /*!< If set to zero in the parameterfile, the internal value of the
gravitational constant is set to the Newtonian value based on the system of
units specified. Otherwise the value provided is taken as internal gravity constant G. */
/* Cosmological parameters */
double Hubble; /*!< Hubble-constant in internal units */
double Omega0; /*!< matter density in units of the critical density (at z=0)*/
double OmegaLambda; /*!< vaccum energy density relative to crictical density (at z=0) */
double OmegaBaryon; /*!< baryon density in units of the critical density (at z=0)*/
double HubbleParam; /*!< little `h', i.e. Hubble constant in units of 100 km/s/Mpc. Only needed to get absolute physical values for cooling physics */
/* Code options */
int ComovingIntegrationOn; /*!< flags that comoving integration is enabled */
int PeriodicBoundariesOn; /*!< flags that periodic boundaries are enabled */
int ResubmitOn; /*!< flags that automatic resubmission of job to queue system is enabled */
int TypeOfOpeningCriterion; /*!< determines tree cell-opening criterion: 0 for Barnes-Hut, 1 for relative criterion */
int TypeOfTimestepCriterion; /*!< gives type of timestep criterion (only 0 supported right now - unlike gadget-1.1) */
int OutputListOn; /*!< flags that output times are listed in a specified file */
/* Parameters determining output frequency */
int SnapshotFileCount; /*!< number of snapshot that is written next */
double TimeBetSnapshot; /*!< simulation time interval between snapshot files */
double TimeOfFirstSnapshot; /*!< simulation time of first snapshot files */
double CpuTimeBetRestartFile; /*!< cpu-time between regularly generated restart files */
double TimeLastRestartFile; /*!< cpu-time when last restart-file was written */
double TimeBetStatistics; /*!< simulation time interval between computations of energy statistics */
double TimeLastStatistics; /*!< simulation time when the energy statistics was computed the last time */
int NumCurrentTiStep; /*!< counts the number of system steps taken up to this point */
/* Current time of the simulation, global step, and end of simulation */
double Time; /*!< current time of the simulation */
double TimeBegin; /*!< time of initial conditions of the simulation */
double TimeStep; /*!< difference between current times of previous and current timestep */
double TimeMax; /*!< marks the point of time until the simulation is to be evolved */
/* variables for organizing discrete timeline */
double Timebase_interval; /*!< factor to convert from floating point time interval to integer timeline */
int Ti_Current; /*!< current time on integer timeline */
int Ti_nextoutput; /*!< next output time on integer timeline */
#ifdef FLEXSTEPS
int PresentMinStep; /*!< If FLEXSTEPS is used, particle timesteps are chosen as multiples of the present minimum timestep. */
int PresentMaxStep; /*!< If FLEXSTEPS is used, this is the maximum timestep in timeline units, rounded down to the next power 2 division */
#endif
#ifdef PMGRID
int PM_Ti_endstep; /*!< begin of present long-range timestep */
int PM_Ti_begstep; /*!< end of present long-range timestep */
#endif
/* Placement of PM grids */
#ifdef PMGRID
double Asmth[2]; /*!< Gives the scale of the long-range/short-range split (in mesh-cells), both for the coarse and the high-res mesh */
double Rcut[2]; /*!< Gives the maximum radius for which the short-range force is evaluated with the tree (in mesh-cells), both for the coarse and the high-res mesh */
double Corner[2][3]; /*!< lower left corner of coarse and high-res PM-mesh */
double UpperCorner[2][3]; /*!< upper right corner of coarse and high-res PM-mesh */
double Xmintot[2][3]; /*!< minimum particle coordinates both for coarse and high-res PM-mesh */
double Xmaxtot[2][3]; /*!< maximum particle coordinates both for coarse and high-res PM-mesh */
double TotalMeshSize[2]; /*!< total extension of coarse and high-res PM-mesh */
#endif
/* Variables that keep track of cumulative CPU consumption */
double TimeLimitCPU; /*!< CPU time limit as defined in parameterfile */
double CPU_TreeConstruction; /*!< time spent for constructing the gravitational tree */
double CPU_TreeWalk; /*!< actual time spent for pure tree-walks */
double CPU_Gravity; /*!< cumulative time used for gravity computation (tree-algorithm only) */
double CPU_Potential; /*!< time used for computing gravitational potentials */
double CPU_Domain; /*!< cumulative time spent for domain decomposition */
double CPU_Snapshot; /*!< time used for writing snapshot files */
double CPU_Total; /*!< cumulative time spent for domain decomposition */
double CPU_CommSum; /*!< accumulated time used for communication, and for collecting partial results, in tree-gravity */
double CPU_Imbalance; /*!< cumulative time lost accross all processors as work-load imbalance in gravitational tree */
double CPU_HydCompWalk; /*!< time used for actual SPH computations, including neighbour search */
double CPU_HydCommSumm; /*!< cumulative time used for communication in SPH, and for collecting partial results */
double CPU_HydImbalance; /*!< cumulative time lost due to work-load imbalance in SPH */
double CPU_Hydro; /*!< cumulative time spent for SPH related computations */
#ifdef SFR
double CPU_StarFormation; /*!< cumulative time spent for star formation computations */
#endif
#ifdef CHIMIE
double CPU_Chimie; /*!< cumulative time spent for chimie computations */
double CPU_ChimieDensCompWalk;
double CPU_ChimieDensCommSumm;
double CPU_ChimieDensImbalance;
double CPU_ChimieDensEnsureNgb;
double CPU_ChimieCompWalk;
double CPU_ChimieCommSumm;
double CPU_ChimieImbalance;
#endif
#ifdef MULTIPHASE
double CPU_Sticky; /*!< cumulative time spent for sticky computations */
#endif
double CPU_EnsureNgb; /*!< time needed to iterate on correct neighbour numbers */
double CPU_Predict; /*!< cumulative time to drift the system forward in time, including dynamic tree updates */
double CPU_TimeLine; /*!< time used for determining new timesteps, and for organizing the timestepping, including kicks of active particles */
double CPU_PM; /*!< time used for long-range gravitational force */
double CPU_Peano; /*!< time required to establish Peano-Hilbert order */
#ifdef DETAILED_CPU_DOMAIN
double CPU_Domain_findExtend;
double CPU_Domain_determineTopTree;
double CPU_Domain_sumCost;
double CPU_Domain_findSplit;
double CPU_Domain_shiftSplit;
double CPU_Domain_countToGo;
double CPU_Domain_exchange;
#endif
#ifdef DETAILED_CPU_GRAVITY
double CPU_Gravity_TreeWalk1;
double CPU_Gravity_TreeWalk2;
double CPU_Gravity_CommSum1;
double CPU_Gravity_CommSum2;
double CPU_Gravity_Imbalance1;
double CPU_Gravity_Imbalance2;
#endif
#ifdef COOLING
double CPU_Cooling;
#endif
#ifdef DETAILED_CPU
double CPU_Leapfrog;
double CPU_Physics;
double CPU_Residual;
double CPU_Accel;
double CPU_Begrun;
#endif
/* tree code opening criterion */
double ErrTolTheta; /*!< BH tree opening angle */
double ErrTolForceAcc; /*!< parameter for relative opening criterion in tree walk */
/* adjusts accuracy of time-integration */
double ErrTolIntAccuracy; /*!< accuracy tolerance parameter \f$ \eta \f$ for timestep criterion. The
timestep is \f$ \Delta t = \sqrt{\frac{2 \eta eps}{a}} \f$ */
double MinSizeTimestep; /*!< minimum allowed timestep. Normally, the simulation terminates if the
timestep determined by the timestep criteria falls below this limit. */
double MaxSizeTimestep; /*!< maximum allowed timestep */
double MaxRMSDisplacementFac; /*!< this determines a global timestep criterion for cosmological simulations
in comoving coordinates. To this end, the code computes the rms velocity
of all particles, and limits the timestep such that the rms displacement
is a fraction of the mean particle separation (determined from the
particle mass and the cosmological parameters). This parameter specifies
this fraction. */
double CourantFac; /*!< SPH-Courant factor */
/* frequency of tree reconstruction/domain decomposition */
double TreeDomainUpdateFrequency; /*!< controls frequency of domain decompositions */
/* Gravitational and hydrodynamical softening lengths (given in terms of an `equivalent' Plummer softening length).
* Five groups of particles are supported 0="gas", 1="halo", 2="disk", 3="bulge", 4="stars", 5="bndry"
*/
double MinGasHsmlFractional; /*!< minimum allowed SPH smoothing length in units of SPH gravitational softening length */
double MinGasHsml; /*!< minimum allowed SPH smoothing length */
double SofteningGas; /*!< comoving gravitational softening lengths for type 0 */
double SofteningHalo; /*!< comoving gravitational softening lengths for type 1 */
double SofteningDisk; /*!< comoving gravitational softening lengths for type 2 */
double SofteningBulge; /*!< comoving gravitational softening lengths for type 3 */
double SofteningStars; /*!< comoving gravitational softening lengths for type 4 */
double SofteningBndry; /*!< comoving gravitational softening lengths for type 5 */
double SofteningGasMaxPhys; /*!< maximum physical softening length for type 0 */
double SofteningHaloMaxPhys; /*!< maximum physical softening length for type 1 */
double SofteningDiskMaxPhys; /*!< maximum physical softening length for type 2 */
double SofteningBulgeMaxPhys; /*!< maximum physical softening length for type 3 */
double SofteningStarsMaxPhys; /*!< maximum physical softening length for type 4 */
double SofteningBndryMaxPhys; /*!< maximum physical softening length for type 5 */
double SofteningTable[6]; /*!< current (comoving) gravitational softening lengths for each particle type */
double ForceSoftening[6]; /*!< the same, but multiplied by a factor 2.8 - at that scale the force is Newtonian */
double MassTable[6]; /*!< Table with particle masses for particle types with equal mass.
If particle masses are all equal for one type, the corresponding entry in MassTable
is set to this value, allowing the size of the snapshot files to be reduced. */
/* some filenames */
char InitCondFile[MAXLEN_FILENAME]; /*!< filename of initial conditions */
char OutputDir[MAXLEN_FILENAME]; /*!< output directory of the code */
char SnapshotFileBase[MAXLEN_FILENAME]; /*!< basename to construct the names of snapshotf files */
char EnergyFile[MAXLEN_FILENAME]; /*!< name of file with energy statistics */
#ifdef SYSTEMSTATISTICS
char SystemFile[MAXLEN_FILENAME];
#endif
char CpuFile[MAXLEN_FILENAME]; /*!< name of file with cpu-time statistics */
char InfoFile[MAXLEN_FILENAME]; /*!< name of log-file with a list of the timesteps taken */
char LogFile[MAXLEN_FILENAME]; /*!< name of log-file with varied info */
#ifdef SFR
char SfrFile[MAXLEN_FILENAME]; /*!< name of file with sfr records */
#endif
#ifdef CHIMIE
char ChimieFile[MAXLEN_FILENAME]; /*!< name of file with chimie records */
#endif
#ifdef MULTIPHASE
char PhaseFile[MAXLEN_FILENAME]; /*!< name of file with phase records */
char StickyFile[MAXLEN_FILENAME]; /*!< name of file with sticky records */
#endif
#ifdef AGN_ACCRETION
char AccretionFile[MAXLEN_FILENAME]; /*!< name of file with accretion records */
#endif
#ifdef BONDI_ACCRETION
char BondiFile[MAXLEN_FILENAME]; /*!< name of file with bondi records */
#endif
#ifdef BUBBLES
char BubbleFile[MAXLEN_FILENAME]; /*!< name of file with bubble records */
#endif
#ifdef GAS_ACCRETION
char GasAccretionFile[MAXLEN_FILENAME]; /*!< name of file with sfr records */
#endif
char TimingsFile[MAXLEN_FILENAME]; /*!< name of file with performance metrics of gravitational tree algorithm */
char RestartFile[MAXLEN_FILENAME]; /*!< basename of restart-files */
char ResubmitCommand[MAXLEN_FILENAME]; /*!< name of script-file that will be executed for automatic restart */
char OutputListFilename[MAXLEN_FILENAME]; /*!< name of file with list of desired output times */
double OutputListTimes[MAXLEN_OUTPUTLIST]; /*!< table with desired output times */
int OutputListLength; /*!< number of output times stored in the table of desired output times */
#ifdef RANDOMSEED_AS_PARAMETER
int RandomSeed; /*!< initial random seed >*/
#endif
}
All; /*!< a container variable for global variables that are equal on all processors */
/*! This structure holds all the information that is
* stored for each particle of the simulation.
*/
extern struct particle_data
{
FLOAT Pos[3]; /*!< particle position at its current time */
FLOAT Mass; /*!< particle mass */
FLOAT Vel[3]; /*!< particle velocity at its current time */
FLOAT GravAccel[3]; /*!< particle acceleration due to gravity */
#ifdef PMGRID
FLOAT GravPM[3]; /*!< particle acceleration due to long-range PM gravity force*/
#endif
#ifdef FORCETEST
FLOAT GravAccelDirect[3]; /*!< particle acceleration when computed with direct summation */
#endif
FLOAT Potential; /*!< gravitational potential */
FLOAT OldAcc; /*!< magnitude of old gravitational force. Used in relative opening criterion */
#ifndef LONGIDS
unsigned int ID; /*!< particle identifier */
#else
unsigned long long ID; /*!< particle identifier */
#endif
int Type; /*!< flags particle type. 0=gas, 1=halo, 2=disk, 3=bulge, 4=stars, 5=bndry */
int Ti_endstep; /*!< marks start of current timestep of particle on integer timeline */
int Ti_begstep; /*!< marks end of current timestep of particle on integer timeline */
#ifdef SYNCHRONIZE_NGB_TIMESTEP
int Old_Ti_endstep; /*!< marks start of old current timestep of particle on integer timeline */
int Old_Ti_begstep; /*!< marks end of old current timestep of particle on integer timeline */
#endif
#ifdef FLEXSTEPS
int FlexStepGrp; /*!< a random 'offset' on the timeline to create a smooth groouping of particles */
#endif
float GravCost; /*!< weight factor used for balancing the work-load */
#ifdef PSEUDOSYMMETRIC
float AphysOld; /*!< magnitude of acceleration in last timestep. Used to make a first order
prediction of the change of acceleration expected in the future, thereby
allowing to guess whether a decrease/increase of the timestep should occur
in the timestep that is started. */
#endif
#ifdef PARTICLE_FLAG
float Flag;
#endif
#ifdef STELLAR_PROP
unsigned int StPIdx; /*!< index to the corresponding StP particle */
#endif
#ifdef TESSEL
int iT; /*!< index of a triangle to which the point belong to */
int IsDone;
int IsAdded; /*!< if the point has already be added in the tesselation */
int ivPoint; /*!< index of first voronoi point */
int nvPoints; /*!< number of voronoi points */
int iMedian;
int nMedians;
double Volume;
double Density;
double Pressure;
double Entropy;
double rSearch; /*!< radius in which particles must search for ngbs */
int iPref; /*!< for a ghost point, index of the reference point */
FLOAT tesselAccel[3];
#endif
# ifdef SYNCHRONIZE_NGB_TIMESTEP
int Ti_step;
#endif
#ifdef VANISHING_PARTICLES
int VanishingFlag;
#endif
}
*P, /*!< holds particle data on local processor */
#ifdef PY_INTERFACE
*Q,
*DomainPartBufQ, /*!< buffer for particle data used in domain decomposition */
#endif
*DomainPartBuf; /*!< buffer for particle data used in domain decomposition */
/* the following struture holds data that is stored for each SPH particle in addition to the collisionless
* variables.
*/
extern struct sph_particle_data
{
FLOAT Entropy; /*!< current value of entropy (actually entropic function) of particle */
FLOAT Density; /*!< current baryonic mass density of particle */
FLOAT Hsml; /*!< current smoothing length */
FLOAT Left; /*!< lower bound in iterative smoothing length search */
FLOAT Right; /*!< upper bound in iterative smoothing length search */
FLOAT NumNgb; /*!< weighted number of neighbours found */
#ifdef AVOIDNUMNGBPROBLEM
FLOAT OldNumNgb;
#endif
FLOAT Pressure; /*!< current pressure */
FLOAT DtEntropy; /*!< rate of change of entropy */
#ifdef COOLING
//FLOAT EntropyRad; /*!< current value of entropy resulting from the cooling */
FLOAT DtEntropyRad; /*!< rate of change of entropy due to cooling */
FLOAT DtEnergyRad;
#endif
#ifdef STELLAR_FLUX
FLOAT EnergyFlux; /*!< current value of local energy flux - Sph particles */
#endif
#ifdef AGN_HEATING
FLOAT EgySpecAGNHeat; /*!< current value of specific energy radiated of particle - Sph particles */
FLOAT DtEgySpecAGNHeat; /*!< rate of change of specific radiated energy - Sph particles */
FLOAT DtEntropyAGNHeat;
#endif
#ifdef MULTIPHASE
FLOAT StickyTime;
int StickyFlag;
#ifdef COUNT_COLLISIONS
float StickyCollisionNumber;
#endif
#endif
#ifdef FEEDBACK
FLOAT EgySpecFeedback;
FLOAT DtEgySpecFeedback;
FLOAT EnergySN;
FLOAT EnergySNrem;
FLOAT TimeSN;
FLOAT FeedbackVel[3]; /*!< kick due to feedback force */
#endif
#ifdef FEEDBACK_WIND
FLOAT FeedbackWindVel[3]; /*!< kick due to feedback force */
#endif
FLOAT HydroAccel[3]; /*!< acceleration due to hydrodynamical force */
FLOAT VelPred[3]; /*!< predicted SPH particle velocity at the current time */
FLOAT DivVel; /*!< local velocity divergence */
FLOAT CurlVel; /*!< local velocity curl */
FLOAT Rot[3]; /*!< local velocity curl */
FLOAT DhsmlDensityFactor; /*!< correction factor needed in the equation of motion of the conservative entropy formulation of SPH */
FLOAT MaxSignalVel; /*!< maximum "signal velocity" occuring for this particle */
#ifdef MULTIPHASE
int Phase;
int StickyIndex;
int StickyNgb;
int StickyMaxID;
float StickyMaxFs;
FLOAT StickyNewVel[3];
#endif
#ifdef OUTPUTOPTVAR1
FLOAT OptVar1; /*!< optional variable 1 */
#endif
#ifdef OUTPUTOPTVAR2
FLOAT OptVar2; /*!< optional variable 2 */
#endif
#ifdef COMPUTE_VELOCITY_DISPERSION
FLOAT VelocityDispersion[VELOCITY_DISPERSION_SIZE]; /*!< velocity dispersion */
#endif
#ifdef CHIMIE
FLOAT Metal[NELEMENTS];
FLOAT dMass; /*!< mass variation due to mass transfere */
#ifdef CHIMIE_THERMAL_FEEDBACK
FLOAT DeltaEgySpec;
FLOAT SNIaThermalTime; /*!< flag particles that got energy from SNIa */
FLOAT SNIIThermalTime; /*!< flag particles that got energy from SNII */
double NumberOfSNIa;
double NumberOfSNII;
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
FLOAT WindTime; /*!< flag particles that belongs to the wind */
unsigned int WindFlag; /*!< flag particles that will be part of the wind */
#endif
#endif /*CHIMIE*/
#ifdef ENTROPYPRED
FLOAT EntropyPred; /*!< predicted entropy at the current time */
#endif
#ifdef ART_CONDUCTIVITY
FLOAT EnergyIntPred;
FLOAT GradEnergyInt[3];
#endif
#ifdef AB_TURB
FLOAT TurbAccel[3];
#endif
#if defined(ART_VISCO_MM)|| defined(ART_VISCO_RO) || defined(ART_VISCO_CD)
double ArtBulkViscConst;
#ifdef ART_VISCO_CD
double DmatCD[3][3];
double TmatCD[3][3];
double DiVelAccurate;
double DiVelTemp;
double ArtBulkViscConstOld;
double R_CD;
FLOAT MaxSignalVelCD;
#endif
#endif
#ifdef GAS_ACCRETION
int ActiveFlag;
#endif
#if PY_INTERFACE
FLOAT Observable;
FLOAT ObsMoment0;
FLOAT ObsMoment1;
FLOAT GradObservable[3];
#endif
# ifdef SYNCHRONIZE_NGB_TIMESTEP
int Ti_minNgbStep;
#endif
#ifdef TIMESTEP_UPDATE_FOR_FEEDBACK
FLOAT FeedbackUpdatedAccel[3]; /*!< acceleration after feedback injection */
#endif
#ifdef DENSITY_INDEPENDENT_SPH
FLOAT EgyWtDensity; /*!< 'effective' rho to use in hydro equations */
FLOAT EntVarPred; /*!< predicted entropy variable */
FLOAT DhsmlEgyDensityFactor; /*!< correction factor for density-independent entropy formulation */
#endif
}
*SphP, /*!< holds SPH particle data on local processor */
#ifdef PY_INTERFACE
*SphQ,
*DomainSphBufQ, /*!< buffer for SPH particle data in domain decomposition */
#endif
*DomainSphBuf; /*!< buffer for SPH particle data in domain decomposition */
#ifdef GAS_ACCRETION
extern struct acc_particle_data
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Mass;
FLOAT Time;
int Type;
int ID;
}
*Acc;
extern struct gas_acc_particle_data
{
FLOAT Entropy;
#ifdef CHIMIE
FLOAT Metal[NELEMENTS];
#endif
}
*SphAcc;
#endif
#ifdef STELLAR_PROP
/* the following struture holds data that is stored for each SPH particle in addition to the collisionless
* variables.
*/
extern struct st_particle_data
{
#ifdef CHECK_ID_CORRESPONDENCE
unsigned int ID; /*!< particle identifier (must be the same as P[].ID) only used to check ID correspondance */
#endif
FLOAT FormationTime; /*!< star formation time of particle */
FLOAT InitialMass; /*!< initial stellar mass */
#ifndef LONGIDS
unsigned int IDProj; /*!< id of projenitor particle */
#else
unsigned long long IDProj; /*!< id of projenitor particle */
#endif
FLOAT Metal[NELEMENTS];
FLOAT Density; /*!< current baryonic mass density of particle */
FLOAT Volume; /*!< current volume of particle */
FLOAT Hsml; /*!< current smoothing length */
FLOAT Left; /*!< lower bound in iterative smoothing length search */
FLOAT Right; /*!< upper bound in iterative smoothing length search */
FLOAT NumNgb; /*!< weighted number of neighbours found */
unsigned int PIdx; /*!< index to the corresponding particle */
#ifdef AVOIDNUMNGBPROBLEM
FLOAT OldNumNgb;
#endif
FLOAT DhsmlDensityFactor; /*!< correction factor needed in the equation of motion of the conservative entropy formulation of SPH */
double TotalEjectedGasMass;
double TotalEjectedEltMass[NELEMENTS];
double TotalEjectedEgySpec;
double NumberOfSNIa;
double NumberOfSNII;
#ifdef CHIMIE_KINETIC_FEEDBACK
double NgbMass; /*!< mass of neighbours */
#endif
#ifdef CHIMIE
unsigned int Flag;
#endif
}
*StP, /*!< holds ST particle data on local processor */
*DomainStBuf; /*!< buffer for ST particle data in domain decomposition */
#endif
/* Variables for Tree
*/
extern int MaxNodes; /*!< maximum allowed number of internal nodes */
extern int Numnodestree; /*!< number of (internal) nodes in each tree */
extern struct NODE
{
FLOAT len; /*!< sidelength of treenode */
FLOAT center[3]; /*!< geometrical center of node */
#ifdef ADAPTIVE_GRAVSOFT_FORGAS
FLOAT maxsoft; /*!< hold the maximum gravitational softening of particles in the
node if the ADAPTIVE_GRAVSOFT_FORGAS option is selected */
#endif
#ifdef STELLAR_FLUX
FLOAT starlum ; /*!< star luminosity of node */
#endif
union
{
int suns[8]; /*!< temporary pointers to daughter nodes */
struct
{
FLOAT s[3]; /*!< center of mass of node */
FLOAT mass; /*!< mass of node */
int bitflags; /*!< a bit-field with various information on the node */
int sibling; /*!< this gives the next node in the walk in case the current node can be used */
int nextnode; /*!< this gives the next node in case the current node needs to be opened */
int father; /*!< this gives the parent node of each node (or -1 if we have the root node) */
}
d;
}
u;
}
*Nodes_base, /*!< points to the actual memory allocted for the nodes */
*Nodes; /*!< this is a pointer used to access the nodes which is shifted such that Nodes[All.MaxPart]
gives the first allocated node */
extern int *Nextnode; /*!< gives next node in tree walk */
extern int *Father; /*!< gives parent node in tree */
extern struct extNODE /*!< this structure holds additional tree-node information which is not needed in the actual gravity computation */
{
FLOAT hmax; /*!< maximum SPH smoothing length in node. Only used for gas particles */
FLOAT vs[3]; /*!< center-of-mass velocity */
}
*Extnodes_base, /*!< points to the actual memory allocted for the extended node information */
*Extnodes; /*!< provides shifted access to extended node information, parallel to Nodes/Nodes_base */
/*! Header for the standard file format.
*/
extern struct io_header
{
int npart[6]; /*!< number of particles of each type in this file */
double mass[6]; /*!< mass of particles of each type. If 0, then the masses are explicitly
stored in the mass-block of the snapshot file, otherwise they are omitted */
double time; /*!< time of snapshot file */
double redshift; /*!< redshift of snapshot file */
int flag_sfr; /*!< flags whether the simulation was including star formation */
int flag_feedback; /*!< flags whether feedback was included (obsolete) */
unsigned int npartTotal[6]; /*!< total number of particles of each type in this snapshot. This can be
different from npart if one is dealing with a multi-file snapshot. */
int flag_cooling; /*!< flags whether cooling was included */
int num_files; /*!< number of files in multi-file snapshot */
double BoxSize; /*!< box-size of simulation in case periodic boundaries were used */
double Omega0; /*!< matter density in units of critical density */
double OmegaLambda; /*!< cosmological constant parameter */
double HubbleParam; /*!< Hubble parameter in units of 100 km/sec/Mpc */
int flag_stellarage; /*!< flags whether the file contains formation times of star particles */
int flag_metals; /*!< flags whether the file contains metallicity values for gas and star particles */
unsigned int npartTotalHighWord[6]; /*!< High word of the total number of particles of each type */
int flag_entropy_instead_u; /*!< flags that IC-file contains entropy instead of u */
int flag_chimie_extraheader; /*!< flags that IC-file contains extra-header for chimie */
#ifdef MULTIPHASE
double critical_energy_spec;
#ifdef MESOMACHINE
char fill[38];
#else
char fill[48]; /* use 42 with regor... */
#endif
#else
char fill[56]; /*!< fills to 256 Bytes */
#endif
}
header; /*!< holds header for snapshot files */
#ifdef CHIMIE_EXTRAHEADER
/*! Header for the chimie part.
*/
extern struct io_chimie_extraheader
{
int nelts; /*!< number of chemical element followed */
float SolarAbundances[NELEMENTS];
char labels[256-4-4*(NELEMENTS)];
}
chimie_extraheader;
#endif
#define IO_NBLOCKS 24 /*!< total number of defined information blocks for snapshot files.
Must be equal to the number of entries in "enum iofields" */
enum iofields /*!< this enumeration lists the defined output blocks in snapshot files. Not all of them need to be present. */
{
IO_POS,
IO_VEL,
IO_ID,
IO_MASS,
IO_U,
IO_RHO,
IO_HSML,
IO_POT,
IO_ACCEL,
IO_DTENTR,
IO_TSTP,
IO_ERADSPH,
IO_ERADSTICKY,
IO_ERADFEEDBACK,
IO_ENERGYFLUX,
IO_METALS,
IO_STAR_FORMATIONTIME,
IO_INITIAL_MASS,
IO_STAR_IDPROJ,
IO_STAR_RHO,
IO_STAR_HSML,
IO_STAR_METALS,
IO_OPTVAR1,
IO_OPTVAR2
};
extern char Tab_IO_Labels[IO_NBLOCKS][4]; /*<! This table holds four-byte character tags used for fileformat 2 */
/* global state of system, used for global statistics
*/
extern struct state_of_system
{
double Mass;
double EnergyKin;
double EnergyPot;
double EnergyInt;
#ifdef COOLING
double EnergyRadSph;
#endif
#ifdef AGN_HEATING
double EnergyAGNHeat;
#endif
#ifdef MULTIPHASE
double EnergyRadSticky;
#endif
#ifdef FEEDBACK_WIND
double EnergyFeedbackWind;
#endif
#ifdef BUBBLES
double EnergyBubbles;
#endif
#ifdef CHIMIE_THERMAL_FEEDBACK
double EnergyThermalFeedback;
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
double EnergyKineticFeedback;
#endif
double EnergyTot;
double Momentum[4];
double AngMomentum[4];
double CenterOfMass[4];
double MassComp[6];
double EnergyKinComp[6];
double EnergyPotComp[6];
double EnergyIntComp[6];
#ifdef COOLING
double EnergyRadSphComp[6];
#endif
#ifdef AGN_HEATING
double EnergyAGNHeatComp[6];
#endif
#ifdef MULTIPHASE
double EnergyRadStickyComp[6];
#endif
#ifdef FEEDBACK_WIND
double EnergyFeedbackWindComp[6];
#endif
#ifdef BUBBLES
double EnergyBubblesComp[6];
#endif
#ifdef CHIMIE_THERMAL_FEEDBACK
double EnergyThermalFeedbackComp[6];
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
double EnergyKineticFeedbackComp[6];
#endif
double EnergyTotComp[6];
double MomentumComp[6][4];
double AngMomentumComp[6][4];
double CenterOfMassComp[6][4];
}
SysState; /*<! Structure for storing some global statistics about the simulation. */
/*! This structure contains data related to the energy budget.
These values are different for each task. It need to be stored
in the restart flag.
*/
extern struct local_state_of_system
{
double EnergyTest;
double EnergyInt1;
double EnergyInt2;
double EnergyKin1;
double EnergyKin2;
#ifdef COOLING
double RadiatedEnergy;
#endif
#ifdef SFR
double StarEnergyInt;
#ifdef FEEDBACK
double StarEnergyFeedback;
#endif
#endif
#ifdef CHIMIE_THERMAL_FEEDBACK
double EnergyThermalFeedback;
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
double EnergyKineticFeedback;
#endif
#ifdef MULTIPHASE
double EnergyRadSticky;
#endif
#ifdef FEEDBACK_WIND
double EnergyFeedbackWind;
#endif
}
LocalSysState; /*<! Structure for storing some local statistics about the simulation. */
/* Various structures for communication
*/
extern struct gravdata_in
{
union
{
FLOAT Pos[3];
FLOAT Acc[3];
FLOAT Potential;
}
u;
#if defined(UNEQUALSOFTENINGS) || defined(STELLAR_FLUX)
int Type;
#ifdef ADAPTIVE_GRAVSOFT_FORGAS
FLOAT Soft;
#endif
#endif
#ifdef STELLAR_FLUX
FLOAT EnergyFlux;
#endif
union
{
FLOAT OldAcc;
int Ninteractions;
}
w;
}
*GravDataIn, /*!< holds particle data to be exported to other processors */
*GravDataGet, /*!< holds particle data imported from other processors */
*GravDataResult, /*!< holds the partial results computed for imported particles. Note: We use GravDataResult = GravDataGet, such that the result replaces the imported data */
*GravDataOut; /*!< holds partial results received from other processors. This will overwrite the GravDataIn array */
extern struct gravdata_index
{
int Task;
int Index;
int SortIndex;
}
*GravDataIndexTable; /*!< the particles to be exported are grouped by task-number. This table allows the results to be disentangled again and to be assigned to the correct particle */
extern struct densdata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Hsml;
#ifdef MULTIPHASE
int Phase;
#endif
int Index;
int Task;
#ifdef ART_CONDUCTIVITY
FLOAT EnergyIntPred;
#endif
}
*DensDataIn, /*!< holds particle data for SPH density computation to be exported to other processors */
*DensDataGet; /*!< holds imported particle data for SPH density computation */
extern struct densdata_out
{
FLOAT Rho;
FLOAT Div, Rot[3];
FLOAT DhsmlDensity;
FLOAT Ngb;
#ifdef ART_CONDUCTIVITY
FLOAT GradEnergyInt[3];
#endif
#ifdef DENSITY_INDEPENDENT_SPH
FLOAT EgyRho;
FLOAT DhsmlEgyDensity;
#endif
}
*DensDataResult, /*!< stores the locally computed SPH density results for imported particles */
*DensDataPartialResult; /*!< imported partial SPH density results from other processors */
extern struct hydrodata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Hsml;
#ifdef FEEDBACK
FLOAT EnergySN;
#endif
#ifdef MULTIPHASE
int Phase;
FLOAT Entropy;
int StickyFlag;
#endif
FLOAT Mass;
FLOAT Density;
FLOAT Pressure;
FLOAT F1;
FLOAT DhsmlDensityFactor;
int Timestep;
int Task;
int Index;
#ifdef WITH_ID_IN_HYDRA
int ID;
#endif
#ifdef ART_CONDUCTIVITY
FLOAT NormGradEnergyInt;
#endif
#if defined(ART_VISCO_MM)|| defined(ART_VISCO_RO) || defined(ART_VISCO_CD)
double ArtBulkViscConst;
#endif
#ifdef DENSITY_INDEPENDENT_SPH
FLOAT EgyRho;
FLOAT EntVarPred;
#endif
}
*HydroDataIn, /*!< holds particle data for SPH hydro-force computation to be exported to other processors */
*HydroDataGet; /*!< holds imported particle data for SPH hydro-force computation */
extern struct hydrodata_out
{
FLOAT Acc[3];
FLOAT DtEntropy;
#ifdef FEEDBACK
FLOAT DtEgySpecFeedback;
FLOAT FeedbackAccel[3]; /*!< acceleration due to feedback force */
#endif
FLOAT MaxSignalVel;
#ifdef COMPUTE_VELOCITY_DISPERSION
FLOAT VelocityDispersion[VELOCITY_DISPERSION_SIZE];
#endif
#ifdef MULTIPHASE
FLOAT StickyDVel[3]; /*!< differences in velocities induced by sticky collisions */
#endif
#ifdef OUTPUT_CONDUCTIVITY
FLOAT OptVar2;
#endif
#ifdef ART_VISCO_CD
double DmatCD[3][3];
double TmatCD[3][3];
double R_CD;
FLOAT MaxSignalVelCD;
#endif
}
*HydroDataResult, /*!< stores the locally computed SPH hydro results for imported particles */
*HydroDataPartialResult; /*!< imported partial SPH hydro-force results from other processors */
#ifdef MULTIPHASE
extern struct stickydata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Mass;
FLOAT Hsml;
int ID;
int StickyMaxID;
int StickyNgb;
float StickyMaxFs;
int Task;
int Index;
}
*StickyDataIn, /*!< holds particle data for sticky computation to be exported to other processors */
*StickyDataGet; /*!< holds imported particle data for sticky computation */
extern struct stickydata_out
{
int StickyMaxID;
int StickyNgb;
float StickyMaxFs;
FLOAT StickyNewVel[3];
}
*StickyDataResult, /*!< stores the locally computed sticky results for imported particles */
*StickyDataPartialResult; /*!< imported partial sticky results from other processors */
extern struct Sticky_index
{
int Index;
int CellIndex;
int Flag;
}
*StickyIndex;
#endif
#ifdef CHIMIE
extern struct chimiedata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
#ifndef LONGIDS
unsigned int ID; /*!< particle identifier */
#else
unsigned long long ID; /*!< particle identifier */
#endif
FLOAT Hsml;
#ifdef FEEDBACK
FLOAT EnergySN;
#endif
#ifdef MULTIPHASE
int Phase;
FLOAT Entropy;
int StickyFlag;
#endif
FLOAT Density;
FLOAT Volume;
FLOAT Pressure;
FLOAT F1;
FLOAT DhsmlDensityFactor;
int Timestep;
int Task;
int Index;
double TotalEjectedGasMass;
double TotalEjectedEltMass[NELEMENTS];
double TotalEjectedEgySpec;
double NumberOfSNIa;
double NumberOfSNII;
#ifdef CHIMIE_KINETIC_FEEDBACK
FLOAT NgbMass;
#endif
}
*ChimieDataIn, /*!< holds particle data for Chimie computation to be exported to other processors */
*ChimieDataGet; /*!< holds imported particle data for Chimie computation */
extern struct chimiedata_out
{
FLOAT Acc[3];
FLOAT DtEntropy;
#ifdef FEEDBACK
FLOAT DtEgySpecFeedback;
FLOAT FeedbackAccel[3]; /*!< acceleration due to feedback force */
#endif
FLOAT MaxSignalVel;
#ifdef COMPUTE_VELOCITY_DISPERSION
FLOAT VelocityDispersion[VELOCITY_DISPERSION_SIZE];
#endif
#ifdef MULTIPHASE
FLOAT StickyDVel[3]; /*!< differences in velocities induced by sticky collisions */
#endif
}
*ChimieDataResult, /*!< stores the locally computed Chimie results for imported particles */
*ChimieDataPartialResult; /*!< imported partial Chimie results from other processors */
extern struct starsdensdata_in
{
FLOAT Pos[3];
FLOAT Hsml;
int Index;
int Task;
}
*StarsDensDataIn, /*!< holds particle data for SPH density computation to be exported to other processors */
*StarsDensDataGet; /*!< holds imported particle data for SPH density computation */
extern struct starsdensdata_out
{
FLOAT Rho;
FLOAT Volume;
FLOAT DhsmlDensity;
FLOAT Ngb;
#ifdef CHIMIE_KINETIC_FEEDBACK
FLOAT NgbMass;
#endif
}
*StarsDensDataResult, /*!< stores the locally computed SPH density results for imported particles */
*StarsDensDataPartialResult; /*!< imported partial SPH density results from other processors */
#endif /*CHIMIE*/
#ifdef TESSEL
extern struct ghostdata_in
{
FLOAT Pos[3];
FLOAT rSearch;
int Index;
int Task;
}
*GhostDataIn, /*!< holds particle data for SPH density computation to be exported to other processors */
*GhostDataGet; /*!< holds imported particle data for SPH density computation */
extern struct ghostdata_out
{
FLOAT Value;
}
*GhostDataResult, /*!< stores the locally computed SPH density results for imported particles */
*GhostDataPartialResult; /*!< imported partial SPH density results from other processors */
/* ghost particles */
//extern struct ghost_particle_data
//{
// FLOAT Pos[3]; /*!< particle position at its current time */
// FLOAT Mass; /*!< particle mass */
//}
// *gP;
extern int NumgPart;
#endif /* TESSEL */
#ifdef SYNCHRONIZE_NGB_TIMESTEP
extern struct SynchroinzeNgbTimestepdata_in
{
FLOAT Pos[3];
FLOAT Hsml;
int Ti_step;
int Ti_endstep;
int Index;
int Task;
#ifdef MULTIPHASE
int Phase;
#endif
}
*SynchroinzeNgbTimestepDataIn,
*SynchroinzeNgbTimestepDataGet;
#endif
#ifdef PY_INTERFACE
extern struct denssphdata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Hsml;
FLOAT Density;
FLOAT DhsmlDensityFactor;
int Index;
int Task;
FLOAT Observable;
}
*DensSphDataIn, /*!< holds particle data for SPH density computation to be exported to other processors */
*DensSphDataGet; /*!< holds imported particle data for SPH density computation */
extern struct denssphdata_out
{
FLOAT Rho;
FLOAT Div, Rot[3];
FLOAT DhsmlDensity;
FLOAT Ngb;
FLOAT GradObservable[3];
}
*DensSphDataResult, /*!< stores the locally computed SPH density results for imported particles */
*DensSphDataPartialResult; /*!< imported partial SPH density results from other processors */
extern struct sphdata_in
{
FLOAT Pos[3];
FLOAT Vel[3];
FLOAT Hsml;
FLOAT Density;
FLOAT DhsmlDensityFactor;
FLOAT ObsMoment0;
FLOAT ObsMoment1;
FLOAT Observable;
int Task;
int Index;
}
*SphDataIn, /*!< holds particle data for SPH hydro-force computation to be exported to other processors */
*SphDataGet; /*!< holds imported particle data for SPH hydro-force computation */
extern struct sphdata_out
{
FLOAT ObsMoment0;
FLOAT ObsMoment1;
FLOAT GradObservable[3];
}
*SphDataResult, /*!< stores the locally computed SPH hydro results for imported particles */
*SphDataPartialResult; /*!< imported partial SPH hydro-force results from other processors */
#endif /*PY_INTERFACE*/
#endif
diff --git a/src/cooling.c b/src/cooling.c
index 4f39165..aa0aa03 100644
--- a/src/cooling.c
+++ b/src/cooling.c
@@ -1,2946 +1,2968 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <mpi.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_spline.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_roots.h>
#include "allvars.h"
#include "proto.h"
#ifdef COOLING
/*! initialize cooling function (the metallicity is fixed)
*
* T = temperature
* L0 = m000 primordial metallicity
* L1 = m-30
* L2 = m-20
* L3 = m-10
* L4 = m-05
* L5 = m-00 solar metallicity
* L6 = m+05
*/
int init_cooling(FLOAT metallicity)
{
FILE *fd;
int n,i;
char line[72];
float T,L0,L1,L2,L3,L4,L5,L6;
int MetallicityIndex=4;
/* find the right index */
if (All.InitGasMetallicity<-3)
MetallicityIndex = 0;
else
{
if (All.InitGasMetallicity<-2)
MetallicityIndex = 1;
else
{
if (All.InitGasMetallicity<-1)
MetallicityIndex = 2;
else
{
if (All.InitGasMetallicity<-0.5)
MetallicityIndex = 3;
else
{
if (All.InitGasMetallicity<0)
MetallicityIndex = 4;
else
{
MetallicityIndex = 5;
}
}
}
}
}
fd = fopen(All.CoolingFile,"r");
fscanf(fd, "# %6d\n", &n);
/* allocate memory */
All.logT = malloc(n * sizeof(double));
All.logL = malloc(n * sizeof(double));
/* read empty line */
fgets(line, sizeof(line), fd);
/* read file */
for (i=0;i<n;i++){
fscanf(fd, "%f %f %f %f %f %f %f %f\n",&T,&L0,&L1,&L2,&L3,&L4,&L5,&L6);
//printf("%8.3f %8.3f\n",T,L0);
/* keep only solar values */
All.logT[i] = (double)T;
switch (MetallicityIndex)
{
case 0:
All.logL[i] = (double)L0;
break;
case 1:
All.logL[i] = (double)L1;
break;
case 2:
All.logL[i] = (double)L2;
break;
case 3:
All.logL[i] = (double)L3;
break;
case 4:
All.logL[i] = (double)L4;
break;
case 5:
All.logL[i] = (double)L5;
break;
case 6:
All.logL[i] = (double)L6;
break;
}
}
fclose(fd);
/* init interpolation */
All.acc_cooling_spline = gsl_interp_accel_alloc ();
All.cooling_spline = gsl_spline_alloc (gsl_interp_cspline, n);
gsl_spline_init (All.cooling_spline, All.logT, All.logL, n);
#ifdef OUTPUT_COOLING_FUNCTION
/* test cooling */
double logT;
double l;
logT = 1.;
while(logT<8)
{
T = pow(10,logT);
l = log10(cooling_function(T));
if(ThisTask == 0)
printf("%8.3f %8.3f\n",logT,l);
logT = logT + 0.05;
}
#endif
return 0;
}
/*! This function return the normalized cooling function (no metallicity dependency)
*/
double cooling_function(double temperature)
{
double logT;
if (temperature >= All.CutofCoolingTemperature)
{
logT = log10(temperature);
if (logT>8.5)
logT = 8.5;
return pow(10,gsl_spline_eval (All.cooling_spline, logT, All.acc_cooling_spline));
}
else
return 1e-100;
}
/***************************************************************************
METALLICITY DEPENDENT COOLING
**************************************************************************/
int init_cooling_with_metals()
{
/*
zmin zmax slz
tmin tmax slt
FeHSolar
p k
*/
FILE *fd;
int p,k,i,j;
float zmin,zmax,slz,tmin,tmax,slt,FeHSolar;
float lbd;
if (ThisTask==0)
{
fd = fopen(All.CoolingFile,"r");
fscanf(fd, "%f %f %f\n", &zmin,&zmax,&slz);
fscanf(fd, "%f %f %f\n", &tmin,&tmax,&slt);
fscanf(fd, "%f\n" , &FeHSolar);
fscanf(fd, "%d %d\n" , &p,&k);
All.CoolingParameters_zmin = zmin;
All.CoolingParameters_zmax = zmax;
All.CoolingParameters_slz = slz;
All.CoolingParameters_tmin = tmin;
All.CoolingParameters_tmax = tmax;
All.CoolingParameters_slt = slt;
- //All.CoolingParameters_FeHSolar = FEH_SOLAR; /* instead of FeHSolar*/
+ //All.CoolingParameters_FeHSolar = FEH_SOLAR; /* instead of FeHSolar */ /* All.CoolingParameters_FeHSolar is initialized in begrun.c*/
All.CoolingParameters_cooling_data_max = k-2;
for (i=0;i<p;i++)
for (j=0;j<k;j++)
{
fscanf(fd, "%f\n" ,&lbd);
All.CoolingParameters_cooling_data[i][j]=lbd;
}
fclose(fd);
}
/* now broadcast */
/*
This is quite bad to do it like this, however, there is no other solution, as
All has already be sent.
The other solution will be to create a structure devoted to the cooling (like Cps in chimie.c)
avoiding to link the parameters to All.
*/
MPI_Bcast(&All.CoolingParameters_zmin, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_zmax, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_slz, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_tmin, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_tmax, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_slt, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_cooling_data_max, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CoolingParameters_cooling_data , (COOLING_NMETALICITIES*COOLING_NTEMPERATURES), MPI_DOUBLE, 0, MPI_COMM_WORLD);
#ifdef OUTPUT_COOLING_FUNCTION
/* test cooling */
double logT,T;
double l;
double metal;
logT = 1.;
metal = (pow(10,All.InitGasMetallicity)-1e-10)*All.CoolingParameters_FeHSolar;
while(logT<8)
{
T = pow(10,logT);
l = log10(cooling_function_with_metals(T,metal));
if(ThisTask == 0)
printf("%8.3f %8.3f\n",logT,l);
logT = logT + 0.05;
}
#endif
return 0;
}
/*! This function return the normalized cooling function, that depends on metallicity
*/
double cooling_function_with_metals(double temperature,double metal)
{
double cooling;
double T,Z;
double rt, rz, ft, fz, v1, v2, v;
int it,iz,itp,izp;
double zmin,zmax,slz,tmin,tmax,slt,FeHSolar,cooling_data_max;
zmin = All.CoolingParameters_zmin;
zmax = All.CoolingParameters_zmax;
slz = All.CoolingParameters_slz;
tmin = All.CoolingParameters_tmin;
tmax = All.CoolingParameters_tmax;
slt = All.CoolingParameters_slt;
FeHSolar = All.CoolingParameters_FeHSolar;
cooling_data_max = All.CoolingParameters_cooling_data_max;
cooling = 0.0;
T = log10( temperature );
- Z = log10( metal/FeHSolar + 1.e-10 );
-
+ Z = log10( metal/FeHSolar + 1.e-10 ); /* here, we compute Z, with corresponds to Z_Fe and not the total amount of metals */
+
if (Z>zmax)
{
/*print *,'Warning: Z>Zmax for',i*/
Z=zmax;
}
if (Z < zmin)
{
rt = (T-tmin)/slt;
it = (int)rt;
if (it < cooling_data_max )
it = (int)rt;
else
it = cooling_data_max;
itp = it+1;
ft = rt - it;
fz = ( 10. + Z )/( 10. + zmin);
v1 = ft*( All.CoolingParameters_cooling_data[1][itp] -All.CoolingParameters_cooling_data[1][it] ) + All.CoolingParameters_cooling_data[1][it];
v2 = ft*( All.CoolingParameters_cooling_data[0][itp] -All.CoolingParameters_cooling_data[0][it] ) + All.CoolingParameters_cooling_data[0][it];
v = v2 + fz*(v1-v2);
}
else
{
rt = (T-tmin)/slt;
rz = (Z-zmin)/slz+1.0;
it = (int)rt;
if (it < cooling_data_max )
it = (int)rt;
else
it = cooling_data_max;
iz = (int)rz;
itp = it+1;
izp = iz+1;
ft = rt - it;
fz = rz - iz;
v1 = ft*(All.CoolingParameters_cooling_data[izp][itp] - All.CoolingParameters_cooling_data[izp][it]) + All.CoolingParameters_cooling_data[izp][it];
v2 = ft*(All.CoolingParameters_cooling_data[iz][itp] - All.CoolingParameters_cooling_data[iz][it]) + All.CoolingParameters_cooling_data[iz][it];
v = v2 + fz*(v1-v2);
}
cooling = pow(10,v);
return cooling;
}
/***************************************************************************
END OF METALLICITY DEPENDENT COOLING
**************************************************************************/
/*! \file cooling.c
* \brief Compute gas cooling
*
*/
static double hubble_a, a3inv;
static double eV = 1.6022000e-12;
static double normfacJ0 = 0.74627;
static double J0min = 1.e-29;
static double alpha = 1.0;
static int Norderweinberg = 7; /* polynom order+1 */
static double coefweinberg[7][6];
static double z;
static double J0;
static double Cte_G_gHI;
static double Cte_G_gHeI;
static double Cte_G_gHeII;
static double Cte_heating_radiative_HI;
static double Cte_heating_radiative_HeI;
static double Cte_heating_radiative_HeII;
/*
* init some variables that depends only on redshift
*/
void init_from_new_redshift(double Redshift)
{
/* init weinberg coeff */
coefweinberg[0][0] = -0.31086729929951613e+002;
coefweinberg[1][0] = 0.34803667059463761e+001;
coefweinberg[2][0] = -0.15145716066316397e+001;
coefweinberg[3][0] = 0.54649951450632972e+000;
coefweinberg[4][0] = -0.16395924120387340e+000;
coefweinberg[5][0] = 0.25197466148524143e-001;
coefweinberg[6][0] = -0.15352763785487806e-002;
coefweinberg[0][1] = -0.31887274113252204e+002;
coefweinberg[1][1] = 0.44178493140927095e+001;
coefweinberg[2][1] = -0.20158132553082293e+001;
coefweinberg[3][1] = 0.64080497292269134e+000;
coefweinberg[4][1] = -0.15981267091909040e+000;
coefweinberg[5][1] = 0.22056900050237707e-001;
coefweinberg[6][1] = -0.12837570029562849e-002;
coefweinberg[0][2] = -0.35693331167978656e+002;
coefweinberg[1][2] = 0.20207245722165794e+001;
coefweinberg[2][2] = -0.76856976101363744e-001;
coefweinberg[3][2] = -0.75691470654320359e-001;
coefweinberg[4][2] = -0.54502220282734729e-001;
coefweinberg[5][2] = 0.20633345104660583e-001;
coefweinberg[6][2] = -0.18410307456285177e-002;
coefweinberg[0][3] = -0.56967559787460921e+002;
coefweinberg[1][3] = 0.38601174525546353e+001;
coefweinberg[2][3] = -0.18318926655684415e+001;
coefweinberg[3][3] = 0.67360594266440688e+000;
coefweinberg[4][3] = -0.18983466813215341e+000;
coefweinberg[5][3] = 0.27768907786915147e-001;
coefweinberg[6][3] = -0.16330066969315893e-002;
coefweinberg[0][4] = -0.56977907250821026e+002;
coefweinberg[1][4] = 0.38686249565302266e+001;
coefweinberg[2][4] = -0.13330942368518774e+001;
coefweinberg[3][4] = 0.33988839029092172e+000;
coefweinberg[4][4] = -0.98997915675929332e-001;
coefweinberg[5][4] = 0.16781612113050747e-001;
coefweinberg[6][4] = -0.11514328893746039e-002;
coefweinberg[0][5] = -0.59825233828609278e+002;
coefweinberg[1][5] = 0.21898162706563347e+001;
coefweinberg[2][5] = -0.42982055888598525e+000;
coefweinberg[3][5] = 0.50312144291614215e-001;
coefweinberg[4][5] = -0.61550639239553132e-001;
coefweinberg[5][5] = 0.18017109270959387e-001;
coefweinberg[6][5] = -0.15438891584271634e-002;
z = Redshift;
J0 = J_0();
/* here, we initialize the ctes that uses J_nu(z) */
/* Tessier */
/*
Cte_G_gHI = G_gHI();
Cte_G_gHeI = G_gHeI();
Cte_G_gHeII = G_gHeII();
Cte_heating_radiative_HI = heating_radiative_HI();
Cte_heating_radiative_HeI = heating_radiative_HeI();
Cte_heating_radiative_HeII = heating_radiative_HeII();
*/
/* Theuns */
/*
Cte_G_gHI = G_gHI_t(J0);
Cte_G_gHeI = G_gHeI_t(J0);
Cte_G_gHeII = G_gHeII_t(J0);
Cte_heating_radiative_HI = heating_radiative_HI_t(J0);
Cte_heating_radiative_HeI = heating_radiative_HeI_t(J0);
Cte_heating_radiative_HeII = heating_radiative_HeII_t(J0);
*/
/* Weinberg */
Cte_G_gHI = G_gHI_w();
Cte_G_gHeI = G_gHeI_w();
Cte_G_gHeII = G_gHeII_w();
Cte_heating_radiative_HI = heating_radiative_HI_w();
Cte_heating_radiative_HeI = heating_radiative_HeI_w();
Cte_heating_radiative_HeII = heating_radiative_HeII_w();
}
/*
* J0
*/
double J_0()
{
double Fz;
if (z > 6)
Fz = 0;
else
{
if (z > 3)
Fz = 4/(z+1);
else
{
if (z > 2)
Fz = 1;
else
Fz = pow(((1+z)/3.),3);
}
}
return 1.0e-22*Fz;
}
/*
* UV background intensity
*/
double J_nu(double e)
{
double e_L;
e_L = 13.598*eV;
return (e_L/e)*J_0();
}
/*
* sigma_rad
*/
double sigma_rad_HI(double e)
{
double xxx,alph,e_i;
e_i = 13.598 *eV;
xxx = e/e_i;
alph = sqrt(xxx-1.0);
return 6.30e-18/pow(xxx,4)*exp(4.0-4.0*atan(alph)/alph) /(1.0-exp(-TWOPI/alph));
}
double sigma_rad_HeI(double e)
{
double xxx,alph,e_i;
e_i = 24.587 *eV;
xxx = e/e_i;
alph = sqrt(xxx-1.0);
return 7.42e-18*(1.660/pow(xxx,2.050)-0.660/pow(xxx,3.050));
}
double sigma_rad_HeII(double e)
{
double xxx,alph,e_i;
e_i = 54.416 *eV;
xxx = e/e_i;
alph = sqrt(xxx-1.0);
return 1.58e-18/pow(xxx,4)*exp(4.0-4.0*atan(alph)/alph)/(1.0-exp(-TWOPI/alph));
}
/*
* cooling rates
*/
/* Bremstrahlung */
double cooling_bremstrahlung_HI(double T)
{
return 1.42e-27*sqrt(T)*(1.10+0.340*exp(-pow((5.50-log10(T)),2) /3.0));
}
double cooling_bremstrahlung_HeI(double T)
{
return 1.42e-27*sqrt(T)*(1.10+0.340*exp(-pow((5.50-log10(T)),2) /3.0));
}
double cooling_bremstrahlung_HeII(double T)
{
return 5.68e-27*sqrt(T)*(1.10+0.340*exp(-pow((5.50-log10(T)),2) /3.0));
}
/* Ionization */
double cooling_ionization_HI(double T)
{
double T5;
T5 = T/1e5;
return 2.54e-21*sqrt(T)*exp(-157809.1/T)/(1+sqrt(T5));
}
double cooling_ionization_HeI(double T)
{
double T5;
T5 = T/1e5;
return 1.88e-21*sqrt(T)*exp(-285335.4/T)/(1+sqrt(T5));
}
double cooling_ionization_HeII(double T)
{
double T5;
T5 = T/1e5;
return 9.90e-22*sqrt(T)*exp(-631515.0/T)/(1+sqrt(T5));
}
/* Recombination */
double cooling_recombination_HI(double T)
{
double T3,T6;
T3 = T/1e3;
T6 = T/1e6;
return 8.70e-27*sqrt(T)/pow(T3,0.2)/(1.0+pow(T6,0.7));
}
double cooling_recombination_HeI(double T)
{
return 1.55e-26*pow(T,0.3647);
}
double cooling_recombination_HeII(double T)
{
double T3,T6;
T3 = T/1e3;
T6 = T/1e6;
return 3.48e-26*sqrt(T)/pow(T3,0.2)/(1.0+pow(T6,0.7));
}
/* Dielectric Recombination */
double cooling_dielectric_recombination(double T)
{
return 1.24e-13*pow(T,-1.5)*exp(-470000.0/T)*(1.0+0.3*exp(-94000.0/T));
}
/* Ecitation cooling (line cooling) */
double cooling_excitation_HI(double T)
{
double T5;
T5 = T/1e5;
return 7.50e-19*exp(-118348.0/T)/(1+sqrt(T5));
}
double cooling_excitation_HII(double T)
{
double T5;
T5 = T/1e5;
return 5.54e-17/pow(T,0.397)*exp(-473638.0/T)/(1+sqrt(T5));
}
/* Compton cooling */
double cooling_compton(double T)
{
return 5.406e-36*(T-2.7*(1+z))*pow((1+z),4);
}
/*
* recombination rates (taux_rec)
*/
double A_HII(double T)
{
double T3,T6;
T3 = T/1e3;
T6 = T/1e6;
return 6.30e-11/sqrt(T)/pow(T3,0.2)/(1+pow(T6,0.7));
}
double A_HeIId(double T)
{
return 1.9e-3/pow(T,1.50)*exp(-470000.0/T)*(1.0+0.30*exp(-94000.0/T));
}
double A_HeII(double T)
{
return 1.5e-10/pow(T,0.6353) + A_HeIId(T);
}
double A_HeIII(double T)
{
double T3,T6;
T3 = T/1e3;
T6 = T/1e6;
return 3.36e-10/sqrt(T)/pow(T3,0.2)/(1.0+pow(T6,0.7));
}
/*
* collisional rates (taux_ion)
*/
double G_HI(double T)
{
double T5;
T5 = T/1e5;
return 1.17e-10*sqrt(T)*exp(-157809.1/T)/(1.0+sqrt(T5));
}
double G_HeI(double T)
{
double T5;
T5 = T/1e5;
return 2.38e-11*sqrt(T)*exp(-285335.4/T)/(1.0+sqrt(T5));
}
double G_HeII(double T)
{
double T5;
T5 = T/1e5;
return 5.68e-12*sqrt(T)*exp(-631515.0/T)/(1.0+sqrt(T5));
}
/*
* photoionisation rates (depend only on z)
*/
double G_gHI()
{
double e_i,integ,e,de,error;
e_i = 13.598*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while (error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2*TWOPI*J_nu(e)*sigma_rad_HI(e)*de/e;
integ = integ + error;
error = error/fabs(integ);
}
return integ/PLANCK;
}
double G_gHeI()
{
double e_i,integ,e,de,error;
e_i = 24.587*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while (error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2*TWOPI*J_nu(e)*sigma_rad_HeI(e)*de/e;
integ = integ + error;
error = error/fabs(integ);
}
return integ/PLANCK;
}
double G_gHeII()
{
double e_i,integ,e,de,error;
e_i = 54.416*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while (error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2*TWOPI*J_nu(e)*sigma_rad_HeII(e)*de/e;
integ = integ + error;
error = error/fabs(integ);
}
return integ/PLANCK;
}
double G_gHI_t(double J0)
{
return 1.26e10*J0/(3.0+alpha);
}
double G_gHeI_t(double J0)
{
return 1.48e10*J0*pow(0.5530,alpha) *(1.660/(alpha+2.050)-0.660/(alpha+3.050));
}
double G_gHeII_t(double J0)
{
return 3.34e9*J0*pow(0.2490,alpha)/(3.0+alpha);
}
double G_gHI_w()
{
double taux_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][0]*pow(zz,i);
taux_rad_weinbergint=normfacJ0*exp(hh);
}
else
taux_rad_weinbergint=0.0;
tt=G_gHI_t(J0min);
if (taux_rad_weinbergint < tt)
taux_rad_weinbergint=tt;
return taux_rad_weinbergint;
}
double G_gHeI_w()
{
double taux_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][1]*pow(zz,i);
taux_rad_weinbergint=normfacJ0*exp(hh);
}
else
taux_rad_weinbergint=0.0;
tt=G_gHeI_t(J0min);
if (taux_rad_weinbergint < tt)
taux_rad_weinbergint=tt;
return taux_rad_weinbergint;
}
double G_gHeII_w()
{
double taux_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][2]*pow(zz,i);
taux_rad_weinbergint=normfacJ0*exp(hh);
}
else
taux_rad_weinbergint=0.0;
tt=G_gHeII_t(J0min);
if (taux_rad_weinbergint < tt)
taux_rad_weinbergint=tt;
return taux_rad_weinbergint;
}
/*
* heating rates (depend only on z)
*/
double heating_radiative_HI() /* use J_nu */
{
double e_i,integ,e,de,error;
e_i = 13.598*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while(error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2.0*TWOPI*J_nu(e)*sigma_rad_HI(e)*(e/e_i-1.0)*de/e;
integ = integ + error;
error=error/fabs(integ);
}
return integ/PLANCK*e_i;
}
double heating_radiative_HeI() /* use J_nu */
{
double e_i,integ,e,de,error;
e_i = 24.587*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while(error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2.0*TWOPI*J_nu(e)*sigma_rad_HeI(e)*(e/e_i-1.0)*de/e;
integ = integ + error;
error=error/fabs(integ);
}
return integ/PLANCK*e_i;
}
double heating_radiative_HeII() /* use J_nu */
{
double e_i,integ,e,de,error;
e_i = 54.416*eV;
integ = 0.0;
e = e_i;
de = e/100.0;
error = 1.0;
while(error>1.e-6)
{
e = e + de;
de = e/100.0;
error = 2.0*TWOPI*J_nu(e)*sigma_rad_HeII(e)*(e/e_i-1.0)*de/e;
integ = integ + error;
error=error/fabs(integ);
}
return integ/PLANCK*e_i;
}
double heating_radiative_HI_t(double J0) /* use Theuns */
{
return (2.91e-1*J0/(2.0+alpha))/(3.0+alpha);
}
double heating_radiative_HeI_t(double J0) /* use Theuns */
{
return 5.84e-1*J0*pow(0.5530,alpha)*(1.660/(alpha+1.050)-2.320/(alpha+2.050)+0.660/(alpha+3.050));
}
double heating_radiative_HeII_t(double J0) /* use Theuns */
{
return (2.92e-1*J0*pow(0.2490,alpha)/(2.0+alpha))/(3.0+alpha);
}
double heating_radiative_HI_w() /* use weinberg coeff */
{
double heat_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][3]*pow(zz,i);
heat_rad_weinbergint=normfacJ0*exp(hh);
}
else
heat_rad_weinbergint=0.0;
tt=heating_radiative_HI_t(J0min);
if (heat_rad_weinbergint < tt)
heat_rad_weinbergint=tt;
return heat_rad_weinbergint;
}
double heating_radiative_HeI_w() /* use weinberg coeff */
{
double heat_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][4]*pow(zz,i);
heat_rad_weinbergint=normfacJ0*exp(hh);
}
else
heat_rad_weinbergint=0.0;
tt=heating_radiative_HeI_t(J0min);
if (heat_rad_weinbergint < tt)
heat_rad_weinbergint=tt;
return heat_rad_weinbergint;
}
double heating_radiative_HeII_w() /* use weinberg coeff */
{
double heat_rad_weinbergint;
double hh,tt,zz;
int i;
if (z < 8.50)
{
hh=0.0;
zz=dmax(z,1.0e-15);
for (i=0;i<Norderweinberg;i++)
hh=hh+coefweinberg[i][5]*pow(zz,i);
heat_rad_weinbergint=normfacJ0*exp(hh);
}
else
heat_rad_weinbergint=0.0;
tt=heating_radiative_HeII_t(J0min);
if (heat_rad_weinbergint < tt)
heat_rad_weinbergint=tt;
return heat_rad_weinbergint;
}
double heating_compton()
{
/* Abel, Tom; Haehnelt, Martin G.Apj 520 */
//return 5.406e-36*2.726*pow((1+z),5); /* from Ramses */
//if (z>6)
// return 0;
//else
// return 1.25e-31*pow((1+z),13/3.);
return 0;
}
void compute_densities(double T,double X,double *pn_H, double *pn_HI,double *pn_HII,double *pn_HEI,double *pn_HEII,double *pn_HEIII,double *pn_E,double *pmu)
{
double Y,yy,x1;
double t_rad_HI,t_rec_HI,t_ion_HI;
double t_rad_HEI,t_rec_HEI,t_ion_HEI;
double t_rad_HEII,t_rec_HEII,t_ion_HEII;
double t_ion2_HI,t_ion2_HEI,t_ion2_HEII;
double err_nE;
double n_T;
double n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu;
Y = 1-X;
yy = Y/(4-4*Y);
t_rad_HI = Cte_G_gHI;
t_rec_HI = A_HII(T);
t_ion_HI = G_HI(T);
t_rad_HEI = Cte_G_gHeI;
t_rec_HEI = A_HeII(T);
t_ion_HEI = G_HeI(T);
t_rad_HEII = Cte_G_gHeII;
t_rec_HEII = A_HeIII(T);
t_ion_HEII = G_HeII(T);
n_H = *pn_H;
n_E = n_H;
err_nE = 1.;
while(err_nE > 1.e-8)
{
/* compute densities (Ramses implementation) */
t_ion2_HI = t_ion_HI + t_rad_HI /dmax(n_E,1e-15*n_H);
t_ion2_HEI = t_ion_HEI + t_rad_HEI /dmax(n_E,1e-15*n_H);
t_ion2_HEII = t_ion_HEII + t_rad_HEII/dmax(n_E,1e-15*n_H);
n_HI = t_rec_HI/(t_ion2_HI+t_rec_HI)*n_H;
n_HII = t_ion2_HI/(t_ion2_HI+t_rec_HI)*n_H;
x1 = (t_rec_HEII*t_rec_HEI+t_ion2_HEI*t_rec_HEII+t_ion2_HEII*t_ion2_HEI);
n_HEIII = yy*t_ion2_HEII*t_ion2_HEI/x1*n_H;
n_HEII = yy*t_ion2_HEI *t_rec_HEII/x1*n_H;
n_HEI = yy*t_rec_HEII *t_rec_HEI /x1*n_H;
err_nE = fabs((n_E - (n_HII + n_HEII + 2.*n_HEIII))/n_H);
n_E = 0.5*n_E+0.5*(n_HII + n_HEII + 2.*n_HEIII);
}
n_T = n_HI + n_HII+ n_HEI+ n_HEII+ n_HEIII+ n_E;
mu = n_H/X/n_T;
*pn_H = n_H;
*pn_HI = n_HI;
*pn_HII = n_HII;
*pn_HEI = n_HEI;
*pn_HEII = n_HEII;
*pn_HEIII = n_HEIII;
*pn_E = n_E;
*pmu = mu;
}
void print_cooling(double T,
double c1,double c2,double c3,double c4,double c5,double c6,double c7,double c8,double c9,
double c10,double c11,double c12,double c13,double h1, double h2, double h3, double h4)
{
double ctot,htot,chtot;
ctot = c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11+c12+c13;
htot = h1+h2+h3+h4;
chtot= ctot - htot;
printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n",T,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4,ctot,htot,chtot);
}
void compute_cooling(double T, double n_H, double n_HI,double n_HII,double n_HEI,double n_HEII,double n_HEIII,double n_E,double mu,
double *c1,double *c2,double *c3,double *c4,double *c5,double *c6,double *c7,double *c8,double *c9,
double *c10,double *c11,double *c12,double *c13,double *h1, double *h2, double *h3, double *h4)
{
double nH2;
nH2 = n_H*n_H;
/*
* compute cooling
*/
/* Bremstrahlung (cool_bre) */
*c1 = cooling_bremstrahlung_HI(T) *n_E*n_HII /nH2;
*c2 = cooling_bremstrahlung_HeI(T) *n_E*n_HEII /nH2;
*c3 = cooling_bremstrahlung_HeII(T) *n_E*n_HEIII/nH2;
/* Ionization cooling (cool_ion) */
*c4 = cooling_ionization_HI(T) *n_E*n_HI /nH2;
*c5 = cooling_ionization_HeI(T) *n_E*n_HEI /nH2;
*c6 = cooling_ionization_HeII(T) *n_E*n_HEII /nH2;
/* Recombination cooling (cool_rec) */
*c7 = cooling_recombination_HI(T) *n_E*n_HII /nH2;
*c8 = cooling_recombination_HeI(T) *n_E*n_HEII /nH2;
*c9 = cooling_recombination_HeII(T) *n_E*n_HEIII/nH2;
/* Dielectric recombination cooling (cool_die) */
*c10 = cooling_dielectric_recombination(T) *n_E*n_HEII /nH2;
/* Line cooling (cool_exc) */
*c11 = cooling_excitation_HI(T) *n_E*n_HI /nH2;
*c12 = cooling_excitation_HII(T) *n_E*n_HEII /nH2;
/* Compton cooling (cool_com) */
*c13 = cooling_compton(T) *n_E /nH2; /* !! dep on z */
/*
* compute heating
*/
/* Radiative heating (h_rad_spec) */
*h1 = Cte_heating_radiative_HI *n_HI /nH2;
*h2 = Cte_heating_radiative_HeI *n_HEI /nH2;
*h3 = Cte_heating_radiative_HeII *n_HEII /nH2;
/* Compton heating (heat_com) */
*h4 = heating_compton() *n_E /nH2; /* !! dep on z */
}
void compute_cooling_from_T_and_Nh(double T,double X,double n_H,
double *c1,double *c2,double *c3,double *c4,double *c5,double *c6,double *c7,double *c8,double *c9,
double *c10,double *c11,double *c12,double *c13,double *h1, double *h2, double *h3, double *h4)
{
double n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu;
double nH2;
//double c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13;
//double h1,h2,h3,h4;
compute_densities(T,X,&n_H,&n_HI,&n_HII,&n_HEI,&n_HEII,&n_HEIII,&n_E,&mu);
nH2 = n_H*n_H;
/*
* compute cooling
*/
/* Bremstrahlung (cool_bre) */
*c1 = cooling_bremstrahlung_HI(T) *n_E*n_HII /nH2;
*c2 = cooling_bremstrahlung_HeI(T) *n_E*n_HEII /nH2;
*c3 = cooling_bremstrahlung_HeII(T) *n_E*n_HEIII/nH2;
/* Ionization cooling (cool_ion) */
*c4 = cooling_ionization_HI(T) *n_E*n_HI /nH2;
*c5 = cooling_ionization_HeI(T) *n_E*n_HEI /nH2;
*c6 = cooling_ionization_HeII(T) *n_E*n_HEII /nH2;
/* Recombination cooling (cool_rec) */
*c7 = cooling_recombination_HI(T) *n_E*n_HII /nH2;
*c8 = cooling_recombination_HeI(T) *n_E*n_HEII /nH2;
*c9 = cooling_recombination_HeII(T) *n_E*n_HEIII/nH2;
/* Dielectric recombination cooling (cool_die) */
*c10 = cooling_dielectric_recombination(T) *n_E*n_HEII /nH2;
/* Line cooling (cool_exc) */
*c11 = cooling_excitation_HI(T) *n_E*n_HI /nH2;
*c12 = cooling_excitation_HII(T) *n_E*n_HEII /nH2;
/* Compton cooling (cool_com) */
*c13 = cooling_compton(T) *n_E /nH2; /* !! dep on z */
/*
* compute heating
*/
/* Radiative heating (h_rad_spec) */
*h1 = Cte_heating_radiative_HI *n_HI /nH2;
*h2 = Cte_heating_radiative_HeI *n_HEI /nH2;
*h3 = Cte_heating_radiative_HeII *n_HEII /nH2;
/* Compton heating (heat_com) */
*h4 = heating_compton() *n_E /nH2; /* !! dep on z */
}
double compute_cooling_from_Egyspec_and_Density(double Egyspec,double Density,double *MeanWeight)
{
double T,mu,n_H;
double n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E;
double err_mu,mu_left,mu_right,mu_old;
int niter;
double c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13;
double h1,h2,h3,h4;
double nH2;
/* Hydrogen density (cgs) */
n_H = HYDROGEN_MASSFRAC * Density/ PROTONMASS;
/* itterate to find the right mu and T */
err_mu=1.;
mu_left=0.5;
mu_right=1.3;
niter=0;
while ( (err_mu > 1.e-4) && (niter <= 50) )
{
mu_old=0.5*(mu_left+mu_right);
/* compute temperature */
T = GAMMA_MINUS1 *mu_old*PROTONMASS/BOLTZMANN *Egyspec;
/* compute all */
compute_densities(T,HYDROGEN_MASSFRAC,&n_H,&n_HI,&n_HII,&n_HEI,&n_HEII,&n_HEIII,&n_E,&mu);
err_mu = (mu-mu_old)/mu_old;
if(err_mu>0.)
{
mu_left =0.5*(mu_left+mu_right);
mu_right=mu_right;
}
else
{
mu_left =mu_left;
mu_right=0.5*(mu_left+mu_right);
}
err_mu=fabs(err_mu);
niter=niter+1;
}
if (niter > 50)
printf("ERROR : too many iterations.");
*MeanWeight = 0.5*(mu_left+mu_right);
/* now, compute cooling */
nH2 = n_H*n_H;
/*
* compute cooling
*/
/* Bremstrahlung (cool_bre) */
c1 = cooling_bremstrahlung_HI(T) *n_E*n_HII /nH2;
c2 = cooling_bremstrahlung_HeI(T) *n_E*n_HEII /nH2;
c3 = cooling_bremstrahlung_HeII(T) *n_E*n_HEIII/nH2;
/* Ionization cooling (cool_ion) */
c4 = cooling_ionization_HI(T) *n_E*n_HI /nH2;
c5 = cooling_ionization_HeI(T) *n_E*n_HEI /nH2;
c6 = cooling_ionization_HeII(T) *n_E*n_HEII /nH2;
/* Recombination cooling (cool_rec) */
c7 = cooling_recombination_HI(T) *n_E*n_HII /nH2;
c8 = cooling_recombination_HeI(T) *n_E*n_HEII /nH2;
c9 = cooling_recombination_HeII(T) *n_E*n_HEIII/nH2;
/* Dielectric recombination cooling (cool_die) */
c10 = cooling_dielectric_recombination(T) *n_E*n_HEII /nH2;
/* Line cooling (cool_exc) */
c11 = cooling_excitation_HI(T) *n_E*n_HI /nH2;
c12 = cooling_excitation_HII(T) *n_E*n_HEII /nH2;
/* Compton cooling (cool_com) */
c13 = cooling_compton(T) *n_E /nH2; /* !! dep on z */
/*
* compute heating
*/
/* Radiative heating (h_rad_spec) */
h1 = Cte_heating_radiative_HI *n_HI /nH2;
h2 = Cte_heating_radiative_HeI *n_HEI /nH2;
h3 = Cte_heating_radiative_HeII *n_HEII /nH2;
/* Compton heating (heat_com) */
h4 = heating_compton() *n_E /nH2; /* !! dep on z */
/* output info */
//print_cooling(T,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4);
c1 = dmax(c1,0);
c2 = dmax(c2,0);
c3 = dmax(c3,0);
c4 = dmax(c4,0);
c5 = dmax(c5,0);
c6 = dmax(c6,0);
c7 = dmax(c7,0);
c8 = dmax(c8,0);
c9 = dmax(c9,0);
c10 = dmax(c10,0);
c11 = dmax(c11,0);
c12 = dmax(c12,0);
c13 = dmax(c13,0);
h1 = dmax(h1,0);
h2 = dmax(h2,0);
h3 = dmax(h3,0);
h4 = dmax(h4,0);
return (c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11+c12+c13) - (h1+h2+h3+h4);
}
struct cooling_solver_params
{
double Entropy;
double Density;
int Phase;
int i;
double DtEntropyVisc;
double dt;
double hubble_a;
};
double cooling_solver_function(double EntropyVar, void *params)
{
struct cooling_solver_params *p = (struct cooling_solver_params *) params;
double Entropy = p->Entropy;
double Density = p->Density;
int Phase = p->Phase;
int i = p->i;
double DtEntropyVisc = p->DtEntropyVisc;
double dt = p->dt;
double hubble_a = p->hubble_a;
double DtEntropyRadSph=0;
#ifdef MULTIPHASE
switch (Phase)
{
case GAS_SPH:
DtEntropyRadSph = -GAMMA_MINUS1*pow(Density,-GAMMA)*lambda(Density,EntropyVar,-10,Phase,i)/hubble_a;
break;
case GAS_STICKY:
case GAS_DARK:
DtEntropyRadSph = -1/(Density * a3inv) *lambda(Density,EntropyVar,-10,Phase,i)/hubble_a;
break;
}
#else
DtEntropyRadSph = -GAMMA_MINUS1*pow(Density,-GAMMA)*lambda(Density,EntropyVar,-10,Phase,i)/hubble_a;
#endif
return Entropy + (DtEntropyVisc + DtEntropyRadSph)*dt - EntropyVar;
};
/*! This function compute the new Entropy due to isochoric cooling
* using an implicit iteration scheme
*
* !!! here Density is already expressed in comobile coord
*
*/
double DoCooling(FLOAT Density,FLOAT Entropy,int Phase,int i,FLOAT DtEntropyVisc, double dt, double hubble_a)
{
double EntropyNew;
double Entropy_lo=0, Entropy_hi=0;
double lo,hi;
int status;
int iter = 0;
int max_iter = 100;
const gsl_root_fsolver_type *T;
gsl_root_fsolver *s;
gsl_function F;
struct cooling_solver_params params = {(double)Entropy,(double)Density,(int)Phase,(int)i,(double)DtEntropyVisc,(double)dt,(double)hubble_a};
F.function = &cooling_solver_function;
F.params = &params;
T = gsl_root_fsolver_brent;
s = gsl_root_fsolver_alloc (T);
Entropy_lo = 0.5*Entropy;
Entropy_hi = 1.1*Entropy;
lo = cooling_solver_function(Entropy_lo,&params);
hi = cooling_solver_function(Entropy_hi,&params);
if (lo*hi>0)
{
do
{
Entropy_hi = 2* Entropy_hi;
Entropy_lo = 0.5*Entropy_lo;
lo = cooling_solver_function(Entropy_lo,&params);
hi = cooling_solver_function(Entropy_hi,&params);
//printf("here, we need to iterate...\n");
}
while (lo*hi>0);
}
gsl_root_fsolver_set (s, &F, Entropy_lo, Entropy_hi);
do
{
iter++;
status = gsl_root_fsolver_iterate (s);
EntropyNew = gsl_root_fsolver_root (s);
Entropy_lo = gsl_root_fsolver_x_lower (s);
Entropy_hi = gsl_root_fsolver_x_upper (s);
status = gsl_root_test_interval (Entropy_lo, Entropy_hi,0, 0.001);
}
while (status == GSL_CONTINUE && iter < max_iter);
gsl_root_fsolver_free (s);
if (status!=GSL_SUCCESS)
{
printf("WARNING, HERE WE DO NOT CONVERGE...%g %g\n",Entropy_lo,Entropy_hi);
endrun(3737);
}
return EntropyNew;
}
/*! This function computes the entropy variation due to the cooling.
* Cooling is computed only for sph active particles.
*/
void cooling()
{
int i;
double dt=0;
double EntropyNew;
/* set the right Redshift and compute value indep of Temperature */
if (All.CoolingType==1)
init_from_new_redshift(1.0 / (All.Time) - 1);
if(All.ComovingIntegrationOn)
{
hubble_a = All.Omega0 / (All.Time * All.Time * All.Time)
+ (1 - All.Omega0 - All.OmegaLambda) / (All.Time * All.Time) + All.OmegaLambda;
hubble_a = All.Hubble * sqrt(hubble_a);
a3inv = 1 / (All.Time * All.Time * All.Time);
}
else
a3inv = hubble_a = 1;
for(i = 0; i < NumPart; i++)
{
if(P[i].Ti_endstep == All.Ti_Current) /* active particles */
{
if(P[i].Type == 0) /* SPH stuff */
{
//DtEntropyRadSph=0.;
//SphP[i].DtEntropyRadSph = 0;
#ifdef MULTIPHASE
if (SphP[i].Phase == GAS_SPH)
{
#endif
/* note : SphP[i].DtEntropyRadSph should not be necessary */
dt = (All.Ti_Current - P[i].Ti_begstep) * All.Timebase_interval;
//SphP[i].DtEntropyRadSph = -GAMMA_MINUS1*pow(SphP[i].Density * a3inv,-GAMMA)*lambda(SphP[i].Density *a3inv,SphP[i].Entropy,-10,0,i)/hubble_a;
//if (fabs((SphP[i].DtEntropyRadSph+SphP[i].DtEntropy)*dt) > 0.1*fabs(SphP[i].Entropy))
{
/* do implicit isochoric cooling */
EntropyNew = DoCooling(SphP[i].Density*a3inv,SphP[i].Entropy,0,i,SphP[i].DtEntropy,dt,hubble_a);
if(dt > 0)
SphP[i].DtEntropy = (EntropyNew - SphP[i].Entropy)/dt;
}
//else
{
// SphP[i].DtEntropy += SphP[i].DtEntropyRadSph;
}
//SphP[i].DtEgySpecRadSph = - 1/GAMMA_MINUS1 * pow(SphP[i].Density * a3inv,GAMMA_MINUS1) * (SphP[i].DtEntropyRadSph);
#ifdef MULTIPHASE
}
else /* STICKY OR DARK */
{
//SphP[i].DtEntropyRadSph = -1/(SphP[i].Density * a3inv)*lambda(SphP[i].Density *a3inv,SphP[i].Entropy,-10,SphP[i].Phase,i)/hubble_a;
//SphP[i].DtEntropy += SphP[i].DtEntropyRadSph;
/* do implicit isochoric cooling */
dt = (All.Ti_Current - P[i].Ti_begstep) * All.Timebase_interval;
EntropyNew = DoCooling(SphP[i].Density*a3inv,SphP[i].Entropy,SphP[i].Phase,i,SphP[i].DtEntropy,dt,hubble_a);
if(dt > 0)
SphP[i].DtEntropy = (EntropyNew - SphP[i].Entropy)/dt;
/* !!! here, we do not take into account the energy variation !!! */
/* SphP[i].DtEgySpecRadSph = SphP[i].DtEntropy, no ?*/
}
#endif
/* finally sum to the entropy variation */
/* WARNING : we do not compute DtEntropy here, it is updated in timestep.c */
/* no, because, it is updated juste above, no ? */
//SphP[i].DtEntropy += SphP[i].DtEntropyRadSph;
//SphP[i].DtEntropy += SphP[i].DtEgySpecRadSph / (-1/GAMMA_MINUS1 * pow(SphP[i].Density * a3inv,GAMMA_MINUS1));
}
}
}
}
/*! This function computes the new entropy due to the cooling,
* between step t0 and t1.
*/
void CoolingForOne(int i,int tstart,int tend,int ti_step2, double dt_entr3,double a3inv,double hubble_a)
{
double dt,dadt,tcool,dt_entr,dt_entr2;
double MinSizeTimestep,ErrTolIntAccuracy;
int ti_current,istep;
int ti_step;
double minentropy;
double Entropy,DEntropyRad,DtEntropy,DtEgySpec,Entropy_init;
if(All.MinEgySpec)
#ifdef DENSITY_INDEPENDENT_SPH
minentropy = All.MinEgySpec * GAMMA_MINUS1 / pow(SphP[i].EgyWtDensity * a3inv, GAMMA_MINUS1);
#else
minentropy = All.MinEgySpec * GAMMA_MINUS1 / pow(SphP[i].Density * a3inv, GAMMA_MINUS1);
#endif
/* compute dt */
/* here we use the convention of Gadget */
/* this assume that DtEntropy = dA/dt/hubble_a */
/* and not only dA/dt */
dt_entr = (tend - tstart) * All.Timebase_interval;
dt_entr2 = ( (tend+ti_step2/2. - tstart) * All.Timebase_interval ); /* size of step that goes towards the end of the predicted step */
int tend2;
tend2 = tend+ti_step2/2;
ErrTolIntAccuracy = 0.02;
MinSizeTimestep = 0.01*dt_entr;
/* compute da/dt */
//dadt = fabs( -GAMMA_MINUS1*pow(SphP[i].Density * a3inv,-GAMMA)*lambda(SphP[i].Density *a3inv,SphP[i].Entropy,SphP[i].Metal[FE],0,i)/hubble_a );
/* compute cooling time */
//tcool = SphP[i].Entropy / dadt;
//if (ErrTolIntAccuracy*tcool/dt_entr < 1)
// printf("** %g %g\n",ErrTolIntAccuracy*tcool,dt_entr); /* --> verifier le cooling time */
/***************************************/
/* integrate with adaptative timesteps */
/***************************************/
Entropy_init = Entropy = SphP[i].Entropy; /* we should use entropy pred, no ? */
if(Entropy_init<=minentropy)
{
/* do not cool */
/* SphP[i].DtEntropy is kept unchanged */
SphP[i].DtEntropyRad = 0;
SphP[i].DtEnergyRad = 0;
SphP[i].Entropy = Entropy_init + (SphP[i].DtEntropy)*dt_entr;
#ifdef ENTROPYPRED
/* compute entropy pred */
SphP[i].EntropyPred = SphP[i].Entropy - dt_entr3 * SphP[i].DtEntropy ;
if (SphP[i].EntropyPred < 0)
{
printf("\ntask=%d: EntropyPred less than zero in CoolingForOne !\n", ThisTask);
printf("ID=%d Entropy=%g EntropyPred=%g DtEntropy=%g\n",P[i].ID,SphP[i].Entropy,SphP[i].EntropyPred,SphP[i].DtEntropy);
fflush(stdout);
endrun(444003);
}
#endif
return ;
}
ti_current = tstart;
istep = 0;
#ifdef CHIMIE_THERMAL_FEEDBACK
int no_cooling_SNII,no_cooling_SNIa,no_cooling;
int Tis,Tic;
double td;
no_cooling=0;
no_cooling_SNIa=0;
no_cooling_SNII=0;
/* check if we are in an adiabatic phase or not */
if (All.ComovingIntegrationOn)
{
Tic = All.Ti_Current;
if (SphP[i].SNIaThermalTime>0) /* only if the time has been set at least once, it is negative instead (see init.c) */
{
Tis = log(SphP[i].SNIaThermalTime/All.TimeBegin) / All.Timebase_interval;
td = get_cosmictime_difference(Tis,Tic);
if(td<All.ChimieSNIaThermalTime)
no_cooling_SNIa=1;
}
if (SphP[i].SNIIThermalTime>0) /* only if the time has been set at least once, it is negative instead (see init.c) */
{
Tis = log(SphP[i].SNIIThermalTime/All.TimeBegin) / All.Timebase_interval;
td = get_cosmictime_difference(Tis,Tic);
if(td<All.ChimieSNIIThermalTime)
no_cooling_SNII=1;
}
}
else
{
if (SphP[i].SNIaThermalTime>0) /* only if the time has been set at least once, it is negative instead (see init.c) */
if ((All.Time-SphP[i].SNIaThermalTime)<All.ChimieSNIaThermalTime)
no_cooling_SNIa=1;
if (SphP[i].SNIIThermalTime>0) /* only if the time has been set at least once, it is negative instead (see init.c) */
if ((All.Time-SphP[i].SNIIThermalTime)<All.ChimieSNIIThermalTime)
no_cooling_SNII=1;
}
no_cooling=no_cooling_SNIa+no_cooling_SNII;
/* do not cool */
if(no_cooling)
{
Entropy = Entropy + SphP[i].DtEntropy* dt_entr;
/* avoid Entropy to be less than minentropy */
if(All.MinEgySpec)
if(Entropy < minentropy)
Entropy = 2*minentropy; /* 2 in order to be a bit safer */
/* update particle */
SphP[i].DtEntropy = (Entropy-Entropy_init)/dt_entr;
SphP[i].Entropy = Entropy;
/* cooling rate is zero */
SphP[i].DtEntropyRad = 0;
SphP[i].DtEnergyRad = 0;
SphP[i].Entropy = Entropy_init + (SphP[i].DtEntropy)*dt_entr;
#ifdef ENTROPYPRED
/* compute entropy pred */
SphP[i].EntropyPred = SphP[i].Entropy - dt_entr3 * SphP[i].DtEntropy ;
if (SphP[i].EntropyPred < 0)
{
printf("\ntask=%d: EntropyPred less than zero in CoolingForOne !\n", ThisTask);
printf("ID=%d Entropy=%g EntropyPred=%g DtEntropy=%g\n",P[i].ID,SphP[i].Entropy,SphP[i].EntropyPred,SphP[i].DtEntropy);
fflush(stdout);
endrun(444004);
}
#endif
return ;
}
#endif
while (ti_current<tend2) /* here we go upt to the end of the predicted step, this avoids overcooling during the predicted step */
//while (ti_current<tend)
{
/* compute da/dt */
#ifdef DENSITY_INDEPENDENT_SPH
dadt = fabs( -GAMMA_MINUS1*pow(SphP[i].EgyWtDensity * a3inv,-GAMMA)*lambda(SphP[i].EgyWtDensity *a3inv,Entropy,SphP[i].Metal[FE],0,i)/hubble_a );
#else
dadt = fabs( -GAMMA_MINUS1*pow(SphP[i].Density * a3inv,-GAMMA)*lambda(SphP[i].Density *a3inv,Entropy,SphP[i].Metal[FE],0,i)/hubble_a );
#endif
/* compute cooling time */
/* this is similar in comobile integraction */
tcool = Entropy / dadt;
/* find dt */
dt = dmax(MinSizeTimestep, tcool*ErrTolIntAccuracy);
dt = dmin(dt,dt_entr);
ti_step = dt / All.Timebase_interval;
ti_step = imax(1,ti_step);
ti_step = imin(ti_step,tend2-ti_current);
dt = ti_step* All.Timebase_interval;
#ifndef IMPLICIT_COOLING_INTEGRATION
/* normal integration of Entropy */
Entropy += SphP[i].DtEntropy* dt; /* viscosity */
#ifdef DENSITY_INDEPENDENT_SPH
Entropy += -GAMMA_MINUS1*pow(SphP[i].EgyWtDensity * a3inv,-GAMMA)*lambda(SphP[i].EgyWtDensity *a3inv,Entropy,SphP[i].Metal[FE],0,i)/hubble_a *dt;
#else
Entropy += -GAMMA_MINUS1*pow(SphP[i].Density * a3inv,-GAMMA)*lambda(SphP[i].Density *a3inv,Entropy,SphP[i].Metal[FE],0,i)/hubble_a *dt; /* cooling */
#endif
#else
/* or use implicit integration of Entropy */
/* need this if there is also heating like UV */
if(All.ComovingIntegrationOn)
{
printf("CoolingForOne : this must be checked !\n");
endrun(123321);
}
#ifdef DENSITY_INDEPENDENT_SPH
Entropy = DoCooling(SphP[i].EgyWtDensity*a3inv,Entropy,0,i,SphP[i].DtEntropy,dt,hubble_a);
#else
Entropy = DoCooling(SphP[i].Density*a3inv,Entropy,0,i,SphP[i].DtEntropy,dt,hubble_a);
#endif
#endif
/* avoid Entropy to be less than minentropy */
if(All.MinEgySpec)
if(Entropy < minentropy)
{
printf("t1.5 i=%d id=%d Entropy-E_i=%e\n",i,P[i].ID,Entropy-Entropy_init);
Entropy = 2*minentropy; /* 2 in order to be a bit safer */
break;
}
ti_current += ti_step;
istep = istep+1;
}
/* entropy only due to cooling */
//DEntropyRad = Entropy-Entropy_init - SphP[i].DtEntropy* dt_entr;
DEntropyRad = Entropy-Entropy_init - SphP[i].DtEntropy* dt_entr2;
DEntropyRad = dmin(0,DEntropyRad);
/* limit the cooling */
if (SphP[i].Entropy+DEntropyRad<0.5*SphP[i].Entropy)
DEntropyRad = -0.5*SphP[i].Entropy;
if (DEntropyRad > 0)
{
printf("t3 i=%d Entropy-E_i=%e\n",i,Entropy-Entropy_init);
printf("i=%d DEntropyRad=%g Entropy_f=%e Entropy_i=%e Entr_f-Entr_i=%e dAa_a=%g dt=%e \n",i,DEntropyRad,Entropy,Entropy_init, Entropy-Entropy_init ,SphP[i].DtEntropy* dt_entr,dt_entr);
endrun(8765493);
}
SphP[i].DtEntropyRad = DEntropyRad/dt_entr2;
if (SphP[i].DtEntropyRad > 0)
{
printf("t3 i=%d Entropy-E_i=%e\n",i,Entropy-Entropy_init);
printf("i=%d DEntropyRad=%g Entropy_f=%e Entropy_i=%e Entr_f-Entr_i=%e dAa_a=%g dt=%e \n",i,DEntropyRad,Entropy,Entropy_init, Entropy-Entropy_init ,SphP[i].DtEntropy* dt_entr,dt_entr);
endrun(8765494);
}
/* update particle */
//SphP[i].Entropy = Entropy; /* total entropy */ /* here, now, Entropy corresponds to the end of the predicted step */
SphP[i].Entropy = Entropy_init + (SphP[i].DtEntropy+SphP[i].DtEntropyRad)*dt_entr;
/* here, we sum all to DtEntropy */
SphP[i].DtEntropy = SphP[i].DtEntropy + SphP[i].DtEntropyRad;
#ifdef ENTROPYPRED
/* compute entropy pred */
SphP[i].EntropyPred = SphP[i].Entropy - dt_entr3 * SphP[i].DtEntropy ;
if (SphP[i].EntropyPred < 0)
{
printf("\ntask=%d: EntropyPred less than zero in CoolingForOne !\n", ThisTask);
printf("ID=%d Entropy=%g EntropyPred=%g DtEntropy=%g\n",P[i].ID,SphP[i].Entropy,SphP[i].EntropyPred,SphP[i].DtEntropy);
fflush(stdout);
endrun(444002);
}
#endif
/* count energy */
#ifdef DENSITY_INDEPENDENT_SPH
DtEgySpec = - 1/GAMMA_MINUS1 * pow(SphP[i].EgyWtDensity * a3inv,GAMMA_MINUS1) * (SphP[i].DtEntropyRad);
#else
DtEgySpec = - 1/GAMMA_MINUS1 * pow(SphP[i].Density * a3inv,GAMMA_MINUS1) * (SphP[i].DtEntropyRad);
#endif
LocalSysState.RadiatedEnergy += DtEgySpec * dt_entr * P[i].Mass;
SphP[i].DtEnergyRad = DtEgySpec;
#ifdef CHECK_ENTROPY_SIGN
if (SphP[i].Entropy < 0)
{
printf("\ntask=%d: entropy less than zero in CoolingForOne !\n", ThisTask);
printf("ID=%d Entropy=%g EntropyPred=%g DtEntropy=%g\n",P[i].ID,SphP[i].Entropy,SphP[i].EntropyPred,SphP[i].DtEntropy);
fflush(stdout);
endrun(444001);
}
#endif
}
/*! cooling function
*
*/
double lambda(FLOAT Density,FLOAT Entropy,FLOAT Metal,int phase,int i)
{
/*
* These function returns the Lambda (not the Lambda_n)
* Here, we assume that Lambda may also contain the heating term.
*
* Here, the Entropy and Density are physical, but in h units
*
* The function is used only in cooling.c
*
*/
double EgySpec;
double MeanWeight;
double T=0,nH=0,nH2=0,l=0;
double nHcgs=0,nH2cgs=0;
#ifdef HEATING
double Gpe=0;
double X,XTne,eps,ne,flux_in_cgs;
#endif
/* number of Hydrogen atoms per unit volume (user units, not corrected from h : [nH] = h2/cm^3 ) */
#ifndef DO_NO_USE_HYDROGEN_MASSFRAC_IN_COOLING
nH = HYDROGEN_MASSFRAC*Density/All.ProtonMass;
#else
nH = 1 *Density/All.ProtonMass;
#endif
nH2 = nH*nH;
/* in cgs, corrected from h */
nHcgs = nH/pow(All.UnitLength_in_cm, 3)*(All.HubbleParam*All.HubbleParam);
nH2cgs = nHcgs*nHcgs;
/* compute temperature */
#ifdef MULTIPHASE
switch(phase)
{
case GAS_SPH:
T = All.mumh/All.Boltzmann * Entropy * pow(Density,GAMMA_MINUS1);
break;
case GAS_STICKY:
case GAS_DARK:
T = All.mumh/All.Boltzmann * GAMMA_MINUS1 * Entropy;
break;
}
#else
T = All.mumh/All.Boltzmann * Entropy * pow(Density,GAMMA_MINUS1);
#endif
/*******************
* * * COOLING * * *
*******************/
if (All.CoolingType==0 || All.CoolingType==2)
{
/**************/
/* Sutherland */
/**************/
#ifdef MULTIPHASE
switch(phase)
{
case GAS_SPH:
if (T > All.CutofCoolingTemperature)
if (All.CoolingType==0)
l = cooling_function(T);
else
#ifdef CHIMIE
l = cooling_function_with_metals(T,Metal);
#else
Metal=(pow(10,All.InitGasMetallicity)-1e-10)*All.CoolingParameters_FeHSolar;
l = cooling_function_with_metals(T,Metal);
#endif
else
l = 0;
break;
case GAS_STICKY:
case GAS_DARK:
if (T > All.CutofCoolingTemperature)
if (All.CoolingType==0)
l = cooling_function(T);
else
#ifdef CHIMIE
l = cooling_function_with_metals(T,Metal);
#else
Metal = (pow(10,All.InitGasMetallicity)-1e-10)*All.CoolingParameters_FeHSolar
l = cooling_function_with_metals(T,Metal);
#endif
else
l = 0;
break;
}
#else
/* here, lambda' is in erg*cm^3/s = kg*m^5/s^3 */
if (T > All.CutofCoolingTemperature)
if (All.CoolingType==0)
l = cooling_function(T);
else
#ifdef CHIMIE
l = cooling_function_with_metals(T,Metal);
#else
Metal = (pow(10,All.InitGasMetallicity)-1e-10)*All.CoolingParameters_FeHSolar;
l = cooling_function_with_metals(T,Metal);
#endif
else
l = 0;
#endif
}
else
{
/******************************/
/* cooling with UV background */
/******************************/
/* get the right density and egyspec in cgs */
/* entropy and density are already physical */
#ifdef MULTIPHASE
/* WARNING, HERE, WE MUST DIFERENCIATE ACORDING TO THE PHASE... */
printf("WARNING, HERE, WE MUST DIFERENCIATE ACORDING TO THE PHASE...\n");
exit(0);
// if (phase == GAS_SPH)
// EgySpec = Entropy / GAMMA_MINUS1 * pow(Density, GAMMA_MINUS1);
// else
// EgySpec = Entropy;
#else
EgySpec = Entropy / GAMMA_MINUS1 * pow(Density, GAMMA_MINUS1);
#endif
/* into cgs, corrected from h */
EgySpec *= All.UnitEnergy_in_cgs/All.UnitMass_in_g;
Density *= All.UnitDensity_in_cgs;
//if(All.ComovingIntegrationOn)
// Density *= (All.HubbleParam*All.HubbleParam);
/* compute cooling from EnergySpec and Density */
l = compute_cooling_from_Egyspec_and_Density(EgySpec,Density,&MeanWeight);
/* compute temperature */
/*
Temperature = GAMMA_MINUS1 *MeanWeight*PROTONMASS/BOLTZMANN *EgySpec;
//printf("%g %g %g\n",Temperature,MeanWeight,Lambda);
logT = log10(Temperature);
*/
}
/*******************
* * * HEATING * * *
*******************/
#ifdef HEATING
#ifdef HEATING_PE
/**************************/
/* Photo-electric heating */ /* all must be in cgs */
/**************************/
X = 0;
#ifdef STELLAR_FLUX
flux_in_cgs = SphP[i].EnergyFlux* All.UnitEnergy_in_cgs/All.UnitTime_in_s/pow(All.UnitLength_in_cm, 2);
X = X + flux_in_cgs/C / All.HeatingPeSolarEnergyDensity;
#endif
#ifdef EXTERNAL_FLUX
X = X + All.HeatingExternalFLuxEnergyDensity/All.HeatingPeSolarEnergyDensity ;
#endif
ne = nHcgs*All.HeatingPeElectronFraction;
XTne = X*sqrt(T)/ne;
eps = 4.87e-2/(1+4e-3*pow(XTne,0.73)) + 3.65e-2*(T/1e4)/(1+2e-4*XTne);
Gpe = (1e-24 * eps * X * nHcgs)/ nH2cgs ;
l = l - Gpe;
#endif /*HEATING_PE*/
#endif
/**********************************
* * * final unit conversions * * *
***********************************/
/* convert lambda' in user units */
l = l / All.UnitEnergy_in_cgs /pow(All.UnitLength_in_cm,3) * All.UnitTime_in_s;
/* in unit with h */
l = l*All.HubbleParam;
/* correct from h */
/*
* [ Lambda / H / rho_p ] = [u] = cm^2/s^2
*
* [H] = h/s
* [rho_p] = g/cm^3 * h^2
* [Lambda_n] = g * m^5 / s^3
* [n] = h^2/m^5
*
* => Lambda_n must be multiplied by h (in order to remove one h !! not a unit !!)
*
*/
//if(All.ComovingIntegrationOn)
// l = l * All.HubbleParam;
/* get the final lambda by multiplying lambda' by nH2 (all in user units) */
l = l*nH2;
return l;
}
/****************************************************************************************/
/*
/*
/*
/* PYTHON INTERFACE
/*
/*
/*
/****************************************************************************************/
#ifdef PY_INTERFACE
#ifdef PYCOOL
#include <Python.h>
#include <numpy/arrayobject.h>
#define TO_INT(a) ( (PyArrayObject*) PyArray_CastToType(a, PyArray_DescrFromType(NPY_INT) ,0) )
#define TO_DOUBLE(a) ( (PyArrayObject*) PyArray_CastToType(a, PyArray_DescrFromType(NPY_DOUBLE) ,0) )
#define TO_FLOAT(a) ( (PyArrayObject*) PyArray_CastToType(a, PyArray_DescrFromType(NPY_FLOAT) ,0) )
static PyObject * cooling_InitDefaultParameters(void)
{
/* list of Gadget parameters */
/* System of units */
All.UnitLength_in_cm = 3.085e+21; /* 1.0 kpc */
All.UnitMass_in_g = 1.989e+43; /* 1.0e10 solar masses */
All.UnitVelocity_in_cm_per_s = 20725573.785998672; /* 207 km/sec */
All.GravityConstantInternal = 0;
All.UnitTime_in_s = All.UnitLength_in_cm / All.UnitVelocity_in_cm_per_s;
All.UnitTime_in_Megayears=All.UnitTime_in_s / SEC_PER_MEGAYEAR;
return Py_BuildValue("i",1);
}
static PyObject * SetParameters(PyObject *dict)
{
PyObject *key;
PyObject *value;
int ivalue;
float fvalue;
double dvalue;
/* check that it is a PyDictObject */
if(!PyDict_Check(dict))
{
PyErr_SetString(PyExc_AttributeError, "argument is not a dictionary.");
return NULL;
}
if (PyDict_Size(dict)==0)
return Py_BuildValue("i",0);
Py_ssize_t pos=0;
while(PyDict_Next(dict,&pos,&key,&value))
{
if(PyString_Check(key))
{
/* System of units */
if(strcmp(PyString_AsString(key), "UnitLength_in_cm")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.UnitLength_in_cm = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "UnitMass_in_g")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.UnitMass_in_g = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "UnitVelocity_in_cm_per_s")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.UnitVelocity_in_cm_per_s = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "GravityConstantInternal")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.GravityConstantInternal = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "CoolingType")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.CoolingType = PyInt_AsLong(value);
}
if(strcmp(PyString_AsString(key), "CutofCoolingTemperature")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.CutofCoolingTemperature = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "InitGasMetallicity")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.InitGasMetallicity = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "CoolingParameters_FeHSolar")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.CoolingParameters_FeHSolar = PyFloat_AsDouble(value);
}
if(strcmp(PyString_AsString(key), "HubbleParam")==0)
{
if(PyInt_Check(value)||PyLong_Check(value)||PyFloat_Check(value))
All.HubbleParam = PyFloat_AsDouble(value);
}
}
}
return Py_BuildValue("i",1);
}
static PyObject * cooling_SetParameters(PyObject *self, PyObject *args)
{
PyObject *dict;
/* here, we can have either arguments or dict directly */
if(PyDict_Check(args))
{
dict = args;
}
else
{
if (! PyArg_ParseTuple(args, "O",&dict))
return NULL;
}
SetParameters(dict);
return Py_BuildValue("i",1);
}
static PyObject * cooling_GetParameters(void)
{
PyObject *dict;
PyObject *key;
PyObject *value;
dict = PyDict_New();
/* System of units */
key = PyString_FromString("UnitLength_in_cm");
value = PyFloat_FromDouble(All.UnitLength_in_cm);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("UnitMass_in_g");
value = PyFloat_FromDouble(All.UnitMass_in_g);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("UnitVelocity_in_cm_per_s");
value = PyFloat_FromDouble(All.UnitVelocity_in_cm_per_s);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("GravityConstantInternal");
value = PyFloat_FromDouble(All.GravityConstantInternal);
PyDict_SetItem(dict,key,value);
/* cooling type */
key = PyString_FromString("CoolingType");
value = PyInt_FromLong(All.CoolingType);
PyDict_SetItem(dict,key,value);
/* cooling type = 2 */
key = PyString_FromString("CoolingFile");
value = PyString_FromString(All.CoolingFile);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("InitGasMetallicity");
value = PyFloat_FromDouble(All.InitGasMetallicity);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("CutofCoolingTemperature");
value = PyFloat_FromDouble(All.CutofCoolingTemperature);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("CoolingParameters_FeHSolar");
value = PyFloat_FromDouble(All.CoolingParameters_FeHSolar);
PyDict_SetItem(dict,key,value);
key = PyString_FromString("HubbleParam");
value = PyFloat_FromDouble(All.HubbleParam);
PyDict_SetItem(dict,key,value);
return Py_BuildValue("O",dict);
}
/*********************************/
/* */
/*********************************/
static PyObject *
cooling_init_cooling(PyObject *self, PyObject *args, PyObject *kwds)
{
PyObject *paramsDict=NULL;
paramsDict= PyDict_New();
//PyObject *filename;
//if (! PyArg_ParseTuple(args, "Oii",&filename,&NumberOfTables,&DefaultTable))
// {
// PyErr_SetString(PyExc_ValueError,"init_chimie, error in parsing.");
// return NULL;
// }
static char *kwlist[] = {"filename","params", NULL};
PyObject *filename=PyString_FromString("cooling.dat");
/* this fails with python2.6, I do not know why ??? */
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|OO",kwlist,&filename,&paramsDict))
{
PyErr_SetString(PyExc_ValueError,"init_chimie, error in parsing arguments.");
return NULL;
}
if (!PyString_Check(filename))
{
PyErr_SetString(PyExc_ValueError,"Argument must be a string.");
return NULL;
}
/* copy filename */
All.CoolingFile = PyString_AsString(filename);
/* check if the file exists */
if(!(fopen(All.CoolingFile, "r")))
{
PyErr_SetString(PyExc_ValueError,"The parameter file does not exists.");
return NULL;
}
/* use default parameters */
cooling_InitDefaultParameters();
/* check if units are given */
/* check that it is a PyDictObject */
if(!PyDict_Check(paramsDict))
{
PyErr_SetString(PyExc_AttributeError, "argument is not a dictionary.");
return NULL;
}
else
{
SetParameters(paramsDict);
}
All.UnitTime_in_s = All.UnitLength_in_cm / All.UnitVelocity_in_cm_per_s;
All.UnitEnergy_in_cgs = All.UnitMass_in_g * pow(All.UnitLength_in_cm, 2) / pow(All.UnitTime_in_s, 2);
All.Boltzmann = BOLTZMANN /All.UnitEnergy_in_cgs;
All.ProtonMass = PROTONMASS/All.UnitMass_in_g;
double meanweight;
meanweight = 4.0 / (1 + 3 * HYDROGEN_MASSFRAC); /* note: we assume neutral gas here */
All.mumh = All.ProtonMass*meanweight;
return Py_BuildValue("O",Py_None);
}
static PyObject * cooling_init_cooling_with_metals(void)
{
init_cooling_with_metals();
return Py_BuildValue("O",Py_None);
}
static PyObject * cooling_check_cooling_table_with_metals(void)
{
double logT,T;
double l;
double metal;
logT = 1.;
metal = (pow(10,All.InitGasMetallicity)-1e-10)*All.CoolingParameters_FeHSolar;
while(logT<8)
{
T = pow(10,logT);
l = log10(cooling_function_with_metals(T,metal));
if(ThisTask == 0)
printf("%8.3f %8.3f\n",logT,l);
logT = logT + 0.05;
}
return Py_BuildValue("O",Py_None);
}
static PyObject *
cooling_init_from_new_redshift(PyObject *self, PyObject *args, PyObject *kwds)
{
double Redshift;
if (!PyArg_ParseTuple(args, "d", &Redshift))
return NULL;
printf("start init from new redshift...\n");
init_from_new_redshift(Redshift);
printf("stop init from new redshift.\n");
return Py_BuildValue("O",Py_None);
}
static PyObject *
cooling_compute_densities(PyObject *self, PyObject *args, PyObject *kwds)
{
double T; /* temperature */
double X; /* hydrogen fraction */
double n_H; /* hydrogen density */
double n_HI; /* HI neutral */
double n_HII; /* HII ionized */
double n_HEI;
double n_HEII;
double n_HEIII;
double n_E; /* eletron density */
double mu;
double Redshift;
if (!PyArg_ParseTuple(args, "ddd", &T,&X,&n_H))
return NULL;
compute_densities(T,X,&n_H,&n_HI,&n_HII,&n_HEI,&n_HEII,&n_HEIII,&n_E,&mu);
return Py_BuildValue("dddddddd",n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu);
}
static PyObject *
cooling_compute_cooling(PyObject *self, PyObject *args, PyObject *kwds)
{
double T; /* temperature */
double X; /* hydrogen fraction */
double n_H; /* hydrogen density */
double n_HI; /* HI neutral */
double n_HII; /* HII ionized */
double n_HEI;
double n_HEII;
double n_HEIII;
double n_E; /* eletron density */
double mu;
double c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4;
double Redshift;
if (!PyArg_ParseTuple(args, "dddddddddd", &T,&X,&n_H,&n_HI,&n_HII,&n_HEI,&n_HEII,&n_HEIII,&n_E,&mu))
return NULL;
compute_cooling(T,n_H,n_HI,n_HII,n_HEI,n_HEII,n_HEIII,n_E,mu,&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&c10,&c11,&c12,&c13,&h1,&h2,&h3,&h4);
return Py_BuildValue("ddddddddddddddddd",c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,h1,h2,h3,h4);
}
static PyObject *
cooling_lambda_fct(PyObject *self, PyObject *args, PyObject *kwds)
{
/*
i is only used to get the metalicity of a particle or the local flux (by the way, this is bad)
*/
double l;
double Density;
double Entropy;
double Metal;
int phase=0;
int i=0;
if (!PyArg_ParseTuple(args, "ddd", &Density,&Entropy,&Metal))
return NULL;
l = lambda(Density,Entropy,Metal,phase,i);
return Py_BuildValue("d",l);
}
+static PyObject *
+ cooling_cooling_function_with_metals(PyObject *self, PyObject *args, PyObject *kwds)
+ {
+
+
+ double l;
+ double Temperature;
+ double Metal;
+
+ if (!PyArg_ParseTuple(args, "dd", &Temperature,&Metal))
+ return NULL;
+
+ l = cooling_function_with_metals(Temperature,Metal);
+
+ return Py_BuildValue("d",l);
+ }
+
+
+
+
static PyObject *
cooling_Entropy_from_Energy(PyObject *self, PyObject *args, PyObject *kwds)
{
double Entropy,Energy,Density;
double a, a3;
if (!PyArg_ParseTuple(args, "ddd",&Energy, &Density, &a))
return NULL;
a3 = a*a*a;
Entropy = Energy * (GAMMA_MINUS1) / pow(Density / a3, GAMMA_MINUS1);
return Py_BuildValue("d",Entropy);
}
static PyObject *
cooling_Energy_from_Entropy(PyObject *self, PyObject *args, PyObject *kwds)
{
double Entropy,Energy,Density;
double a,a3;
if (!PyArg_ParseTuple(args, "ddd",&Entropy, &Density,&a))
return NULL;
a3 = a*a*a;
Energy = Entropy / (GAMMA_MINUS1) * pow(Density / a3, GAMMA_MINUS1);
return Py_BuildValue("d",Energy);
}
static PyObject *
cooling_Temperature_from_Energy(PyObject *self, PyObject *args, PyObject *kwds)
{
double Energy,Temperature;
if (!PyArg_ParseTuple(args, "d",&Energy))
return NULL;
Temperature = GAMMA_MINUS1 * (All.mumh/All.Boltzmann) * Energy;
return Py_BuildValue("d",Temperature);
}
static PyObject *
cooling_Energy_from_Temperature(PyObject *self, PyObject *args, PyObject *kwds)
{
double Energy,Temperature;
if (!PyArg_ParseTuple(args, "d",&Temperature))
return NULL;
Energy = 1/GAMMA_MINUS1 * (All.Boltzmann/All.mumh) * Temperature;
return Py_BuildValue("d",Energy);
}
/* definition of the method table */
static PyMethodDef coolingMethods[] = {
{"InitDefaultParameters", (PyCFunction)cooling_InitDefaultParameters, METH_VARARGS,
"Init default parameters"},
{"SetParameters", (PyCFunction)cooling_SetParameters, METH_VARARGS,
"Set gadget parameters"},
{"GetParameters", (PyCFunction)cooling_GetParameters, METH_VARARGS,
"get some gadget parameters"},
{"init_cooling", cooling_init_cooling, METH_VARARGS| METH_KEYWORDS,
"Init cooling."},
{"init_cooling_with_metals", cooling_init_cooling_with_metals, METH_VARARGS| METH_KEYWORDS,
"Init cooling table with metals."},
{"check_cooling_table_with_metals", cooling_check_cooling_table_with_metals, METH_VARARGS| METH_KEYWORDS,
"Check cooling table with metals."},
{"init_from_new_redshift", cooling_init_from_new_redshift, METH_VARARGS| METH_KEYWORDS,
"Initializate variables for a new redshift."},
{"compute_densities", cooling_compute_densities, METH_VARARGS| METH_KEYWORDS,
"Compute the elements densities."},
{"compute_cooling", cooling_compute_cooling, METH_VARARGS| METH_KEYWORDS,
"Compute cooling for elements densities."},
{"Entropy_from_Energy", cooling_Entropy_from_Energy, METH_VARARGS| METH_KEYWORDS,
"Compute entropy from energy."},
{"Energy_from_Entropy", cooling_Energy_from_Entropy, METH_VARARGS| METH_KEYWORDS,
"Compute energy from entropy."},
{"Energy_from_Temperature", cooling_Energy_from_Temperature, METH_VARARGS| METH_KEYWORDS,
"Compute energy from temperature."},
{"Temperature_from_Energy", cooling_Temperature_from_Energy, METH_VARARGS| METH_KEYWORDS,
"Compute temperature from energy."},
{"lambda_fct", cooling_lambda_fct, METH_VARARGS| METH_KEYWORDS,
"Return the lambda value for a given density and entropy. This is a direct call the gear lambda function."},
+ {"cooling_function_with_metals", cooling_cooling_function_with_metals, METH_VARARGS| METH_KEYWORDS,
+ "Return the normalized cooling function, as given by cooling_function_with_metals. Interpolation of the tables."},
{NULL, NULL, 0, NULL} /* Sentinel */
};
void initcooling(void)
{
(void) Py_InitModule("cooling", coolingMethods);
import_array();
}
#endif /* PYCOOL */
#endif /* PYTHON_INTERFACE */
#endif /* COOLING */
diff --git a/src/lambda_depraz.c b/src/cooling_fct_from_hdf5.c
similarity index 91%
rename from src/lambda_depraz.c
rename to src/cooling_fct_from_hdf5.c
index e14600e..63cad27 100644
--- a/src/lambda_depraz.c
+++ b/src/cooling_fct_from_hdf5.c
@@ -1,834 +1,927 @@
#ifdef PY_INTERFACE
#include <Python.h>
#else
#include <stdio.h>
#include <string.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <math.h>
#include <mpi.h>
//standard C POSIX library for file handling
//(opendir, readdir, etc)
#include <dirent.h>
-#ifdef COOLING
-#ifdef LAMBDA_DEPRAZ
+
+#ifdef COOLING_FCT_FROM_HDF5
-#include <hdf5.h>
+#ifdef COOLING
int withLinInterpolation = 1;
-int withDebugMessages = 1;
+int debugMessagesLevel = 2;
int Z_global_index_solar = 4;
+double Redshift=0;
+
/*******************************************************************************/
// Update gloval variable All.*_TABLE with current values
int updateCoolingTable(){
printf("Updating cooling tables...\n");
//FIXME (make general use of type_name)
char* type_name = "/Total_Metals";
//hdf5 tables location
char* tables_dir = "/home/epfl/revaz/code/gear/PyCool/tables_wiersma/coolingtables/";
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 1){
printf("tables location: %s\n", tables_dir);
}
//load corresponding hdf5 table
int err = 0;
int hdf5 = 0;
float z_file = 0.0;
float diff = 0.0;
float min = 1.0e10;
DIR *dir;
struct dirent* content;
char* file_name = "";
//open directory containing the tables
dir = opendir(tables_dir);
if(dir == NULL){
printf("an error occured while opening hdf5 directory %s\n", tables_dir);
return 1;
}
/*********************** z ***********************/
float z = 0.0;
#ifndef PY_INTERFACE
float a = get_a_from_CosmicTime(All.Time);
float actual_z = get_Redshift_from_a(a);
+
+ if(debugMessagesLevel >= 1){
+ printf("Redshift z = %g\n", actual_z);
+ printf("a = %g\n", a);
+ }
#else
- float actual_z = 4.0;
-#endif
- if(withDebugMessages == 1){
+ float actual_z = Redshift;
+ if(debugMessagesLevel >= 1){
printf("Redshift z = %g\n", actual_z);
}
+#endif
//scan directory content
while((content = readdir(dir)) != NULL){
//consider only files having the extension .hdf5
hdf5 = endsWith(content->d_name, ".hdf5");
if(hdf5 == 1){
//scan file name to determine the redshift value
err = sscanf(content->d_name, "z_%f.hdf5", &z_file);
if(err != 1){
printf("an error occured while reading file %s in directory %s\n",
content->d_name, tables_dir);
return 1;
}
//determine the file closest to the redshift value given as input
diff = fabs(z_file - actual_z);
if(diff < min){
file_name = content->d_name;
z = z_file;
min = diff;
}
}
}
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 1){
printf("loading data from file %s\n", file_name);
}
All.CURRENT_TABLE_REDSHIFT = z;
//close directory
err = closedir(dir);
if (err != 0){
printf("an error occured while closing directory %s\n", tables_dir);
return 1;
}
//variables types specific to the hdf5 library
hid_t table;
//store path to table file
char file_path[(int)strlen(tables_dir)+(int)strlen(file_name)];
strcpy(file_path, tables_dir);
strcat(file_path, file_name);
//load hdf5 table
table = H5Fopen(file_path, H5F_ACC_RDONLY, H5P_DEFAULT);
/*********************** T ***********************/
char* T_key = "/Temperature_bins";
char T_table_key[(int)strlen(type_name)+(int)strlen(T_key)+1];
strcpy(T_table_key, type_name);
strcat(T_table_key, T_key);
loadDataInTable1D(table, T_table_key, &All.TEMPERATURE_TABLES, &All.SIZE_TEMPERATURE_TABLES);
/********************* rho_H *********************/
char* rho_H_key = "/Hydrogen_density_bins";
char rho_H_table_key[(int)strlen(type_name)+(int)strlen(rho_H_key)+1];
strcpy(rho_H_table_key, type_name);
strcat(rho_H_table_key, rho_H_key);
loadDataInTable1D(table, rho_H_table_key, &All.HYDROGEN_TABLES, &All.SIZE_HYDROGEN_TABLES);
/********************** nHe **********************/
char* nHe_key = "/Helium_mass_fraction_bins";
//or
//char* nHe_key = "/Helium_number_ratio_bins";
char nHe_table_key[(int)strlen("/Metal_free")+(int)strlen(nHe_key)+1];
strcpy(nHe_table_key, "/Metal_free");
strcat(nHe_table_key, nHe_key);
loadDataInTable1D(table, nHe_table_key, &All.HELIUM_ABOUNDANCE_TABLES, &All.SIZE_HELIUM_ABOUNDANCE_TABLES);
/********************* ne/n_H *********************/
char* ne_over_nH_key = "/Electron_density_over_n_h";
char ne_over_nH_table_key[(int)strlen("/Metal_free")+(int)strlen(ne_over_nH_key)+1];
strcpy(ne_over_nH_table_key, "/Metal_free");
strcat(ne_over_nH_table_key, ne_over_nH_key);
loadDataInTable3D(table, ne_over_nH_table_key, &All.ELECTRON_DENSITY_OVER_N_H_TABLES);
/******************** ne/n_H (Solar) ********************/
char* ne_over_nH_solar_key = "/Electron_density_over_n_h";
char ne_over_nH_solar_table_key[(int)strlen("/Solar")+(int)strlen(ne_over_nH_solar_key)+1];
strcpy(ne_over_nH_solar_table_key, "/Solar");
strcat(ne_over_nH_solar_table_key, ne_over_nH_solar_key);
loadDataInTable2D(table, ne_over_nH_solar_table_key, &All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR);
/********************* lambda *********************/
//load corresponding lambda value for metal
char* lambda_key = "/Net_cooling"; // /!\ sometimes written "/Net_Cooling"
char lambda_table_key[(int)strlen(type_name)+(int)strlen(lambda_key)+1];
strcpy(lambda_table_key, type_name);
strcat(lambda_table_key, lambda_key);
loadDataInTable2D(table, lambda_table_key, &All.COOLING_TABLES_TOTAL_METAL);
/**************** lambda Metal Free ****************/
//load corresponding lambda value for metal free
char* lambda_key_mf = "/Net_Cooling"; // /!\ sometimes written "/Net_cooling"
char lambda_table_key_mf[(int)strlen("/Metal_free")+(int)strlen(lambda_key_mf)+1];
strcpy(lambda_table_key_mf, "/Metal_free");
strcat(lambda_table_key_mf, lambda_key_mf);
loadDataInTable3D(table, lambda_table_key_mf, &All.COOLING_TABLES_METAL_FREE);
//close file
H5Fclose(table);
return 0;
}
/*******************************************************************************/
// Compute the resulting value of the cooling function using the data stored in
// the global variables
//
// variables ending with "_in" are user input, other variables are closest match
// in the hdf5 tables
float computeLambda(float rho_H_in, float T_in, float nHe_in, float metalicity){
float lambda_metal_free = 0.0;
float lambda_metals = 0.0;
float total_lambda = 0.0;
float ne_over_nH = 0.0;
float ne_over_nH_solar = 0.0;
float epsilon_diff = 1.0e-7;
float epsilon = 1.0e-38;
-
+
//find the indices for temperature, hydrogen density and
//helium mass fraction that correspond to the closest
//input values
/*********************** T ***********************/
float T [2] = {0.0, 0.0};
int T_index[2] = {0,0};
closestMatch1D(All.TEMPERATURE_TABLES, All.SIZE_TEMPERATURE_TABLES, T_in, T, T_index);
/********************* rho_H *********************/
float rho_H [2] = {0.0, 0.0};
int rho_H_index[2] = {0,0};
closestMatch1D(All.HYDROGEN_TABLES, All.SIZE_HYDROGEN_TABLES, rho_H_in, rho_H, rho_H_index);
/********************** nHe **********************/
float nHe [2] = {0.0, 0.0};
int nHe_index[2] = {0,0};
closestMatch1D(All.HELIUM_ABOUNDANCE_TABLES, All.SIZE_HELIUM_ABOUNDANCE_TABLES, nHe_in, nHe, nHe_index);
/********************* ne/n_H *********************/
//read electron density value from indices position
ne_over_nH = All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[0]][rho_H_index[0]];
if(withLinInterpolation == 1){
//linear interpolation of the results
//the derivative is computed by a simple finite difference method.
//f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
ne_over_nH += (All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[1]][T_index[0]][rho_H_index[0]])
/ fmax(nHe[0]-nHe[1], epsilon_diff) * (nHe_in - nHe[0]);
ne_over_nH += (All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[1]][rho_H_index[0]])
/ fmax(T[0]-T[1], epsilon_diff) * (T_in - T[0]);
ne_over_nH += (All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.ELECTRON_DENSITY_OVER_N_H_TABLES[nHe_index[0]][T_index[0]][rho_H_index[1]])
/ fmax(rho_H[0]-rho_H[1], epsilon_diff) * (rho_H_in - rho_H[0]);
}
//contribution of metals
ne_over_nH_solar = All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[T_index[0]][rho_H_index[0]];
if(withLinInterpolation == 1){
//linear interpolation of the results
//the derivative is computed by a simple finite difference method.
//f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
ne_over_nH_solar += (All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[T_index[0]][rho_H_index[0]]
- All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[T_index[1]][rho_H_index[0]])
/ fmax(T[0]-T[1], epsilon_diff) * (T_in - T[0]);
ne_over_nH_solar += (All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[T_index[0]][rho_H_index[0]]
- All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[T_index[0]][rho_H_index[1]])
/ fmax(rho_H[0]-rho_H[1], epsilon_diff) * (rho_H_in - rho_H[0]);
}
/********************* lambda *********************/
//read lambda value from indices position
//contribution of hydrogen and helium
lambda_metal_free = All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[0]][rho_H_index[0]];
if(withLinInterpolation == 1){
//linear interpolation of the results
//the derivative is computed by a simple finite difference method.
//f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
lambda_metal_free += (All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.COOLING_TABLES_METAL_FREE[nHe_index[1]][T_index[0]][rho_H_index[0]])
/ fmax(nHe[0]-nHe[1], epsilon_diff) * (nHe_in - nHe[0]);
lambda_metal_free += (All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[1]][rho_H_index[0]])
/ fmax(T[0]-T[1], epsilon_diff) * (T_in - T[0]);
lambda_metal_free += (All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[0]][rho_H_index[0]]
- All.COOLING_TABLES_METAL_FREE[nHe_index[0]][T_index[0]][rho_H_index[1]])
/ fmax(rho_H[0]-rho_H[1], epsilon_diff) * (rho_H_in - rho_H[0]);
}
//contribution of metals
lambda_metals = All.COOLING_TABLES_TOTAL_METAL[T_index[0]][rho_H_index[0]];
if(withLinInterpolation == 1){
//linear interpolation of the results
//the derivative is computed by a simple finite difference method.
//f(c) ~ \-/f(a) * (c-a) ~ (f(b)-f(a))/(b-a) * (c-a)
lambda_metals += (All.COOLING_TABLES_TOTAL_METAL[T_index[0]][rho_H_index[0]]
- All.COOLING_TABLES_TOTAL_METAL[T_index[1]][rho_H_index[0]])
/ fmax(T[0]-T[1], epsilon_diff) * (T_in - T[0]);
lambda_metals += (All.COOLING_TABLES_TOTAL_METAL[T_index[0]][rho_H_index[0]]
- All.COOLING_TABLES_TOTAL_METAL[T_index[0]][rho_H_index[1]])
/ fmax(rho_H[0]-rho_H[1], epsilon_diff) * (rho_H_in - rho_H[0]);
}
// formula from taken from:
// "The effect of photoionization on the cooling rates of enriched,
// astrophysical plasmas"
// Robert P.C. Wiersma, J. Schaye & B.D. Smith
// p.101, eq. (5)
// http://onlinelibrary.wiley.com/doi/10.1111/j.1365-2966.2008.14191.x/pdf
//
#ifndef PY_INTERFACE
total_lambda = lambda_metal_free + lambda_metals * ne_over_nH/ne_over_nH_solar
* metalicity/fmax(chimie_extraheader.SolarAbundances[Z_global_index_solar], epsilon);
#else
//chimie_extraheader.SolarAbundances[] not defined, use constant value instead
total_lambda = lambda_metal_free + lambda_metals * ne_over_nH/ne_over_nH_solar
* metalicity/0.02;
#endif
//denormalized value (not used for now...)
/*
if(withLinInterpolation == 1){
total_lambda *= pow( ((All.HYDROGEN_TABLES[rho_H_index[0]] - All.HYDROGEN_TABLES[rho_H_index[1]])
/ fmax(rho_H[0]-rho_H[1], epsilon_diff) * (rho_H_in - rho_H[0])) ,2);
} else {
total_lambda *= pow(All.HYDROGEN_TABLES[rho_H_index[0]], 2);
}
*/
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 3){
printf("lambda = %g\n", total_lambda);
}
return total_lambda;
}
/*******************************************************************************/
// write data from hdf5 tables to global variable TABLE (1D) and write the
// corresponding array size in SIZE_TABLE
void loadDataInTable1D(hid_t table, char* table_key, float** TABLE, int* SIZE_TABLE){
hid_t dataset;
hid_t dataspace;
hid_t memspace;
herr_t status;
hsize_t size[1];
int rank;
dataset = H5Dopen2(table, table_key, H5P_DEFAULT); // open dataset (key)
dataspace = H5Dget_space(dataset); // get dataspace
rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
status = H5Sget_simple_extent_dims(dataspace, size, NULL);// save dataspace dimensions in dims
memspace = H5Screate_simple(rank, size, NULL); // determine memory space required
//read data
float data[size[0]];
status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 2){
printf("%s: rank %d, dimension %d \n", table_key, rank, (int)size[0]);
}
*TABLE = (float*)malloc(size[0]*sizeof(float));
if(TABLE == NULL){
printf("\nMemory allocation failed in loadDataInTable1D()\n");
return;
}
//store data in global variables
*SIZE_TABLE = size[0];
int k=0;
for(k=0; k<size[0]; k++){
(*TABLE)[k] = data[k];
}
//close instances
H5Sclose(memspace);
H5Sclose(dataspace);
H5Dclose(dataset);
}
/*******************************************************************************/
// write data from hdf5 tables to global variable TABLE (2D)
void loadDataInTable2D(hid_t table, char* table_key, float*** TABLE){
hid_t dataset;
hid_t dataspace;
hid_t memspace;
herr_t status;
hsize_t dims[2];
int rank;
dataset = H5Dopen2(table, table_key, H5P_DEFAULT); // open dataset (key)
dataspace = H5Dget_space(dataset); // get dataspace
rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
status = H5Sget_simple_extent_dims(dataspace, dims, NULL);// save dataspace dimensions in dims
memspace = H5Screate_simple(rank, dims, NULL); // determine memory space required
float* temp;
int i = 0;
int j = 0;
//format of the data: data[T][nH]
float data[dims[0]][dims[1]];
status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
//allocate contiguous memory to enable the later use of MPI_Bcast()
temp = (float*)malloc(dims[0]*dims[1]*sizeof(float));
//allocate memory for TABLE accordingly
*TABLE = (float**)malloc(dims[0]*sizeof(float*));
for(i=0; i<dims[0]; i++){
(*TABLE)[i] = &(temp[i*dims[1]]);
}
if(TABLE == NULL){
printf("\nMemory allocation failed in loadDataInTable2D()\n");
free(temp);
return;
}
for(i=0; i<dims[0]; i++){
for(j=0; j<dims[1]; j++){
(*TABLE)[i][j] = data[i][j];
}
}
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 2){
printf("%s loaded with dimensions: %d x %d\n", table_key, (int)dims[0], (int)dims[1]);
}
//close instances
H5Sclose(memspace);
H5Sclose(dataspace);
H5Dclose(dataset);
}
/*******************************************************************************/
// write data from hdf5 tables to global variable TABLE (3D)
void loadDataInTable3D(hid_t table, char* table_key, float**** TABLE){
hid_t dataset;
hid_t dataspace;
hid_t memspace;
herr_t status;
hsize_t dims[3];
int rank;
dataset = H5Dopen2(table, table_key, H5P_DEFAULT); // open dataset (key)
dataspace = H5Dget_space(dataset); // get dataspace
rank = H5Sget_simple_extent_ndims(dataspace); // compute dataspace rank
status = H5Sget_simple_extent_dims(dataspace, dims, NULL);// save dataspace dimensions in dims
memspace = H5Screate_simple(rank, dims, NULL); // determine memory space required
float** temp1;
float* temp2;
int i = 0;
int j = 0;
int k = 0;
//format of the data: data[nHe][T][nH]
float data[dims[0]][dims[1]][dims[2]];
status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace, dataspace, H5P_DEFAULT, data);
//allocate contiguous memory to enable the later use of MPI_Bcast()
temp1 = (float**)malloc(dims[0]*dims[1]*sizeof(float*));
temp2 = (float*)malloc(dims[0]*dims[1]*dims[2]*sizeof(float));
for(i=0, j=0; i<dims[0]*dims[1]; i++, j++){
temp1[i] = &(temp2[j*dims[2]]);
}
*TABLE = (float***)malloc(dims[0]*sizeof(float**));
for(i=0, j=0; j<dims[0]; i++, j++){
(*TABLE)[i] = &(temp1[j*dims[1]]);
}
if(TABLE == NULL){
printf("\nMemory allocation failed in loadDataInTable3D()\n");
free(temp1);
free(temp2);
return;
}
for(i=0; i<dims[0]; i++){
for(j=0; j<dims[1]; j++){
for(k=0; k<dims[2]; k++){
(*TABLE)[i][j][k] = data[i][j][k];
}
}
}
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 2){
printf("%s loaded with dimensions: %d x %d x %d\n",
table_key, (int)dims[0], (int)dims[1], (int)dims[2]);
}
//close instances
H5Sclose(memspace);
H5Sclose(dataspace);
H5Dclose(dataset);
}
/*******************************************************************************/
//determine if the string str ends by the string suffix
//function used here to determine the extension of file given their name
int endsWith(const char *str, const char *suffix) {
if (!str || !suffix)
return 0;
size_t lenstr = strlen(str);
size_t lensuffix = strlen(suffix);
if (lensuffix > lenstr)
return 0;
return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
}
/*******************************************************************************/
//return the indices of the 2 closest element of the hdf5 table matching the user
// input. Note that the dimension of the data has to be 1D
void closestMatch1D(float* TABLE, int SIZE, float input, float match[2], int index[2]){
+
//determine the index of the closest values (above and below)
int k = 0;
int oldk = 0;
float min1 = 1e30;
float min2 = 1e30;
float oldmin = 1e30;
float oldmatch = 0.0;
float diff = 0.0;
//the values having the smallest difference
//to the input are computed and the indeces are stored
for(k=0; k<SIZE; k++){
diff = fabs(input - TABLE[k]);
if(diff < min1){
oldmatch = match[0];
match[0] = TABLE[k];
oldk = index[0];
index[0] = k;
oldmin = min1;
min1 = diff;
}
if(diff < min2 && diff != min1){
if(min2 < oldmin){
match[1] = TABLE[k];
index[1] = k;
min2 = diff;
} else {
match[1] = oldmatch;
index[1] = oldk;
min2 = oldmin;
}
}
}
- if(withDebugMessages == 1){
+ if(debugMessagesLevel >= 3){
printf("closest match#1 for %f is %f with index %d\n", input, match[0], index[0]);
printf("closest match#2 for %f is %f with index %d\n", input, match[1], index[1]);
}
}
/*******************************************************************************/
// Check if the file that is read currently still has the correct redshift value
void checkRedshiftForUpdate(){
#ifndef PY_INTERFACE
float a = get_a_from_CosmicTime(All.Time);
float z = get_Redshift_from_a(a);
#else
- float z = 0.0;
+ float z = Redshift;
#endif
+
+ printf("----> %g %g %g\n",All.CURRENT_TABLE_REDSHIFT,z,fabs(All.CURRENT_TABLE_REDSHIFT - z));
+
if(fabs(All.CURRENT_TABLE_REDSHIFT - z) >= 0.04){
freeMemory();
if(ThisTask == 0){
updateCoolingTable();
}
BroadcastTablesToAllFromMaster();
}
}
/*******************************************************************************/
// Broadcast tables to all other procs from proc 0
void BroadcastTablesToAllFromMaster(){
- if(withDebugMessages == 1 && ThisTask == 0){
+ if(debugMessagesLevel >= 1 && ThisTask == 0){
printf("broadcasting cooling tables...\n");
}
//broadcast array sizes
MPI_Bcast(&All.SIZE_HYDROGEN_TABLES, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.SIZE_TEMPERATURE_TABLES, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.SIZE_HELIUM_ABOUNDANCE_TABLES, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
//for safety
MPI_Barrier(MPI_COMM_WORLD);
//allocate memory for all procs (except proc 0)
if(ThisTask != 0){
//temporary arrays used to allocate contiguous memory
float* temp1;
float* temp2;
float* temp3;
float** temp4;
float* temp5;
float** temp6;
int i=0;
int j=0;
// 1D arrays
All.HYDROGEN_TABLES = (float*)malloc(All.SIZE_HYDROGEN_TABLES*sizeof(float));
All.TEMPERATURE_TABLES = (float*)malloc(All.SIZE_TEMPERATURE_TABLES*sizeof(float));
All.HELIUM_ABOUNDANCE_TABLES = (float*)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*sizeof(float));
// 2D arrays
// allocate contiguous memory
temp1 = (float*)malloc(All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES*sizeof(float));
temp2 = (float*)malloc(All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES*sizeof(float));
//allocate arrays
All.COOLING_TABLES_TOTAL_METAL = (float**)malloc(All.SIZE_TEMPERATURE_TABLES*sizeof(float*));
for(i=0; i<All.SIZE_TEMPERATURE_TABLES; i++){
All.COOLING_TABLES_TOTAL_METAL[i] = &(temp1[i*All.SIZE_HYDROGEN_TABLES]);
}
All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR = (float**)malloc(All.SIZE_TEMPERATURE_TABLES*sizeof(float*));
for(i=0; i<All.SIZE_TEMPERATURE_TABLES; i++){
All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[i] = &(temp2[i*All.SIZE_HYDROGEN_TABLES]);
}
// 3D arrays
// allocate contiguous memory
temp3 = (float*)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES*sizeof(float));
temp4 = (float**)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*sizeof(float*));
for(i=0, j=0; i<All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES; i++, j++){
temp4[i] = &(temp3[j*All.SIZE_HYDROGEN_TABLES]);
}
All.COOLING_TABLES_METAL_FREE = (float***)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*sizeof(float**));
for(i=0, j=0; j<All.SIZE_HELIUM_ABOUNDANCE_TABLES; i++, j++){
All.COOLING_TABLES_METAL_FREE[i] = &(temp4[j*All.SIZE_TEMPERATURE_TABLES]);
}
temp5 = (float*)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES*sizeof(float));
temp6 = (float**)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*sizeof(float*));
for(i=0, j=0; i<All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES; i++, j++){
temp6[i] = &(temp5[j*All.SIZE_HYDROGEN_TABLES]);
}
All.ELECTRON_DENSITY_OVER_N_H_TABLES = (float***)malloc(All.SIZE_HELIUM_ABOUNDANCE_TABLES*sizeof(float**));
for(i=0, j=0; j<All.SIZE_HELIUM_ABOUNDANCE_TABLES; i++, j++){
All.ELECTRON_DENSITY_OVER_N_H_TABLES[i] = &(temp6[j*All.SIZE_TEMPERATURE_TABLES]);
}
}
//broadcast global arrays to all procs from 0
MPI_Bcast(&(All.COOLING_TABLES_TOTAL_METAL[0][0]),
All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES, MPI_FLOAT,0, MPI_COMM_WORLD);
MPI_Bcast(&(All.COOLING_TABLES_METAL_FREE[0][0][0]),
All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(&(All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[0][0]),
All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(&(All.ELECTRON_DENSITY_OVER_N_H_TABLES[0][0][0]),
All.SIZE_HELIUM_ABOUNDANCE_TABLES*All.SIZE_TEMPERATURE_TABLES*All.SIZE_HYDROGEN_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(All.HYDROGEN_TABLES, All.SIZE_HYDROGEN_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(All.TEMPERATURE_TABLES, All.SIZE_TEMPERATURE_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(All.HELIUM_ABOUNDANCE_TABLES, All.SIZE_HELIUM_ABOUNDANCE_TABLES, MPI_FLOAT, 0, MPI_COMM_WORLD);
MPI_Bcast(&All.CURRENT_TABLE_REDSHIFT, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
- if(withDebugMessages == 1 && ThisTask == 0){
+ if(debugMessagesLevel >= 1 && ThisTask == 0){
printf("cooling tables broadcasted to all procs\n");
}
}
/*******************************************************************************/
// Function that free memory to avoid overflows
// copy in allocate.c
int freeMemory(){
int error = 0;
// free 3D arrays
if(All.COOLING_TABLES_METAL_FREE){
- free(&((All.COOLING_TABLES_METAL_FREE)[0][0]));
+ free(All.COOLING_TABLES_METAL_FREE[0][0]);
+ free(All.COOLING_TABLES_METAL_FREE[0]);
free(All.COOLING_TABLES_METAL_FREE);
All.COOLING_TABLES_METAL_FREE = NULL;
+ } else {
+ error++;
}
if(All.ELECTRON_DENSITY_OVER_N_H_TABLES){
- free(&((All.ELECTRON_DENSITY_OVER_N_H_TABLES)[0][0]));
+ free(All.ELECTRON_DENSITY_OVER_N_H_TABLES[0][0]);
+ free(All.ELECTRON_DENSITY_OVER_N_H_TABLES[0]);
free(All.ELECTRON_DENSITY_OVER_N_H_TABLES);
All.ELECTRON_DENSITY_OVER_N_H_TABLES = NULL;
+ } else {
+ error++;
}
// free 2D arrays
if(All.COOLING_TABLES_TOTAL_METAL){
+ free(All.COOLING_TABLES_TOTAL_METAL[0]);
free(All.COOLING_TABLES_TOTAL_METAL);
All.COOLING_TABLES_TOTAL_METAL = NULL;
+ } else {
+ error++;
}
if(All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR){
+ free(All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR[0]);
free(All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR);
All.ELECTRON_DENSITY_OVER_N_H_TABLES_SOLAR = NULL;
+ } else {
+ error++;
}
// free 1D arrays
if(All.HYDROGEN_TABLES){
free(All.HYDROGEN_TABLES);
All.HYDROGEN_TABLES = NULL;
+ } else {
+ error++;
}
if(All.TEMPERATURE_TABLES){
free(All.TEMPERATURE_TABLES);
All.TEMPERATURE_TABLES = NULL;
+ } else {
+ error++;
}
if(All.HELIUM_ABOUNDANCE_TABLES){
free(All.HELIUM_ABOUNDANCE_TABLES);
All.HELIUM_ABOUNDANCE_TABLES = NULL;
+ } else {
+ error++;
}
- if(withDebugMessages == 1 && ThisTask == 0){
+ if(debugMessagesLevel >= 1 && ThisTask == 0){
printf("cooling table memory freed\n");
}
return error;
}
/************************************* Python Interface ************************************/
#ifdef PY_INTERFACE
/*****************************************************/
/* functions declarations */
/*****************************************************/
static PyObject* updateCoolingTableInterface(PyObject *self, PyObject *args) {
int error_status = 0;
error_status = updateCoolingTable();
return Py_BuildValue("d", error_status);
}
static PyObject* BroadcastTablesToAllFromMasterInterface(PyObject *self, PyObject *args) {
BroadcastTablesToAllFromMaster();
return Py_BuildValue("d", 0);
}
static PyObject* computeLambdaInterface(PyObject *self, PyObject *args) {
float rho_H_in;
float T_in;
float nHe_in;
float metalicity;
float lambda = 0.0;
if (!PyArg_ParseTuple(args, "ffff", &rho_H_in, &T_in, &nHe_in, &metalicity)) {
return NULL;
}
- //printf("%s\n","computing function with parameters:");
- //printf("%s: %g\n","hydrogen density", rho_H_in);
- //printf("%s: %g\n","temperature", T_in);
- //printf("%s: %g\n","helium aboundance", nHe_in);
- //printf("%s: %g\n","metalicity", metalicity);
+ printf("%s\n","computing function with parameters:");
+ printf("%s: %g\n","hydrogen density", rho_H_in);
+ printf("%s: %g\n","temperature", T_in);
+ printf("%s: %g\n","helium aboundance", nHe_in);
+ printf("%s: %g\n","metalicity", metalicity);
lambda = computeLambda(rho_H_in, T_in, nHe_in, metalicity);
return Py_BuildValue("f",lambda);
}
static PyObject* freeMemoryInterface(PyObject *self, PyObject *args) {
int error_status;
error_status = freeMemory();
return Py_BuildValue("d",error_status);
}
+
+
+static PyObject * SetRedshiftInterface(self, args)
+ PyObject *self;
+ PyObject *args;
+ {
+
+ double redshift;
+
+
+ /* parse arguments */
+ if (!PyArg_ParseTuple(args, "d", &redshift))
+ return NULL;
+
+
+ Redshift=redshift;
+
+ /* convert in array */
+ return Py_BuildValue("i",1);
+
+ }
+
+
+static PyObject * GetRedshiftInterface(self, args)
+ PyObject *self;
+ PyObject *args;
+ {
+
+ /* convert in array */
+ return Py_BuildValue("d",Redshift);
+
+ }
+
+
+static PyObject * checkRedshiftForUpdateInterface(self, args)
+ PyObject *self;
+ PyObject *args;
+ {
+
+
+ checkRedshiftForUpdate();
+
+ /* convert in array */
+ return Py_BuildValue("i",1);
+
+ }
+
+
+
+
/*****************************************************/
/* Method table */
/*****************************************************/
static PyMethodDef computeLambdaMethods[] = {
{"updateCoolingTable", updateCoolingTableInterface, METH_VARARGS,
"Update cooling table data using HDF5 tables."},
{"BroadcastTablesToAllFromMaster", BroadcastTablesToAllFromMasterInterface, METH_VARARGS,
"Broadcast tables to all other procs from proc 0."},
{"computeLambda", computeLambdaInterface, METH_VARARGS,
"Compute the cooling from given inputs."},
{"freeMemory", freeMemoryInterface, METH_VARARGS,
"Free allocated memory."},
+ {"SetRedshift", SetRedshiftInterface, METH_VARARGS,
+ "Let the user define the current redshift."},
+
+ {"GetRedshift", GetRedshiftInterface, METH_VARARGS,
+ "Get the user define the current redshift."},
+
+
+ {"checkRedshiftForUpdate", checkRedshiftForUpdateInterface, METH_VARARGS,
+ "Check the redshift, and if necessary, update the cooling tables."},
+
+
+
+
+
{NULL, NULL, 0, NULL} /* Sentinel */
};
/*****************************************************/
/* initialization */
/*****************************************************/
-
//void initcompute_lambda_interface(void)
PyMODINIT_FUNC initcompute_lambda_interface(void) {
(void) Py_InitModule("compute_lambda_interface", computeLambdaMethods);
}
#endif //PY_INTERFACE
-#endif //LAMBDA_DEPRAZ
+#endif //COOLING_FCT_FROM_HDF5
+
#endif //COOLING
diff --git a/src/proto.h b/src/proto.h
index 24c748a..39d1316 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -1,585 +1,585 @@
/*! \file proto.h
* \brief this file contains all function prototypes of the code
*/
#ifndef ALLVARS_H
#include "allvars.h"
#endif
#ifdef HAVE_HDF5
#include <hdf5.h>
#endif
-#ifdef LAMBDA_DEPRAZ
+#ifdef COOLING_FCT_FROM_HDF5
#include <hdf5.h>
#endif
void advance_and_find_timesteps(void);
void allocate_commbuffers(void);
void allocate_memory(void);
void begrun(void);
int blockpresent(enum iofields blocknr);
#ifdef BLOCK_SKIPPING
int blockabsent(enum iofields blocknr);
#endif
void catch_abort(int sig);
void catch_fatal(int sig);
void check_omega(void);
void close_outputfiles(void);
int compare_key(const void *a, const void *b);
void compute_accelerations(int mode);
void compute_global_quantities_of_system(void);
void compute_potential(void);
int dens_compare_key(const void *a, const void *b);
void density(int mode);
void density_decouple(void);
void density_evaluate(int i, int mode);
#ifdef CHIMIE
int stars_dens_compare_key(const void *a, const void *b);
void stars_density(void);
void stars_density_evaluate(int i, int mode);
#endif
void distribute_file(int nfiles, int firstfile, int firsttask, int lasttask, int *filenr, int *master, int *last);
double dmax(double, double);
double dmin(double, double);
void do_box_wrapping(void);
void domain_Decomposition(void);
int domain_compare_key(const void *a, const void *b);
int domain_compare_key(const void *a, const void *b);
int domain_compare_toplist(const void *a, const void *b);
void domain_countToGo(void);
void domain_decompose(void);
void domain_determineTopTree(void);
void domain_exchangeParticles(int partner, int sphflag, int send_count, int recv_count);
void domain_findExchangeNumbers(int task, int partner, int sphflag, int *send, int *recv);
void domain_findExtent(void);
int domain_findSplit(int cpustart, int ncpu, int first, int last);
int domain_findSplityr(int cpustart, int ncpu, int first, int last);
void domain_shiftSplit(void);
void domain_shiftSplityr(void);
void domain_sumCost(void);
void domain_topsplit(int node, peanokey startkey);
void domain_topsplit_local(int node, peanokey startkey);
double drift_integ(double a, void *param);
void dump_particles(void);
void empty_read_buffer(enum iofields blocknr, int offset, int pc, int type);
void endrun(int);
void energy_statistics(void);
#ifdef ADVANCEDSTATISTICS
void advanced_energy_statistics(void);
#endif
void every_timestep_stuff(void);
void ewald_corr(double dx, double dy, double dz, double *fper);
void ewald_force(int ii, int jj, int kk, double x[3], double force[3]);
void ewald_init(void);
double ewald_pot_corr(double dx, double dy, double dz);
double ewald_psi(double x[3]);
void fill_Tab_IO_Labels(void);
void fill_write_buffer(enum iofields blocknr, int *pindex, int pc, int type);
void find_dt_displacement_constraint(double hfac);
int find_files(char *fname);
int find_next_outputtime(int time);
void find_next_sync_point_and_drift(void);
void force_create_empty_nodes(int no, int topnode, int bits, int x, int y, int z, int *nodecount, int *nextfree);
void force_exchange_pseudodata(void);
void force_flag_localnodes(void);
void force_insert_pseudo_particles(void);
void force_setupnonrecursive(int no);
void force_treeallocate(int maxnodes, int maxpart);
int force_treebuild(int npart);
int force_treebuild_single(int npart);
int force_treeevaluate(int target, int mode, double *ewaldcountsum);
int force_treeevaluate_direct(int target, int mode);
int force_treeevaluate_ewald_correction(int target, int mode, double pos_x, double pos_y, double pos_z, double aold);
void force_treeevaluate_potential(int target, int type);
void force_treeevaluate_potential_shortrange(int target, int mode);
int force_treeevaluate_shortrange(int target, int mode);
void force_treefree(void);
void force_treeupdate_pseudos(void);
void force_update_hmax(void);
void force_update_len(void);
void force_update_node(int no, int flag);
void force_update_node_hmax_local(void);
void force_update_node_hmax_toptree(void);
void force_update_node_len_local(void);
void force_update_node_len_toptree(void);
void force_update_node_recursive(int no, int sib, int father);
void force_update_pseudoparticles(void);
void force_update_size_of_parent_node(int no);
void free_memory(void);
int get_bytes_per_blockelement(enum iofields blocknr);
void get_dataset_name(enum iofields blocknr, char *buf);
int get_datatype_in_block(enum iofields blocknr);
double get_drift_factor(int time0, int time1);
double get_gravkick_factor(int time0, int time1);
double get_hydrokick_factor(int time0, int time1);
int get_particles_in_block(enum iofields blocknr, int *typelist);
double get_random_number(int id);
#ifdef SFR
double get_StarFormation_random_number(int id);
#endif
#ifdef FEEDBACK_WIND
double get_FeedbackWind_random_number(int id);
#endif
#ifdef CHIMIE
double get_Chimie_random_number(int id);
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
double get_ChimieKineticFeedback_random_number(int id);
#endif
#ifdef GAS_ACCRETION
double get_gasAccretion_random_number(int id);
void update_entropy_for_accreated_particles(void);
void allocate_gas_accretion(void);
#endif
#ifdef VANISHING_PARTICLES
void vanishing_particles(void);
void vanishing_particles_flag(void);
void vanishing_particles_remove(void);
#endif
int get_timestep(int p, double *a, int flag);
int get_values_per_blockelement(enum iofields blocknr);
#ifdef SYNCHRONIZE_NGB_TIMESTEP
void synchronize_ngb_timestep();
int synchronize_ngb_timestep_evaluate(int target, int mode);
int synchronize_ngb_timestep_compare_key(const void *a, const void *b);
#endif
int grav_tree_compare_key(const void *a, const void *b);
void gravity_forcetest(void);
void gravity_tree(void);
void gravity_tree_shortrange(void);
double gravkick_integ(double a, void *param);
int hydro_compare_key(const void *a, const void *b);
void hydro_evaluate(int target, int mode);
void hydro_force(void);
double hydrokick_integ(double a, void *param);
int imax(int, int);
int imin(int, int);
void init(void);
void init_drift_table(void);
void init_peano_map(void);
#ifdef COSMICTIME
void init_cosmictime_table(void);
double get_cosmictime_difference(int time0, int time1);
void init_full_cosmictime_table(void);
double get_CosmicTime_from_a(double a);
double get_a_from_CosmicTime(double t);
double get_Redshift_from_a(double a);
double get_a_from_Redshift(double z);
#endif
void long_range_force(void);
void long_range_init(void);
void long_range_init_regionsize(void);
void move_particles(int time0, int time1);
size_t my_fread(void *ptr, size_t size, size_t nmemb, FILE * stream);
size_t my_fwrite(void *ptr, size_t size, size_t nmemb, FILE * stream);
int ngb_clear_buf(FLOAT searchcenter[3], FLOAT hguess, int numngb);
void ngb_treeallocate(int npart);
void ngb_treebuild(void);
int ngb_treefind_pairs(FLOAT searchcenter[3], FLOAT hsml, int phase, int *startnode);
#ifdef MULTIPHASE
int ngb_treefind_phase_pairs(FLOAT searchcenter[3], FLOAT hsml, int phase, int *startnode);
int ngb_treefind_sticky_collisions(FLOAT searchcenter[3], FLOAT hguess, int phase, int *startnode);
#endif
int ngb_treefind_variable(FLOAT searchcenter[3], FLOAT hguess, int phase, int *startnode);
#ifdef CHIMIE
int ngb_treefind_variable_for_chimie(FLOAT searchcenter[3], FLOAT hguess, int *startnode);
#endif
void ngb_treefree(void);
void ngb_treesearch(int);
void ngb_treesearch_pairs(int);
void ngb_update_nodes(void);
void open_outputfiles(void);
peanokey peano_hilbert_key(int x, int y, int z, int bits);
void peano_hilbert_order(void);
void pm_init_nonperiodic(void);
void pm_init_nonperiodic_allocate(int dimprod);
void pm_init_nonperiodic_free(void);
void pm_init_periodic(void);
void pm_init_periodic_allocate(int dimprod);
void pm_init_periodic_free(void);
void pm_init_regionsize(void);
void pm_setup_nonperiodic_kernel(void);
int pmforce_nonperiodic(int grnr);
void pmforce_periodic(void);
int pmpotential_nonperiodic(int grnr);
void pmpotential_periodic(void);
double pow(double, double); /* on some old DEC Alphas, the correct prototype for pow() is missing, even when math.h is included */
void read_file(char *fname, int readTask, int lastTask);
void read_header_attributes_in_hdf5(char *fname);
void read_ic(char *fname);
int read_outputlist(char *fname);
void read_parameter_file(char *fname);
void readjust_timebase(double TimeMax_old, double TimeMax_new);
void reorder_gas(void);
void reorder_particles(void);
#ifdef STELLAR_PROP
void reorder_stars(void);
void reorder_st(void);
#endif
void restart(int mod);
void run(void);
void savepositions(int num);
double second(void);
void seed_glass(void);
void set_random_numbers(void);
void set_softenings(void);
void set_units(void);
void init_local_sys_state(void);
void setup_smoothinglengths(void);
#ifdef CHIMIE
void stars_setup_smoothinglengths(void);
#endif
void statistics(void);
void terminate_processes(void);
double timediff(double t0, double t1);
#ifdef HAVE_HDF5
void write_header_attributes_in_hdf5(hid_t handle);
#endif
void write_file(char *fname, int readTask, int lastTask);
void write_pid_file(void);
#ifdef COOLING
int init_cooling(FLOAT metallicity);
int init_cooling_with_metals();
double cooling_function(double temperature);
double cooling_function_with_metals(double temperature,double metal);
void init_from_new_redshift(double Redshift);
double J_0();
double J_nu(double e);
double sigma_rad_HI(double e);
double sigma_rad_HeI(double e);
double sigma_rad_HeII(double e);
double cooling_bremstrahlung_HI(double T);
double cooling_bremstrahlung_HeI(double T);
double cooling_bremstrahlung_HeII(double T);
double cooling_ionization_HI(double T);
double cooling_ionization_HeI(double T);
double cooling_ionization_HeII(double T);
double cooling_recombination_HI(double T);
double cooling_recombination_HeI(double T);
double cooling_recombination_HeII(double T);
double cooling_dielectric_recombination(double T);
double cooling_excitation_HI(double T);
double cooling_excitation_HII(double T);
double cooling_compton(double T);
double A_HII(double T);
double A_HeIId(double T);
double A_HeII(double T);
double A_HeIII(double T);
double G_HI(double T);
double G_HeI(double T);
double G_HeII(double T);
double G_gHI();
double G_gHeI();
double G_gHeII();
double G_gHI_t(double J0);
double G_gHeI_t(double J0);
double G_gHeII_t(double J0);
double G_gHI_w();
double G_gHeI_w();
double G_gHeII_w();
double heating_radiative_HI();
double heating_radiative_HeI();
double heating_radiative_HeII();
double heating_radiative_HI_t(double J0);
double heating_radiative_HeI_t(double J0);
double heating_radiative_HeII_t(double J0);
double heating_radiative_HI_w();
double heating_radiative_HeI_w();
double heating_radiative_HeII_w();
double heating_compton();
void print_cooling(double T,double c1,double c2,double c3,double c4,double c5,double c6,double c7,double c8,double c9,double c10,double c11,double c12,double c13,double h1, double h2, double h3, double h4);
void compute_densities(double T,double X,double* n_H, double* n_HI,double* n_HII,double* n_HEI,double* n_HEII,double* n_HEIII,double* n_E,double* mu);
void compute_cooling_from_T_and_Nh(double T,double X,double n_H,double *c1,double *c2,double *c3,double *c4,double *c5,double *c6,double *c7,double *c8,double *c9,double *c10,double *c11,double *c12,double *c13,double *h1, double *h2, double *h3, double *h4);
double compute_cooling_from_Egyspec_and_Density(double Egyspec,double Density, double *MeanWeight);
double DoCooling(FLOAT Density,FLOAT Entropy,int Phase,int i,FLOAT DtEntropyVisc, double dt, double hubble_a);
void CoolingForOne(int i,int t0,int t1,int ti_step,double dt_entr3,double a3inv,double hubble_a);
void cooling();
double lambda(FLOAT density,FLOAT egyspec,FLOAT Metal, int phase, int i);
#endif
#ifdef HEATING
void heating();
double gamma_fct(FLOAT Density,FLOAT Entropy,int i);
#endif
#ifdef AGN_HEATING
void agn_heating();
double gamma_fct(FLOAT density,double r, double SpecPower);
double HeatingRadialDependency(double r);
#endif
#ifdef MULTIPHASE
void update_phase(void);
void init_sticky(void);
void sticky(void);
void sticky_compute_energy_kin(int mode);
void sticky_collisions(void);
void sticky_collisions2(int loop);
void sticky_evaluate(int target, int mode, int loop);
int sticky_compare_key(const void *a, const void *b);
#endif
#ifdef FEEDBACK_WIND
void feedbackwind_compute_energy_kin(int mode);
#endif
#ifdef CHIMIE
void init_chimie(void);
void check_chimie(void);
void chimie(void);
void do_chimie(void);
void chimie_evaluate(int target, int mode);
int chimie_compare_key(const void *a, const void *b);
int get_nelts();
char* get_Element(i);
float get_SolarAbundance(i);
#if defined(CHIMIE_THERMAL_FEEDBACK) && defined(CHIMIE_COMPUTE_THERMAL_FEEDBACK_ENERGY)
void chimie_compute_energy_int(int mode);
#endif
#if defined(CHIMIE_KINETIC_FEEDBACK) && defined(CHIMIE_COMPUTE_KINETIC_FEEDBACK_ENERGY)
void chimie_compute_energy_kin(int mode);
#endif
#ifdef CHIMIE_KINETIC_FEEDBACK
void chimie_apply_wind(void);
#endif
#endif
#ifdef OUTERPOTENTIAL
void init_outer_potential(void);
void outer_forces(void);
void outer_potential(void);
#ifdef NFW
void init_outer_potential_nfw(void);
void outer_forces_nfw(void);
void outer_potential_nfw(void);
#endif
#ifdef PLUMMER
void init_outer_potential_plummer(void);
void outer_forces_plummer(void);
void outer_potential_plummer(void);
#endif
#ifdef PISOTHERM
void init_outer_potential_pisotherm(void);
void outer_forces_pisotherm(void);
void outer_potential_pisotherm(void);
double potential_f(double r, void * params);
double get_potential(double r);
#endif
#ifdef CORIOLIS
void init_outer_potential_coriolis(void);
void set_outer_potential_coriolis(void);
void outer_forces_coriolis(void);
void outer_potential_coriolis(void);
#endif
#endif
#ifdef SFR
void star_formation(void);
void rearrange_particle_sequence(void);
void sfr_compute_energy_int(int mode);
void sfr_check_number_of_stars(int mode);
#endif
#ifdef AGN_ACCRETION
void compute_agn_accretion(void);
#endif
#ifdef BUBBLES
void init_bubble(void);
void make_bubble(void);
void create_bubble(int sign);
#endif
#ifdef BONDI_ACCRETION
void bondi_accretion(void);
#endif
#ifdef PNBODY
void init_pnbody();
void finalize_pnbody();
void compute_pnbody();
#endif
#ifdef AB_TURB
void init_turb();
#endif
#if defined(ART_VISCO_MM)|| defined(ART_VISCO_RO) || defined(ART_VISCO_CD)
void move_art_visc(int i,double dt_drift);
#ifdef ART_VISCO_CD
void art_visc_allocate();
void art_visc_free();
void compute_art_visc(int i);
#endif
#endif
#ifdef TIMESTEP_UPDATE_FOR_FEEDBACK
void get_sigvel(void);
void get_sigvel_evaluate(int target, int mode);
FLOAT updated_pressure(FLOAT EntropyPred,FLOAT Density,FLOAT DeltaEgySpec);
void make_particle_active(int target);
void kickback(int i,int tstart,int tend);
#endif
#ifdef GAS_ACCRETION
void init_gas_accretion(void);
void gas_accretion(void);
#endif
-#ifdef LAMBDA_DEPRAZ
+#ifdef COOLING_FCT_FROM_HDF5
float computeLambda(float rho_H_in, float T_in, float nHe_in, float metalicity);
int endsWith(const char *str, const char *suffix);
void closestMatch1D(float* TABLE, int SIZE, float input, float match[2], int index[2]);
void checkRedshiftForUpdate();
int updateCoolingTable();
void loadDataInTable1D(hid_t table, char* table_key, float** TABLE, int* SIZE);
void loadDataInTable2D(hid_t table, char* table_key, float*** TABLE);
void loadDataInTable3D(hid_t table, char* table_key, float**** TABLE);
void BroadcastTablesToAllFromMaster();
int freeMemory();
#endif
#ifdef TESSEL
void ConstructDelaunay();
void ComputeVoronoi();
void setup_searching_radius();
int ngb_treefind_variable_for_tessel(FLOAT searchcenter[3], FLOAT hsml, int phase, int *startnode);
void ghost();
void tessel_compute_accelerations();
void tessel_convert_energy_to_entropy();
void tessel_kick(float dt_kick);
void tessel_drift(float dt_drift);
double tessel_get_timestep();
int CheckCompletenessForThisPoint(int i);
int ghost_compare_key(const void *a, const void *b);
void CheckTriangles();
void AddGhostPoints(int istart,int nadd);
void dump_triangles(char *filename);
void dump_voronoi(char *filename);
#ifdef PY_INTERFACE
#include <Python.h>
PyObject *gadget_GetAllDelaunayTriangles(self, args);
PyObject *gadget_GetAllvPoints(self, args);
PyObject *gadget_GetAllvDensities(PyObject* self);
PyObject *gadget_GetAllvVolumes(PyObject* self);
PyObject *gadget_GetAllvPressures(PyObject* self);
PyObject *gadget_GetAllvEnergySpec(PyObject* self);
PyObject *gadget_GetAllvAccelerations(PyObject* self);
PyObject *gadget_GetvPointsForOnePoint(self, args);
PyObject *gadget_GetNgbPointsForOnePoint(self, args);
PyObject *gadget_GetNgbPointsAndFacesForOnePoint(self, args);
PyObject *gadget_GetAllGhostPositions(PyObject* self);
PyObject *gadget_GetAllGhostvDensities(PyObject* self);
PyObject *gadget_GetAllGhostvVolumes(PyObject* self);
#endif
#endif
#ifdef PY_INTERFACE
void allocate_commbuffersQ(void);
void density_sub(void);
void density_evaluate_sub(int i, int mode);
void do_box_wrappingQ(void);
void domain_DecompositionQ(void);
void domain_decomposeQ(void);
int domain_findSplitQ(int cpustart, int ncpu, int first, int last);
void domain_shiftSplitQ(void);
void domain_findExchangeNumbersQ(int task, int partner, int sphflag, int *send, int *recv);
void domain_exchangeParticlesQ(int partner, int sphflag, int send_count, int recv_count);
void domain_countToGoQ(void);
void domain_walktoptreeQ(int no);
void domain_sumCostQ(void);
void domain_findExtentQ(void);
void domain_determineTopTreeQ(void);
void domain_topsplit_localQ(int node, peanokey startkey);
void domain_topsplitQ(int node, peanokey startkey);
int force_treeevaluate_sub(int target, int mode, double *ewaldcountsum);
void force_treeevaluate_potential_sub(int target, int type);
void force_treeevaluate_potential_shortrange_sub(int target, int mode);
int force_treeevaluate_shortrange_sub(int target, int mode);
void gravity_tree_sub(void);
void sph(void);
void sph_evaluate(int target, int mode);
void sph_sub(void);
void sph_evaluate_sub(int target, int mode);
void sph_thermal_conductivity(void);
void sph_evaluate_thermal_conductivity(int target, int mode);
int sph_compare_key(const void *a, const void *b);
void peano_hilbert_orderQ(void);
void reorder_gasQ(void);
void reorder_particlesQ(void);
void setup_smoothinglengths_sub(void);
#endif

Event Timeline