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 = ""
/L1,L2— lattice dimensions (number of unit cells in each direction)Lattice_type— string selecting the lattice (see table below)Model— optional model variant string (used by some Hamiltonians)
Available Lattices¶
Lattice_type | Orbitals per cell | Coord. vectors | Primitive vectors | Notes |
|---|---|---|---|---|
"Square" | 1 | 1 (1D) or 2 (2D) | , | Set L2=1 for a 1D chain |
"N_leg_ladder" | L2 | 1 | L2 orbitals per unit cell, L1 rungs; 1D geometry | |
"Bilayer_Square" | 2 | 2 | , | Two layers with 3D orbital positions |
"Triangular" | 1 | 3 | , | 2D only (L1,L2 > 1) |
"Honeycomb" | 2 | 3 | , | A/B sublattice |
"Bilayer_Honeycomb" | 4 | 3 | , | Two honeycomb layers with 3D orbital positions |
"Pi_Flux" | 2 | 4 | , | 2D only (L1,L2 > 1) |
"Kagome" | 3 | 4 | , | 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:
| Variable | Type | Description |
|---|---|---|
Latt | Type(Lattice) | Bravais lattice: unit cell count N, neighbor list nnlist, distance map imj |
Latt_unit | Type(Unit_cell) | Unit cell: Norb, coordination number N_coord, orbital positions Orb_pos_p |
List(I,1) | Integer array | Unit cell index of site I |
List(I,2) | Integer array | Orbital index of site I |
Invlist(uc,orb) | Integer array | Site index of orbital orb in unit cell uc |
Ndim | Integer | Total 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:
Create a
Type(Unit_cell)specifyingNorb,N_coord, orbital positions, and coordination vectorsCall
Make_Lattice(Latt, Latt_unit, L1, L2)to build the full latticeConstruct the
List/Invlistmapping arrays
See the existing Hamiltonians for examples of this pattern.