Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Predefined Lattices

Reference for the Bravais lattices available in ALF. These are implemented in Prog/Predefined_Latt_mod.F90 and selected via the Lattice_type string in the &VAR_lattice namelist.

Parameters

&VAR_lattice
L1 = 6
L2 = 6
Lattice_type = "Square"
Model = ""
/

Available Lattices

Lattice_typeOrbitals per cellCoord. vectorsPrimitive vectorsNotes
"Square"11 (1D) or 2 (2D)a1=(1,0)\mathbf{a}_1 = (1,0), a2=(0,1)\mathbf{a}_2 = (0,1)Set L2=1 for a 1D chain
"N_leg_ladder"L21a1=(1,0)\mathbf{a}_1 = (1,0)L2 orbitals per unit cell, L1 rungs; 1D geometry
"Bilayer_Square"22a1=(1,0)\mathbf{a}_1 = (1,0), a2=(0,1)\mathbf{a}_2 = (0,1)Two layers with 3D orbital positions
"Triangular"13a1=(1,0)\mathbf{a}_1 = (1,0), a2=(1/2,3/2)\mathbf{a}_2 = (1/2, \sqrt{3}/2)2D only (L1,L2 > 1)
"Honeycomb"23a1=(1,0)\mathbf{a}_1 = (1,0), a2=(1/2,3/2)\mathbf{a}_2 = (1/2, \sqrt{3}/2)A/B sublattice
"Bilayer_Honeycomb"43a1=(1,0)\mathbf{a}_1 = (1,0), a2=(1/2,3/2)\mathbf{a}_2 = (1/2, \sqrt{3}/2)Two honeycomb layers with 3D orbital positions
"Pi_Flux"24a1=(1,1)\mathbf{a}_1 = (1,1), a2=(1,1)\mathbf{a}_2 = (1,-1)2D only (L1,L2 > 1)
"Kagome"34a1=(1,0)\mathbf{a}_1 = (1,0), a2=(1/2,3/2)\mathbf{a}_2 = (1/2, \sqrt{3}/2)2D only (L1,L2 > 1)

The total number of orbitals is Ndim = L1 * L2 * Norb where Norb is the number of orbitals per unit cell.

Key Data Structures

After calling Predefined_Latt, the following are available:

VariableTypeDescription
LattType(Lattice)Bravais lattice: unit cell count N, neighbor list nnlist, distance map imj
Latt_unitType(Unit_cell)Unit cell: Norb, coordination number N_coord, orbital positions Orb_pos_p
List(I,1)Integer arrayUnit cell index of site I
List(I,2)Integer arrayOrbital index of site I
Invlist(uc,orb)Integer arraySite index of orbital orb in unit cell uc
NdimIntegerTotal number of orbitals (Latt%N * Latt_unit%Norb)

Defining a Custom Lattice

If the predefined lattices don’t fit your needs, you can define a custom lattice directly in your Hamiltonian’s Ham_Set subroutine using the lattice library in Libraries/Modules/lattices_v3_mod.F90:

  1. Create a Type(Unit_cell) specifying Norb, N_coord, orbital positions, and coordination vectors

  2. Call Make_Lattice(Latt, Latt_unit, L1, L2) to build the full lattice

  3. Construct the List/Invlist mapping arrays

See the existing Hamiltonians for examples of this pattern.