forked from ALF-QMC/ALF
-
Notifications
You must be signed in to change notification settings - Fork 0
Predefined Lattices
Johannes Hofmann edited this page Apr 18, 2026
·
2 revisions
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.
&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)
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.
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) |
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 vectors - Call
Make_Lattice(Latt, Latt_unit, L1, L2)to build the full lattice - Construct the
List/Invlistmapping arrays
See the existing Hamiltonians for examples of this pattern.