Function Repository Resource:

CurvedSpacetimeTriangulation

Source Notebook

Produce causal graphs by dynamically triangulating a specified region of a (potentially curved) spacetime

Contributed by: Jonathan Gorard

ResourceFunction["CurvedSpacetimeTriangulation"][cond,{x1,,xn},meas]

produces a dynamical triangulation of a (potentially curved) spacetime region that satisfies the conditions cond.

ResourceFunction["CurvedSpacetimeTriangulation"][cond,{x1,,xn},{{xmin,xmax},},meas]

restricts the triangulation to the bounds {xmin,xmax}×.

ResourceFunction["CurvedSpacetimeTriangulation"][cond,{x1,,xn},meas,"prop"]

gives the property "prop" for the specified triangulation.

ResourceFunction["CurvedSpacetimeTriangulation"][cond,{x1,,xn},{{xmin,xmax},},meas,"prop"]

gives the property "prop" for the specified restricted triangulation.

Details

When no "prop" is given, ResourceFunction["CurvedSpacetimeTriangulation"] returns a SpacetimeTriangulation object by default.
By default, the region is restricted to the bounds {{-1,1},}.
Triangulations are constructed using causal dynamical triangulation (CDT) techniques, which generalize the Euclidean dynamical triangulation (EDT) techniques implemented by functions like MeshRegion and DiscretizeRegion.
Currently, triangulations can only be constructed for 0+1-, 1+1- and 2+1-dimensional spacetimes using ResourceFunction["CurvedSpacetimeTriangulation"].
Causal edges are added in accordance with the standard causal partial-order relation on spacetime (as determined using the usual form of the spacetime line element) and are transitively reduced by default. Causal edges may optionally be added only to those pairs of events that are connected within the triangulation (e.g. "TriangulatedCausalGraph") or otherwise to all pairs of events that are causally related regardless of the triangulation (e.g. "CausalGraph").
ResourceFunction["CurvedSpacetimeTriangulation"][cond,{x{XMLElement[span, {class -> stylebox}, {1}]},,xn},] treats the last variable, xn, as the time coordinate, with {x{XMLElement[span, {class -> stylebox}, {1}]},,xn1} being considered the spatial coordinates.
ResourceFunction["CurvedSpacetimeTriangulation"] uses a similar argument specification to ImplicitRegion and DiscretizeRegion.
The following properties can be requested using the "prop" argument:
"CausalGraphFull"full causal partial-order graph (before transitive reduction)
"CausalGraph"transitively reduced causal partial-order graph
"TriangulatedCausalGraphFull"full causal partial-order graph using only triangulation edges (before transitive reduction)
"TriangulatedCausalGraph"transitively reduced triangulated causal partial-order graph
"Points"plots of the points in the triangulation (without causal edges)
"PointsList"list of spacetime coordinates of all points in the triangulation
"PointsCount"number of points in the triangulation
"Dimensions"number of dimensions in the continuum spacetime approximation
"TriangulatedEdgeList"list of (undirected) edges that appear in the triangulation of the spacetime surface
"TriangulatedEdgeCount"number of (undirected) edges that appear in the triangulation of the spacetime surface
"MaximumCellMeasure"maximum measure (e.g. area, volume, etc.) meas of the simplices appearing in the triangulation
"TotalEdgeCount"total number of causal edges (before transitive reduction)
"ReducedEdgeCount"number of transitively reduced causal edges
"TotalTriangulatedEdgeCount"total number of causal edges that are also triangulation edges (before transitive reduction)
"ReducedTriangulatedEdgeCount"number of transitively reduced causal edges that are also triangulation edges
"PureCausalGraphFull"full causal partial-order graph (before transitive reduction) with vertex coordinate information removed
"PureCausalGraph"transitively reduced causal partial-order graph with vertex coordinate information removed
"PureTriangulatedCausalGraphFull"full causal partial-order graph using only triangulation edges (before transitive reduction) with vertex coordinate information removed
"PureTriangulatedCausalGraph"transitively reduced triangulated causal partial-order graph with vertex coordinate information removed
"MeshRegion"mesh region corresponding to the triangulated spacetime surface
"MeshConnectivityGraph"connectivity graph of the mesh region corresponding to the triangulated spacetime surface
"Properties"list of properties
The causal dynamical triangulation (CDT) process for constructing causal partial orders from continuous Lorentzian manifolds was first described by Renate Loll, Jan Ambjørn and Jerzy Jurkiewicz.

