예제 #1
0
def snap(snapstop):
    print("find 3 most massive halos")
    # read in pos
    x, y, z, m, r = mys.getxyzmr(snapstop, 1)
    print('mass ', m)
    print('radius ', r)

    count = 0
    for i in range(len(m)):
        print("halo ", i, m[i], r[i])
        hassub = False
        for j in range(i + 1, len(m)):
            # if too low mass halo, continue
            if (m[j] < 0.5 * m[i]):
                continue
            # have massive halo, possibly subhalo
            if (dist_mod(x[i], y[i], z[i], x[j], y[j], z[j]) < 10. * r[i]):
                hassub = True
                print(" lies near ", j, m[j], r[j])
                break
        if (count >= 3):
            break
        if (not hassub):
            count += 1
            print(x[i], y[i], z[i], r[i], m[i])
예제 #2
0
def snap(snapstop):
    print("find 3 most massive halos")
    # read in pos
    x,y,z,m,r=mys.getxyzmr(snapstop, 1)
    print('mass ', m)
    print('radius ',r)
    
    count=0
    for i in range(len(m)):
        print("halo ", i, m[i], r[i])
        hassub = False
        for j in range(i+1,len(m)):
            # if too low mass halo, continue
            if(m[j]<0.5*m[i]):
                continue
            # have massive halo, possibly subhalo
            if(dist_mod(x[i],y[i],z[i],x[j],y[j],z[j])<10.*r[i]):
                hassub = True
                print(" lies near ", j, m[j], r[j])
                break
        if(count>=3):
            break
        if(not hassub):
            count+=1
            print(x[i],y[i],z[i],r[i],m[i])
예제 #3
0
i = len(sys.argv)
if (i != 3):
    print("shrink_sphere.py snap hid")
    exit(0)

snap = int(sys.argv[1])
hid = int(sys.argv[2])

eps = 1e-5
frad = 0.90  # shrinked sphere has radius frad*maxr, i.e. frad = 0.90 means 10% smaller

if (not mys.exists_snap(snap)):
    print("snapshot " + str(snap) + " missing")
    exit(0)

xc, yc, zc, mvir, rvir = mys.getxyzmr(snap, 1)
halo = my.open_file(mys.d(snap) + "dm/dm_" + str(hid) + ".dat", "r")
x = []
y = []
z = []
m = []
for line in halo:
    val = line.split()
    m.append(float(val[0]))
    x.append(float(val[1]))
    y.append(float(val[2]))
    z.append(float(val[3]))

x = array(x)
y = array(y)
z = array(z)
예제 #4
0
gsd = "get_sphere_dm"
gss = "get_sphere_stars"

i = len(sys.argv)
if(i!=3):
    print("usage: gen_spheres.py snap typ")
    exit(1)

facr = 1 # * rvir from AHF for maximal radial distance to include particles

snap = sys.argv[1]
typ = int(sys.argv[2])
sim = mys.d(snap)

# get xc,yc,zc,mvir,rvir
xcl, ycl, zcl, mvirl,rvirl = mys.getxyzmr(snap, typ)
xsl, ysl, zsl, rsl = mys.getxyzrstars(snap, typ)
pdb.set_trace()
#print('select ',xcl[0])
#print(len(xcl))

for i in range(3):
    xc=str(xcl[i]);       xs=str(xsl[i]);
    yc=str(ycl[i]);       ys=str(ysl[i]);
    zc=str(zcl[i]);       zs=str(zsl[i]);
    r=str(rvirl[i]*facr); rs=str(rsl[i]*facr*0.9);
    sj=str(i+1)

    # Dark Matter only
    cmd  = gsd+" -inp "+sim
    cmd +=" -xc "+xc+" -yc "+yc+" -zc "+zc+" -rc "+r
예제 #5
0
if(i!=3):
    print("shrink_sphere.py snap hid")
    exit(0)

snap=int(sys.argv[1])
hid=int(sys.argv[2])

eps=1e-5
frad = 0.9 # shrinked sphere has radius frad*maxr, i.e. frad = 0.90 means 10% smaller

