Lattice structure
D-dimensional lattice points are labeled by two ordered integer numbers: the point-in-block index ($b$ in the figure below) and the block index ($r$ in the figure below). This is called natural indexing, in contrast with the lexicographic indexing where points on the lattice are represented by a D-dimensional CartesianIndex. The routines up and dw allow you to displace to the neighboring points of the lattice. 
Directions are numbered fro 1 to D, and then Euclidean time is always assumed to be the last coordinate. Planes are also numbered from 1 to $N(N-1)/2$. The structure SpaceParm contains the information of the lattice structure and has to be passed as argument to most routines.
LatticeGPU.Space.SpaceParm — Typestruct SpaceParm{N,M,B,D}This structure contains information about the lattice being simulated. The parameters that define the structure are
N: The number of dimensionsM: The number of planes (i.e. $N(N-1)/2$)B: The boundary conditions in Euclidean time. Acceptable values areBC_PERIODIC: Periodic boundary conditionsBC_SF_AFWB: Schrödinger Funtional Aoki-Frezzoptti-Weisz Choice B.BC_SF_ORBI: Schrödinger Funtional orbifold constructions.BC_OPEN: Open boundary conditions.
The structure conatins the following components:
iL: Tuple containing the lattice length in each dimension.plidx: The directions of each planeblk: The block size in each each dimensionrbk: The number of blocks in each dimensionbsz: The number of points in each blockrsz: The number of blocks in the latticentw: The twist tensor in each plane
LatticeGPU.Space.up — Functionup(p::NTuple{2,Int64}, id::Int64, lp::SpaceParm)Given a point x with index p, this routine returns the index of the point x + a id.
LatticeGPU.Space.dw — Functiondw(p::NTuple{2,Int64}, id::Int64, lp::SpaceParm)Given a point x with index p, this routine returns the index of the point x - a id.
LatticeGPU.Space.updw — Functionupdw(p::NTuple{2,Int64}, id::Int64, lp::SpaceParm)Given a point x with index p, this routine returns the index of the points x + a id and x - a id.
LatticeGPU.Space.point_coord — Functionpoint_coord(p::NTuple{2,Int64}, lp::SpaceParm{N,M,B,D}) where {N,M,B,D}Returns the cartesian coordinates of point index p
LatticeGPU.Space.point_time — Functionpoint_time(p::NTuple{2,Int64}, lp::SpaceParm{N,M,B,D}) where {N,M,B,D}Returns the Euclidean time coordinate of point index p
LatticeGPU.Space.point_index — Functionpoint_index(pt::CartesianIndex, lp::SpaceParm)Given the cartesian coordinates of a point, returns the point index
LatticeGPU.Space.point_color — Functionpoint_color(p::NTuple{2,Int64}, lp::SpaceParm)Returns the sum of the cartesian coordinates of the point p=(b,r).