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,qquitF1toggle full screenytoggle between 3D display and Aitoff projectionzprint values
Move camera (3D mode only):
qrotate along x-axisacounter rotate along x-axiswrotate along y-axisscounter rotate along y-axiserotate along z-axisdcounter rotate along z-axisrincrease distancefdecrease distance
Show CMB copies:
mtoggle showing CMB copies along x-axisuincrease x-axis offsetjdecrease x-axis offset,toggle showing CMB copies along y-axisiincrease y-axis offsetkdecrease y-axis offset.toggle showing CMB copies along z-axisoincrease z-axis offsetldecrease 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:
cmbtopoprovides the main function.Cmb3Dprovides an OpenGL visualization of the CMB.
Data and algorithm:
Ekholds the Cartesian eigenvalues.Almholds the spherical eigenvalues.Cmbdataholds the CMB realization.Cmbperforms the algorithm.
Helpers:
Coordinateconverts between Cartesian and spherical coordinates.Counterprovides a progress bar.Randomprovides a random number generator.NegVector(header only) provides the base class forEkandAlm.