<< Back to Timothy Budd's homepage

Monte Carlo methods in Dynamical Triangulations

A series of lectures given on 21-22 June 2017 at Making Quantum Gravity Computable, Perimeter Institute, Canada.

Lecture material

SlidesVideo recording
Part I: Random geometry in 2Dmcdt-part1.pdfpirsa.org/17060075, pirsa.org/17060076.
Part II: Higher dimensionsmcdt-part2.pdfpirsa.org/17060082, pirsa.org/17060083.
Tutorial sessionsDescription of the modelspirsa.org/17060079, pirsa.org/17060086.

Tutorial sessions

The goal of the tutorial sessions is to gain some experience in: handling random two-dimensional geometries, performing measurements, and extracting critical exponents from data analysis.

To this end I provide a computer program randgeom that produces random planar maps on demand subject to several parameters.

Installation of randgeom

The simplest way to get the program running is to download one of the precompiled executables. Simply right-click the link next to your operating system and select Save as... You may need to set execution permissions (chmod u=rxw randgeom on Linux/OSX).

OSExecutableMD5 checksum
Windows (32bit)randgeom.exe71ed82188a7f8a78d6b802e2d49a7441

Alternatively you may compile the c++ source yourself (tested with GNU c++ compiler only). Download source.tar.gz or source.zip and extract all files. Then run the following command (or similar) in the directory to which the files were extracted.

g++ main.cpp -I. -O2 -o randgeom

Usage of randgeom

randgeom takes three parameters:

The following returns a single random planar map sampled from model A with 4 faces.

$ ./randgeom -tA -s4 -n1
The output is formatted as a Mathematica-style nested list of length N, one entry per configuration. Each configuration corresponds to a list of triples of integers describing a planar map through permutations: the i'th triple corresponds to {n(i),n-1(i),a(i)}, where n and a are the ``next'' and ``adjacent'' permutations (see lecture slides). The output above corresponds to the following quadrangulation displayed both as a gluing prescription and as a planar map.

In case you prefer to read the output from a different program than Mathematica, you may prefer to receive the data as a space-separated list. To this end one may use the option --spaceseparated:

$ ./randgeom -tA -s2 -n2 --spaceseparated
3 7 2
8 4 1
5 1 4
2 6 3
7 3 6
4 8 5
1 5 8
6 2 7
5 8 2
6 4 1
4 6 4
2 3 3
7 1 6
3 2 5
8 5 8
1 7 7
The output is structured as follows: the first line contains the number N of configurations. Then for each configuration a line with the number H of half-edges, followed by H lines with triples of integers corresponding to n(i), n-1(i) and a(i) respectively.

Using randgeom with Mathematica

I have prepared an example notebook to read the output of randgeom to perform various manipulations. It also contains pointers on how to measure the three types of observables we discussed in the lecture.

example-analysis.txt (in case your (older) Mathematica has trouble reading the notebook)

Calling randgeom from a c++ program

For those who wish to use c++ to perform measurements, I have prepared a minimal working example to execute randgeom and read output data (tested on Linux only): example-import.cpp.