<< 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
Linuxrandgeomeb2200d159f5b57be28862c1ece1b56d
OSXrandgeom53149d6b8b96afe23d121d129039d48e
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:
• `-t` followed by A, B, C, or D: the requested model type.
• `-s` followed by positive integer S: the requested size S of the planar map measured by number of faces.
• `-n` followed by positive integer N: the number N of independent configurations to be returned.

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

```\$ ./randgeom -tA -s4 -n1
{{{7,15,2},{16,4,1},{8,6,4},{2,14,3},{6,8,6},{3,5,5},{9,1,8},{5,3,7},{15,7,10},{11,13,9},{12,10,12},
{13,11,11},{10,12,14},{4,16,13},{1,9,16},{14,2,15}}}
```
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
2
8
3 7 2
8 4 1
5 1 4
2 6 3
7 3 6
4 8 5
1 5 8
6 2 7
8
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.nb
## 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.