computation and astrophysics of the n-body problem · introduction to a simple n-body code...

162
Computation and astrophysics of the N-body problem Douglas Heggie School of Mathematics University of Edinburgh [email protected] Lecture 1

Upload: others

Post on 14-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Computation and astrophysics of the N-body

problem

Douglas Heggie

School of Mathematics

University of Edinburgh

[email protected]

Lecture 1

Page 2: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

2

Course outline (tentative)

1. The N-body problem and its astrophysical settings. Initial

conditions. Units. Introduction to a simple N-body code

(NBODY1). Example - cold collapse. Virialisation and virial

equilibrium.

2. Plummer’s model. Movie of orbital motions. Crossing time

scale. Core collapse - the movie. The relaxation time scale.

The structure of the simplest direct-summation N-body code:

constant, shared, time steps, Euler & Hermite integrators.

3. Quality control & error growth. Complexity. Acceleration of

force computations with software & hardware. GPUs.

Regularisation.

4. Refinements: external effects (tides), internal effects (stellar

evolution, binary stellar evolution, collisions). The NBODY

series of integrators. starlab. Example - cluster in a tidal field

(NBODY6[tt]).

Page 3: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

3

References

◮ Stellar Dynamics1. Galactic Dynamics, 2e James Binney and Scott Tremaine,

Princeton University Press, 2008, 885 pp.

2. Dynamical Evolution of Globular Clusters Lyman J. Spitzer Jr,

Princeton UP, 1988, 196 pp.

3. The Gravitational Million Body Problem, Douglas Heggie, Piet

Hut; Cambridge UP, 2003◮ N-body codes

1. Gravitational N-body simulations, Sverre J. Aarseth

Cambridge: CUP, 2003, 413pp

2. The Cambridge N-body Lectures, S.J. Aarseth, C.A. Tout, R.A.

Mardling, eds. Springer, LNP760, 2008, 402pp

3. Numerical Methods in Astrophysics: An Introduction, P.

Bodenheimer et al, CRC Press, 2006, 344pp

4. http://www.ast.cam.ac.uk/∼sverre/web/pages/nbody.htm

5. https://github.com/nbodyx/Nbody6ppGPU

6. http://www.ids.ias.edu/∼starlab/ (starlab)

7. http://amusecode.org/ (AMUSE)

Page 4: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

4

Applications of N-Body Schemes in Astrophysics

◮ the Galactic Centre (see http://www.astro.ucla.edu/

∼ghezgroup/gc/pictures/orbitsMovie.shtml )

◮ open clusters (M67 here)

◮ globular clusters (M4 here)

Page 5: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

5

Applications of N-Body Schemes in Astrophysics (continued)

◮ young dense clusters - Magellanic Cloud clusters

◮ galaxy dynamics - the Antennae (requires specialised

software because of large N)

Page 6: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

6

Applications of N-Body Schemes in Astrophysics (continued)

◮ cosmic structure (requires specialised software)

◮ planetary systems (requires specialised software)

Page 7: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

7

The N-body Problem

Page 8: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

7

The N-body Problem

◮ N point masses (this approximation is good while separation

of two stars is much greater than the sum of their radii)

Page 9: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

7

The N-body Problem

◮ N point masses (this approximation is good while separation

of two stars is much greater than the sum of their radii)

◮ classical gravitation and equations of motion (this

approximation is good except close to horizon of black hole, or

for close binaries emitting gravitational waves)

Page 10: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

8

Equations of motion

rr

r1

23

Force on 1 due to 2 is in the direction of r2 − r1, i.e. the unit vectorr2 − r1

|r2 − r1|, and has magnitude

Gm1m2

|r2 − r1|2.

Page 11: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

9

Equations of motion (continued)

Therefore force on 1 due to 2 isGm1m2(r2 − r1)

|r2 − r1|3. Therefore total

force on 1 is

m1r1 =

j=3∑

j=1,j,1

Gm1mj(rj − r1)

|rj − r1|3

In the N-body problem the equation of motion for body i is

ri = −G

N∑

j=1,,i

mj

ri − rj

|ri − rj |3

Page 12: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

10

Softening

The equation of motion is

ri = −G

N∑

j=1,,i

mj

ri − rj

|ri − rj |3

There is a singularity if |ri − rj | = 0. To avoid this, the denominator

is sometimes replaced by (|ri − rj |2 + ε2)3/2, where ε is a small

constant, the softening parameter. This approximation may be

justifiable if close encounters between particles are unimportant –

for example, in galaxy dynamics (with scaling by N). Not

necessarily good for modelling star clusters.

Page 13: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

11

Initial Conditions

These are 3N second-order ordinary differential equations, and

hence require 6N initial conditions. Usually one uses the three

cartesian components of position ri and the three components of

velocity ri of the N particles.

Example: cold collapse

The initial velocities are zero, and the initial positions are chosen

randomly, with (in this example) a uniform spatial distribution in a

sphere of some radius a.

Page 14: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

12

How to Simulate Cold Collapse

1. Go to the web page

http://www.ast.cam.ac.uk/∼sverre/web/pages/nbody.htm

2. Download nbody1.tar.Z

3. Uncompress it (“gunzip nbody1.tar.Z”)

4. Untar it (“tar xvf nbody1.tar”)

5. Go to the source subdirectory (“cd Real8”)

6. Edit the Makefile as follows◮ line 1: add “ -freal-4-real-8” after “-g”◮ line 2: replace “f77” by your fortran compiler (e.g. “gfortran”)◮ after line 2, add the line “FC = gfortran” (or your compiler)

7. Make the code (“make”)

8. Go to the test subdirectory (“cd ../test”)

9. Make a copy of the file intest and edit to the following:

1 1.0/25 1 200 1/0.01 0.1 10.0 2.0E-05 0.0/1 0 0 0 0 1 0 0 0 0

0 0 0 0 0/2.0 1.0 1.0/0.0 0.0 0.0 1.0 1.0

Page 15: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

13

How to Simulate Cold Collapse (continued)

(It is best to give the file a new name, such as cc.in, and keep the

old file intest. The changes are in boldface, and lines are here

delimited by “/” to save space, but you should keep the format of

intest.)

1. Run the code (“../Real8/nbody1 < cc.in”)

2. Watch the numbers fly past until the job completes or you

have to kill it (“Ctrl-c”)1

3. To save the output, rerun it with redirection of output

(“../Real8/nbody1 < cc.in > cc.out”)

1If the run fails or fails to complete in a few minutes, kill it. Then edit cc.in to

change the third number in line 2 of cc.in to some other positive integer, and try

again.

Page 16: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

14

Cold collapse: the output - p1

(Corresponds to slightly different input file.)

Page 17: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

15

Cold collapse: the output - p2

Page 18: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

16

Cold collapse: the Movie

Initial conditions:

◮ All velocities are zero

◮ Particles are distributed uniformly in a sphere

Page 19: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

17

Dynamic Equilibrium

Page 20: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

17

Dynamic Equilibrium

◮ The system “quickly” reaches a “steady state”

Page 21: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

17

Dynamic Equilibrium

◮ The system “quickly” reaches a “steady state”

◮ The steady state is in “dynamic equilibrium”, i.e. there is no

overal expansion or contraction of the system, or other bulk

motion, even though all particles are in motion.

◮ A dynamic equilibrium is also a state of “virial equilbrium”,

which can be analysed in terms of the Virial Theorem.

Page 22: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

18

The Virial Theorem

Define the total kinetic energy T , the total potential energy V , the

total energy E and the total “moment of inertia” I by

T =1

2

N∑

i=1

miv2i (Kinetic Energy)

V = −G

2

N∑

i=1

N∑

j=1,,i

mjmi

|ri − rj |(Potential Energy)

E = T + V (Total Energy)

I =N

i=1

mi |ri |2 (“Moment of Inertia”).

Then from the equations of motion we deduce

I = 4T + 2V (Virial Theorem)

E = constant (Energy Conservation)

Proofs: Binney and Tremaine, Sec 7.2.1; this lecture, last pages

Page 23: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

19

Virial Equilibrium

In dynamic equilibrium, I is approximately constant, and so I ≃ 0.

From the Virial Theorem I = 4T + 2V we deduce

2T + V ≃ 0.

Using total energy E = T + V we deduce

T + E ≃ 0⇒ T ≃ −E

and similarly V ≃ 2E.

Page 24: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

20

Mass, length and time scales

Page 25: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

20

Mass, length and time scales

◮ Total mass

M =N

i=1

mi

Page 26: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

20

Mass, length and time scales

◮ Total mass

M =N

i=1

mi

◮ Characterise system size by “virial radius” R defined by

V = −GM2

2R, where M is total mass

Page 27: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

20

Mass, length and time scales

◮ Total mass

M =N

i=1

mi

◮ Characterise system size by “virial radius” R defined by

V = −GM2

2R, where M is total mass

◮ Characterise speeds by (mass weighted) mean square speed

v2 =2T

M

Page 28: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

20

Mass, length and time scales

◮ Total mass

M =N

i=1

mi

◮ Characterise system size by “virial radius” R defined by

V = −GM2

2R, where M is total mass

◮ Characterise speeds by (mass weighted) mean square speed

v2 =2T

M

◮ Define time scale

tcr =2R

v(“Crossing time”)

Page 29: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

21

Other useful expressions and definitions

In virial equilibrium V = −2T , and so v2 =GM

2R.

The virial ratio is defined to be Q =T

|V |, and is 0.5 in virial

equilibrium.

Another measure of the size of the system is the half-mass radius,

the radius of a sphere containing the innermost half of the mass,

