Star Formation Recipe

Checking for Jeans Violation

The star formation recipe is implemented via the Stochastic Stellar Population specialisation. Every cell is checked for Jeans violation and star particles are added if \(\lambda_J = c_s/\sqrt{G\rho} < J \cdot dx\), where J is \(0.5\).

Adding a star particle to every Jeans violating cell can lead to a large number of small mass stars which can be cumbersome. To alleviate this issue, we control the star formation rate through \(\epsilon_{\rm ff}\) and \(\epsilon_{*}\). \(\epsilon_{\rm ff}\) is the efficiency per freefall time given by \(\frac{\dot{M}_{*} \cdot t_{\rm ff}}{M_{\rm cell} \cdot dt}\), while \(\epsilon_{*}\) is the fraction of cell mass that gets converted into stars.

We emulate the stochasticity of star formation in the following manner. We associate a probability P to the process of spawning a star in the cell. To set P, we note that the expectation value of the stellar mass formed is P multiplied by the mass of the star that will be inserted, \(\epsilon_{*} M_{\rm cell}\), so $\langle M_{} \rangle = P \epsilon_{} M_{\rm cell} $. This must match the target mass determined by \(\epsilon_{\rm ff}\), which is $\langle M_{*} \rangle = \epsilon_{\rm ff} M_{\rm cell} (dt/t_{\rm ff}), thereby requiring \(P=(\epsilon_{\rm ff}/\epsilon_{*}) dt/t_{\rm ff}\). It should be noted that this is the probability for \(\epsilon_{\rm ff}\) averaged over the timestep rather than for the instantaneous star formation rate, which should be integrated over the timestep dt.

Both the descriptions of P, from assuming a star formation rate averaged over timestep or an instantaneous star formation rate, lead to identical expression of P if \(dt<t_{\rm ff}\). Because we operator-split the process of star formation from the hydrodynamic update, it is important to note that we should not expect to get exactly the correct star formation rate for time steps that are large compared to $t_{\rm ff}. We do not explicitly enforce this as a constraint on the time step, but in practice the CFL condition will almost always guarantee that \(dt << t_{\rm ff}\).

Estimating number and type of stars

Once we establish that a star will form in a cell, we need to find out the stellar population looks like. In our implementation, the population comprises at least one particle representing the low mass star (\(M<8M_{\odot}\)) population plus a random number of particles, each representing a high mass star.

The number of high mass stars is determined by the initial mass function, taken to be Chabrier03. The IMF is represented by a log normal for \(M<M_{\odot}\) and a power law with a slope of \(2.35\) above that. From the IMF, we can estimate the mass fraction of the high mass stars, \(f_{*,\rm{high}}\), and the average mass of high mass stars, \(\langle m \rangle _{*,\rm{high}}\). The expectation value of the number of high mass stars, num_high_mass_stars, then is the ratio of the total mass in high mass stars and \(\langle m \rangle _{*,\rm{high}}\).

The total number of star particles to be spawned in a cell is \(1+\) Poission distribution with an expectation value of num_high_mass_stars. A fraction \(1-f_{*,\rm{high}}\) goes into the particle representing low mass stars while the mass of the high mass star particles is randomly drawn from the high mass part of the IMF.

In the case there are no high mass stars in the cell, the low mass star particle gets spawned at the centre of the cell with a velocity identical to the gas velocity.

Estimating the Velocity of the High Mass Star(s)

In the presence of high mass stars, we first assign momentum to these stars. The velocity of these particles is derived from a log normal distribution. The mean of this distribution is the cell velocity while its dispersion is obtained by mass-averaging over the neighbouring cells.

We track the total momentum of the high mass star particles in the three directions and in order to conserve momentum we impart an equal and opposite momentum to the low mass star.