コード例 #1
0
def iterate():    
    starting_index    = 1500
    last_index        = 1802 
    TIME_INTERVAL     = 10.
    START_x           = get_coordinate(gSTART_x)
    START_y           = get_coordinate(gSTART_y)
    COORDINATES       = np.array([[START_x, START_y]])
    
    coord_x = START_x
    coord_y = START_y
    
    for fileindex in range(starting_index,last_index):
        
        grid_y, grid_x = np.mgrid[coord_y:coord_y:1j,coord_x:coord_x:1j]

        
        if fileindex < 1000:
            filename = '0' + str(fileindex)
        else:
            filename = str(fileindex)
        
        
        filein = open('/Users/Anton/Desktop/Data/d300a0/sim' + filename + '.dat')
        datain = np.loadtxt(filein,input_dtype.dtype_newtonian())
        filein.close()
        a         = 0
        r         = datain['r']#*1477000.
        theta     = datain['theta']
        u_radial  = datain['u_1']/datain['u_t']#*3.e10
        u_theta   = datain['u_2']/datain['u_t']#*3.e10
        
        g11 = np.sqrt((np.divide( (np.power(r, 2)+a**(2.)*np.power(np.cos(theta),2)), (np.power(r, 2)-2.*r+a**2) ) ))
        g22 = np.sqrt((np.power(r,2)+a**(2.)*np.power(np.cos(theta),2)))
        
        points = (r*np.sin(theta),r*np.cos(theta))
        ux = (u_theta*np.cos(theta)*g22 + u_radial*np.sin(theta))
        uy = (-u_theta*np.sin(theta)*g22 + u_radial*np.cos(theta))
        
        grid_ux = griddata(points, ux, (grid_x, grid_y), method='linear', fill_value=1e-30)
        grid_uy = griddata(points, uy, (grid_x, grid_y), method='linear', fill_value=1e-30)
        try: 
            DELTA_x = grid_ux[0,0]*TIME_INTERVAL
            DELTA_y = grid_uy[0,0]*TIME_INTERVAL
            
            coord_x = coord_x + DELTA_x
            coord_y = coord_y + DELTA_y
            
            if (np.logical_or(coord_x > xmax, coord_y > ymax)):
                print('The particle have escaped the bounded region. Terminating loop at index ' + str(fileindex))
                break
            elif (np.logical_and(coord_x < 2, coord_y < 2)):
                print('The particle have been engulfed by the black hole. Terminating loop at index ' + str(fileindex))
                break
                
            COORDINATES = np.append(COORDINATES, np.array([[coord_x, coord_y]]), axis=0)
        except IndexError:
            np.save(savefilename, COORDINATES)
            print('IndexError: The particle have escaped the bounded region. Terminating loop at index ' + str(fileindex))
            break
            
        print('Index:', fileindex, COORDINATES)
        
    np.save(savefilename, COORDINATES)
