Demo examples

Hamiltonian

2D band structure

◼
  • Graphene
  • Take graphene lattice parameters:
    a0=1.42; a=
    3
    a0;​​a1=a 12,
    3
    2,0; a2=a {1,0,0};​​A={0,0,0}; B=(a1+a2)/3;​​{guc,T,a0} = {{A,B},{a1,a2},a0};
    Sample a square patch in the reciprocal space that is large enough to cover the first Brillouin zone with
    50
    k
    -points along each of the edges:
    np=50;​​klist=Flatten[Table[{kx,ky,0},{kx,-2,2,4/(np-1)},{ky,-2,2,4/(np-1)}],1];
    Construct the tight-binding Hamiltonian in each
    k
    -point, find eigenvalues and plot them with
    ListPlot3D
    by collecting and separating the data for conduction and valence bands:
    el={#〚1〛,#〚2〛,Sort@Chop@Eigenvalues[Hamiltonian[{guc,guc},TranslationVectors{{a1,a2},{a1,a2}},Kpoint#]]}&;​​data=el/@klist;​​cband={#〚1〛,#〚2〛,#〚3,2〛}&/@data;​​vband={#〚1〛,#〚2〛,#〚3,1〛}&/@data;​​ListPlot3D[{vband,cband},MeshNone]

    Band structure along the path

    ◼
  • Graphene
  • Take graphene lattice parameters:
    a0=1.42; a=
    3
    a0;​​a1=a 12,
    3
    2,0; a2=a {1,0,0};​​A={0,0,0}; B=(a1+a2)/3;​​{guc,T,a0} = {{A,B},{a1,a2},a0};
    Define the line of interest in the reciprocal space of graphene and sample
    k
    -points along this path (here we define the lines connecting high symmetry points
    Γ
    ,
    K
    ,
    M
    of the first Brillouin zone of graphene):
    Γ={0,0,0};​​K={4π/(3a),0,0};​​M=
    π
    a
    ,-
    π
    3
    a
    ,0;​​np=10;​​klist=JoinTable(K-Γ)
    i
    np
    +Γ,{i,np},Table(M-K)
    i
    np
    +K,{i,np},Table(Γ-M)
    i
    np
    +M,{i,np};
    Calculate the eigenvalues of the Hamiltonian in each
    k
    -point:
    el=Sort@Chop@Eigenvalues[Hamiltonian[{guc,guc},TranslationVectors{{a1,a2},{a1,a2}},Kpoint#]]&;​​bands=el/@klist;
    Transform the collected data by
    Transpose
    into the format suitable for
    ListLinePlot
    and visualize the electronic energy bands along the chosen path:
    ListLinePlot[Transpose[bands],​​PlotStyleRed,AxesFalse,FrameTrue,FrameTicks{{{0,"Γ"},{10,"K"},{20,"M"},{30,"Γ"}},Automatic},GridLines{{10,20},None}]

    ElectronicStructure

    2D band structure

    ◼
  • Graphene
  • Take graphene lattice parameters
    a0=1.42; a=
    3
    a0;​​a1=a 12,
    3
    2,0; a2=a {1,0,0};​​A={0,0,0}; B=(a1+a2)/3;​​{guc,T,a0} = {{A,B},{a1,a2},a0};
    Sample a square patch in the reciprocal space that is large enough to cover the first Brillouin zone with
    50
    k
    -points along each of the edges:
    np=50;​​klist=Flatten[Table[{kx,ky,0},{kx,-2,2,4/(np-1)},{ky,-2,2,4/(np-1)}],1];
    Calculate electronic energy bands for the generated list of
    k
    -points:
    bands=ElectronicStructure[{guc,guc},TranslationVectors{{a1,a2},{a1,a2}},Kpointklist];
    Transform conduction band data to the form acceptable by
    ListPlot3D
    or
    ListContourPlot
    :
    cband=MapThread[{#1〚1〛,#1〚2〛,#2}&,{Last[bands],bands〚2〛}];
    Visualize obtained conduction band with
    ListPlot3D
    :
    ListPlot3Dcband,​​AxesLabel"
    k
    x
    ​,
    -1
    Å
    ","
    k
    y
    ​,
    -1
    Å
    ","E, eV",​​PlotStyleDirective[Opacity[0.7]],​​MeshNone,​​RegionFunctionFunction[{x,y,z},x^2+y^2<
    2
    (1.8)
    ],​​ColorFunction"TemperatureMap",​​MeshFunctions->{#3&},ImageSize{330}
    ◼
  • Bilayer graphene
  • AB-stacked bilayer graphene, see B. Partoens and F. M. Peeters, Phys. Rev. B 74, 075404 (2006).
    Set up bilayer graphene lattice parameters:
    a0=1.42; a=
    3
    a0; c=3.35; ​​a1=a 12,
    3
    2,0; a2=a {1,0,0}; a3 = c {0,0, 2};​​A={0,0,0};B=(a1+a2)/3;​​{bguc,T,a0} = {{A,B,A+B+a3/2,2 B+a3/2},{a1,a2,a3},a0};
    Define nearest neighbor vectors for A and B sublattices:
    nnB={A-B,A+a1-B,A+a2-B};​​nnA=-nnB;
    Using this difference, we can define a couple of test functions (see full documentation of the TBpack application) that can be used for a subtle setting of the hopping integrals in the graphene bilayer accounting for hoppings between the sublattices with different atomic surroundings:
    (* test for the alignment of two vectors *)​​codirQ=If[(#1-#2).(#1-#2)<
    -4
    10
    ,True,False]&;​​(* test for the crystal on-site potential *)​​test0=Or@@Flatten@Outer[codirQ,#7〚2,2〛,nnB,1]&&Round
    #7〚1,3〛
    c
    0||Or@@Flatten@Outer[codirQ,#7〚2,2〛,nnA,1]&&Round
    #7〚1,3〛
    c
    1&;​​(* test for the interlayer intersublattice hopping integral *)​​test3=(Or@@Flatten@Outer[codirQ,#7〚2,2〛,#8〚2,2〛,1])&;

    Band structure along the path

    ◼
  • Trilayer graphene
  • ABA-stacked trilayer graphene, see B. Partoens and F. M. Peeters, Phys. Rev. B 74, 075404 (2006).
    Take ABA-staked trilayer graphene lattice parameters:
    Set up nearest neighbor vectors for A and B sublatices:
    EdgeCorrections element lengths must be also adjusted to the new lengths of HoppingIntegrals, OverlappingIntegrals and HoppingDistances options.
    Visualize the four subbands that are the closest to the intrinsic Fermi level in the system:
    The resulting plot is the same as that in Fig. 8 (b) of B. Partoens and F. M. Peeters, Phys. Rev. B 74, 075404 (2006).

    ElectronicBands1D

    Energy bands

    ◼
  • Single wall carbon nanotube
  • Take the list of atomic coordinate for armchair carbon nanotube (5,5):
    Calculate the electronic energy band structure with default options of ElectronicBands1D:

    How to get full experience of TBpack application

    Now that you have put your hands on the TBpack functions, you may want to get a full experience of TBpack application with documentation built-in into the Mathematica Documentation Center, available off-line and supported by a range of visualization and data analysis functions. To install the application, simply evaluate the next cell: