A lattice (in the sense used in computational physics) has a certain geometric structure, e.g. "square", "triangular", "diamond", "cubic", etc. Here we consider how to represent these lattice geometries in a way which facilitates implementation as data structures within computer memory.

The method of representation of lattice geometries described in this article was used in the software developed by the author to simulate the behavior of magnetic material by means of Ising and Potts spin models, as described in detail in his M.Phil. thesis, Computational Studies of Pure and Dilute Spin Models. That these representations are correct is shown by the fact that the measured properties of the models studied accord with results in the literature.

We begin with the hypothesis that any lattice geometry of interest in spin model studies can be represented as (a) the set of all points in n–dimensional Cartesian space with integral coordinates, i.e., the space of n–dimensional vectors (x_{i}) whose components are integers, together with (b) a set of lines joining these points. The points are the lattice "sites" and the lines are the lattice "bonds". A vector (x_{i}) is said to be* integral* if all its components are integers.

We further hypothesize that any lattice geometry can be defined on this basis by the use of a finite number (usually only one or two) of finite sets of integral vectors {(y_{i})}, called "direction vectors", such that -1 ≤ y_{i} ≤ +1 for all i, and for any site (x_{i}) there is a set of direction vectors {(y_{i})} such that the set of all sites connected to (x_{i}) by a "bond" is the set of sites {(x_{i} + y_{i})}.

A site which is connected by a bond to another site is said to be a *neighbour* of that site.

A lattice is *connected* if any two lattice sites can be connected by a finite chain of bonds. All lattices defined in this document, except where otherwise noted, are connected.

A lattice geometry is *n-definable* (for *n* ≥ 1) if its definition requires the use of *n* sets of direction vectors.

The **square lattice** is 1-definable as follows:

With n=2 (i.e., the 2-dimensional Cartesian space) the set of direction vectors is:

{(1,0), (-1,0), (0,1), (0,-1)}

Thus the neighbours of the site (1,1) are {(2,1), (0,1), (1,2), (1,0)} and the neighbours of the site (2,1) are {(3,1),(1,1),(2,2),(2,0)}, as shown by the diagram:

| | | | --(0,2)----(1,2)----(2,2)----(3,2) -- | | | | | | | | --(0,1)----(1,1)----(2,1)----(3,1) -- | | | | | | | | --(0,0)----(1,0)----(2,0)----(3,0) -- | | | |

The **cubic lattice** is defined by n=3 and the direction vectors:

{(1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1)}

and the **hypercubic lattice (4d)** by n=4 and the direction vectors:

**{(1,0,0,0), (-1,0,0,0), (0,1,0,0), (0,-1,0,0), (0,0,1,0), (0,0,-1,0), (0,0,0,1), (0,0,0,-1)**}

The *dimensionality* of a lattice is the dimensionality of the Cartesian space used to define that lattice. Thus a square lattice is 2-dimensional, a cubic lattice is 3-dimensional, and so on.

The *coordination numbers* of a lattice are the sizes of the sets of direction vectors required for its definition. Normally the sets of direction vectors all have the same size (i.e., the number of direction vectors in each set is the same), in which case we can speak of *the coordination number* of the lattice. A square lattice has a coordination number of 4, a cubic lattice has 6 and a hypercubic (4d) lattice has 8.

We come now to our first lattice geometry which is not 1-definable, but is 2-definable, namely, the "honeycomb" lattice:

O----O O----O / \ / \ O O----O O-- \ / \ / O----O O----O / \ / \ O O----O O--

Since we are interested only in which sites form bonds with which other sites, and not in the visual appearance of the diagram of the lattice, this lattice geometry is equivalent to:

--O----O----O----O----O----O-- | | | | | | --O----O----O----O----O----O-- | | | | | | --O----O----O----O----O----O--

This is easily seen by visual inspection plus some imagination.

This geometry is 2-definable, but first we must introduce the notion of *odd* and *even* sites.

A site (x_{i}) is odd if the sum of its components is odd, otherwise it is even. E.g., (0,0) is even since 0 + 0 = 0, and (1,1) is even, but (0,1), (-1,2), etc., are odd.

The **honeycomb lattice** is defined as follows:

