Add miscentering to the theory module
Miscentered profiles (single cluster or stacked) should be added to the theory module. See e.g. the cluster-toolkit documentation.
- for a single cluster --> new R_mis parameter to quantify the miscentering + 2 integrations
- for a stack --> needs extra integration over a miscentering distribution
Is it better to create new 'miscentered' functions or have extra keywords to the existing ones? What precision are we happy to live with. If sticking with scipy.integrate, we'll have to sacrifice a bit accuracy for speed I believe...
Just pushed initial notebook that explores the set of integrals that need to be computed.
I made some optimization to the integrals and explored the possibilities of using different profiles and the CCL backend. The results on DeltaSigma_mis calculation are summarized here.
| implementation/profile | NFW | EIN | HER | ||||
|---|---|---|---|---|---|---|---|
| backend independent | 2 sec | 3 min | 2 sec | ||||
| implementation/profile | CCL NFW | CCL EIN | CCL HER | NC NFW | NC EIN | NC HER | CT NFW |
| optimized | 40 sec | 15 min^ | 40 sec | 20 sec | 10 sec | 15 sec | 1 min |
| original | 20 min | X | 7 min | 7 min | 4 min | 7 min | 30 min |
X = (possibly) won't finish ^ Use CCL PR 1093 (Merged into master as CCL v2.8.1.dev73+g86125b08)
- Backend independent implementation means we do not rely on the backends to calculate the surface mass densities.
- Relaxing
epsrelofquad_vecto 1e-6 will make the miscentering integrations work for the Hernquist profile (The default value is 1e-8) without compromising the precision of the profile. - backend independent EIN can potentially be faster by correctly setting up quad_vec to use multiprocessing.
I have added an option to compute Sigma mean miscentered with dblquad instead of two nested quads. Testing this on the demo_theory_functionality_oo.ipynb notebook, it seems to increase the speed x2.
However, the two variants (simple quads and dblquad) appear much slower in this notebook, as compared to the explore_miscentering_theory.ipynb notebook.
For an NFW profile, I obtain the following times :
-
explore_miscentering_theory.ipynb: backend independant : 2s backend independant + dblquad : 0.3s -
demo_theory_functionality_oo.ipynb: backend independant : 12s backend independant + dblquad : 5s
Not sure what is causing this difference