measured with respect to the “centre” of the system.

More generally, a “lagrangian radius” is the radius of the

sphere containing a given fixed fraction of the mass.

Observational astronomers may prefer the half-light radius, the

radius of a disk containing the innermost half of the light, since it

can be “easily” measured.

Page 30: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

22

Henon Units (aka N-body units)

This is a conventional system of units in which

G = 1

M = 1

R = 1

These are often used in N-body simulations.

Example

We have v2 =GM

2R.

Suppose a star cluster has M = 105M⊙,R = 5pc. To convert a

velocity from the N-body code to km/s, multiply by

GM

R, where G

is expressed in the same units (i.e. km/s, M⊙, pc), i.e. G ≃ 0.0043.

Page 31: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

23

Henon Units (continued)

We have

G = 1

M = 1

R = 1

In these units:

◮ The characteristic speed v2 =GM

2R=

1

2

◮ The crossing time tcr =2R

v= 2√

2

◮ The total energy E = −1

2Mv2 = −1

4

Page 32: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

24

Significance of the crossing time

Page 33: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

24

Significance of the crossing time

◮ Time scale of cold collapse

Page 34: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

24

Significance of the crossing time

◮ Time scale of cold collapse

◮ Time scale of approach to virial equilibrium

Page 35: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

24

Significance of the crossing time

◮ Time scale of cold collapse

◮ Time scale of approach to virial equilibrium

◮ Time scale of orbital motions in virial equilibrium (Lecture 2)

Page 36: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

25

The code NBODY1: input

The meaning of each input parameter is defined in the file define.f

in the source subdirectory. For illustration we use the file for the

cold collapse simulation:

1 0.5

25 1 200 1

0.01 0.1 10.0 2.0E-05 0.0

1 0 0 0 0 1 0 0 0 0 0 0 0 0 0

2.0 1.0 1.0

0.0 0.0 0.0 1.0 1.0

Page 37: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

25

The code NBODY1: input

The meaning of each input parameter is defined in the file define.f

in the source subdirectory. For illustration we use the file for the

cold collapse simulation:

1 0.5

25 1 200 1

0.01 0.1 10.0 2.0E-05 0.0

1 0 0 0 0 1 0 0 0 0 0 0 0 0 0

2.0 1.0 1.0

0.0 0.0 0.0 1.0 1.0

Line 1: 1 0.5

1. KSTART Control index (1: new run; >1: restart; 3: new

params).

Comment: runs can be restarted following a crash or other

accident

2. TCOMP Maximum computing time in minutes

Page 38: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

26

The code NBODY1: input line 2

Line 2: 25 1 200 1

1. N Total particle number.

2. NFIX Output frequency of data save or binaries (option 3 & 6

– see below).

Comment: There is a basic output interval. You need not

output the data or information on binaries at all such output

times.

3. NRAND Random number sequence skip.

Comment: initialises the random number generator

4. NRUN Run identification index.

Page 39: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

27

The code NBODY1: input line 3

Line 3: 0.01 0.1 10.0 2.0E-05 0.0

1. ETA Time-step parameter for total force polynomial.

Comment: this controls the accuracy of the numerical solution

of the equations of motion (see later)

2. DELTAT Output time interval in units of the crossing time.

Comment: In N-body units the crossing time is 2√

2 ≃ 3.

3. TCRIT Termination time in units of the crossing time.

4. QE Energy tolerance (stop if DE/E > 5*QE & KZ(2) ≤ 1).

Comment: the program stops if the relative change in energy

exceeds the stated value and the appropriate option is chosen

(see below)

5. EPS Softening parameter (square saved in EPS2).

Page 40: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

28

The code NBODY1: input line 4

Line 4: 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0

Note: This is the line of options. In general, a zero value indicates

that the option is not selected

1. 1 COMMON save on unit 1 if TCOMP > CPU or if TIME >

TCRIT.

Comment: COMMON is a block of variables which are

enough to restart the run, if desired.

2. 2 COMMON save on unit 2 at output (=1); restart if DE/E >

5*QE (=2).

Comment: if this value is 1, the COMMON variables are saved

every output time; if 2, and the accuracy of the run has

deteriorated, the code attempts to repeat the most recent part

of the run with higher accuracy (and carry on)

Page 41: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

29

The code NBODY1: input line 4 (continued)

Line 4: 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0

3 Basic data written to unit 3 at output time (frequency NFIX).

Comment: if this is positive, complete information on the

particles is saved in a binary file OUT3 at each output time.

4 Initial conditions on unit 4 (=1: output; =2: input).

Comment: if this value is 1 the code dumps the initial

conditions on a file called fort.4; if 2, the initial conditions are

read in from this file (usually called fort.4)

5 Initial conditions (=0: uniform & isotropic; =1: Plummer).

Comment: we used 0. The Plummer model is explained in

Lecture 2

6 Output of significant binaries.

7 Output of movie frames on unit 7.

Comment: you can experiment with this!

8 Generation of two subsystems (merger experiment).

Page 42: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

30

The code NBODY1: input line 4 (continued)

Line 4: 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0

9 Individual bodies printed at output time (MIN(5**KZ9,N)).

Comment: the value is referred to as KZ9, and can be used to

control how many particles are listed

10 No scaling of initial conditions.

Comment: i.e. use units of the input file fort.4, and do not

scale to N-body units

11 Modification of ETA by tolerance QE.

Comment: ETA controls the accuracy of the integration (see

above), and this option lets the code attempt to adjust this by

monitoring the relative change in energy.

12 Initial parameters for binary orbit.

Comment: if non-zero, the code reads the semi-major axis

and eccentricity of a binary formed by the first two particles

13 Escaper removal (R > 2*RTIDE; RTIDE = 10*RSCALE).

Comment: here RSCALE is the virial radius.

Page 43: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

31

The code NBODY1: input line 4 (continued)

Line 4: 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0

14 Adjustment of coordinates & velocities to c.m. condition.

Comment: uses a barycentric coordinate system

15 Ignored

Page 44: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

32

The code NBODY1: input line 5

Line 5: 2.0 1.0 1.0

1. ALPHAS Power-law index for initial mass function (routine

DATA).

Comment: the initial mass function of the stars is a power law,

i.e. f(m) ∝ m−α in the range BODYN < m < BODY1 (see

below)

2. BODY1 Maximum particle mass before scaling.

3. BODYN Minimum particle mass before scaling.

Comment: choosing BODY1 = BODYN gives equal masses.

The code interprets these as being in solar masses, and then

scales to N-body units internally.

Page 45: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

33

The code NBODY1: input line 6

Line 6: 0.0 0.0 0.0 1.0 1.0

1. Q Virial ratio (routine SCALE; Q = 0.5 for equilibrium).

2. VXROT XY-velocity scaling factor (> 0 for solid-body rotation).

Comment: adds rotation about the z-axis

3. VZROT Z-velocity scaling factor (not used if VXROT = 0).

Comment: if less than 1 the z-components of velocity are

reduced and the systems tends to flatten

4. RBAR Virial radius in pc (for scaling to physical units).

Comment: specifies the unit of length in parsecs

5. ZMBAR Mean mass in solar units.

Page 46: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

34

Cold collapse: the output - p1

The first four lines repeat most of the input parameters

Page 47: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

35

Cold collapse: the output (continued)

line 5: SCALING: SX = 0.44 E = -5.72E-01 M(1) = 4.00E-02 M(N)

= 4.00E-02 <M> = 4.00E-02

Comments:

1. E is the energy before scaling to N-body units

2. M(1),M(N) are the same as BODY1, BODYN (see above), but

now in N-body units.

3. <M> is the mean mass (N-body units)

line 6: SCALING PARAMETERS: R* = 1.00E+00 M* = 2.50E+01

V* = 3.28E-01 T* = 2.99E+00

Comment: scaling factors for length (to parsecs), mass (to solar

masses), velocities (to km/s), time (Myr, approximately)

Page 48: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

36

Cold collapse: the output (continued)

The following gives an example of the output produced at each

output time:

T = 0.9 Q = 0.05 STEPS = 154 DE = 0.000000 E = -0.250000 TC =

0.3

<R> = 1.89 RCM = 0.0000 VCM = 0.0000 AZ = 0.00000 T6 = 2

NRUN = 1

BINARY 1 10 0.040 0.040 -0.1 0.3652 1.3 0.5156 1.54 0.970 0

BINARY 6 15 0.040 0.040 -0.2 0.2525 2.2 0.3785 1.47 0.973 0

BINARY 8 9 0.040 0.040 -0.2 0.2602 2.1 0.4063 1.94 0.989 0

Line 1

1. Time in N-body units

2. Virial ratio

3. Number of integration steps taken (see below)

4. Change in energy (N-body units)

5. Total energy

6. Time in units of the crossing time

Page 49: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

37

Cold collapse: the output (continued)

T = 0.9 Q = 0.05 STEPS = 154 DE = 0.000000 E = -0.250000 TC =

0.3

<R> = 1.89 RCM = 0.0000 VCM = 0.0000 AZ = 0.00000 T6 = 2

NRUN = 1

BINARY 1 10 0.040 0.040 -0.1 0.3652 1.3 0.5156 1.54 0.970 0

BINARY 6 15 0.040 0.040 -0.2 0.2525 2.2 0.3785 1.47 0.973 0

BINARY 8 9 0.040 0.040 -0.2 0.2602 2.1 0.4063 1.94 0.989 0

Line 2

1. Virial radius

2. Distance of centre of mass from origin

3. Velocity of centre of mass

4. Angular momentum about the z-axis