n=2 and for an even site (x_{i}) the set of direction vectors is {(1,0),(-1,0),(0,1)} and for an odd site (x_{i}) the set of direction vectors is {(1,0),(-1,0),(0,-1)}.

This can be seen more clearly by use of coordinates:

| | --(-1,2)----(0,2)----(1,2)----(2,2)----(3,2)-- |O E |O E |O | | | --(-1,1)----(0,1)----(1,1)----(2,1)----(3,1)-- E |O E |O E | | --(-1,0)----(0,0)----(1,0)----(2,0)----(3,0)-- |O E |O |E O

Clearly the honeycomb lattice has a coordination number of 3.

Two varieties of the honeycomb lattice may be distinguished, the one as defined above, and the one as defined by:

n=2 and for an even site (x_{i}) the set of direction vectors is {(0,l),(0,-1),(1,0)} and for an odd site (x_{i}) the set of direction vectors is {(0,1),(0,-1),(-1,0)}.

This lattice has the following geometry:

| | | | | --(-1,2) (0,2)----(1,2) (2,2)----(3,2) |O |E |O |E |O | | | | | (-1,1)----(0,1) (1,1)----(2,1) (3,1)-- |E |O |E |O |E | | | | | --(-1,0) (0,0)----(1,0) (2,0)----(3,0) |O |E |O |E |O

The difference between these two varieties of the honeycomb lattice may be significant for the determination of the bond percolation threshold of this lattice.

Now we come to the "triangular" lattice, which has a coordination number of 6:

-O---O---O---O---O- / \ / \ / \ / \ / \ -O---O---O---O---O---O- \ / \ / \ / \ / \ / -O---O---O---O---O- / \ / \ / \ / \ / \ -O---O---O---O---O---O-

Again, since we are interested only in which sites are connected to which, not in the visual appearance of the diagram, we may transform this to obtain:

-O--O--O--O--O--O--O- /| /| /| /| /| /| /| |/ |/ |/ |/ |/ |/ |/ -O--O--O--O--O--O--O- /| /| /| /| /| /| /| |/ |/ |/ |/ |/ |/ |/ -O--O--O--O--O--O--O- /| /| /| /| /| /| /| |/ |/ |/ |/ |/ |/ |/ -O--O--O--O--O--O--O-

There is a one-to-one correspondence of the sites in each form which presereves their site neighbourhoods, as can be verified by labelling the sites in both diagrams.

The **triangular lattice** is 1-definable, as follows:

n=2 and for any site (x_{i}) the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (1,1), (-1,-1) }

A variation on the triangular lattice is the **"semitriangular lattice"**, which has the structure:

-O--O--O--O--O--O--O- | /| | /| | /| | |/ | |/ | |/ | |/ -O--O--O--O--O--O--O- | /| | /| | /| | |/ | |/ | |/ | |/ -O--O--O--O--O--O--O- | /| | /| | /| | |/ | |/ | |/ | |/ -O--O--O--O--O--O--O-

This is a 2-definable lattice, defined as follows:

n=2 and for any site (x_{i}) with x_{0} even the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (1,1) }

and for an site (x_{i}) with x_{0} odd the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (-1,-1) }

This lattice geometry has a coordination number of 5.

Another variation on the triangular lattice is the **"alternating triangular lattice"**, which has the structure:

-O--O--O--O--O--O--O- | /|\ | /|\ | /|\ | \|/ | \|/ | \|/ | \|/ -O--O--O--O--O--O--O- | /|\ | /|\ | /|\ | \|/ | \|/ | \|/ | \|/ -O--O--O--O--O--O--O- | /|\ | /|\ | /|\ | \|/ | \|/ | \|/ | \|/ -O--O--O--O--O--O--O-

This is a 2-definable lattice, defined as follows:

n=2 and for any site (x_{i}) with x_{0} even the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (1,1), (-1,1) }

and for an site (x_{i}) with x_{0} odd the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (-1,-1), (1,-1) }

This lattice geometry has a coordination number of 6 (the same as the triangular lattice).

We can define another 1-definable 2d lattice by means of:

n=2 and for any site (x_{i}) the set of direction vectors is:

