SFH for individual gas particles

Benjamin Metha
  • 17 Jan '22

Hello!

I wanted to ask about a rather strange use case for the IllustrisTNG-50 simulation.

I understand that for an isolated galaxy (i.e. a subhalo that is not involved in any mergers), it is possible to construct its star-formation history, by comparing the instantaneous SFR of the galaxy in any snapshot to its SFR in any previous snapshot. This is possible because the SubLink merger tree tells us what the ID of the galaxy will be in any future snapshot.

I am wondering if it is possible to extend this in order to create star formation histories for any individual particle within an isolated galaxy. I understand that there is no "individual particle merger tree", and that particles constantly mix with nearby particles, so the idea of a merger tree for particles would not really make sense. Instead, I am asking if any given particle will have the same ID between neighbouring snapshots. For example, will gas particle no. 115860 in snapshot 10 be the same particle as gas particle no. 115860 in snapshot 11? Or are they re-labelled at each snapshot/timestep (e.g. according to mass)?

The answer to this question doesn't seem to be clear to me from the documentation that I have read online -- but that's supremely understandable, because this is a fairly weird question.

Thanks for all of your help -- and please do let me know if you require any additional clarification.

Yours,
Benji Metha

Dylan Nelson
  • 18 Jan '22

Dear Benji,

One interesting note: although you can reconstruct a galaxy SFH in the way you describe, you can also do this another way, by (i) gathering all the stars in the galaxy at e.g. z=0, (ii) loading their formation times, (iii) histogram these into bins of e.g. lookback time, and (iv) load and sum the "initial masses" of the stars formed in each bin, to generate a SFH.

Which is to say, for an individual star, you can certainly go back and determine when and where it was formed. For stars, IDs are unique and unchanging (across snapshots) after formation. A star particle will lose fraction of its mass over time due to stellar evolution and mass return (to the surrounding gas). So you would want to keep in mind that you are not tracking this portion of the mass.

However, gas cells are much harder to track back in time. This is because gas cells exchange mass with their neighbors (every timestep). Gas cells also get split and merged. Due to both reasons, it means that re-locating a gas cell by its ID in different snapshots will only occasionally work, and if the ID still exists, there is no guarantee that that cell really contains the "same mass". So, you can give it a try as a rough approximation, but keep in mind the caveats.

This is a classic use case for the tracer particles (PartType3), which were made to get around this problem.

yi he
  • 25 Jan '22

Dear Dylan,
Hello!
I have tried to find the tracer particles in TNG50. However, I found there is no tracer particle if I read particles by illustris_python. Besides, I found there is no api data about the tracer particles in TNG50 (but I found they exist in TNG100). Is there any other way I could find the tracer data in TNG50?

Dylan Nelson
  • 25 Jan '22

There are tracer particles in all three TNG simulations (only in the 20 full snapshots for TNG100, and in all 100 snapshots for TNG50 and TNG300).

The tracer_tracks supplementary catalog is currently only available for TNG100.

To use tracers in TNG50, you will need to load them directly from the snapshots (using illustris_python, either after downloading a snapshot to your machine, or else using the online Lab).

yi he
  • 1
  • 25 Jan '22

Thank you for your answer!

I have tried to read tracer by loadSubset from illustris_python.snapshot or load from il.snapshot.loadSubhalo. It seems it can not work.
My code is like this:

subset_g = getSnapOffsets(basePath, snapNum, subID, "Subhalo")
data_g = loadSubset(basePath, snapNum, 3, subset=subset_g)

It returns {'count': 0}. If I change the type, I can get other particles of this subhalo.

However, I find if I use h5py to read the snap file, I can find tracer particles of the snap with two fields {ParentID, TracerID}. How could I relate the tracer particles to the gas particles at a specific snap?

Dylan Nelson
  • 25 Jan '22

I would suggest to read through the data release papers quickly. The tracers are not organized like the other particle types, according to group (or subhalo). So you cannot immediately load the tracers which only belong to a given halo.

The ParentID field tells you the parent of a tracer (which could be gas, star, or BH), so by loading the ParticleIDs of those types you can locate its parent. In reverse, given a set of e.g. gas cells of interest, you can figure out which tracers have ParentIDs corresponding to the ParticleIDs of those cells.

Inhyuk Park
  • 21 Aug '23

Dear Dylan,

I am trying to find the SFR for individual star cells. Like calculating SFH by using a GFM_InitialMass, I can reproduce SFH for each cells. However when dividing each time interval to get the SFR, I cannot decide a specific time interval for each bins. Is there any other ways to get the SFR for each star cells?

Dylan Nelson
  • 21 Aug '23

If you compute a SFH by histogramming the GFM_BirthTime field (weighted by GFM_InitialMass), then it would be a histogram whose bins have units of mass.

When you make the bins you decide on their size (in time). If you then normalize each bin by its size, you would be computing the average SFR in each bin (units of mass/time).

Inhyuk Park
  • 22 Aug '23

At a galaxy scale, I agree the way like normalizing by each bin size because It can be understood as the stellar mass that was born over a certain period of time.

But at a star cell scale, the cell just appears with the initial mass and doesn't have any certain period of time to born. So for star cells, the sfr values depend on the size of binning. How can I determine the time it took for a star cell to be born?

Dylan Nelson
  • 22 Aug '23

First, we would say "star particle" and "gas cell", but not mix the two.

A given star particle represents a simple stellar population (SSP) which forms at one instant in time, with one common metallicity. A single star particle, then, has no SFH or SFR(t). If anything, it could be represented as a delta function at the formation time. If you want to assume that all the stellar mass of a star particle forms over a non-instantaneous time scale (e.g. 1-10 Myr as a characteristic collapse timescale of a cloud), you could do so, but this would be a pure assumption, and not something coming from the simulation itself.

  • Page 1 of 1