Reproduce band structure Kagome Fermi-Hubbard using Python

  • #1
randomquestion
4
2
Homework Statement
I am trying to reproduce figure 5c) of https://arxiv.org/pdf/2002.03116.pdf in Python.
But I cannot spot my error in my attempt
Relevant Equations
$$\epsilon_{\boldsymbol{k}} / t = 2,-1 \pm \sqrt{3+2 \sum_{\nu=1}^3 \cos \left(\boldsymbol{k}\cdot e_{\nu}\right)}$$
We need to define a high symmetry point path in the Brillouin zone, we can choose: Gamma-K-M-Gamma

My attempt:


Code:
import numpy as np
import matplotlib.pyplot as plt

# lattice vectors
a1 = np.array([1, 0])
a2 = np.array([-1/2, np.sqrt(3)/2])
a3 = -(a1 + a2)
a = [a1,a2,a3]

#high symmetry points
Gamma = np.array([0, 0])
K = 2*np.pi*np.array([2/3, 0])
M = 2*np.pi*np.array([0, 1/np.sqrt(3)])


num_points = 100
k_path = np.concatenate([np.linspace(k_Gamma, k_K, num_points, endpoint=False),
                         np.linspace(k_K, k_M, num_points, endpoint=False),
                         np.linspace(k_M, k_Gamma, num_points)])


# Calculate energy eigenvalues for each k-point
energies = np.zeros((3, len(k_path)))
for i, k in enumerate(k_path):
    cos_sum = np.cos(np.dot(k,a[0]))+ np.cos(np.dot(k,a[1]))+np.cos(np.dot(k,a[2]))
    energies[:, i] = [2, -1 + np.sqrt(3 + 2*cos_sum), -1 - np.sqrt(3 + 2*cos_sum)]

   
   
# Plot the energy bands
plt.figure(figsize=(8, 6))
for band in range(3):
    plt.plot(np.arange(len(k_path)), energies[band], label=f'Band {band+1}')

plt.ylabel('Energy')

plt.grid(True)

plt.xticks([0, 3*num_points//3, 2*3*num_points//3, num_points*3], [r'$\Gamma$', 'K', 'M', r'$\Gamma$'])
 
Physics news on Phys.org
  • #2
I noticed that in your program the argument of the cosine function in the energy is ##\vec k \cdot \vec a_\nu##. But it looks to me that on page 8 of the paper, the argument is ##\vec k \cdot \vec a_\nu / 2##.

Also, would it make a difference in the energy band structure graph if you choose the "high-symmetry path" to be ##\Gamma## - ##K_2## - ##M_1## - ##\Gamma## rather than your choice of ##\Gamma## - ##K_2## - ##M_2## - ##\Gamma##? I ask mostly out of curiosity. I'm not knowledgeable in this field.
 
  • #3
1713399385369.png


In the paper at the top right of page 8, they write ##\vec M_1 = \dfrac{2\pi}{a}(0, \frac 1 {\sqrt 3})##. But, to me, this looks like the expression for ##\vec M_2##. Shouldn't ##\vec M_1## be ##\vec M_1 = \dfrac{2\pi}{a}(\frac 1 2, \frac 1 {2\sqrt 3})##?

I'm able to reproduce figure 5(c) using the path ##\Gamma##-##K_2##-##M_1##-##\Gamma## with ##\vec M_1 = \dfrac{2\pi}{a}(\frac 1 2, \frac 1 {2\sqrt 3})##. However, I have to follow your lead and use ##\vec k \cdot \vec a_\nu## instead of ##\vec k \cdot \vec a_\nu/2 ## for the argument of the cosine function.

If I construct the band structure graph using the path ##\Gamma##-##K_2##-##M_2##-##\Gamma## with ##\vec M_2 = \dfrac{2\pi}{a}(0, \frac 1 {\sqrt 3})##, I get a graph that differs from 5(c). That's not surprising. I think this is the graph that your code would produce:

1713401059123.png


Path ##\Gamma##-##K_1##-##M_2##-##\Gamma## should also reproduce 5(c) since this path is equivalent to ##\Gamma##-##K_2##-##M_1##-##\Gamma##.

I don't know Python, so I used different software.

[Edited to insert the clip of code.]
 
Last edited:
  • Like
Likes randomquestion
  • #4
Am I going insane? When I run your code I get the following which looks correct to me. The only thing I had to change was

##k_K \rightarrow K##

##k_M \rightarrow M##

##k_Gamma \rightarrow \Gamma##

4434A87F-AF8B-49B4-A952-899C09643EFB.jpeg
 
  • #5
Hello, thank you all for the replies. I found the source of my error. I have wrongly defined the K point.

It should be:

# high symmetry points
Gamma = np.array([0, 0])
K = 2*np.pi*np.array([1/3, 1/np.sqrt(3)])
M = 2*np.pi*np.array([0, 1/(np.sqrt(3))])


with this convention we get the correct plot (Fig. 5c).
 
  • Like
Likes TSny
  • #6
TSny said:
View attachment 343611

In the paper at the top right of page 8, they write ##\vec M_1 = \dfrac{2\pi}{a}(0, \frac 1 {\sqrt 3})##. But, to me, this looks like the expression for ##\vec M_2##. Shouldn't ##\vec M_1## be ##\vec M_1 = \dfrac{2\pi}{a}(\frac 1 2, \frac 1 {2\sqrt 3})##?

I'm able to reproduce figure 5(c) using the path ##\Gamma##-##K_2##-##M_1##-##\Gamma## with ##\vec M_1 = \dfrac{2\pi}{a}(\frac 1 2, \frac 1 {2\sqrt 3})##. However, I have to follow your lead and use ##\vec k \cdot \vec a_\nu## instead of ##\vec k \cdot \vec a_\nu/2 ## for the argument of the cosine function.

If I construct the band structure graph using the path ##\Gamma##-##K_2##-##M_2##-##\Gamma## with ##\vec M_2 = \dfrac{2\pi}{a}(0, \frac 1 {\sqrt 3})##, I get a graph that differs from 5(c). That's not surprising. I think this is the graph that your code would produce:

View attachment 343613

Path ##\Gamma##-##K_1##-##M_2##-##\Gamma## should also reproduce 5(c) since this path is equivalent to ##\Gamma##-##K_2##-##M_1##-##\Gamma##.

I don't know Python, so I used different software.

[Edited to insert the clip of code.]
thank you
 
  • #7
PhDeezNutz said:
Am I going insane? When I run your code I get the following which looks correct to me. The only thing I had to change was

##k_K \rightarrow K##

##k_M \rightarrow M##

##k_Gamma \rightarrow \Gamma##

View attachment 343629
The middle part of your graph, K -> M, differs from Figure 5(c) in the paper. This is due to point M in the paper's graph corresponding to M1. But M in @randomquestion's code is M2.

1713447456279.png


1713447536585.png


The first and last segments of the two graphs are the same.
 
  • Like
Likes randomquestion and PhDeezNutz

Similar threads

  • Advanced Physics Homework Help
Replies
7
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
3
Views
1K
  • Advanced Physics Homework Help
Replies
6
Views
1K
  • Programming and Computer Science
Replies
6
Views
1K
Replies
1
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
3K
Replies
13
Views
2K
  • Programming and Computer Science
Replies
5
Views
2K
Replies
2
Views
2K
  • Introductory Physics Homework Help
Replies
8
Views
2K
Back
Top