Examples

Basic Examples (4) 

Produce a triangulation of a 1+1-dimensional hyperbolic region of spacetime into simplices of measure (area) up to 0.1:

In[1]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 0.1]
Out[1]=

Show the causal graph:

In[2]:=
triangulation["CausalGraph"]
Out[2]=

Show the full causal graph (without transitive reduction):

In[3]:=
triangulation["CausalGraphFull"]
Out[3]=

Show the causal graph using only triangulation edges:

In[4]:=
triangulation["TriangulatedCausalGraph"]
Out[4]=

Show the mesh region corresponding to the triangulated spacetime surface:

In[5]:=
triangulation["MeshRegion"]
Out[5]=

Show the connectivity graph of this mesh region:

In[6]:=
triangulation["MeshConnectivityGraph"]
Out[6]=

Produce a triangulation of a 2+1-dimensional hyperboloidal region of spacetime (i.e. de Sitter space) into simplices of measure (volume) up to 1:

In[7]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 + y^2 - z^2 == 1, {x, y, z}, {{-2, 2}, {-2, 2}, {-2, 2}}, 1]
Out[7]=

Show the causal graph:

In[8]:=
triangulation["CausalGraph"]
Out[8]=

Show the pure causal graph (with vertex coordinate information removed):

In[9]:=
triangulation["PureCausalGraph"]
Out[9]=

Show the pure causal graph with a layered graph embedding:

In[10]:=
LayeredGraphPlot[triangulation["PureCausalGraph"], AspectRatio -> 1/2]
Out[10]=

Show only the pure triangulated causal graph (with vertex coordinate information removed):

In[11]:=
triangulation["PureTriangulatedCausalGraph"]
Out[11]=

Produce a triangulation of a 2+1-dimensional paraboloidal region of spacetime based on Flamm's paraboloid (related to the Schwarzschild geometry) into simplices of measure (volume) up to 0.1:

In[12]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  3*Sqrt[Sqrt[x^2 + y^2]] == z, {x, y, z}, {{-5, 5}, {-5, 5}, {-5, 5}}, 0.1]
Out[12]=

Plot the positions of the points in the triangulation only (without causal edges):

In[13]:=
triangulation["Points"]
Out[13]=

Show the causal graph:

In[14]:=
triangulation["CausalGraph"]
Out[14]=

By default, the region is restricted to the bounds {{-1,1},}:

In[15]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 + y^2 + z^2 == 1, {x, y, z}, 1]
Out[15]=

Show the causal graph:

In[16]:=
triangulation["CausalGraph"]
Out[16]=

Scope (5) 

Triangulations can be produced for 0+1-dimensional spacetimes:

In[17]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 < 1, {x}, {{-2, 2}}, 0.02]
Out[17]=

Show the pure causal graph:

In[18]:=
triangulation["PureCausalGraph"]
Out[18]=

Produce a triangulation of a 1+1-dimensional spacetime:

In[19]:=
triangulation2 = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 0.2]
Out[19]=

Show the causal graph:

In[20]:=
triangulation2["CausalGraph"]
Out[20]=

Produce a triangulation of a 2+1-dimensional spacetime:

In[21]:=
triangulation3 = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 + y^2 - z^2 == 1, {x, y, z}, {{-2, 2}, {-2, 2}, {-2, 2}}, 1]
Out[21]=

