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()
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()