darksusy is hosted by Hepforge, IPPP Durham

Documentation

Overview

The most complete description of the physics going into DarkSUSY is

T. Bringmann, J. Edsjö, P. Gondolo, P. Ullio and L. Bergström,
JCAP 1807 (2018) 033 [arXiv:1802.03399]

and

P. Gondolo, J. Edsjö, P. Ullio, L. Bergström, M. Schelke and E.A. Baltz,
JCAP 07 (2004) 008 [astro-ph/0406204],

as well as references therein. Please refer to this if you use DarkSUSY. Updates after version 6.1 are described here (until version 6.3).

There is an (incomplete) manual in pdf format, as well as a long version with routine headers: Manual-long.pdf. After 'make manual', you can also find these files in the /docs directory of your DarkSUSY installation.

A very good way of getting started and exploring the various features of DarkSUSY is typically to have a look at the example programs located in the /examples directory of every download. Some example applications are further illustrated here.

Main concepts

As illustrated in the figure below, every main program (provided by the user) has to be linked to the DarkSUSY core library (containing only fully model-independent routines) and one of the implemented particle physics modules.

The core library communicates with the active particle physics module via a small set of interface functions (these functions, about a dozen in the present release, also contain the keyword 'interface' in the function header). Another concept of practical importance is that of replaceable functions: the modularity of the code allows to 'replace' most DarkSUSY functions with a user-defined version, which then is used fully consistently in the rest of the code, without recompiling the DarkSUSY libraries or changing anything in the installation directory. In particular, this can be done for all interface functions. (One conrete example for the application of this conecpt is provided in examples/aux/oh2_generic_wimp.f and its two different make targets, 'make oh2_generic_wimp' and 'make oh2_generic_wimp_threshold')

Typical usage

There are many ways of using DarkSUSY, but in the following we briefly outline the recommended way for non-expert users. This is the least error-prone way as it ensures that you keep your own code (and modifications) separate and that you never modify the officially released version of the code. Following these steps also ensures that you always link to the correct version of the DarkSUSY libraries, and use the same compiler settings as automatically determined during the installation process.

1. After installing DarkSUSY, choose the example program in /examples/aux/ that comes closest to what you plan to do. Copy the respective EXAMPLE_PROGRAM.f, along with the makefile in that directory into a separate, local directory my_DS_mains/ that lies outside the DarkSUSY installation directory.

2. In my_DS_mains/, edit the makefile to a) remove all target blocks that refer to programs you have not copied and then b) change every occurence of 'EXAMPLE_PROGRAM' with the name that you want to give your main program. Make sure to change the filename of EXAMPLE_PROGRAM.f correspondingly.
[2b. If you want to 'change' any of the routines provided by DarkSUSY, follow the example of replaceable functions for oh2_generic_wimp.f, as indicated above.]

3. Edit your new example program as desired, then simply type 'make' to compile. DONE :)