We have written a modular, finite volume, fluid dynamics code for
astrophysics simulations. The code uses a uniform grid in 1, 2, or 3
spatial dimensions with cubic cells. Scalar and vector fields are both
cell-centred. The integrator for the fluid equations is based on the
algorithm described by Falle (1998), which is dimensionally
unsplit and second order accurate in time and space. We have separate
Riemann solvers for the Euler and Ideal Magnetohydrodynamics (MHD)
equations to calculate intercell fluxes. The ability to track the
ionisation state of various elements and associated radiative cooling
processes is achieved using advected passive tracer variables and a
microphysics code module. Operator splitting is used to allow the
microphysics module to integrate the ionisation rate equations
together with heating and cooling processes, evolving the tracer
variables and the internal energy for each cell over the timestep.
Photo-ionising radiative transfer is enabled with a ray-tracing code
module which traces ionising photon flux outwards from a point source.
This module is coupled to the microphysics module to include
photo-ionisation in the microphysics calculation using a modified
version of the C
-ray algorithm developed
by Mellema (2006). The different code modules are described in
detail in the following sections. The code has been written in
C++ (e.g. Stroustrup, 1997) with a modular, object-oriented
structure.
Subsections
Jonathan Mackey
2010-01-07