{ (1,0), (-1,0), (0,1), (0,-1), (1,1), (-1,-1), (1,-1), (-1,1) }

This gives the lattice geometry:

-O--O--O--O--O--O--O- /|\/|\/|\/|\/|\/|\/|\ \|/\|/\|/\|/\|/\|/\|/ -O--O--O--O--O--O--O- /|\/|\/|\/|\/|\/|\/|\ \|/\|/\|/\|/\|/\|/\|/ -O--O--O--O--O--O--O- /|\/|\/|\/|\/|\/|\/|\ \|/\|/\|/\|/\|/\|/\|/ -O--O--O--O--O--O--O-

This is called the "double triangular" lattice geometry. This lattice geometry has a coordination number of 8.

The following 1-definable lattice structure, with a coordination number of 4, is definable as:

n=2 and the set of direction vectors is { (1,1), (-1,1), (-1,-1), (1,-1) }

O O O O O O O / \/ \/ \/ \/ \/ \/ \ \ /\ /\ /\ /\ /\ /\ / O O O O O O O / \/ \/ \/ \/ \/ \/ \ \ /\ /\ /\ /\ /\ /\ / O O O O O O O / \/ \/ \/ \/ \/ \/ \ \ /\ /\ /\ /\ /\ /\ / O O O O O O O

This lattice, however, is not connected. This can be seen by noting that the bonds defined by the direction vectors are such that only even sites are connected to even sites, and only odd sites are connected to odd sites; an even site can never be connected to an odd site. This lattice may be decomposed into two square lattices with no sites in common.

Which leads to the observation: If, for any direction vector in the definition of a lattice geometry, the sum of its components is even, then the lattice is not connected, and may be decomposed into two distinct lattices.

Now we come to lattice geometries with dimensionality greater than 2 (in addition to the cubic and hypercubic lattices defined above).

The "diamond" lattice, of dimensionality 3, is the geometry formed by carbon atoms in a diamond crystal. It has a coordination number of 4. It is difficult to represent using text characters.

The **diamond lattice** is a 2-definable lattice geometry, and may be defined as follows:

n=3 and for an even site (x_{i}) the set of direction vectors is:

{ (1,0,0), (-1,0,0), (0,1,0), (0,0,1) }

and for an odd site (x_{i}) the set of direction vectors is:

{ (1,0,0), (-1,0,0), (0,-1,0), (0,0,-1) }

As with the honeycomb lattice, we may distinguish two varieties of diamond lattice. The second variety is defined as follows:

n=3 and for an even site (x_{i}) the set of direction vectors is:

{ (0,1,0), (0,-1,0), (1,0,0), (0,0,1) }

and for an odd site (x_{i}) the set of direction vectors is:

{ (0,1,0), (0,-1,0), (-1,0,0), (0,0,-1) }

Now we consider the "quadrilateral lattice", which is a 3d 1-definable lattice, defined as follows:

n=3 and the direction vectors are:

{ (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1), (1,1,1), (-1,-1,-1) }

The quadrilateral lattice has a coordination number of 8 and it contains the cubic lattice as a proper sublattice. If the cubic lattice is imagined as consisting of connected cubes then each site is a vertex of eight cubes. The quadrilateral lattice has the same bonds as the cubic lattice, plus diagonal bonds which connect each site to the two sites at the opposite vertices of two of the eight cubes. These are the bonds defined by the direction vectors (1,1,1) and (-1,-1,-1).

Now we consider the "tetrahedral lattice", which is a 3d 1-definable lattice, defined as follows:

n=3 and the direction vectors are:

{ (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1),

(1,-1,0), (-1,1,0), (1,0,-1), (-1,0,1), (0,1,-1), (0,-1,1) }

The tetrahedral lattice has a coordination number of 12. It is the lattice formed by oranges stacked in a tetrahedral arrangement.

This is equivalent to:

n=3 and the direction vectors are:

{ (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1),

(1,1,0), (-1,-1,0), (1,0,1), (-1,0,-1), (0,1,1), (0,-1,-1) }

Analogously to the double triangular lattice geometry we may define a** double tetrahedral** lattice geometry:

n=3 and the direction vectors are:

