Haloprop Correlation#689
Conversation
Reviewer's GuideIntroduces a self-consistent, temporally correlated star-formation history (SFH) model driven by a new correlated_sfh backend, rewires halo/IGM pipelines to use node-based redshift broadcasting and SFH-based halo properties instead of independent RNG draws, and updates Python wrappers and structs accordingly while deprecating several redshift arguments and legacy stochastic parameters. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
|
@daviesje thanks for this! One question -- you mention that the reionization module should stay pretty similar. However, as you may see in #516, there is currently a problem with how we calculate reionization, due to the way cumulative recombinations are handled on short time-steps. We thought that perhaps your new source model might allow computing this based on the differential ionisation rate, dnion/dt rather than the cumulative nion. Do you have any thoughts on this? |
I don't think this model specifically "allows" that change (none of the techincal details really overlap), but having more consistent SF histories might avoid some pitfalls that could occur imnplementing it |
|
Thanks @daviesje, this sounds really cool! Could you share with us your notes (with equations)? Having them would make it easier to understand better the idea of this PR and review it. Plus, they could be the basis of any future paper that will come out of this work. |
https://www.wolframcloud.com/obj/2d233119-1277-40e1-a3b2-a8e561a58851 |
|
Hi @daviesje -- thanks for this work again. I just wanted to make one general comment: you've added a new global node redshift array, but we're actively trying to diminish the number of globals we are dealing with. Passing in the full array of node redshifts rather than just a single redshift is great (and we were planning on doing this already!), but can we make it so that we pass these in as a parameter, rather than a global? |
|
@steven-murray of course! Effectively I've added another parameter structure, minus some of the class logic. I guess when you're looking to reduce globals it should follow the whatever pattern you implement for the rest of the |
Note: I've written this description in a hurry, I intend to add to it after digging through my notes more, I'm also happy to answer questions
This PR serves as documentation and status for where I left off with the source model upgrade project. This is still unfinished in a few aspects but hopefully it's mostly just bugfixes, performance and cleanup.
The Idea: Self-Consistent Star-formation histories.
Determining SFR from stellar mass results in an inconsistency where integrating the SFR over time does not necessarily result in the stellar mass of the halo. this is exacerbated by the random sampling introduced in v4.
So instead of sampling the stellar mass, sfr and x-ray luminosity semi-independently, we sample the following three quantities:
All three of these quantities are sampled from a single spectral-density, (Carvajal-Bohorquez et al. 2025). Covariance matrices are computed analytically at the start of each snapshot and then sampled for each halo (see https://arxiv.org/html/2507.14746v1#S2). We get a 6x6 full covariance matrix since we condition each of the three quantities on their descendant.
After sampling the quantities, the 10Myr and 100Myr SFR can be used to compute emissivities correlated with shorter and longer timescales. At the moment 10Myr is used for X-ray, and 100Myr is used for Gamma 12. The snapshot-SFRs are added together, resulting in the stellar mass.
Status
correlated_sfh.cis complete and tested:TODOS
Known Issues
SFH_TAU, When I change it the SFHs don't respond the way I expectsfh_computedset properly, causing a crash at the first call ofComputeHaloBoxSummary by Sourcery
Introduce a self-consistent, temporally correlated star-formation history model and propagate it through halo sampling, halo gridding, and radiative transfer pipelines, using globally broadcast snapshot metadata instead of per-call redshift plumbing.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests:
Chores: