def nbod_problem():
    t0 = 0
    tf = 0.08
    y0 = fnbod.init_fnbod(2400)
    y_ref = np.loadtxt("reference.txt")
    # compare_speedup(nbod_func, y0, t0, tf, y_ref, "nbod_problem", run_odex_code=True)
    compare_speedup(nbod_func, y0, t0, tf, y_ref, "nbod_problem")
def nbod_problem_dense(num):
    t0 = 0
    tf = 0.08
    t = np.linspace(t0, tf, num=num, endpoint=True)
    y0 = fnbod.init_fnbod(2400)
    y_ref = np.loadtxt("reference_nbod_dense.txt")
    compare_performance_dense(nbod_func, y0, t, y_ref, "nbod_problem_dense")
def nbod_problem():
    t0 = 0
    tf = 0.08
    y0 = fnbod.init_fnbod(2400)
    y_ref = np.loadtxt("reference.txt")
    results = compare_performance(nbod_func, y0, t0, tf, y_ref, "nbod_problem")
    return results
def test5():
    bodys = 400
    n = 6*bodys
    print("n = " + str(n))
    t0 = 0
    tf = 0.08
    y0 = fnbod.init_fnbod(n)
    return tst_parallel_vs_serial(f_5, t0, tf, y0, title="tst_parallel_vs_serial w/ N = " + str(n))
def nbod_dense_reference(num):
    t0 = 0
    tf = 0.08
    y0 = fnbod.init_fnbod(2400)
    t = np.linspace(t0, tf, num=num, endpoint=True)
    tol = 1.e-15
    nsteps = 10.e5
    print 'computing reference solution to nbod problem (dense)'
    start_time = time.time()
    y = ex_p.ex_midpoint_explicit_parallel(nbod_func, None, y0, t, atol=tol, rtol=tol, mxstep=nsteps)
    y = y[1:]

    np.savetxt("reference_nbod_dense.txt", y.real)
    print 'reference solution saved in reference_nbod_dense.txt , it took', time.time() - start_time, ' s'
    return y
def cprofile_tst():
    bodys = 200
    n = 6*bodys
    tol = 10**(-6)
    print("n = " + str(n))
    print("tol = " + str(tol))
    t0 = 0
    tf = 3
    y0 = fnbod.init_fnbod(n)
    # print("serial")
    # _, _, h_avg, k_avg = ex_s.ex_midpoint_serial(f_5, t0, tf, y0, atol=tol, rtol=tol, adaptive="order")
    print("parallel")
    _, infodict = ex_p.ex_midpoint_parallel(f_5, y0, [t0, tf], atol=tol, rtol=tol, adaptive="order", full_output=True)
    h_avg, k_avg = infodict['h_avg'], infodict['k_avg']
    print("h_avg = " + str(h_avg) + "\tk_avg = " + str(k_avg))
def nbody_rhs_reversed(t, y):
    return fnbod.fnbod(y, t)


brusselator = brusselator_setup()

kdv = kdv_setup()

burgers = burgers_setup()

nbody = Problem(name="nbody",
                rhs=nbody_rhs,
                rhs_reversed=nbody_rhs_reversed,
                jacobian=None,
                solout=None,
                output_times=[0, 0.08],
                y0=fnbod.init_fnbod(2400),
                atol=None,
                size=None)

vdpol = Problem(name="vdpol",
                rhs=vdpol_rhs,
                rhs_reversed=vdpol_rhs_reversed,
                jacobian=vdpol_jac,
                solout=None,
                output_times=np.arange(0, 13, 1.),
                y0=np.array([2., 0.]),
                atol=None,
                size=None)