5. Time in Myr (approximately)

6. Run number (as in input)

Page 50: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

38

Cold collapse: the output (continued)

T = 0.9 Q = 0.05 STEPS = 154 DE = 0.000000 E = -0.250000 TC =

0.3

<R> = 1.89 RCM = 0.0000 VCM = 0.0000 AZ = 0.00000 T6 = 2

NRUN = 1

BINARY 1 10 0.040 0.040 -0.1 0.365 1.3 0.5156 1.54 0.970 0

Line 3 (one line for each binary)

1. (2 numbers) Names of the two components

2. (2 numbers) Masses of the components (N-body units)

3. Internal energy of the binary (per unit reduced mass); this

excludes the energy of the centre of mass of the binary

4. Semi-major axis of the binary

5. Angular velocity (mean motion) of the binary

6. Separation of the components

7. Distance of the binary from the “centre” of the system

8. Eccentricity of the binary

9. Number of binary periods since t = 0

Page 51: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

39

Extracting useful information with awk

The typical output:

T = 0.9 Q = 0.05 STEPS = 154 DE = 0.000000 E = -0.250000 TC =

0.3

<R> = 1.89 RCM = 0.0000 VCM = 0.0000 AZ = 0.00000 T6 = 2

NRUN = 1

BINARY 1 10 0.040 0.040 -0.1 0.3652 1.3 0.5156 1.54 0.970 0

(Note that there are only three lines in the output file, but these

may be wrapped in the pdf you are reading.)

We can extract data with the linux command awk.

First, create a text file called (say) q.awk, containing the following

line:

{if ($1==”T”) print $3,$6}This means that we pick out only those lines of output beginning

with the string “T”, and from such lines print out the third and sixth

fields (fields being separated by spaces), i.e. the values of T ,Q.

Page 52: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

40

Extracting useful information with awk (continue)

First rerun the code but collect the output in a text file cc.out.

(Again the run may have to be killed after a short time). The

command is

../Real8/nbody1 < cc.in > cc.out

Then awk is run with

awk -f q.awk cc.out > cc.q

which means that awk is to pick up its instructions from the file

q.awk, act on the file cc.out, and direct its output to a new file cc.q.

Here is an example of cc.q (a table of T ,Q values)

0.0 0.00

0.3 0.01

0.6 0.02

0.9 0.05

1.1 0.11

1.4 0.23

Page 53: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

41

Plotting useful information with gnuplot

Start gnuplot (“gnuplot”), and then plot the file just produced:

gnuplot> plot ’cc.q’ w l

Note: “w l” means “with lines”; otherwise you just get points.

This produces a window with the following graph:

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 5 10 15 20 25 30

’cc.q’

Page 54: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

42

Plotting useful information with gnuplot (continued)

The plot can be improved and made permanent with a sequence

of commands like this:

gnuplot> set xlab ’Time

gnuplot> set ylab ’Virial ratio

gnuplot> set ter post

gnuplot> set out ’q.ps

gnuplot> replot

Then you can print or view the postscript file q.ps

Page 55: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

43

Proof of the Virial Theorem

“Moment of inertia”

I =N

i=1

mi(ri .ri)2.

Hence

I =N

i=1

2miri .vi

I =N

i=1

2mi(vi .vi + ri .vi).

The first term gives 4 times the kinetic energy, i.e. 4T . From the

equations of motion (above), the second term gives

−G

N∑

i=1

2miri .

N∑

j=1,,i

mj

ri − rj

|ri − rj |3= −G

N∑

j=1

2mjrj .

N∑

i=1,,j

mi

rj − ri

|rj − ri |3(1)

(swapping i and j).

Page 56: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

44

Proof of the Virial Theorem (Contd)

Therefore the second term gives half their sum, i.e.

−G

N∑

i=1

N∑

j=1,,i

mimj(ri − rj).ri − rj

|ri − rj |3= −G

∑∑ mimj

|ri − rj |,

the sum being over all distinct i, j between 1 and N. This is twice

the potential energy, because each pair is counted twice.

Hence I = 4T + 2V .

Page 57: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

45

Exercises from Lecture 1

1. Carry out the procedure of downloading NBODY1, running the

cold collapse simulation, and plotting the time-dependence of

the virial ratio.

Page 58: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

46

Computation and astrophysics of the N-body problem

Lecture 2

Outline of Lecture 1

1. Applications to star clusters

2. Equations of the N-body problem

3. Simulating cold collapse

4. The Virial Theorem; the crossing time; units and scaling

5. NBODY1: input, output, plotting

Page 59: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

47

Plummer’s model

◮ In the context of star clusters, a “model” is a prescription for

the distribution of the stars in phase space, i.e. the joint

distribution of position and velocity

Page 60: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

47

Plummer’s model

◮ In the context of star clusters, a “model” is a prescription for

the distribution of the stars in phase space, i.e. the joint

distribution of position and velocity

◮ Plummer’s model is a particular model of a system which is in

virial (and dynamic) equilibrium

◮ Convenient analytical distributions

◮ Density ρ(r) =3M

4πa3 (1 + r2/a2)5/2

◮ Potential φ(r) = − GM

(1 + r2/a2)1/2

◮ Velocity distribution at radius r : f(v) ∝(

−φ(r) − 1

2v2

)7/2

,

v2 < −2φ

In N-body units, G = M = 1 and a =3π

16.

Page 61: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

48

Plummer’s model in pictures

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

1

-3 -2 -1 0 1 2 3

ρ/ρ 0

r/a

-1

-0.9

-0.8

-0.7

-0.6

-0.5

-0.4

-0.3

-3 -2 -1 0 1 2 3Pot

entia

l (sc

aled

to -

1 at

the

cent

re)

r/a

0

0.5

1

1.5

2

2.5

0 0.2 0.4 0.6 0.8 1

Vel

ocity

(sp

eed)

dis

trib

utio

n (p

df)

v (scaled by the escape velocity)

Figure: Density, potential, velocity distribution, an orbit

Page 62: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

49

Models of stellar systems

◮ In the language of statistical physics, a system is specified by

the distrbution of particles in phase space, which has

coordinates (r, v).

◮ The distribution function is f(r, v, t), i.e. the number of stars in

a hypercube with sides dr, dv is f(r, v)drdv.

◮ Because particles are conserved, they obey a conservation

equation

∂f

∂t+ ∇r.(f r) + ∇v.(f v) = 0

⇒ ∂f∂t

+ ∇r.(fv) − ∇v.(f∇rφ(r, t)) = 0

⇒∂f

∂t+ v.∇rf − ∇rφ(r, t).∇vf = 0

This is the collisionless Boltzmann equation

Page 63: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

50

Solving the CBE ∂f/∂t + v.∇rf − ∇rφ(r, t).∇vf = 0

◮ Example: suppose that the potential φ(r) is time-independent,

and that f is some function of the particle energy

E = v2/2 + φ(r), i.e. f(r, v) = F(E).

◮ Then

∂f/∂t = 0

v.∇rf = F ′(E)v.∇rφ(r)

∇rφ(r, t).∇vf = F ′(E)∇rφ(r).v

◮ Hence this f satisfies the CBE with ∂f/∂t = 0, i.e. it is an

equilibrium (stationary) solution.

◮ In general, f is a solution if it is expressed as a function of

constants of the motion (e.g. E if the potential is independent

of t , and angular momentum if the potential is spherically

symmetric.) This roughly is Jeans’ Theorem.

Page 64: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

51

Self-consistent models

◮ Plummer’s model is given by F(E) = C |E |7/2 when E < 0, 0

otherwise, where C is constant.◮ In terms of f(r, v) = F(E), the space density is given by

ρ(r) = m∫

F(E)d3v, where m is the mass of one star.◮ For Plummer’s model

ρ(r) = 4πmC

√−2φ

0

(−φ − v2/2)7/2v2dv ,= C′(−φ)5, (2)

where C′ is another constant.◮ ρ and φ are also related by Poisson’s equation

∇2φ(r) = 4πGρ(r)◮ If we assume that φ is spherically symmetric (depending only

on r), for Plummer’s model this is

φ′′(r) + 2φ′(r)/r = 4πGC′(−φ(r))5.

◮ Solution: φ(r) = C′′(

1 +r2

a2

)−1/2

for suitable constants C′′, a.

Page 65: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

52

Page 66: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

53

Lessons from the simulations

Evolution on two time scales:

Page 67: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

53

Lessons from the simulations

Evolution on two time scales:

◮ orbital motions (crossing time scale; see Lecture 1)

◮ much slower evolution of the statistical distribution: evolutionof the central density

◮ This is the statistical result of numerous “close” encounters

between pairs of particles◮ This process is called “two-body relaxation”, or “collisional

relaxation”◮ It acts on a time scale called the “relaxation time”

Other observations:

◮ Plummer’s model is in dynamical equilibrium

◮ The slow increase in the central density is called “core

collapse”

◮ Note: the core is the name given to the region in the centre

where the density is nearly uniform

Page 68: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

54

(Two-body) relaxation time

◮ Local definition tr =0.065v3

ρmG2 ln γNwhere

◮ v is the velocity dispersion (root mean square velocity)◮ ρ is the space (mass-)density◮ m is the particle mass◮ γ is a constant (about 0.11 for equal masses)◮ N is number of particles

◮ Global definition: half-mass relaxation time

trh = 0.138N1/2r3/2

h

m1/2G1/2 ln(γN), where

◮ rh is the half-mass radius (containing the innermost half of the

system; see Lecture 1); comparable with the virial radius

◮ Recall (lecture 1) 〈v2〉 = GNm

