Introduction
Code Philosophy
This code offers one approach for solving the gravitational N-body problem. The basic problem is as follows: you have a system of N particles (stars, in our case) they are all interacting with one another via the gravitational force. How does the system evolve over time? There are several ways to solve the N-body problem, each method having its pros and cons. The two most common methods in use today are the directy N-body method and the Monte Carlo method. CMC uses the Monte Carlo method of Henon (1971). We will discuss them both briefly before moving into a more detailed discussion of our MC technique.
In the direct N-body method, the equations of motion for each star are solved directly by summing the gravitational force of every star on every star. Each star feels a gravitational pull from all N-1 other stars, and in each timestep, their positions and velocities are updated according to the total acceleration force it feels over that timestep. This is the most exact method of solving the N-body problem, but it has its costs: the computation time scales as N2. The Monte Carlo method represents an approximate way to solve the N-body problem that makes use of three assumptions: first, that the dynamical evolution is dominated by two-body relaxation, and second, that the cluster has a sufficient number of particles that relaxation time of most stars is significantly longer than their orbital timescales.
These two assumptions are often referred to as the Fokker-Planck approximation, and are appropriate for large clusters like the globular clusters observed in our own galaxy (and the younger super star clusters observed in nearby galaxies). It is this limit that the Henon approach (and its descendants, such as CMC) operates. Our implementation further assumes spherical symmetry and orbit averaging (like Henon’s original implementation), which allows us to model old spherical star clusters significantly faster than direct N-body integrators. Unlike Henon’s original implementation, modern computer hardware and distributed memory parallelization allows CMC to create star-by-star realizations of the cluster, where each dynamical particle is an individual star, with as much additional physics (e.g. stellar evolution, strong dynamical encounters, binary formation, etc.) as the user desires. Integration is done on a relaxation timescale, with the code scaling as \(O(N \log N)\) in the number of particles.
Flowchart
Here we show the basic flow of decisions made during every CMC timestep. Each of these steps are described in one (or several of the CMC papers below). As an initial first guess, most of the relevant physics is described and properly cited in Pattabiraman et al. 2013. Otherwise, the refences below are