This repository contains the CausalSet software package. This software is intended to be used to generate and study causal sets from both the quantum gravity and random geometric graph perspectives. Source code is in the src and inc directories, with the main method located at the top of src/Causet.cu. All data structures are defined in inc/Causet.h and inc/Spacetime.h. Causal set initialization and construction methods are in src/NetworkCreator.cu and src/NetworkCreator_GPU.cu. Lower-level algorithms and mathematical functions are respectively found in src/Subroutines.cu and inc/Operations.h. Certain specific mathematical functions have earned a place in their own files, such as inc/Coordinates.h for element coordinate sampling and inc/Geodesics.h for (continuum) geodesic distance calculations. The file src/Validate.cu contains alternate implementations of certain functions along with useful printing methods for debugging. The etc directory contains some python scripts which are useful for analyzing the output files generated by the CausalSet binary.
- Ensure your gcc/g++ version is at least 4.8.1.
- Ensure you have Boost version 1.55.0 or newer.
- Ensure you have GSL version 1.13 or newer.
- If your CPU supports AVX2 instructions, ensure your assembler version is 2.24 or newer.
- If you want to use a GPU, ensure it is from NVIDIA and has a compute capability of at least 3.0. Then, update CUDA_ARCH in the file .causet.
- If you are using MPI, it must be Platform MPI
- Install the FastMath library, which can be found on Bitbucket.
- Export the environment variable PLATFORM=$HOST. If you are running on a cluster, set PLATFORM to equal the name of the queue.
cp .causet $HOME
sh ./bootstrap.sh
./configure (--enable-cuda --enable-mpi) --prefix=install_dir
make
make install
This will remove all files created during installation:
make distclean
To see a full set of supported flags, execute
./bin/CausalSet_$PLATFORM --help
To create a causal set sprinkled into de Sitter:
./bin/CausalSet_$PLATFORM --type rgg --stdim 2 --manifold De_Sitter --region Slab --curvature Positive --symmetry None --nodes 2048 --age 0.5 --link --action smeared --print --print-edges --verbose
To study antichains in a previously generated causal set:
graphs=($(awk '{print $1}' $CAUSET_HOME/etc/data_keys.cset.key))
./bin/CausalSet_$PLATFORM --graph ${graphs[0]} --type rgg --stdim 2 --manifold De_Sitter --region Slab --curvature Positive --symmetry None --nodes 2048 --age 0.5 --link --nopos --antichain --print --verbose
- Random Partial Orders
- Kleitman-Rothschild Partial Orders
- Random Geometric Graphs (Geometric Sprinklings), determined by a. Spacetime Dimension (2,3,4,5) b. Manifold (Minkowski, de Sitter, etc.) c. Bounding Region (Slab, Diamond, etc.) d. Spatial Curvature (Flat, Positive, Negative) e. Symmetries (Temporal: t=[-t0,t0]; None: t=[0,t0])
A complete list of RGG spacetimes may be viewed at the end of the file VERSION. This file may be updated by using the bash script etc/spacetimes.
The C code lets you measure the following:
- Graph clustering coefficients (local prescription)
- Number and size of connected components
- Success ratio and/or stretch using greedy routing
- Smeared and local Benincasa-Dowker action
- Chain lengths and causet height
- Maximal antichain widths
- Hub density
- Geodesic distances (in the continuum)
- Timelike and spacelike partitions
- Myrheim-Meyer dimension
- Entanglement entropy (COMING SOON)
- Generate a Markov chain using Metropolis sampling
- Timelike boundary geometry (under revision)
In addition, the Python code can measure
- The action, provided a list of interval abundances
- The mean clustering and clustering distribution
- The distribution of connected components
- The mean degree and degree distribution
- The mean number of geodesically disconnected pairs of elements
- The mean time of the earliest element, used to study sampling accuracy
- The mean number of elements
- The mean stretch and success ratio
Contact wjcunningham7@gmail.com to report bugs or get help.
© Will Cunningham 2013-2020