DRAKE: dark matter relic abundance beyond kinetic equilibrium​
​by Tobias Binder, Torsten Bringmann, Michael Gustafsson, Andrzej Hryczuk
This is a demonstration notebook showcasing the use of DRAKE (Dark Matter beyond Kinetic Equilibrium) numerical code.
The full release of the code can be obtained from drake.hepforge.org.
​
DRAKE is a numerical precision tool for predicting the dark matter relic abundance also in situations where the standard assumption of kinetic equilibrium during the freeze-out process may not be satisfied. The code comes with a set of three dedicated Boltzmann equation solvers that implement, respectively, the traditionally adopted equation for the dark matter number density, fluid-like equations that couple the evolution of number density and velocity dispersion, and a full numerical evolution of the phase-space distribution.
In[]:=
(*FirstquittheKerneltoavoidshadowingvariablenames*)​​Quit[]
In[]:=
(*MovetotheDRAKEdirectorythrough​​SetDirectory["<path to DRAKE main directory (where DRAKE.wl is located)>"];​​orifusingdirectlythismain.nbnotebook:*)​​SetDirectory[NotebookDirectory[]];​​(*LoadDRAKE*)​​Needs["DRAKE`"]​​(*InsomeMathematicaversionswarningscanappearthatareirrelevanttotheperformedcalcualtions.Forclarityofpresentationthesecanbeswitchedoffby*)​​SwitchOffWarnings
Welcome to DRAKE v1.0
The first step is to load the particle physics model, parameter point and the settings file. The code comes with 5 predefined models:“WIMP” - WIMP-like toy model“SE” - model with Sommerfeld enhanced DM annihilation“VRES” - vector resonance model“TH” - sub-threshold DM annihilation model“ScalarSingletDM” - Silveira-Zee DM modeland a model template with a script to streamline implementation of additional ones.​Below as an example we choose the SE model:
In[]:=
(*Loadmodel,parameterandsettingsfiles​​GetModel[model,parameters,settings]​​e.g.:*)​​GetModel["SE","bm1","settings_bm1"]
----------------- Model: Sommerfeld-enhanced annihilation scenario ----------------
{-------- card: bm1 mDM=2000. gDM=2 g=0.928335 mphi=85.--------}
Relic density calculation - the core of the DRAKE package:
nBE - solution for only number density n
cBE - solution for number density (Y=n/s) and temperature parameter y
fBE - solution for full phase space density f(p)
​
All three choices are demonstrated below:
In[]:=
(*Caculatethe<σv>andΩh2withthenBEapproach*)​​PrepANN;​​nBE
Out[]=
Oh2nBE = 0.0175098
In[]:=
(*Caculatethe<σv>_2,γ(x)andΩh2withthecBEapproach*)​​If[!scatttype"gamma(x)"&&!FullCel,PrepSCATT];​​(*PrepANN;*)(*uncommentifnotcalledearlier*)​​PrepANN2;​​cBE
Out[]=
Oh2cBE = 0.00506208
In[]:=
(*Caculatethe<σv>_θandΩh2withthefBEapproach*)​​If[!Analyticsvtheta,PrepANNtheta;RegArrayGen[tsvtheta]];​​(*If[!scatttype"gamma(x)"&&!FullCel,PrepSCATT];*)(*uncommentifnotcalledearlier*)​​fBE
Out[]=
Oh2fBE = 0.00524177
Visualize the numerical results
In[]:=
(*Printoutresultplots*)​​MakePlots
The above is the standard DRAKE output. All the results are stored in output file and can be easily adjusted to specific needs of the user. Below as a demonstration we add also a version of the fBE routine that provides also an animation of the evolution of the DM phase space density with time:
In[]:=
Get["./src/fBE-animate.wl"];​​fBEanimate​​animate
Out[]=
Oh2fBE = 0.00524177
Out[]=

Reference:

"DRAKE: Dark matter Relic Abundance beyond Kinetic Equilibrium"
Tobias Binder (Tokyo U., IPMU), Torsten Bringmann (Oslo U.), Michael Gustafsson (Gottingen U.), Andrzej Hryczuk (NCBJ, Warsaw)
Published in: Eur.Phys.J.C 81 (2021), 577
e-Print: 2103.01944 [hep-ph]