コード例 #2
0
def iterate():  
    
    #grid_y, grid_x = np.mgrid[ymin:ymax:100j,xmin:xmax:100j]
  
    starting_index    = gSTART_INDEX
    last_index        = gLAST_INDEX 
    TIME_INTERVAL     = 100.
    START_x           = get_coordinate(gSTART_x)
    START_y           = get_coordinate(gSTART_y)
    COORDINATES       = np.array([[START_x, START_y, 0]])
    
    coord_x = START_x
    coord_y = START_y
    
    for fileindex in range(starting_index,last_index):
    #for loop_index in range(0,20):    
     #   fileindex = starting_index - loop_index
        
        grid_y, grid_x = np.mgrid[coord_y:coord_y:1j,coord_x:coord_x:1j]

        
        if fileindex < 1000:
            filename = '0' + str(fileindex)
        else:
            filename = str(fileindex)
        
        
        filein = open('/Users/Anton/Desktop/Data/hd300a0/hd300a0_rel/sim' + filename + '.dat')
        datain = np.loadtxt(filein,input_dtype.dtype_rel_hydro())
        filein.close()
        a         = 0
        r         = datain['r']#*1477000.
        theta     = datain['theta']
        u_radial  = datain['u_1']/datain['u_t']#*3.e10
        u_theta   = datain['u_2']/datain['u_t']#*3.e10
        
        g11 = np.sqrt((np.divide( (np.power(r, 2)+a**(2.)*np.power(np.cos(theta),2)), (np.power(r, 2)-2.*r+a**2) ) ))
        g22 = np.sqrt((np.power(r,2)+a**(2.)*np.power(np.cos(theta),2)))
        
        points = (r*np.sin(theta),r*np.cos(theta))
        ux = (u_theta*np.cos(theta)*g22 + u_radial*np.sin(theta))
        uy = (-u_theta*np.sin(theta)*g22 + u_radial*np.cos(theta))
        
        grid_ux = griddata(points, ux, (grid_x, grid_y), method='linear', fill_value=1e-30)
        grid_uy = griddata(points, uy, (grid_x, grid_y), method='linear', fill_value=1e-30)
        try: 
            DELTA_x = grid_ux[0,0]*TIME_INTERVAL
            DELTA_y = grid_uy[0,0]*TIME_INTERVAL
            
            #DELTA_x = grid_ux[get_coordinate(coord_y), get_coordinate(coord_x)]*TIME_INTERVAL
            #DELTA_y = grid_uy[get_coordinate(coord_y), get_coordinate(coord_x)]*TIME_INTERVAL
            
            coord_x = coord_x + DELTA_x
            coord_y = coord_y + DELTA_y
            
            if (np.logical_or(coord_x > xmax, coord_y > ymax)):
                print('The particle have escaped the bounded region. Terminating loop at index ' + str(fileindex))
                break
            elif (np.logical_and(coord_x < 2, coord_y < 2)):
                print('The particle have been engulfed by the black hole. Terminating loop at index ' + str(fileindex))
                break
                
            COORDINATES = np.append(COORDINATES, np.array([[coord_x, coord_y, np.sqrt(grid_ux[0,0]**(2.) + grid_uy[0,0]**(2.))]]), axis=0)
        except IndexError:
            np.save(savefilename, COORDINATES)
            print('IndexError: The particle have escaped the bounded region. Terminating loop at index ' + str(fileindex))
            break
            
        print('Index:', fileindex, COORDINATES)
        #u_radial_START = grid_u_radial()
        #plt.contourf(grid_x, grid_y, grid_u_radial)
        #
        #s = plt.streamplot(grid_x, grid_y, grid_ux, grid_uy, 
        #        density=1, color='#BBBBBB', 
        #        arrowsize=2.5, arrowstyle='->',
        #        minlength=.1)
        #
        #plt.gca().set_aspect('equal')    
        #plt.show()
    np.save(savefilename, COORDINATES)
コード例 #3
0
    if index < 1000:
        index_str = str('0' + str(index))
    else:
        index_str = str(index)
    
    #File operations
    filename = 'simext' + index_str
    filein = open('/Volumes/Seagate/4Anton/d300a0/dt100/simavg0100-0189_rel.dat','rb')
    #filein = open('/Volumes/Seagate/4Anton/d300a0/dt10/'+filename+'.dat','rb')
    #datafile_all_forces = '/Users/Anton/Desktop/Data/Binaries/RAD-600-d300a0/' + index_str + '.npy'
    #datafile_all_forces = '/Users/Anton/Desktop/Data/Binaries/RAD-avg-d300a0/average.npy'


    #fileout = '/Users/Anton/Desktop/Data/Image/' + filename + '.png'
    
    datain = np.loadtxt(filein,input_dtype.dtype_rel_radiation())
    filein.close()
    
    #Convert coordinates from spherical to cartesian (physical units)
    r = datain['r']
    theta = datain['theta']
    phi = datain['phi']
    rho = datain['rho']
    
    points = (r*np.sin(theta),r*np.cos(theta))
    grid_rho = griddata(points, rho, (grid_x, grid_y), method='linear')
    
    ## Metric determinant ##
    a=0
    g_sch = np.power(r, 2)*np.sin(theta)
    
コード例 #4
0
    #lc = LineCollection(segments, linewidths=3, colors=clist[i], linestyles=ls[i])
    lc = LineCollection(segments, linewidths=5, cmap='bwr', norm=norm)
    lc.set_array(mCOORD[:,2])
    plt.gca().add_collection(lc)
    
    plt.arrow(mCOORD[-1,0],mCOORD[-1,1],mCOORD[-1,0]-mCOORD[-5,0],mCOORD[-1,1]-mCOORD[-5,1], 
            width=0.5, head_width=3, overhang=0.3,length_includes_head=False, color='black', zorder=10)
    #string_number = r'\#' + str(i+1)
    #plt.annotate(s=string_number, xy=(mCOORD[0,0]+3*(-1)**(i+1),mCOORD[0,1]-7) )
    
    plt.gca().set_aspect('equal')    
    plt.xlabel('$x/r_g$')
    #plt.ylabel('$z/r_g$')

