Skip to content

Syzygy

A fast, flexible, direct n-body integrator written in pure Julia.

Syzygy

Syzygy.jl is a direct N-body simulator for astrophysical applications written in Julia. This code is mainly aimed at simulating and visualizing the dynamics of hierarchical multistar systems and planetary systems, but it also supports non-hierarchical configurations. The package uses the DifferentialEquations.jl ecosystem to solve the governing differential equations, making this code highly performant and flexible, allowing for, e.g., both fixed and adaptive timestepping with adjustable error tolerances, easy code injection with callbacks, and of the choice of a wide array of ODE solvers.

julia
using Plots, Syzygy

unstable_triple = multibodysystem([2.0, 1.0, 1.5]u"Msun",
                                  semi_major_axes=[1.0, 4.0]u"AU",
                                  eccentricities=[0.0, 0.4])
res = simulate(unstable_triple, t_sim=4)
sol = to_solution(res)
orbitplot(sol, dims=[1, 2])

Warning

This package is still being developed, so certain features may not work as expected. If you want to use this package, please make sure that you perform tests to ensure that your results are as you expect.