mimes is hosted by Hepforge, IPPP Durham

Template arguments and compile-time options

You need to choose what numeric type to use. This is done by the template argument LD which should be double (fast) or long double (accurate).

You also need to tell MiMeS which integration strategy to use. This is done by choosing template arguments:

  1. Solver can be set to 1 for Rosenbrock (semi-implicit Runge-Kutta). The Method argument in this case can be:
    1. RODASPR2<LD> (4th order).
    2. ROS34PW2<LD> (3rd order).
    3. ROS3W<LD> (2rd order, very bad).
  2. Solver can be set to 2 for explicit RK. The Method argument can be:
    1. DormandPrinceRK45<LD> (7th order)
    2. CashKarpRK45<LD> (5th order, very bad).
    3. RK45<LD> (5th order, very bad).

Definitions.mk

In order to call the python interface of MiMeS, we need to first call make lib in the root directory of MiMeS.

Before that, we can take some time to decide what the template arguments and compilation options should be. In the file MiMeS/Definitions.mk, you can change the variables:
  1. LONGpy=long will compile the library with long double numeric types. If LONGpy is left empty (i.e. LONGpy=) the library will be compiled with double numeric types.
  2. SOLVER and METHOD, as in the template arguments.
Also, in the same file, you can change compilation options:
  1. Compiler:
    1. CC=g++ in order to use the GNU compiler.
    2. CC=clang -lstdc++ in order to use the clang compiler.
  2. Optimization level:
    1. OPT=O0: No optimization.
    2. O=O1, O2, or O3: all these perform mostly the same (read the compiler documentation for more information on the optimization).
    3. OPT=Ofast: full optimization (fast, but dangerous).

Paths.mk

MiMeS is written in order to be as general and as simple to use as possible. For this reason, there is a file in MiMeS/Paths.mk where the user can provide paths to the files needed. The file paths are given in terms of the variables cosmoDat, axMDat, and anFDat; corresponding to the data for the relativistic degrees of freedom (RDOF), axion mass, and the anharmonic factor. MiMeS, by default uses the RDOF tabulated in 2005.03544, the data for the axion mass as given in 1606.07494, and a few data points for the anharmonic factor, in order to avoid computing the same integral every time MiMeS is called. It is worth noting, that the axion mass data file path can be omitted if the user intends to define a function that does not need any data.

These paths are stored as strings in MiMeS/src/misc_dir/path.hpp when bash configure.sh is run. They can be changed by changing the following variables in MiMeS/Paths.mk:

  1. cosmoDat: Relative path to data file with TT (in GeV), heffh_{eff}, geffg_{eff}.
  2. axMDat: Relative path to data file with TT (in GeV{GeV}) and χ(T)\chi(T) (in GeV4{GeV}^4). This variable can be ommitted if the user indents to define all masses via functions.
  3. anFDat: Relative path to data file with θmax\theta_{max}, f(θmax)f(\theta_{max}).

It is advisable that if the paths change bash configure.sh and make should be run.

Important: The axion mass is assumed to be a function of faf_a and TT. Especially, when it is defined from a file, it is assumed to be of the form m̃a2(T)=χ(T)fa2. \tilde{m}_{a}^{2}(T)=\dfrac{\chi(T)}{f_a^2} \;. Therefore, in a model where there is no faf_a, the user may use fa=1f_a=1.