filein = open('/Volumes/Seagate/4Anton/hd300a0/dt100/simavg0070-0134_rel.dat','rb')
datain = np.loadtxt(filein,dt.dtype_rel_hydro())
filein.close()
grid_y, grid_x = np.mgrid[ypmin:ypmax:200j,xpmin:xpmax:200j]
points = (datain['r']*np.sin(datain['theta']),datain['r']*np.cos(datain['theta']))
grid_rho = griddata(points, datain['rho'], (grid_x, grid_y), method='linear')


ax = fig.gca()

cax, args = matplotlib.colorbar.make_axes(ax, anchor=(-1.4, 0.95), shrink=0.55)
colorbar = plt.colorbar(lc, ticks=np.linspace(0,0.5,11), cax=cax)
plt.sca(ax)


c = plt.contourf(grid_x, grid_y, np.log10(grid_rho*6.17e15), extend='both', levels=np.linspace(-8,-4,61), cmap='gray', alpha=0.99)
colorbar2 = plt.colorbar(c, ticks=np.linspace(-8,-4,5).astype(int))
コード例 #5
0
    if index < 1000:
        index_str = str('0' + str(index))
    else:
        index_str = str(index)
    
    #File operations
    filename = 'sim' + index_str
    filein = open('/Users/Anton/Desktop/Data/d300a0/simavg0100-0189_rel.dat','rb')
    #filein = open('/Volumes/Seagate/4Anton/d300a0/' + filename + '.dat','rb')
    #datafile_all_forces = '/Users/Anton/Desktop/Data/Binaries/RAD-600-d300a0/' + index_str + '.npy'
    #datafile_all_forces = '/Users/Anton/Desktop/Data/Binaries/RAD-avg-d300a0/average.npy'


    #fileout = '/Users/Anton/Desktop/Data/Image/' + filename + '.png'
    
    datain = np.loadtxt(filein,input_dtype.dtype_rel_hydro())
    filein.close()
    
    #Convert coordinates from spherical to cartesian (physical units)
    r = datain['r']
    theta = datain['theta']
    phi = datain['phi']
    rho = datain['rho']
    
    points = (r*np.sin(theta),r*np.cos(theta))
    grid_rho = griddata(points, rho, (grid_x, grid_y), method='linear')
    
    ## Metric determinant ##
    a=0
    g_sch = np.power(r, 2)*np.sin(theta)
    
コード例 #6
0
gSTART_y = 90
gSTART_INDEX = 1000

savefilename = '/Users/Anton/Desktop/Data/Binaries/hydro_particle_'+str(gSTART_INDEX)+ '_' + str(gSTART_x)+'_'+str(gSTART_y)+'_dt10.npy'

    
#File operations
#filebase = '/Users/Anton/Desktop/Data/hd300a0/hd300a0_rel/'
filebase = '/Volumes/Seagate/4Anton/hd300a0/dt10/'
filenumber_start = gSTART_INDEX
filenumber = filenumber_start

try:
    filein = open(filebase + 'sim' + str(filenumber) + '.dat','rb')
    #filein = open(filebase + 'simavg0070-0134_rel.dat', 'rb')
    datain = np.loadtxt(filein,dt.dtype_rel_hydro())
    filein.close()
except (IndexError, IOError):
    print('Wrong input dtype. Terminating.')
        
COORDINATES = np.load(savefilename)
step = len(COORDINATES)/4.
###### --------------------------------------------------------------------------------- ########
#coord_index = np.floor(np.array([0.64*step, 2.4*step])) #(15,20) 1.45*step, 
#coord_index = np.floor(np.array([0.48*step, 2.4*step])) #(10,20) 1.45*step
#coord_index = np.floor(np.array([0.57*step, 1.7*step, 2.8*step])) #(69,80)
coord_index = np.floor(np.array([0.05*step, 1.*step, 2.3*step])) #(60,90) 
###### --------------------------------------------------------------------------------- ########
LINE_INDEX = np.empty((len(coord_index), 1))

