Example #1
0
def get_dust_density(dopac_file, xlist, ylist, zlist):
	from mk_dkinp import read_dustopac
	name = "dust_density.inp"
	M_in = 2.0E-7*2E33 #2E-7 solar masses in grams
	dust_dat = read_dustopac(dopac_file)
	print(dust_dat)
	alpha = M_in/(math.sqrt(3.8) - math.sqrt(0.8)) #factor of 4*pi cancels later
	f = open(name, 'w')
	f.write("1\n") #iformat
	f.write("{}\n".format((len(xlist)-1)*(len(ylist)-1)*(len(zlist)-1))) #number of cells
	f.write("{}\n".format(len(dust_dat)))#number of dust species
	for l in range(0, len(dust_dat)):
		for k in range(0, len(zlist)-1):
			dz = abs(zlist[k+1] - zlist[k])
			for j in range(0, len(ylist)-1):
				dy = abs(ylist[j+1] - ylist[j])
				sin_theta = math.sin(ylist[j])
				for i in range(0, len(xlist)-1):
					dx = abs(xlist[i+1] - xlist[i])
					#remember, we are in spherical polars
					t_vol = xlist[i]*xlist[i]*dx*abs(ylist[-1]-ylist[0])*abs(zlist[-1]-zlist[0])
					#approx for total volume in this shell that we have co-ords for
					vol = xlist[i]*xlist[i]*sin_theta*dx*dy*dz #good enough approx for vol of cell
					#area = xlist[i]*dy*dz #surface area of annulus
					M_ann = alpha*(math.sqrt(xlist[i+1]) - math.sqrt(xlist[i])) #mass in this annulus
					D_cell = 0.5*sin_theta*dust_dat[l][0]*M_ann/t_vol #density in this cell
					f.write("{}\n".format(D_cell))
	return()
Example #2
0
def get_dust_density_cart(dopac_file, xlist, ylist, zlist):
	from mk_dkinp import read_dustopac
	name = "dust_density.inp"
	M_in = 1E-20*2.0E33 #1E-8 solar masses in grams
	alpha = M_in/(math.sqrt(3.8) - math.sqrt(0.8)) #factor of 4*pi cancels later
	#print(alpha)
	dust_dat = read_dustopac(dopac_file)
	f = open(name, 'w')
	f.write("1\n") #iformat
	f.write("{}\n".format((len(xlist)-1)*(len(ylist)-1)*(len(zlist)-1))) #number of cells
	f.write("{}\n".format(len(dust_dat)))#number of dust species
	vol_elem = (xlist[1]-xlist[0])*(ylist[1]-ylist[0])*(zlist[1]-zlist[0])
	#print(vol_elem)
	for l in range(0, len(dust_dat)): #loop over each dust species
		a = 0.5*dust_dat[l][2]
		b = 1.5*dust_dat[l][2]
		d_fac = 1.0/(dust_dat[l][0]*(b-a)**(-5/12))
		#print(d_fac, b-a)
		for k in range(0, len(zlist)-1):
			for j in range(0, len(ylist)-1):
				for i in range(0, len(xlist)-1):
					#print(i, j, k)
					r = math.sqrt(xlist[i]*xlist[i] + ylist[j]*ylist[j] + zlist[k]*zlist[k])
					r_inc = math.sqrt(xlist[i+1]*xlist[i+1] + ylist[j+1]*ylist[j+1] + zlist[k+1]*zlist[k+1])
					M_ann = alpha*(math.sqrt(r_inc) - math.sqrt(r)) #mass in this annulus
					#print(M_ann)
					D_cell = d_fac*M_ann/vol_elem #density in this cell
					f.write("{}\n".format(D_cell))
	return()