Page MenuHomec4science

pycool_plot_cooling_with_metals
No OneTemporary

File Metadata

Created
Fri, Feb 21, 13:48

pycool_plot_cooling_with_metals

#!/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()

Event Timeline