示例#1
0
def grid_black_hole_companion_population(N_per_axis):

    P = np.logspace(0.5, 2, N_per_axis)
    M_star = salpeter_imf(N_per_axis, 2.35, 0.1, 100)
    M_bh = np.random.uniform(3, 5, N_per_axis)

    v = np.array([M_bh, M_star])
    M_1 = np.max(v, axis=0)
    M_2 = np.min(v, axis=0)

    cos_i = np.random.uniform(0, 1, N_per_axis)
    i = np.arccos(cos_i)

    params = np.array(list(itertools.product(P, M_1, M_2, i)))

    P, M_1, M_2, i = params.T

    # always assume the more massive one is the bh
    f_1 = np.zeros(M_1.size)
    f_2 = np.ones(M_1.size)

    P = P << u.day
    M_1 = M_1 << u.solMass
    M_2 = M_2 << u.solMass
    i = i << u.rad

    args = (P, M_1, M_2, f_1, f_2, i)
    return (args, None)
示例#2
0
def grid_giant_main_sequence_binary_population(N_per_axis, N_simulation):

    P = np.logspace(1, 7, N_per_axis)
    q = np.linspace(0.1, 1, N_per_axis)

    cos_i = np.linspace(0, 1, N_simulation)
    i = np.arccos(cos_i)
    #cos_i = np.array([1.0])
    #i = np.arccos(cos_i)
    M_1 = salpeter_imf(N_simulation, 2.35, 0.1, 100)

    params = np.array(list(itertools.product(P, q, M_1, i)))

    P, q, M_1, i = params.T
    M_2 = q * M_1

    # TODO: revisit this assumption?
    f_1 = 1000  #
    f_2 = 1

    P = P << u.day
    M_1 = M_1 << u.solMass
    M_2 = M_2 << u.solMass
    i = i << u.rad

    args = (P, M_1, M_2, f_1, f_2, i)
    return (args, None)
示例#3
0
def draw_black_hole_companion_population(N):

    P = 30 * np.ones(N) * u.day
    M_1 = salpeter_imf(N, 2.35, 0.1, 100) * u.solMass
    f_1 = 1.0 * np.ones(N)

    M_2 = np.random.uniform(3, 5, N) * u.solMass
    f_2 = 0.0 * np.ones(N)

    q = M_2 / M_1

    cos_i = np.random.uniform(0, 1, N)
    i = np.arccos(cos_i) * u.rad

    args = (P, M_1, M_2, f_1, f_2, i)
    ylabel = r"$\textrm{detection efficiency of black hole companions}$"

    return (args, ylabel)
示例#4
0
def draw_main_sequence_binary_population(N):
    # We are using the same Ps, qs, etc at each distance trial.
    P = np.random.lognormal(5.03, 2.28, N) * u.day  # Raghavan et al. (2010)
    q = np.random.uniform(0.1, 1, N)
    cos_i = np.random.uniform(0, 1, N)
    i = np.arccos(cos_i) * u.rad

    M_1 = salpeter_imf(N, 2.35, 0.1, 100) * u.solMass
    M_2 = q * M_1

    # Assume main-sequence systems.
    f_1 = M_1.value**3.5
    f_2 = M_2.value**3.5

    args = (P, M_1, M_2, f_1, f_2, i)
    ylabel = r"$\textrm{detection efficiency of main-sequence binary systems}$"

    return (args, ylabel)
示例#5
0
def draw_hot_jupiter_host_population(N):

    M_1 = salpeter_imf(N, 2.35, 0.1, 100) * u.solMass
    f_1 = 1.0 * np.ones(N)

    M_2 = 10 * np.ones(N) * constants.M_jup.to(u.solMass)
    f_2 = 0.0 * np.ones(N)

    q = M_2 / M_1

    cos_i = np.random.uniform(0, 1, N)
    i = np.arccos(cos_i) * u.rad

    P = np.random.uniform(5, 10, N) * u.day

    args = (P, M_1, M_2, f_1, f_2, i)
    ylabel = r"$\textrm{detection efficiency of hot jupiters}$"

    return (args, ylabel)