2R◮ Mean density inside rh is 0.5Nm/(4πr3

h/3)

Page 69: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

55

“Derivation” of the relaxation time

◮ Consider a distant encounter between two stars at distance p

(impact parameter, which is approximately the distance of

closest approach in a distant encounter). Let v be relative

speed.

◮ Acceleration at closest approach is Gm/p2, duration ∼ p/v◮ Hence change of velocity has magnitude ∆v ∼ Gm/(pv).◮ After many encounters, total transverse change of velocity is

nearly zero. Therefore we measure the strength of two-body

encounters by summing (∆v)2.

Page 70: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

56

“Derivation” of the relaxation time (contd)

◮ ∆v ∼ Gm/(pv).◮ Let n by the number-density of stars.

◮ In time t the number of encounters within distance p is of

order n.πp2.vt

◮ The number between p and p + dp is of order n.π2p.dp.vt◮ Hence the sum of (∆v)2 over this time is

(∆v)2 ∼∫

nvt

(

Gm

pv

)2

pdp

=ntG2m2

v

dp

p

Page 71: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

57

“Derivation” of the relaxation time (contd)

(∆v)2 ∼ntG2m2

v

dp

p

=ntG2m2

v[ln p]

pmaxpmin

◮ For pmax we take the radius of the cluster, say the virial radius

R◮ For pmin we take the value at which the assumption of small

deflection breaks down, i.e. ∆v ∼ v, or p ∼ Gm/v2.◮ Then [ln p]pmax

pmin∼ ln(Rv2/(Gm))

◮ By the virial theorem, 2T + V ≃ 0. Therefore

Nm〈v2〉 −GN2m2/(2R) ≃ 0, and so R〈v2〉/(Gm) ≃ N/2

◮ The total effect of encounters becomes important when∑

(∆v)2 ≃ v2, i.e. at a time t ∼ v3/(G2m2n ln N).

Page 72: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

58

Dynamical friction

◮ The assumption that the average of ∆v is negligible is only

true for the component orthogonal to the space velocity of the

star.

◮ The longitudinal component (parallel to the velocity v of the

star) is of the form∑

∆v‖ ∼ −vt/tr .

◮ Because the effect is in the opposite direction to v it is called

“dynamical friction”

◮ The statistical effect of encounters is a balance between the

“dissipative” effect of dynamical friction and the “heating”

effect described by∑

(∆v)2.

◮ These effects drive the velocities towards a Maxwellian

distribution

◮ Because high-speed stars escape, this distribution is never

achieved.

Page 73: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

59

Significance of the relaxation time

