CMBTopo is a tool to create, to create realizations of the Cosmic Microwave Background for flat universes with a non-trivial topology.
Cosmotopology is the field of studying the topology of the cosmos.
A geometrically flat universe can still be topologically closed by 'folding back' into itself like a 3-dimensional flat torus.
An effect of such a non-trivial topology is that the universe will appear to repeat itself, just like the old pacman games where pacman reappears on the other side if he leaves the screen.
This apparent repetition should be visible in the Cosmic Microwave Background radiation if the physical universe is smaller than the observable universe.
CMBTopo simulates the Cosmic Microwave Background for different topologies and offers interactive 3D visualizations for exploration.
This code is an implementation of the algorithms described by Riazuelo, Uzan, Lehoucq and Weeks (2004). The same notation and terminology is used as in their paper.
The results of this code is used in the master thesis of Hugo Buddelmeijer.
The primordial density field that can be seen in the Cosmic Microwave Background follows a Gaussian power spectrum. Only those modes that 'fit' the topology are allowed in a multi-connected universe.
CMBTopo simulates the Cosmic Microwave Background in three steps:
- The eigenvalues of the Cartesian eigenmodes of the primordial density field are calculated.
- These are converted to eigenvalues in spherical coordinates.
- A CMB realization is computed from these spherical coordinates.
CMBTopo requires the following packages:
- SDL (Simple DirectMedia Layer)
- GSL (GNU Scientific Library)
- CImg (CImg Library)
Compile CMBTopo simply with
make
The default is a toroidal universe:
./cmbtopo
Differentn topologies can be specified using a number as command line argument, e.g.:
./cmbtopo 3
All flat orientable topologies are supported:
- toroidal space
- half-turn space
- quarter-turn space
- third-turn space
- chimney space
- slab space
- sixth-turn space
- Hantzsche-Wendt space
CMBTopo shows an interactive visualization of the Cosmic Microwave Background realization. The following keyboard commands are available:
User interface:
Esc
,space
,q
quitF1
toggle full screeny
toggle between 3D display and Aitoff projectionz
print values
Move camera (3D mode only):
q
rotate along x-axisa
counter rotate along x-axisw
rotate along y-axiss
counter rotate along y-axise
rotate along z-axisd
counter rotate along z-axisr
increase distancef
decrease distance
Show CMB copies:
m
toggle showing CMB copies along x-axisu
increase x-axis offsetj
decrease x-axis offset,
toggle showing CMB copies along y-axisi
increase y-axis offsetk
decrease y-axis offset.
toggle showing CMB copies along z-axiso
increase z-axis offsetl
decrease z-axis offset
By default only the CMB copies along the z-axis are shown. The copies should connect to each other almost seamlessly (limited by resolution). Changing the offsets will break this connection.
The code is structured in different files which mostly contain a single class with the same name.
User interface:
cmbtopo
provides the main function.Cmb3D
provides an OpenGL visualization of the CMB.
Data and algorithm:
Ek
holds the Cartesian eigenvalues.Alm
holds the spherical eigenvalues.Cmbdata
holds the CMB realization.Cmb
performs the algorithm.
Helpers:
Coordinate
converts between Cartesian and spherical coordinates.Counter
provides a progress bar.Random
provides a random number generator.NegVector
(header only) provides the base class forEk
andAlm
.