Beispiel #1
0
def calc_ne(mass, size):
	nh = nhs[args.iden]
	logQ = logQ_interp(mass)
	stro = koo.calcStromgrenRadius(logQ, nh)
	radius = 0.5 * size * PC2CM
	ne = nh * (stro / radius)**(1.5)

	return ne
Beispiel #2
0
def calcStagnationTime(logQ, nh):
	ci = koo.soundSpeed(8000.0, 0.5)
	co = koo.soundSpeed(10.0, 1.0)
	cico = ci / co

	RS = koo.calcStromgrenRadius(logQ, nh)
	ts = RS / ci

	return (4.0 / 7.0) * ((3.0 / 4.0)**0.5) * (((4.0 / 3.0)**(7.0 / 6.0)) * (cico**(7.0 / 3.0)) - 1.0) * ts
Beispiel #3
0
casa_ang_size = np.zeros(nstars, dtype=float)
tot_flux = np.zeros(nstars, dtype=float)
casa_tot_flux = np.zeros(nstars, dtype=float)
casa_peak_flux = np.zeros(nstars, dtype=float)
g_long = star_data[:,15]
g_lat = star_data[:,16]

for i in range(1, nstars + 1):
	t = age[i - 1] * 1000.0 * YR2S
	m = mcur[i - 1]
	nh = nhs[args.iden]
	logQ = float(logQ_interp(m))
	#dsun = d_sun[i - 1] * 1000.0 * PC2CM
	dsun = 5.0 * 1000.0 * PC2CM

	stro = koo.calcStromgrenRadius(logQ, nh)
	raga = koo.calcSpitzerRadius(logQ, nh, t)
	stag = koo.calcStagnationRadius(logQ, nh)
	#radius = np.minimum(raga, stag)
	radius = raga

	angsize_rad = (2.0 * radius / dsun)
	angsize_as = angsize_rad * 60.0 * 60.0 * 180.0 / math.pi
	ne = nh * (stro / radius)**(1.5)
	T = 8000.0
	f = 5.0e9
	tau = calcTau(T, f, ne, logQ)
	B = calcPlanck2(T, f) * 1.0e26
	S = B * (1.0 - math.exp(-tau))
	F = S * (0.5 * angsize_rad)**2 * 1000
Beispiel #4
0
	r = "{:4.2f}".format(rstar[j])
	l = "{:4.2f}".format(logL[j])
	q = "{:4.2f}".format(logQ[j])
	ed = "{:4.2e}".format(0.5 * mdot[j] * vinf[j] * vinf[j]) # erg.s-1
	md = "{:8.2e}".format(mdot[j] / 6.341958397e25) # [Msun.yr-1]
	v = "{:8.2e}".format(vinf[j] / 100000.0) # [km.s-1]

	print m + " & " + t + " & " + r + " & " + l + " & " + q + " & " + ed + " & " + md \
			  + " & " + v + " \\\\"

for i in range(len(den)):
	for j in range(len(mass)):
		index = 9*i + j
		m = "{:3d}".format(int(mass[j]))
		d = "{:8.2e}".format(den[i])
		ysc = "{:4.3f}".format(koo.calcStromgrenRadius(logQ[j], den[i]) / cloud_dist)
		nx = str(nxs[index])
		ny = str(nys[index])
		nxny = "{($" + nx + "$,$" + ny + "$)}"
		sizex = "{:3.2f}".format(sizexs[index] / 3.09e18)
		r_inj = 10.0 * sizexs[index] / nxs[index]
		lcrit = "{:4.3e}".format(critL2(r_inj, vinf[j]))
		tstart = "{:4.3f}".format(koo.calcStartTime(mdot[j], vinf[j], mh*den[i], 8000.0, 0.5, r_inj) * S2YR / 1000.0)
		tcoolval = coolTime(mp1_data.central_pressures[index], mp1_data.central_densities[index]) * S2YR / 1000.0
		tcool = "{:4.3e}".format(tcoolval)
		texitval = exitTime(r_inj, vinf[j]) * S2YR / 1000.0
		texit = "{:4.3f}".format(texitval)
		R_inj = "{:4.3f}".format(r_inj * CM2PC)
		ri = "{:8d}".format((int)(-tcoolval / texitval))

		print m + " & " + d + " & " + nx + " & " + ny + " & " + sizex + " & " + ysc + " & " + R_inj + " & " + tstart + " & " + tcool + " \\\\"
