1 Data Format
wriverson edited this page 2026-09-18 19:12:44 +02:00

The .surf file

A .surf file is plain text, one surface element per line, eight whitespace-separated fields:

x y z t kappa lambda orient sheet
Field Meaning
x y z t Base lattice site of the surface element (integers, 1-based)
kappa First axis the surface element spans: 1 = x, 2 = y, 3 = z, 4 = t
lambda Second axis the surface element spans
orient Orientation sign: +1 or -1
sheet Connected-component (sheet) ID, used for colouring

Example line: a surface element spanning the x and t directions at site (5, 12, 3, 40), positively oriented, belonging to sheet 7:

5 12 3 40 1 4 1 7

Conventions

  • Coordinate centre: the loader shifts spatial coordinates by 16 and the time coordinate by Nt/2, so the lattice is centred on the origin. The spatial extent is currently fixed at 32³; the temporal extent Nt is parsed from the filename (first t followed by digits).
  • Header lines: any line containing an x or [ is treated as metadata and skipped, as is any line that does not parse into eight fields.
  • Periodicity: the lattice is periodic. The shaders fold every vertex into the periodic image nearest the selection centre (minimum image convention), so vortices crossing the boundary render continuously.
  • Companion file: mode 1 expects hypercube_t<Nt>.surf in the same directory as the vortex file. Generate it with generate_hypercube.py (edit the output name to match your Nt).

Generating data

generate_hypercube.py emits the hypercube boundary surface in this format. Real vortex data comes from centre-projected gauge configurations after maximal centre gauge fixing; any tool that writes the eight-field format above will work.