Page MenuHomec4science

libSolarAbundances.py.svn-base
No OneTemporary

File Metadata

Created
Tue, Mar 25, 19:49

libSolarAbundances.py.svn-base

#!/usr/bin/env python
import string,sys,os
from numpy import *
import Ptools as pt
def WriteParams(f,Files,elts):
E = PE(Files)
f.write("\n")
f.write("# Element Solar Abundances\n")
f.write("\n")
f.write("# Number of elements\n")
f.write("%d\n"%len(elts))
f.write("\n")
for elt in elts:
if elt == "Metals":
abun = 0.02
else:
abun = E[elt]
f.write("# %s\n"%elt)
f.write("%g\n"%abun)
f.write("\n")
def Read(file):
f = open(file,'r')
lines = f.readlines()
f.close()
lines = lines[1:]
Elt = []
Z = zeros(len(lines),int)
X = zeros(len(lines),float)
A = zeros(len(lines),float)
for i,line in enumerate(lines):
line = string.split(line)
Elt.append(line[1])
Z[i] = int(line[0])
X[i] = float(line[2])
A[i] = float(line[3])
return Z,X,A,Elt
class PE(dict):
def __init__(self,file):
Zs,Xs,As,Elts = Read(file)
'''
here,
Xs = 12 + log(Nx/NH)
'''
self.Zs = Zs
self.Xs = Xs
self.As = As
self.Elts = Elts
self.Ys = Xs
self.Xs = As *10**(Xs-12)
for i,elt in enumerate(self.Elts):
self[elt] = self.Xs[i]
def AtomicMass(self,elt):
idx = self.Elts.index(elt)
return self.As[idx]
def AtomicNumber(self,elt):
idx = self.Elts.index(elt)
return self.Zs[idx]
def SolarAbundance(self,elt):
"""
Ax * Nx/NH (Ax=atomic mass)
"""
idx = self.Elts.index(elt)
return self.Xs[idx]

Event Timeline