The AGN Model in Nyx

In the AGN model, super-massive black hole (SMBH) particles are formed at haloes, where each halo is defined by a connected mass enclosed by a user-defined density isocontour. In order to find haloes, we use the Reeber package described in Section 2. Each AGN particle has the standard dark matter particle attributes of position, velocity, and mass, as well as two additional attributes, its stored accretion energy and its mass accretion rate.

Parameters of the AGN model
In “probin” file Parameter Fiducial value Explanation
* \(M_{\rm h, min}\) \(10^{10}~ M_\odot\) Minimum halo mass for SMBH placement
* \(M_{\rm seed}\) \(10^5~ M_\odot\) Seed mass of SMBH
T_min \(T_{\rm min}\) \(10^7\) K Minimum heating of the surrounding gas
bondi_boost \(\alpha\) 100 Bondi accretion boost factor
max_frac_removed \(f_{\rm max, removed}\) 0.5 Maximum fraction of mass removed from gas
eps_rad \(\epsilon_{\rm r}\) 0.1 Radiation efficiency
eps_coupling \(\epsilon{\rm c}\) 0.15 Coupling efficiency
eps_kinetic \(\epsilon_{\rm kin}\) 0.1 Kinetic feedback efficiency
frac_kinetic \(f_{\rm kin}\) 0 Fraction of feedback energy that is kinetic

[tab:agn_params1]

* \(M_{\rm h, min}\) and \(M_{\rm seed}\) are not set in the “probin” file, but in the inputs file, by respectively Nyx.mass_halo_min and Nyx.mass_seed.

Creating AGN Particles from Haloes

Each halo with threshold mass of \(M_h \geqslant M_{\rm h, min}\) that does not already host a black hole particle is seeded with a black hole of mass \(M_{\rm seed}\). The initial position of this AGN particle is the center of the cell where the density is highest in the halo.

When an AGN particle is created, the density in its cell is reduced by the amount required for mass to be conserved, and the velocity of the AGN particle is initialized so that momentum is conserved. The accretion energy and mass accretion rate are initialized to zero.

Merging AGN Particles

Two AGN particles merge when both of these conditions obtain:

  1. The distance between them, \(l\), is less than the mesh spacing, \(h\).

  2. [velocity-item] The difference of their velocities, \(v_{\rm rel}\), is less than the circular velocity at distance \(l\):

    \[v_{\rm rel} < \sqrt{GM_{\rm BH}/l}\]

    where \(M_{\rm BH}\) is the mass of the more massive SMBH in the pair, and \(G\) is the gravitational constant.

Criterion [velocity-item] above is necessary in order to prevent AGN particles from merging during a fly-through encounter of two haloes, as this could lead to AGN particles being quickly removed from the host halo due to momentum conservation.

The merger of two AGN particles is implemented as the less massive one being removed, and its mass and momentum being transferred to the more massive one.

Accretion

For an AGN particle of mass \(M_{\rm BH}\), the Bondi–Hoyle accretion rate is

\[\dot{M}_{\rm B} = \alpha \frac{4 \pi G^2 M_{\rm BH}^2 \overline{\rho}}{(\overline{c_s^2} + \overline{u^2})^{3/2}} ,\]

where \(\overline{\rho}\), \(\overline{c_s^2}\), and \(\overline{u^2}\) are volume averages with a cloud-in-cell stencil of the gas’s density, squared sound speed, and squared velocity, respectively, in the neighborhood of the particle.

The maximum black hole accretion rate is the Eddington limit,

\[\dot{M}_{\rm Edd} = \frac{4 \pi G M_{\rm BH} m_{\rm p}}{\epsilon_{\rm r} \sigma_{\rm T} c} \, ,\]

with proton mass \(m_{\rm p}\), Thomson cross section \(\sigma_{\rm T}\), and speed of light \(c\).

The mass accretion rate of the SMBH is the smaller of the two rates above: \(\dot{M}_{\rm acc} = {\rm min} \{ \dot{M}_{\rm B}, \dot{M}_{\rm Edd} \}\). Then the gas will lose mass \(\dot{M}_{\rm acc} \Delta t\), where \(\Delta t\) is the length of the time step. However, \(\dot{M}_{\rm acc}\) is adjusted downward if necessary so that when cloud-in-cell stencil weights are applied in the neighborhood of the particle, the fraction of gas density removed from any cell of the stencil is at most \(f_{\rm max, removed}\).

The mass of the AGN particle increases by \((1-\epsilon_{\rm r}) \dot{M}_{\rm acc} \Delta t\), while \(\dot{M}_{\rm acc} \Delta t\) amount of gas mass is removed from the grid according to cloud-in-cell stencil weights in the neighborhood of the particle. The momentum transfer can be computed by assuming the velocity of the gas is unchanged; thus the gas in each cell loses momentum in proportion to its mass loss, and the particle gains the sum of the gas momentum loss multiplied by \((1-\epsilon_{\rm r})\).

Feedback Energy

Feedback energy is stored in an AGN particle variable \(E_{\rm AGN}\), and is accumulated over time until released. The fraction \(f_{\rm kin}\) goes to kinetic energy, and the rest to thermal energy.

Thermal Feedback

We increment \(E_{\rm AGN}\) by thermal feedback energy, calculated from the mass accretion rate as

\[% high energy \Delta E_{\rm thermal} = (1 - f_{\rm kin}) \epsilon_{\rm c} \epsilon_{\rm r} \dot{M}_{\rm acc} c^2 \Delta t .\]

Kinetic/Momentum Feedback

We increment \(E_{\rm AGN}\) by the kinetic feedback energy

\[% low energy \Delta E_{\rm kinetic} = f_{\rm kin} \epsilon_{\rm kin} \dot{M}_{\rm acc} c^2 \Delta t .\]

We also need to adjust the energy density and momentum density of the gas. We do this by computing a jet velocity

\[\vec{v}_{\rm jet} = \sqrt{\frac{2 \Delta E_{\rm kinetic}}{m_{\rm g}}} \vec{n}\]

where \(m_{\rm g}\) is the total gas mass inside the cloud-in-cell local environment, and \(\vec{n}\) is a randomly chosen unit vector. We add \(\rho \vec{v}\) to the momentum density \(\vec{p}\) of the gas, and \(\vec{v}_{\rm jet} \cdot \vec{p}\) to its energy density, both of these weighted by the cloud-in-cell stencil of the particle.

Releasing Feedback Energy

The accumulated energy is released when

\[E_{\rm AGN} > m_{\rm g} \overline{e} \label{eq:E_agn}\]

where \(\overline{e}\) is the average specific internal energy of the gas over the cloud-in-cell stencil, obtained from the equation of state using temperature \(T_{\rm min}\) and average density of the gas over the same stencil, and \(m_{\rm g}\) is the total gas mass inside the cloud-in-cell local environment.

The Reeber Package

Reeber is a separate package with a halo finder. Here are the Reeber parameters that are assigned in the input file.

Parameter Definition Acceptable Values Default
reeber.halo_int timesteps between halo finder calls Integer -1 (none)
reeber.negate allow negative values for analysis 0 if false, 1 if true 1
reeber.halo_density_vars density variable list density, particle_mass_density “density”
reeber.halo_extrema_threshold extrema threshold for haloes Real
reeber.halo_component_threshold component threshold for haloes Real
reeber.absolute_halo_thresholds are halo thresholds absolute 0 if multiples of mean, 1 if absolute 0

[Table:Reeber-inputs]