Beispiel #5
0
def printPaperTable(r, t, b, isWind, isMVD):
	T = 8000.0
	mu = 0.5

	diststr = "D_\\mathrm{s}" if isWind else "D_\\mathrm{i}"
	numstr = "4" if isWind else "4"

	for row in range(9):
		mass = massList[row]
		mdot = mdotList[row]
		vinf = vinfList[row]
		logQ = logQList[row]
		nhs_hii = mvd_iden if isMVD else  mvt_iden
		times = mvd_times if isMVD else mvt_times
		nhs_init = mvd_nhs if isMVD else mvt_nhs
		inj = mvd_inj if isMVD else mvt_inj

		tableline = "\multirow{" + numstr + "}{*}{\\num{" + str(mass) + "}} & {$" + diststr + "(0)$}"
		for col in range(5):
			tableline = tableline + " & "
			tableline = tableline + str(t[col][row])
		print tableline + " \\\\"

		tableline =  "& {$" + diststr + "(\\frac{\\pi}{2})$}"
		for col in range(5):
			tableline = tableline + " & "
			tableline = tableline + str(r[col][row])
		print tableline + " \\\\"

		tableline = "& {$" + diststr + "(\\pi)$}"
		for col in range(5):
			tableline = tableline + " & "
			tableline = tableline + str(b[col][row])
		print tableline + " \\\\"

		if isWind:
			tableline = "& {$R_\\mathrm{P}$}"
			for col in range(5):
				tableline = tableline + " & "
				R = koo.calcFinalRadiusRB(mdot, vinf, mh*nhs_hii[col][row], T, mu) * CM2PC
				tableline = tableline + str(R)
			print tableline + " \\\\"
		else:
			tableline = "& {$R_\\mathrm{raga-1}$}"
			for col in range(5):
				tableline = tableline + " & "
				R = koo.calcStromgrenRadius(logQ, nhs_init[col])
				#R = max(R, inj[col][row] / CM2PC)
				R = koo.calcSpitzerRadius2(R, times[col]*YR2S)*CM2PC
				R = koo.calcExactIF(300.0, T, 1.0, mu, nhs_init[col], 10.0**logQ,
									times[col] * YR2S, is_spitzer=True) * CM2PC
				tableline = tableline + str(R)
			print tableline + " \\\\"

			#tableline = "& {$R_\\mathrm{stag}$}"
			#for col in range(5):
			#	tableline = tableline + " & "
			#	R = koo.calcStromgrenRadius(logQ, nhs_init[col])
			#	#R = max(R, inj[col][row] / CM2PC)
			#	R = koo.calcStagnationRadius2(R) * CM2PC
			#	tableline = tableline + str(R)
			#print tableline + " \\\\"

		if row != 8:
			print "& & & & & & \\\\"
Beispiel #6
0
#mvd_iden.append([610.0,   480.0,  650.0,  900.0, 1300.0, 1800.0, 2200.0, 2400.0,  2700.0])
#mvd_iden.append([800.0,   900.0, 1000.0, 1400.0, 2100.0, 2500.0, 3000.0, 5000.0,  5000.0])
#mvd_iden.append([2000.0, 2200.0, 2200.0, 2400.0, 3000.0, 4500.0, 5500.0, 7000.0, 12000.0])

#mvt_iden = []
#mvt_iden.append([520.0, 620.0, 1000.0, 1700.0, 2600.0, 4500.0, 6500.0, 9000.0, 12000.0])
#mvt_iden.append([620.0, 520.0,  750.0, 1000.0, 1600.0, 2400.0, 2500.0, 5000.0,  8000.0])
#mvt_iden.append([580.0, 520.0,  600.0,  800.0, 1400.0, 1800.0, 1900.0, 2500.0,  3000.0])
#mvt_iden.append([520.0, 550.0,  550.0,  700.0, 1100.0, 1300.0, 1500.0, 1700.0,  1800.0])
#mvt_iden.append([520.0, 540.0,  520.0,  620.0,  850.0, 1200.0, 1300.0, 1400.0,  1500.0])

mvd_iden = []
for i in range(5):
	arr = []
	for j in range(9):
		R_strom = koo.calcStromgrenRadius(logQList[j], mvd_nhs[i]) * CM2PC
		#R_strom = max(R_strom, mvd_inj[i][j])
		arr.append(mvd_nhs[i] * math.pow(R_strom / mvd_IF_r[i][j], 1.5))
	mvd_iden.append(arr)

mvt_iden = []
for i in range(5):
	arr = []
	for j in range(9):
		R_strom = koo.calcStromgrenRadius(logQList[j], mvt_nhs[i]) * CM2PC
		#R_strom = max(R_strom, mvt_inj[i][j])
		arr.append(mvt_nhs[i] * math.pow(R_strom / mvt_IF_r[i][j], 1.5))
	mvt_iden.append(arr)


if print_sizes: