Kagome Lattice
This example computes the linked cluster expansion on a kagome lattice up to order 3.
Setup
Define the three-site kagome unit cell:
using Lincege
kagome_basis = [[0.0, 0.0], [1.0, 0.0], [0.5, sqrt(3) / 2]]
kagome_pvecs = [[2.0, 0.0], [1.0, sqrt(3)]]
kagome_bonds = [Bond(1, 2, [0, 0], 1), Bond(2, 3, [0, 0], 1), Bond(3, 1, [0, 0], 1),
Bond(1, 2, [-1, 0], 1), Bond(1, 3, [0, -1], 1), Bond(2, 3, [1, -1], 1)]
kagome_uc = UnitCell(kagome_basis, kagome_pvecs, kagome_bonds, [1, 1, 1])UnitCell([0.0 1.0 0.5; 0.0 0.0 0.8660254037844386], [2.0 1.0; 0.0 1.7320508075688772], [1, 1, 1], Bond[Bond(1, 2, [0, 0], 1), Bond(2, 3, [0, 0], 1), Bond(3, 1, [0, 0], 1), Bond(1, 2, [-1, 0], 1), Bond(1, 3, [0, -1], 1), Bond(2, 3, [1, -1], 1)])Building the lattice and clusters
m_order = 3
lattice = SiteExpansionLattice(m_order, kagome_uc)
trans_clusters = TranslationClusterSet(lattice)
clusters_from_lattice!(trans_clusters, lattice)
iso_clusters = IsomorphicClusterSet(lattice)
clusters_from_clusters!(iso_clusters, trans_clusters)ClusterSet{IsomorphicHasher} with 4 clustersComputing the expansion
expansion = Expansion(iso_clusters, lattice, m_order)
summation!(expansion, m_order)
expansion.weights4×3 Matrix{Float64}:
1.0 -4.0 6.0
0.0 2.0 -10.0
0.0 0.0 0.666667
0.0 0.0 4.0Writing to JSON
write_to_json(expansion, lattice, iso_clusters, "kagome_lattice.json")