-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
General framework for baryonic effects with the halo model #1227
Comments
Excellent proposal! One point to potentially keep in mind are some of the inherent limitations of (vanilla) halo models and if there are ways to address them at the level of this framework. For example:
|
Thanks for putting all this together, @damonge ! Completely agreed that the power of this framework would be in its modularity! Having now implemented/validated the profiles from multiple "distinct" baryon halo models, it's quite obvious to me that the different profiles we use are often somewhat slightly altered versions of some common model. So being able to mix and match will be a key strength for whatever we build here. Some loose set of thoughts on the above list:
Happy to contribute any code from BaryonForge to be replicated/used towards these CCL efforts! That entire codebase was developed with the goal of synergizing with CCL, so this plan is along the lines of what I'd thought about in the past! My current implementation of the halo model Pk (including existing timings) is all summarized in this notebook. |
Thanks both! (@tilmantroester , no idea why I didn't tag you above. d'uh... sorry about that). Regarding this point:
What do you mean exactly? In principle we do not truncate above the virial radius (unless a given profile has this by construction). Or do you mean allowing for non-zero variance outside the virial radius in the one-halo term? |
Happy to help in my capacity of old useless scientist ;-)
I am a big fan of Baryon forge too
…On Fri, Feb 21, 2025 at 12:30 PM David Alonso ***@***.***> wrote:
Thanks both! ***@***.*** <https://github.com/tilmantroester> , no
idea why I didn't tag you above. d'uh... sorry about that).
Regarding this point:
For things like cross-correlations, there needs to be some thought on how
to allow profiles outside the virial radius interact with other profiles.
What do you mean exactly? In principle we do not truncate above the virial
radius (unless a given profile has this by construction). Or do you mean
allowing for non-zero variance outside the virial radius in the one-halo
term?
—
Reply to this email directly, view it on GitHub
<#1227 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA72CGK5SC5UN57O3U2S6E32Q5PEHAVCNFSM6AAAAABXSZBHJ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMNZVGE2DKNZYGM>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
[image: damonge]*damonge* left a comment (LSSTDESC/CCL#1227)
<#1227 (comment)>
Thanks both! ***@***.*** <https://github.com/tilmantroester> , no
idea why I didn't tag you above. d'uh... sorry about that).
Regarding this point:
For things like cross-correlations, there needs to be some thought on how
to allow profiles outside the virial radius interact with other profiles.
What do you mean exactly? In principle we do not truncate above the virial
radius (unless a given profile has this by construction). Or do you mean
allowing for non-zero variance outside the virial radius in the one-halo
term?
—
Reply to this email directly, view it on GitHub
<#1227 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA72CGK5SC5UN57O3U2S6E32Q5PEHAVCNFSM6AAAAABXSZBHJ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMNZVGE2DKNZYGM>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Hi, @damonge, @anicola @rreischke @DhayaaAnbajagane @rteyssier @tilmantroester et al. fantastic suggestions! I will give it more thought and get back to you. In the meantime, for the rest of you (Elisa nda David know about this): there is a fully functioning Baryon Halo Model implementation that lives buried on this branch, done by myself and @elisachisari . I have designed it so you can initialize the class with some params (can be extended) and you can get either the individual profiles, cross Pks or a full one. Best |
It's been a while but IIRC, the issue we had in HMx is that for common profiles (like NFW) there is a truncation, which causes weird effects when combined with profiles outside the truncation radius. In HMx the solution was to put the ejected component into the 2h term, effectively having different profiles for the 1h and 2h terms. But there might be better solutions to this by now that I don't know about! |
Just linking Sec 6.2.6 of the Hmx paper that shows past Tilman's (and Alex's) discussion of this point:) I'm not aware of solutions to this issue that have come out since the HMx paper was written (though I also don't have a sense for how prevalent this DM-gas anticorrelation issue is across the parameter space). Personally, I feel the easiest thing to do is not have a sharp truncation in these profiles. We'd therefore be adopting the Schneider19 normalization formalism for the profiles in the other models as well. But my perspective is also influenced by the fact that adding the ejected mass to the 2-halo term causes problems when using the resulting halo model for baryonifying simulations (modifying the 2-halo term causes issues on large-scales when baryonifying sims) |
Summarizing here (for record sake) a message from CCL slack to say I finally fixed up the last part of my HMx implementation in BaryonForge, and at this point the codebase contains every piece of the fiducial HMx model. We therefore have everything we need to do a like-for-like transfer of pyhmcode functionality (at least for the fiducial model) into CCL. (This last step I implemented was about enabling the Mead2020 calculation where the ejected gas is added to just the 2-halo term and doesn't impact the 1-halo term at all.) |
It would be really good to have a general, flexible, and efficient implementation of halo model power spectra with baryonic effects. Most implementations split the total matter profile into several components (e.g. modified dark matter profile, bound gas, ejected gas, stars). The total matter profile is then the sum of these. Then, there are many different parametrisations for each of these components, with some implementations sharing the same functional forms, and other combining different ones. Our implementation should be able to play well with this modelling richness. I.e. we should provide a general framework in which users can easily use existing models, modify them, create new components and combine them with existing ones, etc. E.g. a user may like the gas profile from Arico et al. but would like to combine it with a new stellar profile using their own parametrisation. E.g. 2: a user may have a model in which the gas and star parameters share some physical parameters (e.g. to fix their normalisation).
Here is a bare bones proposal for what this could look like.
HaloProfile
class calledBaryonsCombiner
, or something like that, that takes in a list of profile objects and whose_real
and_fourier
methods consist of adding the result of calling these methods for each profile in the list. In addition to this combiner class, we will provide specific implementations for the ingredients of some of the most popular models, as well as examples for how to combine them.update_parameters
method should update the parameters of all profiles in its list, passing only the relevant parameters, including all shared parameters.BaryonsCombiner
object that represents the matter density in a gravity-only simulation._real
method of the combined profile will just be the sum of the_real
s of all its children profiles, with no additional normalisation.It would be really good to hear people's thoughts/suggestions about the above. This is only a proposal and I'm sure others have better/alternative ideas.
A few more thoughts:
I'll tag a few other people who I think will be interested in this @anicola @elisachisari @nikosarcevic @rreischke (and I'm sure I'm missing others).
The text was updated successfully, but these errors were encountered: