From e2de158c99ff6ca659a8048b4ab0c250afa5f413 Mon Sep 17 00:00:00 2001
From: Kostas Vilkelis <kostasvilkelis@gmail.com>
Date: Tue, 30 May 2023 15:01:21 +0200
Subject: [PATCH] add 1d hubbard test

---
 codes/test.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/codes/test.py b/codes/test.py
index b59fb59..7e60416 100644
--- a/codes/test.py
+++ b/codes/test.py
@@ -69,3 +69,31 @@ def hubbard_2D(U, N_ks):
     v_int = U * np.ones((2,2))
     V = np.array([[v_int for i in range(N_ks)] for j in range(N_ks)])
     return hamiltonians_0, V
+
+
+def hubbard_1D(U, N_ks):
+    chain = kwant.lattice.chain(a=1, norbs=2)
+    # create bulk system
+    bulk_hubbard = kwant.Builder(kwant.TranslationalSymmetry(*chain.prim_vecs))
+    bulk_hubbard[chain.shape((lambda pos: True), (0,))] = 0 * np.eye(2)
+    # add hoppings between lattice points
+    bulk_hubbard[chain.neighbors()] = -1
+
+    # use kwant wraparound to sample bulk k-space
+    wrapped_fsyst = kwant.wraparound.wraparound(bulk_hubbard).finalized()
+
+    # return a hamiltonian for a given kx, ky
+    @np.vectorize
+    def hamiltonian_return(kx, params={}):
+        ham = wrapped_fsyst.hamiltonian_submatrix(params={**params, **dict(k_x=kx)})
+        return ham
+
+    N_k_axis = np.linspace(0, 2 * np.pi, N_ks, endpoint=False)
+    hamiltonians_0 = np.array(
+        [hamiltonian_return(kx) for kx in N_k_axis]
+        )
+
+    # onsite interactions
+    v_int = U * np.ones((2,2))
+    V = np.array([v_int for i in range(N_ks)])
+    return hamiltonians_0, V
-- 
GitLab