3. Working with parameter files
Specifying the many parameters to the concept script via the -c option
quickly becomes tiresome. A better solution is to write all parameters in a
text file.
Tip
The param directory is meant as a dedicated place to store your
parameter files. It comes with a few example parameter files included.
Copy the content below to a file named e.g. param/tutorial-3:
# Non-parameter helper variable used to control the size of the simulation
_size = 64
# Input/output
initial_conditions = {
'species': 'matter',
'N' : _size**3,
}
output_dirs = {
'powerspec': f'{path.output_dir}/{param}',
}
output_times = {
'powerspec': [a_begin, 0.3, 1],
}
# Numerics
boxsize = 4*_size*Mpc/h
potential_options = 2*_size
# Cosmology
H0 = 67*km/(s*Mpc)
Ωb = 0.049
Ωcdm = 0.27
a_begin = 0.02
To run CONCEPT using this parameter file, do
./concept \
-p param/tutorial-3 \
-n 4
The simulation specified by the above parameters is quite similar to the simulations of the previous section, though we’ve now been more explicit about the cosmology and the size of the simulation box, and also refined the output specifications. In doing so, we’ve made use of several helpful tricks:
The comments / section headings are there for organisational purposes only. These may be omitted, and the order in which the parameters are specified does not matter.
Parameter files are glorified Python scripts, and so we may utilize the full Python (3) language when defining the parameters. We can also define helper variables that are not themselves parameters, like
_sizeabove, which here is used to simultaneously adjust the number of particles'N', the side length of the simulation boxboxsizeand the size of the potential grid viapotential_options. Though not strictly necessary, it is preferable for such helper variables to be named with a leading underscore_, to separate them from actual parameters.We have explicitly specified the directory for power spectrum output in the
output_dirsparameter. The value is constructed using the magicpathandparamvariables, available to all parameter files. Thepathvariable holds absolute paths specified in the.pathfile. If you want to take a look at this.pathfile, do e.g.cat .pathWriting
path.output_dirthen maps to whatever value is specified foroutput_dirin the.pathfile, which will be'/path/to/concept/output'. When used as is, theparamvariable maps to the file name of the parameter file in which it is used, in this case'tutorial-3'. In total, the power spectrum output directory then gets set to'/path/to/concept/output/tutorial-3'. We could have gotten away with just writing'output/tutorial-3'out statically. Such relative paths in parameter files should be given with respect to the installation directory.We’ve specified multiple times at which to dump power spectra in
output_times. Note that we use the parametera_begin(creating a power spectrum of the initial conditions), the value of which is set further down. Generally, the order of variable definitions — even when one depends on another — is of no importance inside parameter files.The simulation takes place in a cubic box, the side length of which is set by
boxsize. In the parameter specification above, we’ve letboxsizebe proportional to_size, which has the effect of keeping the particle density constant when varying_size: If e.g._sizeis increased by a factor of 2,boxsizeincreases by a factor of 2 as well, meaning that the simulation volume goes up by a factor of 8, which is compensated by a similar increase in the number of particles by a factor \(2^3 = 8\).No default units are ever assumed by CONCEPT when it reads parameters, and so it’s critical that you explicitly tack on units on all dimensional parameters. For
boxsize, the extra fancy unit of \(\text{Mpc}/h\) is used above, with \(h \equiv H_0/(100\, \text{km}\, \text{s}^{-1}\, \text{Mpc}^{-1})\) inferred dynamically from the Hubble constantH0set further down.The parameters
ΩbandΩcdmof course set the present amounts of baryons and cold dark matter, respectively. Together, these otherwise distinct species are collectively referred to as just matter. Thus, declaring the species to be'matter'in theinitial_conditionsimplies that the particles will represent both the baryonic and cold dark matter.
The -p (parameter file) option can be mixed with the -c (command-line
parameter) option. As an example, consider leaving out the definition of
_size from the parameter file and instead supplying it when running the
code:
./concept \
-p param/tutorial-3 \
-c "_size = 64" \
-n 4
If you forget to specify _size — or any other variable referenced by the
parameter file — CONCEPT will exit with an error, letting you know.
Logged job information
For each CONCEPT run (or job) a lot of information is logged. Each new
job gets a unique integer ID, which is stated in the beginning and end of
the run (and further included in the header of the power spectrum data files).
Each job gets its own subdirectory within the job directory, containing
at least:
param: A copy of the parameter file used for the job.Note
When mixing
-pand-c, the combined parameters are what’s stored in the copied parameter file.log: A record of the information printed to the screen during the job.Tip
To view the logged output of e.g. CONCEPT job 1 with proper colouring, use
less -rf job/1/log
Arrow keys to navigate,
Qto quit.
So far we’ve introduced only the most essential parameters. The remaining sections of this tutorial will introduce further parameters — and expand on already encountered ones — as needed. For more focused documentation on any specific parameter, consult Parameters.