{ (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1),

(1,1,0), (-1,-1,0), (1,0,1), (-1,0,-1), (0,1,1), (0,-1,-1)

(1,-1,0), (-1,1,0), (1,0,-1), (-1,0,1), (0,1,-1), (0,-1,1) }

The coordination number is 18.

We may define the 4-d analogue of the tetrahedral lattice, the **hypertetrahedral (4d) lattice**:

n=4 and the direction vectors are:

{ (1,0,0,0), (-1,0,0,0), (0,1,0,0), (0,-1,0,0), (0,0,1,0), (0,0,-1,0), (0,0,0,1), (0,0,0,-1),

(1,1,0,0), (-1,-1,0,0), (1,0,1,0), (-1,0,-1,0), (1,0,0,1), (-1,0,0,-1),

(0,1,1,0), (0,-1,-1,0), (0,1,0,1), (0,-1,0,-1), (0,0,1,1), (0,0,-1,-1) }

The lattice geometry has a coordination number of 20.

The 4-dimensional analogue of the diamond lattice is the **hyperdiamond lattice**. This lattice is 2-definable, as follows:

n=4 and for an even site (x_{i}) the set of direction vectors is:

{ (1,0,0,0), (-1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1) }

and for an odd site (x_{i}) the set of direction vectors is:

{ (1,0,0,0), (-1,0,0,0), (0,-1,0,0), (0,0,-1,0), (0,0,0,-1) }

This lattice geometry has a coordination number of 5.

The approach outlined in this document can obviously be extended to dimensions greater than 4 and to more complicated lattice geometries.

For example, we can divide the sites into four types, not just odd and even, as follows: (x_{i}) is of type *k* if the sum of its components equals *k* mod 4. Then we define a lattice geometry, the **decagonal lattice**, as follows:

n=3 and the set of direction vectors is

{ (1,0,0), (-1,0,0), (0,1,0) } if type 0,

{ (1,0,0), (-1,0,0), (0,0,1) } if type 1,

{ (1,0,0), (-1,0,0), (0,-1,0) } if type 2 and

{ (1,0,0), (-1,0,0), (0,0,-1) } if type 3.

This lattice has a coordination number of 3.

In computational physics such exotic lattice structures are, however, of little interest because it is unlikely that they occur in real physical systems. Nevertheless, this approach is sufficiently general that one may conjecture that any lattice geometry found to occur in the physical world can be represented in this way.

Now follows a short description of how this approach is implemented to provide data structures in computer memory allowing the simulation software to handle any of the above types of lattices.

When the simulation software is run a lattice type is specified. An array dir[8][4] is declared, and its elements are assigned values such that, for any given lattice site, the direction vectors for that site are:

{ (dir[0][0],...,dir[0][n-1]), (dir[1][0],...,dir[1][n-1]), ..., (dir[k-1][0],...,dir[k-1][n-1]]) }

where *n* is the dimensionality of the lattice and *k* is the coordination number.

Then for any lattice site it is a simple matter to find all the nearest neighbours of that site by adding the direction vectors to the site's coordinates (with some adjustment for boundary conditions if the site is located on a boundary).

In C dir[][] would normally be an array of chars, which is sufficient for lattice geometries with a coordination number of up to 8. To handle lattice geometries with a coordination number up to 16 dir[][] must be an array of 16-bit short ints.

In the case of 2-definable lattices (e.g., the honeycomb lattice, the diamond lattice and the hyperdiamond lattice) some values in the dir[][] array are adjusted for each site depending on whether that site is odd or even.

The fifteen connected lattice geometries defined in this document are:

Dimensionality |
Name |
Coordination number |

2 | honeycomb | 3 |

2 | square | 4 |

2 | semitriangular | 5 |

2 | triangular | 6 |

2 | alternating triangular | 6 |

2 | double triangular | 8 |

3 | decagonal | 3 |

3 | diamond | 4 |

3 | cubic | 6 |

3 | quadrilateral | 8 |

3 | tetrahedral | 12 |

3 | double tetrahedral | 18 |

4 | hyperdiamond | 5 |

4 | hypercubic | 8 |

4 | hypertetrahedral | 20 |

Home Page of this Hermetic Systems Website |

Home Page of the other Hermetic Systems Website |