0

When I plot the band structure of the Lieb lattice, which has the Hamiltonian given in this code, I get a scrambled plot in the output. I've tried the exact same procedure with many different lattices (square, graphene) and I get the right output but somehow Mathematica is not liking this Hamiltonian in particular.

        t = 0.1; (*hopping potential*)
        h = {{0, -t (1 + E^(-I*ky)), 0}, {0, 0, -t (1 + E^(I*kx))}, {0, 0, 
            0}}; (*Defining part of the Hamiltonian*)
        h = h + h\[ConjugateTranspose]; (*Making Hamiltonian Hermitian*)
        h // MatrixForm (*Viewing Hamiltonian as a matrix*)
        Plot3D[Eigenvalues[
        h], {kx, -π, π}, {ky, -π, π}] (*Plotting \Eigenvalues of Hamiltonian with wavenumber to obtain bandstructure*)

enter image description here

Michael E2
  • 235,386
  • 17
  • 334
  • 747
Abdallah
  • 11
  • 2
  • Welcome to Mathematica.SE! I suggest the following:
    1. As you receive help, try to give it too, by answering questions in your area of expertise.
    2. Take the [tour] and check the faqs!
    3. When you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge.

    Also, please remember to accept the answer, if any, that solves your problem, [by clicking the checkmark sign](http://tinyurl.com/4srwe26

    – Dunlop Apr 05 '20 at 15:06
  • You need to Evaluate or Sort the eigenvalues in the argument of Plot3D - for some reason, Plot3D always "jumps" between the three different bands otherwise. So either Plot3D[Evaluate@Eigenvalues[h],...] or Plot3D[Sort@Eigenvalues[h],...] should work – Lukas Lang Apr 05 '20 at 15:25
  • Possible duplicate: https://mathematica.stackexchange.com/questions/195721/noise-in-eigenvalues-plot, https://mathematica.stackexchange.com/questions/126981/discontinuities-in-eigenvalues-plotting-with-plot3d, https://mathematica.stackexchange.com/questions/39747/how-to-plot-several-functions-without-jumping-multiple-eigenvalues-of-a-system – Michael E2 Apr 05 '20 at 16:21
  • @LukasLang, Thank you very much! Both Sort and Evaluate fix my problem. There still seems to be a couple of breaks in the surface and the Evaluate function shows that the top and bottom bands are swapped at these breaks. This seems to be an artifact to me because I believe the bands should be smooth and continuous. Otherwise it looks much better. Thanks again! – Abdallah Apr 05 '20 at 16:23

1 Answers1

0
t = 0.1;
h = {{0, -t (1 + E^(-I ky)), 0}, {0, 0, -t (1 + E^(I kx))}, {0, 0, 0}};
ham = h + Assuming[{Element[kx, Reals], Element[ky, Reals]}, 
      Refine[ConjugateTranspose[h]]]);

$$\left( \begin{array}{ccc} 0 & -0.1 \left(1+e^{-i \text{ky}}\right) & 0 \\ -0.1 \left(1+e^{i \text{ky}}\right) & 0 & -0.1 \left(1+e^{i \text{kx}}\right) \\ 0 & -0.1 \left(1+e^{-i \text{kx}}\right) & 0 \\ \end{array} \right)$$

You may find the eigenvalues using:

FullSimplify[Eigenvalues[ham]]

$$\left\{0,-0.141421 \sqrt{\cos (\text{kx})+\cos (\text{ky})+2},-0.141421 \sqrt{\cos (\text{kx})+\cos (\text{ky})+2}\right\}$$

You may use Plot3D now.

exp ikx
  • 768
  • 3
  • 13
  • 1
    Thank you very much. This also solves my problem and shines light on the mathematical form of the eigenvalues! – Abdallah Apr 05 '20 at 16:31