diff --git a/assets/brighness_temperature.png b/assets/brighness_temperature.png new file mode 100644 index 0000000..b4a1bb5 Binary files /dev/null and b/assets/brighness_temperature.png differ diff --git a/assets/cmb_and_dtb.jpeg b/assets/cmb_and_dtb.jpeg new file mode 100644 index 0000000..42eda22 Binary files /dev/null and b/assets/cmb_and_dtb.jpeg differ diff --git a/assets/image copy.png b/assets/image copy.png new file mode 100644 index 0000000..b4a1bb5 Binary files /dev/null and b/assets/image copy.png differ diff --git a/assets/profiles.png b/assets/profiles.png new file mode 100644 index 0000000..ca8f5bf Binary files /dev/null and b/assets/profiles.png differ diff --git a/assets/signals.png b/assets/signals.png index 7d2a5e1..3c23873 100644 Binary files a/assets/signals.png and b/assets/signals.png differ diff --git a/backup.typ b/backup.typ index dd95b62..64f7cc8 100644 --- a/backup.typ +++ b/backup.typ @@ -1,9 +1,50 @@ #import "globals.typ": * +== Full profiles +$ + rho_alpha (r bar M, z) = (1 + z)^2 / (4 pi r^2) dot sum_(n=2)^(n_m)f_n dot epsilon_alpha (nu prime) dot f_star dot dot(M)(z prime bar M, z) +$ +with the lookback redshift $z prime$ so $nu prime = nu dot (1+z prime) slash (1+z)$ + +$=>$ coupling coefficient +$ + x_alpha (r bar M, z) = (1.81 dot 10^11) / (1 + z) dot S_alpha (z) dot rho_alpha (r bar M, z) +$ +with a suppression factor $S_alpha (z)$ + + +#pagebreak() +$ + rho_"xray" (r bar M, z) = 1 / r^2 sum_i f_i f_(X,h) dot integral_(nu^i_"th")^oo d nu (nu - nu^i_"th") h_P sigma_i (nu) e^(-tau_nu) f_star dot(M) (z prime bar M, z) +$ +$ + ==> 3/2 dot derivative(rho_h (r bar M, z), z) = (3 rho_h (r bar M, z)) / (1 + z) - (rho_"xray" (r bar M, z)) /(k_B (1 + z) H(z)) +$ +with the Boltzmann constant $k_B$ and $H(z)$ is the Hubble parameter +// where i={H, He} and νi thhP ={13.6, 26.5} eV. +// Contribution from both He and H since +// No defined sum but integral due to all radiations being xray + +// Lookback comes from the definition of comoving r: +// $r = integral_(z)^(z prime) c dz dot (1+z) / H(z)$ + +#pagebreak() + +The comoving ionized volume around a source of ionizing photons satisfies the differential equation +$ + derivative(V, t) = dot(N)_"ion"(t) / overline(n)_H^0 - alpha_B dot C / a^3 dot overline(n)_H^0 dot V +$ +bubble radius $R_b = root(3, 3/ (4pi) V(M,z))$ and using the Heaviside step function $theta_H$: +$ + x_("HII")(r bar M, z) = theta_"H" lr([R_b (M, z) - r], size: #150%) +$ + + == Validation -#[ - #set image(height: 45%, fit: "contain") +#line(length: 100%, stroke: 0pt) +#align(center)[ + #set image(height: 43%, fit: "contain") #let notebook = json("../workdir/11_visualization/validation_simple_run.ipynb") #image_cell(notebook, cell_id: "validation_signal_comparison_old_v_new") @@ -13,11 +54,11 @@ -== Backup slides -This is a backup slide -#lorem(50) - -== Another backup slide -#lorem(50) +== Thesan resolution issues +#let notebook = json("../workdir/11_visualization/halo_mass_function_thesan_1_2.ipynb") +#line(length: 100%, stroke: 0pt) +#align(center)[ + #image_cell(notebook, cell_id: "halo_mass_functions") +] diff --git a/beorn.typ b/beorn.typ index 9a3cd92..755372b 100644 --- a/beorn.typ +++ b/beorn.typ @@ -38,9 +38,9 @@ #pinit-point-to( (1, 2), pin-dx: 20pt, - pin-dy: -20pt, + pin-dy: -30pt, body-dx: -70pt, - body-dy: -80pt, + body-dy: -95pt, offset-dx: 20pt, offset-dy: 30pt, )[spherical symmetry] @@ -50,12 +50,12 @@ #pinit-point-to( (3, 4), pin-dx: 20pt, - pin-dy: -20pt, - body-dx: -90pt, - body-dy: -80pt, + pin-dy: -30pt, + body-dx: -70pt, + body-dy: -95pt, offset-dx: 20pt, offset-dy: 30pt, -)[convolution (fft)] +)[convolution (`FFT`)] #pagebreak() diff --git a/conclusion.typ b/conclusion.typ index d0931f0..d2492c3 100644 --- a/conclusion.typ +++ b/conclusion.typ @@ -2,14 +2,37 @@ = Conclusion == Summary -- We presented Beorn, a new code to simulate the 21cm signal from the EoR and Cosmic Dawn. -- Beorn is based on the halo model and uses a novel approach to compute the 21cm signal from 1D profiles around individual sources. -- Beorn is fast, flexible, and easy to use. -- We validated Beorn against numerical simulations and showed that it can reproduce their results with good accuracy. -- Beorn is publicly available and can be used for a variety of applications, including forecasting, parameter estimation, and data analysis. +- #beorn a semi-numerical tool to simulate the 21-cm signal + + - uses the _halo model of reionization_ + - describes sources in terms of their host DM halo + - $=>$ central dependence on halo growth + // since it affects the SFR and thus the emissivity + +- more accurate treatment of *individual* mass accretion + // change in profiles trivially + - leads to significant changes to reionization history + // which could in theory be absorbed by shifting other paremeters + - map-level fluctuations + // which we can hope to observe (although many are subtle) + +// unique position of 21-cm cosmology -> cannot discuss observational constraints + +- #beorn python package: #link("https://github.com/cosmic-reionization/beorn") + // invite you to check out + - simulation-agnostic + - easier to use + - fully parallelized + + +== Outlook +- further validation +// finally ready for direct comparison with c2ray? now that parameters and loading have been properly implemented -== Upcoming improvements - investigation + parameterization of stochasticity -- application to larger volumes -- fully parallel runs +// Assuming other relations related to production of photons is (hopefully by now well motivated) complex +// these cannot directly be inferred => expressed as a distribution as a function of another halo property +- application to larger volumes +// the scale-up -> large volumes with usable merger trees +// comitting to reserving some 100s of node hours (which I would still quantify as fast) diff --git a/halo_model.typ b/halo_model.typ index 43d6c04..aa45c81 100644 --- a/halo_model.typ +++ b/halo_model.typ @@ -3,7 +3,7 @@ == The halo model of reionization -Following @Schneider_2021 @schneider2023cosmologicalforecast21cmpower: +Following @Schneider_2021 @schneider2023cosmologicalforecast21cmpower, the halo model describes (#link(, "derivation")): #line(length: 100%, stroke: color.white.transparentize(100%)) #pause @@ -16,7 +16,11 @@ $ $ 3/2 dot derivative(rho_h (r bar M, z), z) = (3 rho_h (r bar M, z)) / (1 + z) - (rho_"xray" (r bar M, z)) /(k_B (1 + z) H(z)) $ - +// From the xray emission +// primordial + heating term +// expansion + deposition by xrays +// => xrays are assumed to be the only source of heating +// #pause $ derivative(V_b, t) = dot(N)_"ion"(t) / overline(n)_H^0 - alpha_B dot C / a^3 dot overline(n)_H^0 dot V_b @@ -26,8 +30,15 @@ $ // $ #pagebreak() +Visually: +#image("assets/profiles.png") +// COMMENTS: +// - contribution from the lyman lines +// - 1/r^2 decrease from spreading photons +// - more steep outwards + sharp drop due to redshifting out of line +#pagebreak() == Revisiting the 21cm signal diff --git a/implementation.typ b/implementation.typ index 2217a20..bcfe96b 100644 --- a/implementation.typ +++ b/implementation.typ @@ -3,21 +3,47 @@ #let notebook = json("../workdir/11_visualization/simple_run_example.ipynb") -= Implementation += Adaptations + + +== Central changes + +- profile generation taking into account halo growth rate + +- reading merger trees + inferring growth rates + +- parallel painting across multiple halo bins +// important since the bins are more now + +- performance and ease of use +// largely through vectorization -> still "native" python +// usage of HDF5 +// solid caching mechanisms -> resume simulations, etc... + +// #v(5em) +// #text( +// size: .7em, +// )[ +// (#link(, "Validated")) +// ] + + == Simplified usage #text( - size: .7em, + size: .65em, )[ - #show raw: it => { - show regex("pin\d"): it => pin(eval(it.text.slice(3))) - it - } - #code-block( - filename: "beorn.py", - language: "python", - code_cell(notebook, cell_id: "code_for_run"), - ) + #columns(2, gutter: 3pt)[ + #show raw: it => { + show regex("pin\d"): it => pin(eval(it.text.slice(3))) + it + } + #code-block( + filename: "beorn.py", + language: "python", + code_cell(notebook, cell_id: "code_for_run"), + ) + ] // #pinit-point-to(1)[Hello] // #pinit-point-to(2)[Hello] // #pinit-point-to(3)[Hello] @@ -27,4 +53,3 @@ ] -#link(, "Validated") diff --git a/introduction.typ b/introduction.typ index 8b6e12d..b5251ff 100644 --- a/introduction.typ +++ b/introduction.typ @@ -9,7 +9,10 @@ - Is strongly linked to the formation and growth of the first galaxies and black holes. -- Sets the stage for many observables: CMB secondary anisotropies, 21-cm signal, high-z galaxy surveys. +- Sets the stage for many observables: + - CMB secondary anisotropies + - 21-cm signal + - high-z galaxy surveys. // reformulate @@ -20,12 +23,19 @@ The brigthtness temperature describes the difference between the CMB temperature #v(1em) -#grid(columns: 2, align: center)[ - #image("assets/cmb_black_body_spectrum.svg", height: 1fr, fit: "contain") #text(size: 0.8em)[from @cmb_spectrum] +#grid(columns: 2, align: center, column-gutter: 1em)[ + #image("assets/cmb_and_dtb.jpeg", height: 1fr, fit: "contain") #text(size: 0.8em)[from @cmb_spectrum] ][ #pause - Removing the contribution from the black body spectrum of the CMB yields the explicit 21-cm signal: - #image("assets/cmb_black_body_spectrum.svg", height: 1fr, fit: "contain") + #set text(size: 0.8em) + remove contribution from the BB spectrum: + + _differential brightness temperature_ + + $==>$ the actual 21-cm signal + + #image("assets/brighness_temperature.png", fit: "contain") + from @Schaeffer_2023 ] #pagebreak() @@ -37,6 +47,9 @@ The brigthtness temperature describes the difference between the CMB temperature #text(size: 0.8em)[from @Pritchard2012] ] +// COMMENTS: + + == Expression the 21-cm signal Expressing the _differential brightness temperature_ (e.g @Pritchard2012): @@ -59,113 +72,37 @@ $ #layouts.contained( [ *Traditional approaches* - - // keypoints that describe heavy hydro + radiative transfer simulations - - require hydrodynamics - - require radiative transfer - - scale poorly + // From first principles + - need to cover large dynamic range + // small scales to resolve sources + sinks + feedback + // large scales to capture statistics + - hydrodynamics & radiative transfer + - hard to scale $=>$ no reproducibility #pause ], [ - #text(weight: "bold")[semi-numerical approaches] + #pad(1em)[ + #align(left)[ + #text(weight: "bold")[semi-numerical approaches] - such as #beorn @Schaeffer_2023, `21cmFAST` [CITATION] - - approximative treatment - - link - - scalable + efficient + such as #beorn @Schaeffer_2023, `21cmFAST` @21cmfast - $=>$ reproducible and flexible + // IF ASKED: difference with `21cmFAST`: + // based on excursion formalistm -> only valid >= 1Mpc, which is ideal for large volumes + statistics => 21-cm forecasts + + $->$ approximative treatment + + $->$ link + + $->$ scalable + efficient + + $=>$ reproducible and flexible + // interesting to build emulators for instance + ] + + ] ] ) - -// #layouts.two-boxes( -// [ -// #text(weight: "bold")[Traditional approaches] - -// // keypoints that describe heavy hydro + radiative transfer simulations -// - require hydrodynamics -// - require radiative transfer -// - scale poorly - -// $=>$ no reproducibility -// #pause -// ], -// [ -// *semi-numerical approaches* - -// such as #beorn @Schaeffer_2023, `21cmFAST` [CITATION] -// - approximative treatment -// - link -// - scalable + efficient - -// $=>$ reproducible and flexible - - -// ] -// ) - -#pagebreak() - -== Matrix - -#layouts.matrix(( - brand.wordmark, - brand.wordmark, - brand.wordmark, - brand.wordmark, - brand.wordmark, - brand.wordmark -)) - -== Contained -#layouts.contained( - columns(2, [ - - #lorem(10) - - #lorem(15) - - #lorem(25) - ]), - brand.wordmark -) - - - -== Four columns - -#layouts.four-columns( - [ - #text(weight: "bold", brand.wordmark) - #v(1em) - #text(size: 10.5pt)[#lorem(60)] - ], - [ - #text(weight: "bold", brand.wordmark) - #v(1em) - #text(size: 10.5pt)[#lorem(45)] - ], - [ - #text(weight: "bold", brand.wordmark) - #v(1em) - #text(size: 10.5pt)[#lorem(75)] - ], - [ - #text(weight: "bold", brand.wordmark) - #v(1em) - #text(size: 10.5pt)[#lorem(50)] - ] -) - - - -== Two columns - -#layouts.contained( - columns(2, [ - - #lorem(10) - - #lorem(15) - - #lorem(25) - ]), - brand.wordmark -) diff --git a/main.typ b/main.typ index fa15dcf..c421532 100644 --- a/main.typ +++ b/main.typ @@ -107,6 +107,7 @@ institution: [ETH Zürich, University of Zürich], // logo: brand.logo, ), + config-common(handout: true) // footer-left: self => [..#padded_logos], ) @@ -126,7 +127,7 @@ = End == Thank you for your attention -#bibliography("references.bib") +#bibliography("references.bib", title: "References") #show: appendix #include("backup.typ") diff --git a/main2.pdf b/main2.pdf deleted file mode 100644 index 8203053..0000000 Binary files a/main2.pdf and /dev/null differ diff --git a/main2.typ b/main2.typ deleted file mode 100644 index f051983..0000000 --- a/main2.typ +++ /dev/null @@ -1,147 +0,0 @@ -#import "@preview/touying:0.6.1": * -#import "@preview/touying-unistra-pristine:1.4.2": * - -#show: unistra-theme.with( - aspect-ratio: "16-9", - config-info( - title: [Title], - author: [Author], - date: datetime.today().display("[month repr:long] [day], [year repr:full]"), - logo: image("assets/cmb_black_body_spectrum.svg"), - ), - config-store( - quotes: ( - left: "‘", - right: "’", - ), - icon-links: ( - "image": ( - regex("\.(jpg|jpeg|png|bmp|svg|webp|tiff)$"), - none, - ), - ), - ), -) - -#title-slide(logo: image("assets/eth-logo.svg")) - -= Example Section Title - -== Example Slide - -A slide with *important information*. - -#pause - -=== Highlight -This is #highlight(fill: blue.C)[highlighted in blue]. This is #highlight(fill: yellow.C)[highlighted in yellow]. This is #highlight(fill: green.C)[highlighted in green]. This is #highlight(fill: red.C)[highlighted in red]. - -#hero( - image("assets/eth-logo.svg"), - title: "Hero", - subtitle: "Subtitle", - hide-footer: false, -) - -#hero( - image("assets/cmb_black_body_spectrum.svg", width: 100%, height: 100%), - txt: ( - text: "This is an " - + highlight( - fill: yellow.C, - )[RTL#footnote[RTL = right to left. Oh, and here's a footnote!] hero with text and no title] - + ".\n", - enhanced: false, - ), - direction: "rtl", - footnote: true, -) - -#gallery( - // image("../assets/cat1.jpg", width: auto, height: 50%), - // image("../assets/cat2.jpg", width: auto, height: 50%), - // image("../assets/cat1.jpg", width: auto, height: 50%), - // image("../assets/cat2.jpg", width: auto, height: 50%), - title: "Gallery", - captions: ( - "Cat 1", - "Cat 2", - "Cat 1 again", - "Cat 2 again", - ), - columns: 4, -) - -#focus-slide( - theme: "smoke", - [ - This is a focus slide \ with theme "smoke" - ], -) - -#focus-slide( - theme: "neon", - icon: nv-icon("text-undo"), - [ - This is a focus slide \ with theme "neon" and Nova icon "text-undo" - ], -) - -#focus-slide( - theme: "yellow", - icon: us-icon("book-open"), - [ - This is a focus slide \ with theme "yellow" and Unistra icon "book-open" - ], -) - -#focus-slide( - c1: black, - c2: white, - icon: us-icon("plant"), - [ - This is a focus slide \ with custom colors \ and Unistra icon "plant" - \ Next: Section 2 - ], - text-color: yellow.D, -) - -= Section 2 - -== Hey! New Section! - -#lorem(30) -#pause -#lorem(20) -#pause -Hello! -=== Heading 3 - -#lorem(10) - -==== Heading 4 - -#lorem(80) - -#quote( - attribution: [from the Henry Cary literal translation of 1897 | *Noticed the custom quotes?*], -)[ - ... I seem, then, in just this little thing to be wiser than this man at - any rate, that what I do not know I do not think I know either. -] - -#slide[ - First column. #lorem(15) -][ - Second column. #lorem(15) -] - -== Icon Links - -https://i.edoyen.com/ShareX/2025/07/ky3Hdt.gif - -#link("https://i.edoyen.com/ShareX/2025/07/ky3Hdt.gif")[with \#link] - -https://i.edoyen.com/ShareX/2025/07/ky3Hdt.gif - -https://i.edoyen.com/ShareX/2025/07/ky3Hdt.jpg diff --git a/references.bib b/references.bib index 502d4a3..0d725bb 100644 --- a/references.bib +++ b/references.bib @@ -441,5 +441,9 @@ archivePrefix = {arXiv}, @website{cmb_spectrum, title = "CMB spectrum", - url = "https://commons.wikimedia.org/wiki/File:Cmbr.svg", + url = "https://asd.gsfc.nasa.gov/archive/arcade/cmb_intensity.html", } + + + + diff --git a/refinements.typ b/refinements.typ index e8581b8..06b50cc 100644 --- a/refinements.typ +++ b/refinements.typ @@ -21,7 +21,12 @@ #pause ], [ - ... + $->$ inaccurate when applied to all halos + + $->$ #text(weight: "bold")[inconsistent] with the N-body output + + #pause + $->$ stochasticity for a more realistic description? ] ) @@ -31,13 +36,41 @@ #image_cell(notebook, cell_id: "profile_plot_alpha_dependence") +$M_"h" = 6.08 dot 10^11 M_dot.circle$ (fixed) + +$==>$ correction up to $times 5$ + +// COMMENTS +// That will be directly affect the global signal as well +// shifting +// +// Yu-Siu already investigated the more nuanced effect of stochasticity but the approach we propose should supersede that + +#pagebreak() == Inferring growth from #smallcaps[Thesan] data -#lorem(50) +- already includes precomputed merger trees @Springel2005 +// ideal for rapid iterations + +- follow main progenitor branch back in time + +- fit the exponential model to main progrenitor branch +// in a parallelized fashion => want to stay fast +// fix the original mass for max. consistency +// fix the allowed dynamic range + +- use *individual growth* to select profile +// this sort of "breaks the degeneracy" between halos of the same mass but different growth histories + +- *self-consistent*#pause$*$#meanwhile treatment of halo growth leveraging the snapshots + + +#pagebreak() + #let notebook = json("../workdir/11_visualization/show_trees.ipynb") #[ #set image(width: 100%, fit: "contain") #image_cell(notebook, cell_id: "merger_tree_and_fitting") ] - - +// COMMENTS: +// no clear trend between mass and growth rate diff --git a/results.typ b/results.typ index 4536838..39536af 100644 --- a/results.typ +++ b/results.typ @@ -4,10 +4,44 @@ == Map outputs #let notebook = json("../workdir/11_visualization/simulation_maps.ipynb") -#image_cell(notebook, cell_id: "presentation_x_alpha_map") -#image_cell(notebook, cell_id: "presentation_temperature_map") -#image_cell(notebook, cell_id: "presentation_xHII_map") -#image_cell(notebook, cell_id: "presentation_dtb_map") +#grid( + columns: (auto, 10em) +)[ + #image_cell(notebook, cell_id: "presentation_x_alpha_map") +][ + #lorem(20) +] + +#pagebreak() + +#grid( + columns: (auto, 10em) +)[ + #image_cell(notebook, cell_id: "presentation_temperature_map") +][ + #lorem(20) +] + +#pagebreak() + +#grid( + columns: (auto, 10em) +)[ + #image_cell(notebook, cell_id: "presentation_xHII_map") +][ + #lorem(20) +] + +#pagebreak() + +#grid( + columns: (auto, 10em) +)[ + #image_cell(notebook, cell_id: "presentation_dtb_map") +][ + #lorem(20) +] +