◮ Time scale of core collapse - here is central density v. time{ 25 {

Source: Makino 1996

Page 74: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

60

Significance of the relaxation time (cont)

◮ Time scale of escape (actually several/many tr )

Source: Baumgardt+ 2002

Page 75: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

61

Significance of the relaxation time (cont)

◮ Time scale of mass segregation (if there is a distribution of

masses, the heavier particles sink to the centre on a time

scale which is a fraction of tr )

Mean mass in Lagrangian shells against time (Source:

Giersz+ 1996)

Page 76: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

62

Why does core collapse happen?

◮ Relaxation acts like collisions in a gas: it causes “conduction”

of energy from warmer regions (where the typical stellar

speeds are large, i.e. in the core) to cooler (where the speeds

are smaller, i.e. in the outer “halo”)

◮ Stars in the core are “cooled”, which makes them fall nearer to

the centre, and speed up; stars in the halo are “heated”, which

makes them move further from the centre, and slow down.

◮ This new “temperature” profile accentuates the temperature

gradient, and the collapse of the core. There is an

accelerating “gravothermal runaway” (or “gravothermal

catastrophe”).

◮ The time scale of core collapse is the relaxation time scale.

Page 77: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

63

The negative specific heat of self-gravitating systems

◮ Virial theorem I = 4T + 2V

◮ Virial equilibrium: 4T + 2V ≃ 0

◮ Energy E = T + V , and so 2T + 2E ≃ 0

◮ Initial state T0,E0 ≃ −T0

◮ Suppose system suddenly loses a little kinetic energy.◮ New state has E1 = T1 + V1 ≃ T1 + V0 < T0 + V0 = E0.◮ New state virialises with kinetic energy T ′1 = −E1 > −E0 = T0

◮ Thus, although kinetic energy was removed, the new kinetic

energy is larger than the old kinetic energy◮ Strictly, the virial theorem does not apply (without modification)

when applied to part of a system

◮ Example: an artificial satellite, subject to air drag, speeds up

as it falls onto a lower orbit.

Page 78: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

64

The Two Types of Stellar Dynamics

◮ Collisional stellar dynamics deals with phenomena on time

scales of a few trh (open and globular star clusters; some

galactic nuclei; core collapse; mass segregation)

◮ Collisionless stellar dynamics deals with phenomena on time

scales much less than trh (spiral structure, galaxy collisions

(!), virialisation)

◮ In the context of the phrase “Collisional stellar dynamics” the

“collisions” are gravitational two-body encounters.

Page 79: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

65

Post-collapse evolution

Depends on boundary conditions:

◮ “isolated” system: binaries form in the core, liberating energy,

which expands the system on the time scale trh (by a

feedback mechanism). As rh expands, trh increases. The

system very slowly loses mass

Page 80: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

66

Formation of Binaries - an example

-25

-20

-15

-10

-5

0

5

10

15

20

-8 -6 -4 -2 0 2 4

Page 81: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

67

The dynamics of binary stars

◮ The dynamics of a binary star is a two-body problem, whose

solution is well known (“Kepler’s problem”)◮ A binary has two kinds of dynamical degrees of freedom

◮ internal, i.e. the relative motion of the two stars (relative speed

v), and their gravitational interaction (separation r)◮ external, i.e. the motion of the barycentre (centre of mass) of

the two stars (speed V )

◮ The energy of a binary consisting of masses m1,m2 is

E =1

2(m1 + m2)V

2 +1

2

m1m2

m1 + m2v2 − Gm1m2

r

=1

2(m1 + m2)V

2 −Gm1m2

2a,

where a is the semi-major axis of the Kepler orbit

◮ An encounter of a binary with a single star is a three-body

problem, and has no known general solution (example)

Page 82: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

68

Three-body interactions

◮ If the three stars come to comparable distances, they

exchange energy

◮ On average, the exchange of energy can be understood as anapproach to equipartition

◮ If v ≫ V then the internal degrees of freedom tend to lose

kinetic energy in the encounter. Therefore the energy of the

binary becomes more negative, and a decreases.◮ If v ≪ V then the internal degrees of freedom tend to gain

kinetic energy, and a increases.

Page 83: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

69

Hard and soft binaries

◮ Reminder: v is the relative speed of the components of a

binary, V is its speed relative to an incoming third star.

◮ Now v2 ∼ Gm/a (e.g. for a circular binary with equal masses

m), and V2 ∼ σ2, the rms speed of stars in the cluster which

the binary encounters.

◮ The condition v2 ∼ V2 is thus roughly the condition

Gm/a ∼ σ2, or a ∼ Gm/σ2.

◮ Thus if a ≪ Gm/σ2 then v2 ≫ V2, and a tends to decrease;

and if a ≫ Gm/σ2, a tends to increase.

◮ Binaries with a ≪ Gm/σ2 are called (very) hard, and tend to

become harder; binaries with a ≫ Gm/σ2 are called (very)

soft, and tend to become softer.

Page 84: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

70

The formation rate of binaries

◮ Only hard binaries are of interest, i.e. a < Gm/σ2.◮ Consider a system of density n stars per unit volume◮ In time t, one star moves typical distance σt◮ It encounters another star within a distance a if n.πa2.σt ∼ 1,

i.e. t ∼ 1/(πnσa2)

Page 85: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

71

The formation rate of binaries (contd)

◮ The probability that there is a third star within a distance ∼ a

at this time is of order na3, and so the rate of formation of a

hard binary is

nb ∼ (n/t)na3 per unit volume

∼ n3σa5

∼ G5m5n3

σ9

where we have set a ∼ Gm/σ2 (threshold between hard and

soft binaries)

◮ Because of the n-dependence, binary formation is

concentrated in the core

◮ In core collapse n, σ→ ∞ and the volume tends to zero. But

n wins.

Page 86: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

72

Energy generation by binaries

◮ When a binary forms in a three-body encounter, the energy of

the three stars long before the encounter is their kinetic

energy T0. (Their potential energy is small when they are far

apart.)

◮ After the encounter, there is a binary with negative energy (in

its barycentric frame).

◮ By energy conservation, the kinetic energy of the two

products of the encounter (the barycentre of the binary, and

the single star) must exceed T0.

◮ Encounters with an existing hard binary tend to have the

same effect, i.e. an increase in the kinetic energy of the

barycentre of the binary and the single star.

◮ Binary formation and evolution are an energy-generating

mechanism, like nuclear reactions in a star.

◮ In this way, binaries can halt core collapse.

Page 87: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

73

Post-collapse evolution (again)

Depends on boundary conditions:

◮ “isolated” system: binaries form in the core, liberating energy,

which expands the system on the time scale trh (by a

feedback mechanism). As rh expands, trh increases. The

system very slowly loses mass

Page 88: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

74

Post-collapse evolution (continued)

◮ “tidally limited” systems: stars escape (roughly speaking) at a

tidal radius rt , where external forces become dominant (see

Lecture 4). Mass is lost on time scale trh ; rt contracts, rh

contracts (eventually). System dissolves in few trh .

0.01

0.1

1

10

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

Rad

ius

(N-b

ody

units

)

Time (Myr

N = 8K, with stellar evolution

Plotted (from the top): rt , rh and the 1% Lagrangian radius

(see Lecture 1)

Page 89: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

75

Post-collapse evolution (continued)

In fact stars escape along “tidal tails”. Here is the example of Pal 5:

Page 90: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Computation and astrophysics of the N-body problem

Lecture 3

Page 91: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

77

Outline of Lecture 2

1. Plummer’s model

2. Two-body relaxation, dynamical friction

3. Core collapse, long-term evolution

4. Dynamics of binaries

Page 92: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

78

N-body codes

The equations of motion to be integrated are

ri = −G

N∑

j=1,,i

mj

ri − rj

|ri − rj |3

(Lecture 1).

These can be written in the equivalent form

ri = vi

vi = ai = −N

j=1,j,i

Gmj

ri − rj

|ri − rj |3

where ri , vi are the position and velocity of the ith particle.

Page 93: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

79

The Integration Algorithm

Example: Euler method Algorithm:

ri(t +∆t) = ri(t) + ∆t vi(t)

vi(t +∆t) = vi(t) + ∆t ai(t)

where ∆t is the “time step”. In this approximation, the velocity and

acceleration of the particle are held constant for the duration of the

time step.

Page 94: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

80

Accuracy of the Euler Method

◮ A more accurate integrator for the position is Taylor’s

Theorem:

ri(t +∆t) = ri(t)+∆t vi(t)+1

2(∆t)2 ai(t)+

1

6(∆t)3 ji(t)+ . . . ,

where ji = ai , i.e. the derivative of the acceleration, called the

“jerk”.

◮ In Euler’s algorithm we ignore all except the first two terms.

This may be a satisfactory approximation if the series

converges sufficiently rapidly.

◮ The radius of convergence of a Taylor Series is governed by

the “distance” to the nearest singularity of the function being

expanded. Here, this means the maximum value of ∆t for

which the function ri(t +∆t) is well behaved.

◮ Thus ∆t ≪ r/v, where v is the speed, and r is the distance to

the nearest neighbour

Page 95: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

81

Time Step Control: Practice

The Taylor series for ri is

ri(t +∆t) = ri(t) + ∆t vi(t) +1

2(∆t)2 ai(t) +

1

6(∆t)3 ji(t) + . . . .

This converges rapidly if 16(∆t)3 |ji(t)| ≪ 1

2(∆t)2 |ai(t)| (and similar

relations between successive pairs of terms), i.e. if

∆t ≪ |ai ||ji |,

This criterion would work well except if, by chance, the

denominator were small. Therefore the criterion of choice

incoporates several such ratios:

∆t =

(

η|ai |/|ji |+ |ji |/|dji/dt |

|d2ji/dt2|/|dji/dt |+ |dji/dt |/|ji |

)1/2

.

Page 96: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

82

Choices of Time Step

∆t =

(

η|ai |/|ji |+ |ji |/|dji/dt |

|d2ji/dt2|/|dji/dt |+ |dji/dt |/|ji |

)1/2

.

This expression varies with time, and is different for different

particles. The following implementations are possible.

◮ Fixed time step (the minimum over all particles for the entire

simulation): too short, can’t be predicted - impractical

◮ Variable shared time step (the minimum over all particles at

the current time) - forces all particles to take same ∆t -

inefficient.

◮ Variable individual time step - near-optimal, but requires

extrapolation.

◮ Block time steps (∆t = 2−k , k = 0, 1, 2, . . .) - shares

extrapolation

Page 97: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

83

Individual Variable Time Steps

����

����

����

����

����

����

����

����

����

����

����

��������������������

����

����

����

����

��������

����

������������������������

����

����

����

����

����

����������

Par

ticl

e

1

2

3

4

5

6

7

8

9

10

Time

etc....

Extrapolation step: rj(t + δt) = rj(t) + δtvj(t)

Page 98: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

84

The Hermite Integrator

A generalisation of Euler.

First stage:

Euler: ri := ri + vi∆t

vi := vi + ai∆t

Hermite: ri := ri + vi∆t +1

2ai∆t2 +

1

6ai∆t3

vi := vi + ai∆t +1

2ai∆t2

followed by a second stage (corrector) involving values of ai , ai at

the end of the time step (Hermite only).

Page 99: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

85

The Hermite Integrator: Correction Step

Let v, a, j be velocity, acceleration and jerk at the start of the step,

and v′, a′, j′ be the values at the end (computed after the first

stage). Then the corrected formulae are

ri := ri +1

2(vi + v′i )∆t − 1

10(a′i − ai)∆t2 +

1

120(ji + j′i )∆t3

vi := vi +1

2(ai + a′i )∆t − 1

12(j′i − ji)∆t2.

Page 100: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

86

Computation of the Jerk

The acceleration is

ai = −G

N∑

j=1,,i

mj

ri − rj

|ri − rj |3,

and so the jerk is

ai = −G

N∑

j=1,,i

mj

(

vi − vj

|ri − rj |3− 3

(vi − vj).(ri − rj)

|ri − rj |5(ri − rj)

)

.

Page 101: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

87

Basic structure of an N-body code

1. Initialisation of ri , vi , tnexti (update time = ti +∆ti), ai , ai, all i.

2. Choose i minimising tnexti

3. Extrapolate all rj , vj to tnexti

4. Compute new ai , ai

5. Correct new ri , vi (Hermite integrator)

6. Compute new tnexti

7. Repeat from step 2

Notes

◮ this does not include block time steps

◮ this is the basic structure of NBODY1, except for the choice of

integrator. (The integrator is described in Bodenheimer et al).

Page 102: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

88

Some Simple N-Body Codes with Variable Individual Time

Steps

1. Binney & Tremaine 1e, 1987, PUP, Appendix 4.B (fortran)

2. Heggie & Hut, The Gravitational Million-Body Problem, 2004,

CUP Appendix A, (matlab, C)

3. Hut & Makino, The Art of Computational Science (ruby)

http://www.artcompsci.org/

4. http://www.nbabel.org/codes

(C++,CUDA,F95,IDL,Java,PerlDL,PyC++,Python,R,etc.)

Note: none of these codes would reach beyond core collapse in a

reasonable time, because of the appearance of binary stars at that

point.

Page 103: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

89

Quality control

How do you know that the results of a simulation are correct?

◮ There are no useful exact solutions

◮ Conserved quantities:

1. Momentum

2. Angular Momentum

3. Energy.

The most sensitive is energy.

Output from NBODY1:

T = 1.4 Q = 0.23 STEPS = 486 DE = 0.000000 E = -0.250000

TC = 0.5

<R> = 1.53 RCM = 0.0000 VCM = 0.0000 AZ = 0.00000 T6 =

4 NRUN = 1

BINARY 6 15 0.040 0.040 -0.2 0.1840 3.6 0.0741 1.50 0.861 0

BINARY 8 9 0.040 0.040 -0.2 0.2517 2.2 0.1231 1.84 0.979 0

Page 104: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

90

Quality control (continued)

◮ (continued) Change in energy per output time

-6e-05

-4e-05

-2e-05

0

2e-05

4e-05

6e-05

8e-05

0 2 4 6 8 10

Ene

rgy

erro

r pe

r ou

tput

tim

e

Time

Cold collapse: N = 1024

◮ Are your answers reasonable?

Page 105: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

91

Growth of Errors in N-body simulations

Experiment: start two N-body simulations with slightly different

initial conditions (say, one coordinate of one particle differing by

10−14). How fast do the differences grow?

Page 106: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

92

Growth of Errors in N-body simulations (continued)

◮ The growth of errors is exponential

◮ The time scale (in units of the crossing time) varies very

slowly with N

◮ For a Plummer model, with equal masses, it is of order 0.1tcr .

◮ Growth of error approximately 1018 when

exp(t/(0.1tcr) = 1018, i.e. t ≃ 4tcr ≃ 12N-body units

◮ After a short time the positions and velocities of particles are

wrong

◮ We assume that the statistical properties of the simulation are

correct

Page 107: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

93

“Complexity”

Recall structure:

1. Initialisation of ri , vi , tnexti (update time = ti +∆ti), ai , ai, all i.

Done once

2. Choose i minimising tnexti Proportional to N

3. Extrapolate all rj to tnexti Proportional to N

4. Compute new ai , ai Proportional to N

5. Correct new ri, compute new vi (Hermite integrator)

6. Compute new tnexti

7. Repeat from step 2

For each time step ∆t , the computational effort is approximately

proportional to N.

Page 108: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

94

“Complexity” (continued)

Typical time step is ∆t ∼r

v, where v is typical speed and r is

typical distance to nearest neighbour, i.e. R/N1/3, where R is the

virial radius. In Henon (N-body) units (Lecture 1) v ∼ 1, R = 1,

and so ∆t ∼ N−1/3.

Each time step takes of order N operations, and there are N

particles. Hence the computational effort per N-body time unit is of

order N.N.N1/3 = N7/3.

Core collapse takes a few relaxation times, andtrh

tcr∝ N/ ln γN

(Binney & Tremaine,Sec.1.2.1), where tcr = 2√

2. Hence the

computational effort to core collapse varies as N10/3/ ln γN, or

roughly N3.

Page 109: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

95

The Development of N-body Simulations in History

Though computers have doubled in speed every 18 months until

recently (Moore’s Law), they have doubled in N much more slowly:

about a factor 10 every 10 years.

10

100

1000

10000

100000

1e+06

1960 1970 1980 1990 2000 2010

N

Date

von Hoerner

Terlevich

Inagaki

Aarseth HeggieSpurzem Aarseth

Makino

Aarseth

Baumgardt MakinoHurley

Heggie

Wang

Page 110: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

The Challenge of Milky Way Globular Clusters for N-body

7

7.5

8

8.5

9

9.5

10

10.5

-10 -9 -8 -7 -6 -5 -4 -3 -2 -1

log

t rh (

yr)

MV

The Globular Clusters of the Milky Way

47 Tuc

Pal 14

M4

1 day

300 years

M22

Figure: Contour lines of computational effort at intervals of 1dex

Page 111: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

97

Three Bottlenecks in Each Time Step

The following stages are proportional to N in the basic structure of

an N-body code:

◮ Choose i minimising tnexti Can be made proportional to

N1/2 (see NBODY1)

◮ Extrapolate all rj to tnexti Can be reduced by use of “blocktime steps” (mentioned earlier in this lecture)

◮ Group together particles which have very similar update times.

The extrapolation is shared among them. Still proportional to

N, but much smaller importance.

◮ Compute new ai , ai This is the main residual bottleneck

◮ Software solutions:◮ Neighbour scheme; incorporated in NBODY2◮ Tree codes (hierarchical schemes): see Bodenheimer et al◮ Grid-based methods, e.g. finite differences

Page 112: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

98

Accelerating force calculation: hardware

1. Parallel computation. Example (code fragment of NBODY1,

showing calculation of force on particle I)

DO 10 J = 1,N

IF (J.EQ.I) GO TO 10

A1 = X(1,J) - XI

A2 = X(2,J) - YI

A3 = X(3,J) - ZI

RIJ2 = A1*A1 + A2*A2 + A3*A3 + EPS2

A5 = BODY(J)/(RIJ2*SQRT(RIJ2))

FIRR(1) = FIRR(1) + A1*A5

FIRR(2) = FIRR(2) + A2*A5

FIRR(3) = FIRR(3) + A3*A5

10 CONTINUE

The calculation of A1*A5, A2*A5, A3*A5 can be done

simultaneously for different particles J, because there is no data

dependency: the result of one calculation does not affect any other.

Page 113: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

99

Accelerating force calculation: hardware (continued)

Parallel computers (continued)

◮ Calculations for different J-particles can be farmed out to

different processors on the one parallel computer, and/or

different cores on a single processor.

◮ For supercomputers or large clusters, best code is

NBODY6++

(https://github.com/lwang-astro/betanb6pp/branches)

◮ For low-budget users, best option is video cards: Graphics

Processing Unit (GPU)

◮ £200 (5000 CZK) each,

speedup x100

◮ Code: NBODY6 + GPU2

(http://www.ast.cam.ac.uk/∼sverre

/web/pages/nbody.htm)

Page 114: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

100

Software refinements

Close encounters and few-body subsystems

Two problems when particles come very close together:

1. Subtraction of positions of two close neighbours causes an

increase in relative rounding error

2. Reduced time step, and the simulation may slow down

dramatically.

Page 115: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

101

Close encounters and binaries. I. Offset “regularisation”

Suppose particles i, j form a bound pair, or experience a close

encounter. Use offset variables (Jacobi coordinates) r,R defined

as

R =miri + mjrj

mi + mj

r = ri − rj ,

and write equations of motion in terms of r,R: e.g.

r = −G(mi + mj)r

|r|3+ a′i − a′j ,

where ′ means we omit force due to i, j.

Advantage: avoids rounding error in repeated calculation of ri − rj.

Note: R is centre of mass position vector, r is position of particle j

relative to particle i

Page 116: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

102

Close encounters and binaries. II. KS regularisation

◮ Singularity in

r = −G(mi + mj)r

|r|3+ a′i − a′j

requires small time steps for close and/or eccentric binaries.

◮ KS regularisation is subtle change of variables which removes

the singularity.

Page 117: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

103

Example: one-dimensional regularisation

Unperturbed binary motion is

x = − 1

x2

where we have scaled to units such that G(mi + mj) = 1.

Introduce new variables z, τ (transformed coordinate and time)

such that

x = z2

dt

dτ= x

Page 118: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

104

One-dimensional regularisation (continued)

Since x = z2, x = 2zz.

Since dt/dτ = x,

x = 2zz′dτ

dtwhere ′ means d/dτ

=2zz′

xsince dt/dτ = x

=2z′

z.

Differentiating again with repect to time gives similarly

x =2z′′

z3− 2

z′2

z4

= −1

x2(equation of motion)

= −1

z4

Page 119: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

105

One-dimensional regularisation (continued)

We have

2z′′

z3− 2

z′2

z4= −

1

z4

Hence

z′′ =z′2

z−

1

2z

=1

2z

(

2z′2

z2−

1

z2

)

=1

2z

(

1

2x2 −

1

x

)

=1

2hz,

where

h =1

2x2 −

1

x.

Page 120: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

106

One-dimensional regularisation (continued)

Now

h =1

2x2 − 1

x

is just the energy of the binary (per unit [reduced] mass); the

kinetic energy is x2/2, the potential energy is −1/x. Thus in the

transformed equation of motion

z′′ =1

2hz,

the coefficient of z is constant. This is the simple harmonic

oscillator equation.

Bottom line: we have transformed the one-dimensional Kepler

problem

x = − 1

x2

(which is singular at x = 0) into the simple harmonic oscillator

equation, which is regular everywhere.

Page 121: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

107

Two-body regularisation: practicalities

Recall: regularisation is the process which transforms the Kepler

equation of motion into the simple harmonic oscillator equation. It

was established in the one-dimensional case.

◮ Need a three-dimensional version. This exists and is called

KS (or quaternion) regularisation.

◮ Candidates for regularisation recognised by short time steps

◮ Deregularisation if the binary is too strongly perturbed

◮ Still requires short time step for close binary

◮ Freeze unperturbed binaries

◮ Code: NBODY3

Page 122: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

KS regularisation

◮ quaternions are a generalisation of complex numbers

◮ A quaternion is written as a + ib + cj + dk , where the units

i, j, k satisfy i2 = j2 = k2 = −1 and ijk = −1. Hence

−i = i2jk = −jk and, more generally, ki = j, ij = k . Their

arithmetic is non-commutative.◮ Every quaternion has a

conjugate defined to be

a − ib − jc − kd.

◮ Three-vectors r = (x , y , z)can be mapped to the pure

imaginary quaternions

ix + jy + kz

◮ Any three-vector (written as a quaternion) can be expressed

as ix + jy + kz = qiq for some quaternion q.

◮ This is the generalisation of the one-dimensional

transformation x = z2.

Page 123: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

KS regularisation (contd)

◮ The same time-transformationdt

dτ= r is used

◮ A further assumption that qiq = qi ˙q is made

◮ Then the equation of Kepler motiond2r

dt2= −

Gmr

r3transforms

again tod2q

dτ2=

h

2q.

◮ See Heggie & Hut, ch.15

◮ In practice, the transformations are written in terms of spinors

(2 × 2 complex matrices) or 4 × 4 real matrices

Page 124: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

110

Higher-order subsystems: triples, quadruples, etc

◮ hierarchical triples are binaries constantly perturbed by a third

body: there is a procedure called “slow-down” which follows

secular perturbations with (much) larger time step

�� ��

�� ��

��� ���

◮ non-hierarchical triples, quadruples: chain regularisation, a

generalisation of offset and KS regularisation; there are

specilisations to triples and quadruples; codes TRIPLE,

CHAIN on Aarseth’s download page

Page 125: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

111

Exercise for Lecture 3

1. Examine the output of a run of NBODY1 which completed

successfully. The last line gives “CPUTOT”, which is the

execution time in minutes. (The data may also be obtained

using the unix command “time”.) The last main output will also

give the number of integration steps completed (“STEPS”).

Repeat for larger values of N. (If you find that a run terminates

quickly with “FATAL ERROR! BAD INPUT N = 250” (or

something like that) go to the Real8 subdirectory, edit the

parameter NMAX in params.h, and recompile.) Can you

understand the dependence of the computing time on N,

assuming that the computational effort is dominated by the

force calculation?

Page 126: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

112

Computation and astrophysics of the N-body problem

Lecture 4

Summary of Lecture 3

◮ N-body codes: integrators and step size control

◮ Quality control

◮ Complexity

◮ Application to Globular Star Clusters

◮ Accelerating the force computation in software and hardware

◮ Theory of regularisation; subsystems

Page 127: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

113

Lecture 4: Essential Astrophysics

1. External forces

2. Initial structure

3. The mass function

4. Primordial binaries

5. Stellar evolution

6. Collisions

Page 128: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

113

Lecture 4: Essential Astrophysics

1. External forces

2. Initial structure

3. The mass function

4. Primordial binaries

5. Stellar evolution

6. Collisions

And finally: the kitchen sink!

Page 129: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

114

I. External Forces - the Galactic Tide

◮ Consider a cluster moving on a circular orbit of radius RG

about the Galactic Centre, with angular speed ω(RG)

◮ Use a rotating, accelerating frame of reference with origin at

the centre of the cluster, x-axis pointing away from the

Galactic Centre, y in the direction of cluster motion about the

Galactic Centre

◮ This introduces centrifugal and Coriolis accelerations.

Page 130: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Equations of motion

◮ r + 2ω × v + ω2zez + 2RGωω′xex = −∇Φc(r), where

◮ Φc is the potential due to cluster stars◮ ex , ez are unit x− and z− vectors◮ ω = |ω| is the angular speed of the cluster about the Galaxy,

and ω is its angular velocity vector (orthogonal to the plane of

motion of the cluster)

◮ Note Coriolis term, those due to a combination of centrifugal

and “tidal” Galactic acceleration, and that due to the cluster

◮ Here the Galactic acceleration is given in a linear

approximation (the “tidal” approximation), which is justified

when the radius of the cluster is much smaller than RG

◮ r + 2ω × v = −∇Φeff(r), where the “effective” potential is

Φeff(r) = Φc(r) + RGωω′x2 +

1

2ω2z2

◮ “Energy” E = v2/2 +Φeff(r) is conserved

◮ Φeff(r) ≤ E: a star may be confined by equipotentials of Φeff

Page 131: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

116

External Forces - the Galactic Tide (continued)

◮ (Effective) potential and equipotentials in the plane of motion

of the cluster (z = 0)

-1

-0.9

-0.8

-0.7

-0.6

-0.5

-0.4

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2-1.5-1

-0.5 0

0.5 1

1.5 2

-1

-0.9

-0.8

-0.7

-0.6

-0.5

-0.4

◮ The cluster sits in the central potential well

◮ For a star to escape, its energy E must exceed the value of

Φeff at the two saddle points

Page 132: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Three dimensions

Figure: The equipotential surface

through the saddles Figure: The equipotential surface is

not spherical, and it shapes the star

cluster

Page 133: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Lagrange points◮ The saddle points are called Lagrange points◮ They are equilibria, because ∇Φeff = 0 there◮ Equation of motion is

r + 2ω × v + ω2zez + 2RGωω′xex = −∇Φc(r)

◮ x-component is x − 2ωy + 2RGωω′x = −∂Φc(r)/∂x

◮ For a stationary star at a Lagrange point

2RGωω′x = −∂Φc(r)/∂x

◮ Assume...◮ ...Lagrange point is on x-axis. Then y = z = 0 and r = |x |◮ ...most of the mass of the cluster is close to the origin. Then

Φc ≃ −GM/r = −GM/|x |, where M is the cluster mass.◮ ...Galaxy has a flat rotation curve, i.e. ω(RG) = V/RG, where

V is constant.

◮ Then −2ω2x = −GMx/|x |3, and so |x | =(

GM

2ω2

)1/3

◮ This is the “tidal radius” (or “Jacobi radius”) rt of the cluster◮ Along with the core radius rc and the half-mass (or instead the

half-light) radius rh , these three radii characterise the spatial

structure of a star cluster.

Page 134: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s
Page 135: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Essential astrophysics II. Initial structure◮ For convenience use Plummer’s model. Specify Mc and a (the

“scale radius” of the model)

◮ Very common: use King’s models, which have finite radius

Figure: Surface density profile of King’s models with concentration

c = 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5,∞Specify Mc , the edge radius (often taken to be the tidal

radius), and the concentration c (or, the “scaled central

potential” W0)

Page 136: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Essential astrophysics III. Initial mass function

◮ Most common: Kroupa mass function (see Aarseth, Tout &

Mardling 2003)

◮ Simplest form has probability density

f(m) =

A(m/mb)a , ma < m < mb

A(m/mb)b , mb < m < mc

where◮ A is constant◮ a ≃ −1.3, b ≃ −2.3◮ ma = 0.08M⊙,mb = 0.5M⊙,mc = 100M⊙

◮ There are several variants, e.g. including brown dwarfs

◮ There are several other mass functions, e.g. Miller-Scalo

Page 137: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Essential astrophysics IV. Primordial binaries

Figure: Photometric offset binaries in NGC288 (Milone et al 2012)

Many choices to be made

◮ Masses of components

◮ Distribution of semi-major axis and eccentricity

Page 138: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

123

Essential astrophysics V. Stellar evolution

Three levels of sophistication

1. Give each star a (main sequence) lifetime and, at that time,

immediately change its mass to that of the stellar remnant

(black hole, neutron star, white dwarf). Quick and effective

method for approximate modelling of dynamical effects of

stellar evolution.

2. Use formulae which have been fitted to the results of stellar

evolution models. This gives the evolution of the mass, radius,

temperature, from which magnitudes and colours can be

derived. This is the most common method.

3. Use a “live stellar evolution” code. Only attempted in recent

years. Requires robust code. Slow.

Similar tools are also needed to deal with stellar evolution of binary

stars.

Page 139: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

124

VI. Stellar Collisions

Alternatives:

◮ Sticky spheres: assume stars coallesce to give a single more

massive star

◮ Catalogues of precomputed collision simulations (not

available yet in any collisional N-body code)

◮ Live computation of collisions as they happen.◮ Example: J. Lombardi

Notes:

◮ For techniques for computing stellar collisions, see

Bodenheimer et al

◮ For a code which integrates many types of stellar dynamics,

stellar evolution and collision hydrodynamics, see

http://amusecode.org/

Page 140: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

125

Flow control

Each integration step may involve any of the following possibilities

1. Standard integration (may be KS)

Only this and 4 (below) were present in NBODY1

2. New KS regularisation

3. KS termination

4. Output

5. 3-body regularisation (See last slide of Lecture 3)

6. 4-body regularisation (“)

7. New hierarchical system (“)

8. Termination of hierarchical system (“)

9. Chain regularisation (“)

10. Physical collisions

11. Stellar evolution

Page 141: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

125

Flow control

Each integration step may involve any of the following possibilities

1. Standard integration (may be KS)

Only this and 4 (below) were present in NBODY1

2. New KS regularisation

3. KS termination

4. Output

5. 3-body regularisation (See last slide of Lecture 3)

6. 4-body regularisation (“)

7. New hierarchical system (“)

8. Termination of hierarchical system (“)

9. Chain regularisation (“)

10. Physical collisions

11. Stellar evolution

Page 142: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

126

Professional N-body codes

1. NBODY6 (Aarseth): general purpose hardware [and optional

GPU]

2. NBODY6tt (Renaud): NBODY6 with more versatile tidal effects

3. NBODY6++ (Spurzem): parallel computers and/or GPU

4. AMUSE (everyone): Python, FORTRAN, C++, C; includes a

Hermite code, NBODY1h, a Barnes-Hut tree code, etc.

Available from http://amusecode.org/

5. starlab (McMillan, Hut, Makino, Portegies Zwart): generalpurpose/GPU-enabled hardware (no KS regularisation)

◮ Available from http://www.ids.ias.edu/∼starlab/install/

Page 143: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

How to make a movie

◮ Go to http://www.sns.ias.edu/∼starlab/install/ and follow the

instructions to download, compile and install Starlab.

◮ At the command line, enter

makeplummer -n 1024 -i \| makemass -l 0.5 -u 5 \| scale -s \| kira -t 10 -D -5 \| snap to image -s 400 -m -p -2 -g -a -d -f plummer-run

◮ This pipeline makes a Plummer model with N = 1024,

distributes masses in default distribution between 0.5 and 5

units, scales to standard units, integrates to t = 10 with

snapshots at intervals of 2−5, and converts to image files

plummer-run.gif . Takes about 5 min.

◮ Make an animated gif with

convert -delay 0 plummer∗.gif -loop 0 playplummer.gif

playplummer.gif can be opened in a browser

◮ Example: a small star cluster in a tidal field

Page 144: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

128

How to Simulate a Star Cluster in a Tidal Field with NBODY6tt

1. Go to the web page https://github.com/florentrenaud/nbody6tt

2. Press the green button “Clone or download”

3. In the pop-up window select “Download ZIP”

4. In the new pop-up window select “Save File” (on Firefox)

5. Go to your downloads folder (“cd ∼/Downloads”)

6. Unzip the code (“unzip nbody6tt-master.zip”), which creates a

subdirectory nbody6tt-master

7. Go to the source subdirectory (“cd nbody6tt-master/Ncode”)

8. Make the code (“make”)

9. Go to the parent directory (“cd ..”)

10. Make a directory for your runs (“mkdir test”)

11. Go there (“cd test”)

12. Create an input file tt.in by copying a provided sample input

file (“cp ../Docs/input tt.in”)

13. Run the code (“../Ncode/nbody6 < tt.in > tt.out”, ∼ 30 sec)

Page 145: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Termination of Run on Energy Error

◮ For me the run ended with the following output lines (in tt.out):

ADJUST: TIME = 50.00 Q = 0.51 DE = 5.6E-03 E = -0.260140

RMIN = 4.6E-03 DTMIN = 2.4E-04 TC = 7 DELTA = 8.6E-04

E(3) = -0.129606 DETOT = 0.000884

CALCULATIONS HALTED * * *

◮ The energy error in the output step (DE) has exceeded the

allowed tolerance (the 7th entry in the third line of the input

file, which is

0.02 0.02 0.35 2.0 10.0 1000.0 4.0E-05 2.0 0.5)

Page 146: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Recovering from an excessive energy error◮ Two solutions:

1. Rerun with new accuracy parameters (analogous to η in time

step criterion): ETAI, ETAR, ETAU (see define.f in directory

Ncode). Disadvantage: gives an essentially different run,

because of rapid growth of errors (Lecture 3)

2. Rerun with greater tolerance of error: parameter QE in input.

Disadvantage: how big an energy error can be tolerated?◮ NBODY6tt has an option for recovering by (i) automatically

changing the three accuracy parameters and (ii) reading acheckpoint file from the output time before the energy erroroccurred (an efficient variant of solution 1 above)

◮ To activate this, change the 4th line of tt.in from

1 1 0 0 1 0 1 0 0 0

to

1 2 0 0 1 0 1 0 0 0◮ Delete the file ESC and HIARCH: “rm ESC HIARCH”◮ Rerun with “../Ncode/nbody6 < tt.in > tt.out” (about 90 sec)◮ Ends normally with

END RUN TIME = 318.0 CPUTOT = 0.0 ERRTOT = 0.000190

DETOT = 0.000008

Page 147: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

131

How to Simulate a Star Cluster in a Tidal Field (continued)

14. Typical output extract:

T = 10. N = 500 <NB> = 9 KS = 0 NM = 0 MM = 0 NS = 500

NSTEP S = 756717 203 201945 448 DE = -1.7E-05 E =

-0.250673 M = 1.0000

NRUN = 1 M# = 0 CPU = 0.1 TRC = 0.6 DMIN = 3.6E-05

3.6E-05 1.0E+02 1 .0E+02 AMIN = 1.0E+02 RMAX =

0.0E+00 RSMIN = 0.090 NEFF = 259

<R> RTIDE RDENS RC NC MC RHOD RHOM CMAX ¡Cn¿

Ir/R UN NP RCM VCM AZ EB/E EM/E TCR T6 NESC VRMS

#1 0.78 5.1 0.10 0.2913 36 0.133 5. 20. 3. 16.3 0.105 0 0

0.000 0.0000 0.0807 -0.000 -0.000 2.82 21 0 0.6

15. For illustration we extract and print some numbers from the

last line with the awk script

{if ($1==”#1”) print $21,$5,$2,$3}

Page 148: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

132

15. (continued)

(These are time in millions of years, and the core2, half-mass

and tidal radii; in NBODY6, with the parameters we are using,

<R> really is the half-mass radius, whereas in NBODY1 <R>

is the virial radius.)

16. Suppose the awk output is in the file ’tt.radii’.

17. Now use gnuplot to plot these radii:

set log y;plot ’tt.radii’ u 1:2 w l,” u 1:3 w l,” u 1:4 w l

(Note: ” means two separate single quotes)

0.01

0.1

1

10

0 100 200 300 400 500 600 700

’dch.radii’ u 1:2’’ u 1:3’’ u 1:4

2The core radius is, roughly speaking, the radius of the inner part of the

system, in which the density is at least half the central density.

Page 149: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

133

How to Simulate a Star Cluster in a Tidal Field (continued)

The problem here is a badly formatted line in tt.out (which may

occur at different places in different runs, or not at all):

#1 2.08 3.3 14.75 0.7801 9 0.040 2. 7. 3. 7.2 0.088 0 0 14.764

0.1791 3.9346 0.000 0.000139.43 501 0 0.4

which can be circumvented with a modified awk script:

{if ($1==”#1”) {print $(NF-2),$5,$2,$3

}}

(NF is the number of

fields in the line, nor-

mally 23) 0.01

0.1

1

10

0 100 200 300 400 500 600 700

’dch-corrected.radii’ u 1:2’’ u 1:3’’ u 1:4

Page 150: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Changing the output frequency

◮ Change the third input line from

0.02 0.02 0.35 2.0 10.0 1000.0 4.0E-05 2.0 0.5

to

0.02 0.02 0.35 2.0 1.0 1000.0 4.0E-05 2.0 0.5

which now gives output every time unit.

0.01

0.1

1

10

0 100 200 300 400 500 600 700

’dch2.radii’ u 1:2’’ u 1:3’’ u 1:4

Page 151: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Interpretation of the results

0.01

0.1

1

10

0 100 200 300 400 500 600 700

’dch2.radii’ u 1:2’’ u 1:3’’ u 1:4

◮ Tidal radius shrinks as stars escape, and the mass of the

cluster decreases◮ Core radius shrinks: core collapse at about t = 60.◮ Reversed by binary formation and hardening, which increases

the energy of the cluster. This causes the rise in rh

◮ Large fluctuations near the end of the run, when N = 22 only.◮ Is that a second core collapse at about t = 250?

Page 152: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

136

Statistical Significance of Results

◮ Repeat the simulation with a different random number seed.

◮ Line 2 of input is

500 1 25 10000 70 1

Change to

500 1 25 10001 70 1

◮ Plot core radii of both

runs:

◮ Recollapses may occur,

but at various times

◮ The lifetimes of different

runs may differ by tens of

percent.

0.01

0.1

1

10

0 100 200 300 400 500 600 700 800

’dch2.radii’ u 1:2’dch3.radii’ u 1:2

Page 153: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

137

NBODY6tt: Some optional output

◮ fort.14: time and log10 of Lagrangian radii◮ A Lagrangian radius is a radius containing a fixed fraction of

the mass.◮ The fractions used are in the line “DATA FLAGR” in lagr.f in the

Ncode subdirectory◮ Change line 4 of input file to

1 2 0 0 1 0 5 0 0 0

-2.5

-2

-1.5

-1

-0.5

0

0.5

1

0 50 100 150 200 250 300 350

Log

radi

us (

Hen

on u

nits

Time (Henon units

1%10%50%90%

◮ Increasing output interval can be overridden with option 32

Page 154: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Other optional output (continued)

◮ fort.36 gives the mean mass in each Lagrangian shell

1

10

0 50 100 150 200 250 300 350

Mea

n m

ass

in a

Lag

rang

ian

shel

l

Time (Henon units

’fort.36’ u 4:5’’ u 4:8

’’ u 4:12’’ u 4:15

Figure: Mean mass in four Lagrangian shells

◮ Note mass segregation, especially around core collapse

◮ General trend of increasing mean mass with time (preferential

escape of lighter stars)

Page 155: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

139

NBODY6: Other Standard Output (continued)

◮ Include stellar evolution by changing option 19 to 3 and 12 to 1◮ Remove ESC and HIARCH, and rerun◮ fort.83: information on the stellar properties of the particles

◮ Typical output

## BEGIN 501 0.0

1 1 5.812 5.656 2.979 0.337 4.276

2 1 0.705 5.094 2.828 0.310 4.252

..........◮ These are

N TIME (number of “objects”, time)

NAME KW RI M1 ZL1 R1 TE (for each single star)where

◮ NAME identifies the star◮ KW: stellar type (see end of define.f in Ncode)◮ RI: distance from the cluster centre (units of the core radius)◮ M1: mass (solar masses)◮ ZL1: log luminosity (solar luminosities)◮ R1: log radius (solar radii)◮ TE: log effective temperature (K)

Page 156: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

140

NBODY6: Other Standard Output (continued)

Data for a single time can be obtained with the following awk script

(snapshot.awk)

{if (NF==2) t = $2}{if (t==time&&NF==7) print $0}

where the time is given in the awk command:

awk -f snapshot.awk time=0.0 fort.83 > snap0.0

Then the colour-magnitude (actually Teff -L ) diagram is given with

gnuplot:

plot [4.3:3.4] ’snap0.0’ u 7:5

(The plot range [4.3:3.4] shows that T should increase to the left.)

Page 157: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

141

Example: HR Diagram at 0 and 615 Myr

-4

-3

-2

-1

0

1

2

3

3.5 3.6 3.7 3.8 3.9 4 4.1 4.2 4.3

Lum

inos

ity

Log Teff

’snap0.0’ u 7:5’snap615.3’ u 7:5

Figure: Note main sequence, giant branch, white dwarfs

Page 158: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Primordial binaries

◮ The file Docs/inbins contains sample initial conditions

◮ For better comparison with previous runs we change◮ Line 2 to 500 1 20 129000 85 1◮ Line 3 to 0.02 0.02 0.3 2.0 1.0 1000.0 5.0E-04 2.0 0.6◮ Line 4 to 1 2 0 0 1 0 1 4 0 0◮ Line 10 to 2.3 5.0 0.2 250 0 0.02 0.0 100.0

◮ The model contains 50% binaries

◮ It takes about 5 min

Page 159: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Evolution of the binary fraction

◮ Defined as #binaries/(#binaries + #number of single stars)

0.25

0.3

0.35

0.4

0.45

0.5

0.55

0.6

0.65

0 100 200 300 400 500

Bin

ary

frac

tion

Time (Henon units)

’dch.bins’ u 1:($3/($2-$3))

◮ Calculated by replacing #binaries by the number of KS

(regularised) pairs (called KS in output)

◮ Soft pairs are not usually regularised, hence the initial value isless than 50%

◮ See Lecture 2 for notions of “soft” and “hard” pairs

◮ Early decrease caused by destruction of soft(ish) pairs

◮ Late increase caused by mass segregation of hard binaries

Page 160: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Evolution of the binary fraction in the core

◮ Number of objects (single stars + binaries) in the core is field

6 in line beginning “#1”

◮ Number of binaries in the core is NC in the line beginning

“BINARIES”

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 100 200 300 400 500

Bin

ary

frac

tion

in th

e co

re

Time (Henon units)

’dch.bins’ u 1:2

◮ About 50% for the first half of the evolution

◮ Late increase caused by mass segregation of hard binaries

Page 161: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Tidal tails again

◮ Previously, the tails were straight, because of the tidal

approximation

◮ With NBODY6tt this approximation can be avoided. The tidal

acceleration, and the orbit of the cluster inside the Galaxy, are

calculated numerically.

◮ Example (Peter Berczik)

Page 162: Computation and astrophysics of the N-body problem · Introduction to a simple N-body code (NBODY1). Example - cold collapse. Virialisation and virial equilibrium. 2. Plummer’s

Outline of Lecture 4

◮ Essential astrophysics

1. Tides

2. King models

3. The IMF

4. Primordial binaries

5. Stellar evolution

6. Collisions

◮ Kitchen-sink N-body codes

1. Starlab example

2. NBODY6[tt] example