Title: An Object-Oriented, Python-Based Moving Mesh Hydrodynamics Code Inspired by Astrophysical Problems
Radiative cooling plays an important role in the formation of structures in collapsing gas. In this talk, I examine the impact of cooling in two formation scenarios and introduce a new hydrodynamics code aided by current software principles.
I will begin with the discussion of the role of H2 cooling in collapsing gas in primordial dark matter halos in the possible formation of supermassive black holes. I examine a proposed mechanism for the suppression of fragmentation in such halos which relies on cold-mode accretion flows leading to shocks at high densities (n > 10^4 cm^-3) and temperatures (T > 10^4 K). In such gas, H2 is efficiently collisionally dissociated, preventing cooling. I use high-resolution numerical simulations to test this idea, demonstrating that such halos typically have lower temperature progenitors, in which cooling is efficient in preventing the proposed mechanism from operating.
I then discuss low metallicity cooling in collapsing clouds and its possible role in explaining low-metallicity globular clusters. I explore the relative role of small-scale fragmentation and global collapse in low-metallicity clouds, pointing out that in such clouds the cooling time may be longer than the dynamical time, allowing the cloud to collapse globally before it can fragment. I carried out numerical simulations of low-metallicity Bonner-Ebert stable gas clouds, demonstrating that there exists a critical metallicity (between 0.001 and 0.01 Zsun) below which the cloud collapses globally without fragmentation.
Lastly, I will describe the structure and implementation of the new open-source parallel moving-mesh hydrodynamic code, Python Hydro-Dynamics (phd). The code has been written from the ground up to be easy to use and facilitate future modifications. The code is written in a mixture of Python and Cython and makes extensive use of object-oriented programming. I will outline the algorithms used and describe the design philosophy and the reasoning of my choices during the code development.