Show the pure causal graph:

In[22]:=
triangulation3["PureCausalGraph"]
Out[22]=

Properties can be requested directly from CurvedSpacetimeTriangulation:

In[23]:=
ResourceFunction["CurvedSpacetimeTriangulation"][
 x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 0.01, "PureTriangulatedCausalGraph"]
Out[23]=

Produce a triangulation of a 1+1-dimensional hyperbolic region of spacetime into simplices of measure (area) up to 0.1:

In[24]:=
triangulation = ResourceFunction["CurvedSpacetimeTriangulation"][
  x^2 - y^2 < 1, {x, y}, {{-2, 2}, {-2, 2}}, 0.1]
Out[24]=

Show the complete list of properties:

In[25]:=
triangulation["Properties"]
Out[25]=

Show the full causal graph:

In[26]:=
triangulation["CausalGraphFull"]
Out[26]=

Show the transitively-reduced causal graph:

In[27]:=
triangulation["CausalGraph"]
Out[27]=

Show the full causal graph using only triangulation edges:

In[28]:=
triangulation["TriangulatedCausalGraphFull"]
Out[28]=

Show the transitively-reduced causal graph using only triangulation edges:

In[29]:=
triangulation["TriangulatedCausalGraph"]
Out[29]=

Plot the positions of the points in the triangulation only (without causal edges):

In[30]:=
triangulation["Points"]
Out[30]=

Show a complete list of spacetime coordinates for the points in the triangulation (the last coordinate is always the time coordinate):

In[31]:=
triangulation["PointsList"]
Out[31]=

Show the number of points in the triangulation:

In[32]:=
triangulation["PointsCount"]
Out[32]=

Show the number of dimensions in the background spacetime:

In[33]:=
triangulation["Dimensions"]
Out[33]=

Show the first 50 (undirected) edges in the triangulation of the spacetime surface:

In[34]:=
Take[triangulation["TriangulatedEdgeList"], 50]
Out[34]=

Show the total number of (undirected) edges in the triangulation of the spacetime surface:

In[35]:=
triangulation["TriangulatedEdgeCount"]
Out[35]=

Show the maximum measure (in this case, area) of the simplices in the triangulation:

In[36]:=
triangulation["MaximumCellMeasure"]
Out[36]=

Show the total number of causal edges:

In[37]:=
triangulation["TotalEdgeCount"]
Out[37]=

Show the number of causal edges after transitive reduction:

In[38]:=
triangulation["ReducedEdgeCount"]
Out[38]=

Show the total number of causal edges appearing in the triangulation:

In[39]:=
triangulation["TotalTriangulatedEdgeCount"]
Out[39]=

Show the number of causal edges appearing in the triangulation after transitive reduction:

In[40]:=
triangulation["ReducedTriangulatedEdgeCount"]
Out[40]=

Show the pure full causal graph (with vertex coordinate information removed):

In[41]:=
triangulation["PureCausalGraphFull"]
Out[41]=

Show the pure transitively-reduced causal graph (with vertex coordinate information removed):

In[42]:=
triangulation["PureCausalGraph"]
Out[42]=

Show the pure full causal graph using only triangulation edges (with vertex coordinate information removed):

In[43]:=
triangulation["PureTriangulatedCausalGraphFull"]
Out[43]=

Show the pure transitively-reduced causal graph using only triangulation edges (with vertex coordinate information removed):

In[44]:=
triangulation["PureTriangulatedCausalGraph"]
Out[44]=

Show the mesh region corresponding to the triangulated spacetime surface:

In[45]:=
triangulation["MeshRegion"]
Out[45]=

Show the connectivity graph of this mesh region:

In[46]:=
triangulation["MeshConnectivityGraph"]
Out[46]=

Publisher

Jonathan Gorard

Version History

  • 1.0.0 – 23 July 2021

Source Metadata

Related Resources

License Information