#print("missing file")
if(not mys.exists_snap(snap)):
    print("snapshot "+str(snap)+" missing")
    exit(0)

xc,yc,zc,mvir,rvir=mys.getxyzmr(snap,1)
halo = my.open_file(mys.d(snap)+"stars/stars_"+str(hid)+".dat","r")
x=[];y=[];z=[];m=[]
for line in halo:
    val=line.split()
    m.append(float(val[0]))
    x.append(float(val[1]))
    y.append(float(val[2]))
    z.append(float(val[3]))

x = array(x); y = array(y); z = array(z); m = array(m)
#print(x)

def converged(xc,yc,zc,xc2,yc2,zc2):
    return  abs(xc-xc2)/abs(xc)   < eps \
        and abs(yc-yc2)/abs(yc)   < eps \
예제 #6
0
show= True; run = True; loop=True

# choose: get_particles    for all particles
#         get_particles_dm for dm  particles only
gps = "get_particles"

i = len(sys.argv)
if(i!=2):
    print("usage: gen_particles_list.py snap")
    exit(1)
    
facr = 1 # * rvir from AHF for maximal radial distance to include particles
snap = int(sys.argv[1])
d    = mys.d(snap)
pdm = d+"particles_dm"
xl,yl,zl,ml,rl = mys.getxyzmr(snap,2)

nhalo= mys.get_nhalo(snap)
os.system("rm "+d+"particles_dm")
os.system("echo '"+str(nhalo)+"' >> "+pdm)

for i in range(len(xl)):
    xc=str(xl[i]); yc=str(yl[i]); zc=str(zl[i]); r=str(facr*rl[i])
    tmpdat = d+"tmp_"+str(i+1)+".dat"

    # all particles (DM/stars mixed)
    cmd1 = gps+" -inp "+d
    cmd1 += " -xc " + xc + " -yc " + yc + " -zc " + zc + " -r " + r
    cmd1 += ">" + tmpdat
    cmd2 = "true"
    my.threadif(cmd1,cmd2,run,run,show,run)
예제 #7
0
data2 = np.zeros((ny, nx), 'float')
for i in xrange(nx):
    for j in xrange(ny):
        if (abs(data[ny - j - 1, i]) < 1E-90):
            data2[j, i] = 0
        else:
            data2[j, i] = log(abs(data[ny - j - 1, i]))

print(np.min(data2), np.max(data2))

pylab.figure()
pylab.xticks([])
pylab.yticks([])
pylab.imshow(data2, aspect=1, cmap='hot')
xc, yc, zc, m, r = mys.getxyzmr(nsnap, 1)

for i in range(len(xc)):
    xs = xc[i] * nx
    ys = ny - yc[i] * ny
    s = r[i] * nx
    print(xs, ys, s)
    cir = pylab.Circle((xs, ys),
                       3.0 * s,
                       facecolor='none',
                       edgecolor=(0.0, 0, 0.1),
                       linewidth=1,
                       alpha=0.5)
    pylab.gca().add_patch(cir)

pylab.savefig(fname + ".png")
예제 #8
0
binvalues = ar.array(IMGSIZE)
binvalues.read(f,nx*ny)
data = np.array(binvalues,'float')
data = np.reshape(data,(ny,nx))

data2=np.zeros((ny,nx),'float')
for i in xrange(nx):
	for j in xrange(ny):
		if(abs(data[ny-j-1,i])<1E-90):
			data2[j,i]=0
		else:
			data2[j,i]=log(abs(data[ny-j-1,i]))

print(np.min(data2),np.max(data2))

pylab.figure()
pylab.xticks([])
pylab.yticks([])
pylab.imshow(data2,aspect=1,cmap='hot')
xc,yc,zc,m,r=mys.getxyzmr(nsnap,1)

for i in range(len(xc)):
	xs=xc[i]*nx;ys=ny-yc[i]*ny;s=r[i]*nx
	print(xs, ys, s)
	cir = pylab.Circle((xs, ys), 3.0*s, facecolor='none', edgecolor=(0.0,0,0.1), linewidth=1, alpha=0.5)
	pylab.gca().add_patch(cir)

pylab.savefig(fname+".png")

print(fname + ".png")