Exemplo n.º 1
0
def uniform_distribution(N, R, koeff=1./3.):
    #koeff nulemia pasiskirstyma.
    x_stars, y_stars, z_stars = vector_projection(N, np.power(np.random.sample(N), koeff) * R)

    bodies = Bodies()
    bodies.r = np.transpose(np.array([x_stars, y_stars, z_stars]))
    bodies.m = np.ones(N) * constants.SOLAR_MASS
    bodies.v = np.zeros(bodies.r.shape)

    M = np.sum(bodies.m)
    ro = M/(4./3.*np.pi*R**3)
    print "Expected collapse time : {:e}".format(np.sqrt(3*np.pi/32./constants.G/ro))
    return bodies, 'dist{:.3}'.format(koeff)
Exemplo n.º 2
0
def plummer(N, r_pl): 
    M_min = 0.08 # min zvaigzdes mase
    M_max = 100 # max zvaigzdes mase
    mStars = IMF_salpeter(N, M_min, M_max) * constants.SOLAR_MASS
    rStars = np.sort(distance_plummer(N, r_pl))
    xStars, yStars, zStars = vector_projection(N, rStars)
    vStars = velocity_kepler(N, mStars, rStars)
    v_xStars, v_yStars, v_zStars = vector_projection(N, vStars)
    bodies = Bodies()
    bodies.r = np.transpose(np.array([xStars, yStars, zStars]))
    bodies.m = np.array(mStars)
    bodies.v = np.transpose(np.array([v_xStars, v_yStars, v_zStars]))

    return bodies, 'plummer'
Exemplo n.º 3
0
def uniform_sphere(N, R):
    phi = np.random.random((N)) * 2.0 * np.pi
    costheta = (np.random.random((N)) - 0.5) * 2.0
    u = np.random.random((N))

    theta = np.arccos(costheta)
    r = R * u**(1.0/3.0)

    x_stars = r * np.sin(theta) * np.cos(phi) 
    y_stars = r * np.sin(theta) * np.sin(phi)
    z_stars = r * np.cos(theta)
   
    bodies = Bodies()
    bodies.r = np.transpose(np.array([x_stars, y_stars, z_stars]))
    bodies.m = np.ones(N) * constants.SOLAR_MASS
    bodies.v = np.zeros(bodies.r.shape)
    
    M = np.sum(bodies.m)
    ro = M/(4./3.*np.pi*R**3)
    print "Expected collapse time : {:e}".format(np.sqrt(3*np.pi/32./constants.G/ro))
    return bodies, 'sphere'