IOP Publishing Ltd, 2018 — 411 p. — ISBN: 9780750313216 (print).
Computational astrophysics is a new and quickly growing discipline. In this book the authors outline the fundamentals for computational astrophysics, focusing on the use of the Astronomical Multipurpose Software Environment (AMUSE), which is a general-purpose simulation environment in astrophysics written in Python. AMUSE allows you to combine existing solvers to build new applications that can be combined again to study gradually more complex situations. This enables the growth of multi-physics and multi-scale application software in a hierarchical fashion, testing each intermediate step as the complexity of the software continues to increase. All examples in the book are associated with codes that run on a simple laptop or workstation. All figures are reproducible with a simple script, and all scripts are available online to be downloaded and run accordingly.
Acknowledgements
Author biographies
Simon Portegies Zwart
Steve McMillan
What is Computational Astrophysics?Computational Astrophysics
Origin of This Book
Hands-on is Hands-on
What about the Math?
Objective of This Book
What is Missing from This Book
Outline of the Book
A Brief History of Simulations in Astrophysics
The First Simulation Experiments
Software Used in This Book
Motivation for a Homogeneous Software Environment
Choice of Programming Languages
Design of AMUSE
Terminology
Installing AMUSE
Running AMUSE
Initial Conditions
Particles and Particle Sets
The Solar System
The Plummer Sphere
The Initial Mass Function
Stellar Evolution
Hydrodynamical Models
Gravitational DynamicsIn a Nutshell
Equations of Motion for a Self-gravitating System
Gravitational Time Scales
Star Cluster Dynamics
Physics of the Integrator
N-body Integration Strategies
Global Structure of an N-body Code
Types of N-body Code
Discretization Strategies in N-body Simulations
Gravity Solvers in AMUSE
Generating Initial Conditions
Specifying and Initializing the Gravity Solver
Setting and Getting Parameters in a Community Code
Feeding Particles to the N-body Code
Evolving the Model to the Desired Time
Retrieving Data from the N-body Code
Storing and Recovering Data
Using Other Units
Interrupting the N-body Integrator
Examples
Integrating the Orbits of Venus and Earth
Small Cluster with Stellar Collisions
Secular Multiples
Merging Galaxies
Validation
Error Propagation and Validation
Assignments
Orbital Trajectories
Vostok
Dynamical Binary Formation
L1 Lagrangian Point
Virial Equilibrium
Stellar Structure and EvolutionIn a Nutshell
Stellar Time Scales
Physics of the Interior
Final Stages of Stellar Evolution
Simulating Stellar Evolution
Stellar Evolution Modules in AMUSE
Improving the Stellar Evolution Solver
Evolving an Inhomogeneous Stellar Population
Multiprocessing Codes
Enforcing Stellar Mass Loss/Gain
Accessing Stellar Interiors
Modeling Stellar Mergers
Interrupting Stellar Evolution
Binary Evolution
Reading and Writing Binary Evolution Files
Examples
Response of a Star to Mass Loss
Blue Stragglers in M67
Validation
Assignments
Stellar Comparison
Ages of the M67 Blue Stragglers
Constructing Isochrones
Elementary Coupling StrategiesMultiphysics Problems
Combining Two or More Solvers
Combining Gravity with Stellar Evolution
Evolution of a Hierarchical Triple System
Dedicated Channels and Copy Operations
Particle Subsets and Supersets
Analysis Tools
The Hop Package
The Kepler Package
Multi-code Strategies
Basic Collision Handling
Using a Separate Code to Manage a Collision
Recovering from a Code Crash
Event-driven Simulations
The multiples Module
Examples
Small Cluster with Disk-destroying Encounters
Stellar and Binary Evolution with Stellar Dynamics
Validation
Assignments
Interlaced Time-stepping
Stellar Evolution and Dynamics
Multiple Stellar Populations
HydrodynamicsIn a Nutshell
Underlying Equations
Turbulence and Shocks
Hydrodynamical Time Scales
Hydrodynamical Instabilities
Physics of the Integrator
Hydrodynamics in AMUSE
Types of Hydrodynamics Code
Smoothed Particle Hydrodynamics
Grid-based Methods
Managing Shocks and Discontinuities
Initializing a Grid from a Particle Distribution
Using a Hydro Code to Simulate a Stellar Merger
5.2.7. Continuing with Hydrodynamics after a Henyey Code Crash
Extending the Hydrodynamics Solver
Examples
Collapsing Molecular Cloud
Circumstellar Disk with a Bump
Colliding Stars
Accreting from the Wind of a Companion
Validation
Riemann Shock Tube Problem
Kelvin–Helmholtz Test
Cloud-shock Test
Boss–Bodenheimer Test
Assignments
Convergence Test
Testing the Boss–Bodenheimer Test
The Dissolving Bump
Collapsing Molecular Cloud with Sink Particles
A Star-forming Region
Neutron Star Hits Companion
Supernova Explosion
Hoag’s Object
Radiative TransferIn a Nutshell
Underlying Equations
Physics of the Integrator
Radiative Transfer in AMUSE
Radiative Transfer Modules
Ionization of a Molecular Cloud
Coupling Radiative Transfer with Hydrodynamics
Examples
Heating of a Protoplanetary Disk
Ionization Front in an H2 Region
Validation
Assignments
Habitability of a Protoplanetary Disk
Bumpy disks
Hierarchical Coupling StrategiesCode-coupling Strategies
The Bridge Method
Implementation of Bridge
Higher-order Bridge
Using Bridge
Star Cluster in a Static Galactic Potential
The Classic Bridge
Bridging Other Codes
Bridge Hierarchies and Hierarchical Bridges
Bridging Gravity with Hydrodynamics
Examples
Dissolving Star Cluster in the Galactic Potential
Did the Sun Originate in M67?
Inspiral of a Binary Star into a Common Envelope
Budding Planets in a Protoplanetary Disk
Planetary Systems in Star Clusters
Assignments
Drift with Gravity Code
How Did the Sun Escape from M67?
Half Tree Code, Half Direct
The Accreting Black Hole in HLX-1
Forming the Widest Binary Stars
Case StudiesAccretion in the Galactic Center from S-star Winds
Initial Conditions
The Combined Solver
Results of the Simulation
Supernova Impact on the Early Solar System
Initial Conditions and Model Parameters
The Combined Solver
Radiative Hydrodynamics with Cooling and Heating
Injection of the Supernova Blast Wave
The Supernova Blast Wave Hits the Disk
Closure
EpilogueAMUSE FundamentalsThe AMUSE Framework
The Community Module
The User Script
Inter-module Data Transfer and Unit Conversion
Installing AMUSE
Downloading AMUSE
Installing the Prerequisites
Compiling AMUSE
Reproducibility with git
Installing for Python3
Installing Non-standard Codes
Tuning Your AMUSE Installation
Running AMUSE
AMUSE SpecificsInternal Parameters and Types
Non-tunable Parameters
Input/Output File Types
Writing Composite Data Files
Initial Conditions
Alternative Converters
The Huayno Multi-component Symplectic N-body Code
Higher-order Bridges
Hydrodynamical Boundary Conditions
Debugging in AMUSE
Stopping Conditions
Galactic Potential Models
Tricks with Units
Setting Printing Strategies
The Command-line Argument Parser
Plotting
Basic Plotting in Python
Plotting with Units
Additional Plotting Utilities
AMUSE Community Modules
Modules by Domain and Functionality
Modules by Name
Programming PrimerLinux
A Little awking and grepping
Git
Python
Python Types and Printing
Lists
Dictionaries
Flow Control
Functions
Lambda Functions
Importing Packages
Classes
Operator Overloading
Properties
Testing and Debugging Python Scripts