for i in range(0,len(coord_index)):
コード例 #7
0
def iterate():

    # grid_y, grid_x = np.mgrid[ymin:ymax:100j,xmin:xmax:100j]

    starting_index = gSTART_INDEX
    last_index = gLAST_INDEX
    TIME_INTERVAL = 10.0
    START_x = get_coordinate(gSTART_x)
    START_y = get_coordinate(gSTART_y)
    COORDINATES = np.array([[START_x, START_y, 0]])

    coord_x = START_x
    coord_y = START_y

    for fileindex in range(starting_index, last_index):
        # for loop_index in range(0,400):
        #   fileindex = starting_index - loop_index

        grid_y, grid_x = np.mgrid[coord_y:coord_y:1j, coord_x:coord_x:1j]

        if fileindex < 1000:
            filename = "0" + str(fileindex)
        else:
            filename = str(fileindex)

        # filein = open('/Users/Anton/Desktop/Data/hd300a0/hd300a0_rel/sim' + filename + '.dat')
        filein = open("/Volumes/Seagate/4Anton/hd300a0/dt10/sim" + filename + ".dat")
        datain = np.loadtxt(filein, input_dtype.dtype_rel_hydro())
        filein.close()
        a = 0
        r = datain["r"]  # *1477000.
        theta = datain["theta"]
        u_radial = datain["u_1"] / datain["u_t"]  # *3.e10
        u_theta = datain["u_2"] / datain["u_t"]  # *3.e10

        g11 = np.sqrt(
            (np.divide((np.power(r, 2) + a ** (2.0) * np.power(np.cos(theta), 2)), (np.power(r, 2) - 2.0 * r + a ** 2)))
        )
        g22 = np.sqrt((np.power(r, 2) + a ** (2.0) * np.power(np.cos(theta), 2)))

        points = (r * np.sin(theta), r * np.cos(theta))
        ux = u_theta * np.cos(theta) * g22 + u_radial * np.sin(theta)
        uy = -u_theta * np.sin(theta) * g22 + u_radial * np.cos(theta)

        grid_ux = griddata(points, ux, (grid_x, grid_y), method="linear", fill_value=1e-30)
        grid_uy = griddata(points, uy, (grid_x, grid_y), method="linear", fill_value=1e-30)
        try:
            DELTA_x = grid_ux[0, 0] * TIME_INTERVAL
            DELTA_y = grid_uy[0, 0] * TIME_INTERVAL

            # DELTA_x = grid_ux[get_coordinate(coord_y), get_coordinate(coord_x)]*TIME_INTERVAL
            # DELTA_y = grid_uy[get_coordinate(coord_y), get_coordinate(coord_x)]*TIME_INTERVAL

            coord_x = coord_x + DELTA_x
            coord_y = coord_y + DELTA_y

            if np.logical_or(coord_x > xmax, coord_y > ymax):
                print("The particle have escaped the bounded region. Terminating loop at index " + str(fileindex))
                break
            elif np.logical_and(coord_x < 2, coord_y < 2):
                print("The particle have been engulfed by the black hole. Terminating loop at index " + str(fileindex))
                break

            COORDINATES = np.append(
                COORDINATES,
                np.array([[coord_x, coord_y, np.sqrt(grid_ux[0, 0] ** (2.0) + grid_uy[0, 0] ** (2.0))]]),
                axis=0,
            )
        except IndexError:
            np.save(savefilename, COORDINATES)
            print(
                "IndexError: The particle have escaped the bounded region. Terminating loop at index " + str(fileindex)
            )
            break

        print("Index:", fileindex, COORDINATES)
    np.save(savefilename, COORDINATES)
コード例 #8
0
    + "_"
    + str(gSTART_y)
    + "_dt10.npy"
)


# File operations
# filebase = '/Users/Anton/Desktop/Data/d300a0/hd300a0_rel/'
filebase = "/Volumes/Seagate/4Anton/d300a0/dt10/"
filenumber_start = gSTART_INDEX
filenumber = filenumber_start

try:
    filein = open(filebase + "simext" + str(filenumber) + ".dat", "rb")
    # filein = open(filebase + 'simavg0070-0134_rel.dat', 'rb')
    datain = np.loadtxt(filein, dt.dtype_rel_radiation())
    filein.close()
except (IndexError, IOError):
    print("Wrong input dtype. Terminating.")

COORDINATES = np.load(savefilename)
step = len(COORDINATES) / 4.0
###### --------------------------------------------------------------------------------- ########
coord_index = np.floor(np.array([2.40 * step, 2.95 * step, 3.65 * step]))  # (10,10) 1.45*step,
# coord_index = np.floor(np.array([3.56*step ,3.81*step])) #(10,20) 1.45*step
# coord_index = np.floor(np.array([1.9*step, 2.9*step, 3.5*step])) #(60,90)
# coord_index = np.floor(np.array([0.5*step, 1.7*step, 2.55*step])) #(69,70)
###### --------------------------------------------------------------------------------- ########
LINE_INDEX = np.empty((len(coord_index), 1))

for i in range(0, len(coord_index)):