{"id":1614,"date":"2019-07-05T09:36:56","date_gmt":"2019-07-05T09:36:56","guid":{"rendered":"http:\/\/second-tech.com\/wordpress\/?p=1614"},"modified":"2020-01-13T23:32:27","modified_gmt":"2020-01-13T23:32:27","slug":"the-graphene-band-structure","status":"publish","type":"post","link":"https:\/\/second-tech.com\/wordpress\/index.php\/2019\/07\/05\/the-graphene-band-structure\/","title":{"rendered":"The band structure of graphene"},"content":{"rendered":"<p><i>Most recent TBTK release at the time of writing: v1.1.1<\/i><br \/>\n<i>Updated to work with: v2.0.0<\/i><\/p>\n<p>In condensed matter physics, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Electronic_band_structure\">electronic band structure<\/a> is one of the most commonly used tools for understanding the electronic properties of a material. Here we take a look at how to set up a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tight_binding\">tight-binding model<\/a> of graphene and calculate the band structure along paths between certain high symmetry points in the Brillouin zone. We also calculate the density of states (DOS). A basic understanding of band theory is assumed and if further background is required a good starting point is to look at the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Nearly_free_electron_model\">nearly free electron model<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bloch_wave\">Bloch waves<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bloch_wave\">Bloch&#8217;s theorem<\/a>, and the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Brillouin_zone\">Brillouin zone<\/a>.<\/p>\n<div class=\"a-single a-4\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n<ins class=\"adsbygoogle\"\r\n     style=\"display:block; text-align:center;\"\r\n     data-ad-layout=\"in-article\"\r\n     data-ad-format=\"fluid\"\r\n     data-ad-client=\"ca-pub-3756520172792312\"\r\n     data-ad-slot=\"9656949358\"><\/ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n<\/script><\/div>\n<h2>Physical description<\/h2>\n<h3>Lattice<\/h3>\n<p>Graphene has a hexagonal lattice that can be described using the lattice vectors <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-92ebb436e5d8445059f782d8ed8e8be6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#32;&#61;&#32;&#97;&#40;&#49;&#44;&#32;&#48;&#44;&#32;&#48;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"104\" style=\"vertical-align: -4px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-15f4b03c4611a0907aaf67e02c9542b9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#32;&#61;&#32;&#97;&#40;&#45;&#49;&#47;&#50;&#44;&#32;&#92;&#115;&#113;&#114;&#116;&#123;&#51;&#125;&#47;&#50;&#44;&#32;&#48;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"21\" width=\"168\" style=\"vertical-align: -5px;\"\/>,\u00a0 and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d5617f18c80f723c0e60225745e077f5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#32;&#61;&#32;&#97;&#40;&#48;&#44;&#32;&#48;&#44;&#32;&#49;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"104\" style=\"vertical-align: -4px;\"\/>. We set the lattice constant to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-47625eea692f649988a40f3a453c577d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#97;&#32;&#61;&#32;&#50;&#46;&#53;&#32;&#92;&#116;&#101;&#120;&#116;&#114;&#109;&#123;&#92;&#65;&#65;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"69\" style=\"vertical-align: -1px;\"\/>, which only is meant to reflect the correct order of magnitude. Strictly speaking, only two two-dimensional vectors are required to describe the lattice. However, we have here made the vectors three-dimensional and included a third lattice vector <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b44a67ec1853f0a0bb2e11ff4485e4c5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"15\" style=\"vertical-align: -3px;\"\/> that is perpendicular to the lattice to simplify the calculation of the reciprocal lattice vectors. The resulting lattice is shown in the image below.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1657 size-full\" src=\"http:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/RealLattice.png\" alt=\"\" width=\"600\" height=\"600\" srcset=\"https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/RealLattice.png 600w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/RealLattice-150x150.png 150w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/RealLattice-300x300.png 300w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/RealLattice-100x100.png 100w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Indicated in the image is also the unit cell and the A and B sublattice sites within the unit cell. We further define<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 99px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-78cf9c0b57f89e789f9743d503fa0706_l3.png\" height=\"99\" width=\"181\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#32;&#43;&#32;&#50;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#125;&#123;&#51;&#125;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#49;&#41;&#125;&#32;&#61;&#38;&#32;&#45;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#32;&#43;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#50;&#41;&#125;&#32;&#61;&#38;&#32;&#45;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#32;&#45;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#32;&#43;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;&#44; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>which can be verified to be the vector from A to its three nearest neighbor B sites.<\/p>\n<h3>Brillouin zone<\/h3>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Reciprocal_lattice\">reciprocal lattice<\/a> vectors can now be calculated using<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 129px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-e9ec406b51d6e8a5e27c358752729d69_l3.png\" height=\"129\" width=\"128\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#48;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#125;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#125;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#49;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#125;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#125;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#50;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#125;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#48;&#92;&#116;&#105;&#109;&#101;&#115;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#49;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Here <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b30b9dbeb199747b12b16852bee7b5a9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> just like <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b44a67ec1853f0a0bb2e11ff4485e4c5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"15\" style=\"vertical-align: -3px;\"\/> is related to the z-direction and will be dropped from here on. The two remaining reciprocal lattice vectors <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-4608b29449f4f517b936923bd8bb0ab5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-a328789d3eddcee94cd99c7b8970d59f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"17\" style=\"vertical-align: -4px;\"\/> defines the reciprocal lattice of interest to us. Below the reciprocal lattice is shown.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1665 size-full\" src=\"http:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/ReciprocalLattice.png\" alt=\"\" width=\"600\" height=\"600\" srcset=\"https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/ReciprocalLattice.png 600w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/ReciprocalLattice-150x150.png 150w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/ReciprocalLattice-300x300.png 300w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/ReciprocalLattice-100x100.png 100w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>In the the image above we have also indicated the first Brillouin zone in red, and outlined the path <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-7f9ce1818608d6903845103579423a81_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#71;&#97;&#109;&#109;&#97;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#77;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#75;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#92;&#71;&#97;&#109;&#109;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"140\" style=\"vertical-align: -1px;\"\/> along which the band structure will be calculated. The high symmetry points can be verified to be given by<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 108px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b5445661f8865929eb0d02a1b38f213e_l3.png\" height=\"108\" width=\"132\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#92;&#71;&#97;&#109;&#109;&#97;&#125;&#32;&#61;&#38;&#32;&#40;&#48;&#44;&#32;&#48;&#44;&#32;&#48;&#41;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#77;&#125;&#32;&#61;&#38;&#32;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#112;&#105;&#125;&#123;&#97;&#125;&#44;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#45;&#92;&#112;&#105;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#51;&#125;&#97;&#125;&#44;&#32;&#48;&#41;&#44;&#92;&#92; &#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#75;&#125;&#32;&#61;&#38;&#32;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#52;&#92;&#112;&#105;&#125;&#123;&#51;&#97;&#125;&#44;&#32;&#48;&#44;&#32;&#48;&#41;&#46; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<h3>Hamiltonian<\/h3>\n<p>We will use a simple tight-binding model of graphene of the form<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 39px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9c89065579ce76668ed7da6d9e2c24a3_l3.png\" height=\"39\" width=\"219\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#72;&#32;&#61;&#32;&#45;&#116;&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#44;&#65;&#125;&#94;&#123;&#92;&#100;&#97;&#103;&#103;&#101;&#114;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#43;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#44;&#66;&#125;&#32;&#43;&#32;&#72;&#46;&#99;&#46; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Here <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-6b97bb0f65c75b6cc0fba1868749478d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#116;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/> is a hopping amplitude connecting nearest neighbor sites which we take to be <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-3de2e3e19d7ce90c34572edfd6dd38f6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#116;&#32;&#61;&#32;&#51;&#32;&#101;&#86;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"61\" style=\"vertical-align: 0px;\"\/> (again, only correct up to order of magnitude). The index <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/> runs over the unit cells, while <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c2388ad221951912e59489326c6a27e5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"10\" style=\"vertical-align: 0px;\"\/> takes on the three values that makes <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-3464003a5b363f2522a949c975cff850_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#43;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#44;&#66;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"59\" style=\"vertical-align: -4px;\"\/> the nearest neighbor of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-a903b8fbd1f63ca5d529735a1c02b40a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#44;&#65;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"27\" style=\"vertical-align: -4px;\"\/>.<\/p>\n<p>Because of translation invariance, it is possible to transform the expression above to a simple expression in reciprocal space. To do so we write<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 100px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-09bdc2b0dc0d16dbb74d1521382c2074_l3.png\" height=\"100\" width=\"257\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#44;&#65;&#125;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#78;&#125;&#125;&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#65;&#125;&#101;&#94;&#123;&#105;&#107;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#82;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#125;&#44;&#92;&#92; &#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#43;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#44;&#66;&#125;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#78;&#125;&#125;&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#66;&#125;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#108;&#101;&#102;&#116;&#40;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#82;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#32;&#43;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Here <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-91db41140dc99fd870045bf28f0d5ff2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#82;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"19\" style=\"vertical-align: -3px;\"\/> is the position of the A atom in unit cell <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/>, while <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-8ac34b09efbc7898caa88a8bef148c6c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#125;&#32;&#92;&#105;&#110;&#32;&#92;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;&#44;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#49;&#41;&#125;&#44;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#50;&#41;&#125;&#92;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"26\" width=\"163\" style=\"vertical-align: -6px;\"\/>.<span id='easy-footnote-1-1614' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/second-tech.com\/wordpress\/index.php\/2019\/07\/05\/the-graphene-band-structure\/#easy-footnote-bottom-1-1614' title='Note that the definition of &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c805ac886efb548430f010026c7cbc64_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#99;&amp;#95;&amp;#123;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#105;&amp;#125;&amp;#43;&amp;#92;&amp;#98;&amp;#111;&amp;#108;&amp;#100;&amp;#115;&amp;#121;&amp;#109;&amp;#98;&amp;#111;&amp;#108;&amp;#123;&amp;#92;&amp;#100;&amp;#101;&amp;#108;&amp;#116;&amp;#97;&amp;#125;&amp;#44;&amp;#66;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;14&quot; width=&quot;45&quot; style=&quot;vertical-align: -6px;&quot;\/&gt; is threefold redundant since for each site B in unit cell &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#105;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;12&quot; width=&quot;6&quot; style=&quot;vertical-align: 0px;&quot;\/&gt; there are three ways to label the same site. For each of the three vectors &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-cc1381375c8942efe50f4ab3e1514b9f_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#114;&amp;#125;&amp;#95;&amp;#123;&amp;#65;&amp;#66;&amp;#125;&amp;#94;&amp;#123;&amp;#40;&amp;#48;&amp;#41;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;26&quot; width=&quot;29&quot; style=&quot;vertical-align: -6px;&quot;\/&gt;, &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-897506d83e5e359162d0eb550b73a038_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#114;&amp;#125;&amp;#95;&amp;#123;&amp;#65;&amp;#66;&amp;#125;&amp;#94;&amp;#123;&amp;#40;&amp;#49;&amp;#41;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;26&quot; width=&quot;29&quot; style=&quot;vertical-align: -6px;&quot;\/&gt;, and &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-7af69cf5e7d0b1bca8ed9280df667503_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#114;&amp;#125;&amp;#95;&amp;#123;&amp;#65;&amp;#66;&amp;#125;&amp;#94;&amp;#123;&amp;#40;&amp;#50;&amp;#41;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;26&quot; width=&quot;29&quot; style=&quot;vertical-align: -6px;&quot;\/&gt; there is a different unit cell from which the B site in cell &lt;img src=&quot;https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png&quot; class=&quot;ql-img-inline-formula quicklatex-auto-format&quot; alt=&quot;&amp;#92;&amp;#109;&amp;#97;&amp;#116;&amp;#104;&amp;#98;&amp;#102;&amp;#123;&amp;#105;&amp;#125;&quot; title=&quot;Rendered by QuickLaTeX.com&quot; height=&quot;12&quot; width=&quot;6&quot; style=&quot;vertical-align: 0px;&quot;\/&gt; can be reached. However, each of these three redundant definitions can be verified to be equivalent and the redundant expression simplifies the mathematical notation.'><sup>1<\/sup><\/a><\/span><\/p>\n<p>Inserting this into the expression above we get<\/p>\n<p class=\"ql-center-displayed-equation\" style=\"line-height: 147px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-0e966222b1b37543d4062c651033c281_l3.png\" height=\"147\" width=\"434\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#091; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#72;&#32;&#61;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#45;&#116;&#125;&#123;&#78;&#125;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#39;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#65;&#125;&#94;&#123;&#92;&#100;&#97;&#103;&#103;&#101;&#114;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#39;&#44;&#66;&#125;&#101;&#94;&#123;&#45;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#82;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#125;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#39;&#92;&#99;&#100;&#111;&#116;&#92;&#108;&#101;&#102;&#116;&#40;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#82;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#32;&#43;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#125;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#125;&#32;&#43;&#32;&#72;&#46;&#99;&#92;&#92; &#61;&#38;&#32;&#45;&#116;&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#65;&#125;&#94;&#123;&#92;&#100;&#97;&#103;&#103;&#101;&#114;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#66;&#125;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;&#125;&#125;&#32;&#43;&#32;&#72;&#46;&#99;&#92;&#92; &#61;&#38;&#32;&#45;&#116;&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#65;&#125;&#94;&#123;&#92;&#100;&#97;&#103;&#103;&#101;&#114;&#125;&#99;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#44;&#66;&#125;&#92;&#108;&#101;&#102;&#116;&#40;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;&#125;&#32;&#43;&#32;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#49;&#41;&#125;&#125;&#32;&#43;&#32;&#101;&#94;&#123;&#105;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#50;&#41;&#125;&#125;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#32;&#43;&#32;&#72;&#46;&#99;&#46; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#101;&#100;&#125; &#92;&#093;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>In the second line we have summed over <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/> and used the delta function property of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-e38fd857815afd1aa612daaaa5c98b74_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#115;&#117;&#109;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#101;&#94;&#123;&#105;&#40;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#45;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#39;&#41;&#92;&#99;&#100;&#111;&#116;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;&#125;&#47;&#78;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"122\" style=\"vertical-align: -5px;\"\/> to eliminat <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9f52929c6e99f2e2d8fce4b0dc34482e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#39;\" title=\"Rendered by QuickLaTeX.com\" height=\"14\" width=\"15\" style=\"vertical-align: 0px;\"\/>, while in the last line we have made the sum over <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c2388ad221951912e59489326c6a27e5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#111;&#108;&#100;&#115;&#121;&#109;&#98;&#111;&#108;&#123;&#92;&#100;&#101;&#108;&#116;&#97;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"10\" style=\"vertical-align: 0px;\"\/> explicit.<\/p>\n<h2>Implementation<\/h2>\n<h3>Parameters<\/h3>\n<p>We are now ready to implement the calculation using TBTK. To do so, we begin by specifying the parameters to be used in the calculation<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/\/Set the natural units for this calculation.\r\nUnitHandler::setScales({\r\n        &quot;1 rad&quot;, &quot;1 C&quot;, &quot;1 pcs&quot;, &quot;1 eV&quot;,\r\n        &quot;1 Ao&quot;, &quot;1 K&quot;, &quot;1 s&quot;\r\n});\r\n\r\n\/\/Define parameters.\r\ndouble t = 3;   \/\/eV\r\ndouble a = 2.5; \/\/\u00c5ngstr\u00f6m\r\nunsigned int BRILLOUIN_ZONE_RESOLUTION = 1000;\r\nvector&lt;unsigned int&gt; numMeshPoints = {\r\n    BRILLOUIN_ZONE_RESOLUTION,\r\n    BRILLOUIN_ZONE_RESOLUTION\r\n};\r\nconst int K_POINTS_PER_PATH = 100;\r\nconst double ENERGY_LOWER_BOUND = -10;\r\nconst double ENERGY_UPPER_BOUND = 10;\r\nconst int ENERGY_RESOLUTION = 1000;\r\n<\/pre>\n<p>In lines 2-5, we specify what units that dimensionful parameters should be understood in terms of. For our purposes here, this means that energies and distances are measured in electron Volts (eV) and \u00c5ngstr\u00f6m (Ao), respectively.<\/p>\n<p>We next specify the value for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-6b97bb0f65c75b6cc0fba1868749478d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#116;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c63f5a3a084d567b6d62758d1c9bc8b8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\" style=\"vertical-align: 0px;\"\/> as given in the physical description above. The value &#8216;BRILLOUIN_ZONE_RESOLUTION&#8217; determines the number of subintervals each of the reciprocal lattice vectors is divided into when generating a mesh for the Brillouin zone. &#8216;numMeshPoints&#8217; combine this information into a vector. Similarly, &#8216;K_POINTS_PER_PATH&#8217; determines the number of k-points to use along each of the paths <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-7b98e40912aa34858392d649908029c5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#71;&#97;&#109;&#109;&#97;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#77;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"58\" style=\"vertical-align: -1px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-8b16322c8053353ceb8a992d590ebfb5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#77;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#75;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"63\" style=\"vertical-align: -1px;\"\/>, and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9382f2d90fecefcdb59817b2c62f3f5f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#75;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#92;&#71;&#97;&#109;&#109;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"55\" style=\"vertical-align: -1px;\"\/> when calculating the band structure. Finally, the energy window that is used to calculate the DOS is specified in the three last lines.<\/p>\n<h3>Real and reciprocal lattice<\/h3>\n<p>The lattice vectors <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-2dbbaa497d379b3b4357fbc4f300174a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#48;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"15\" style=\"vertical-align: -3px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1f06a04a23bd98ad3c02af3faa9f83cd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: -4px;\"\/>, and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c56bb7fc422f36fed4ac7b2f27955753_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"15\" style=\"vertical-align: -3px;\"\/> are now defined as follows.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nVector3d r&#x5B;3];\r\nr&#x5B;0] = Vector3d({a,     0,              0});\r\nr&#x5B;1] = Vector3d({-a\/2,  a*sqrt(3)\/2,    0});\r\nr&#x5B;2] = Vector3d({0,     0,              a});\r\n<\/pre>\n<p>The nearest neighbor vectors <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-cc1381375c8942efe50f4ab3e1514b9f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"26\" width=\"29\" style=\"vertical-align: -6px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-897506d83e5e359162d0eb550b73a038_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#49;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"26\" width=\"29\" style=\"vertical-align: -6px;\"\/>, and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-7af69cf5e7d0b1bca8ed9280df667503_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#114;&#125;&#95;&#123;&#65;&#66;&#125;&#94;&#123;&#40;&#50;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"26\" width=\"29\" style=\"vertical-align: -6px;\"\/> are similarly defined using<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nVector3d r_AB&#x5B;3];\r\nr_AB&#x5B;0] = (r&#x5B;0] + 2*r&#x5B;1])\/3.;\r\nr_AB&#x5B;1] = -r&#x5B;1] + r_AB&#x5B;0];\r\nr_AB&#x5B;2] = -r&#x5B;0] - r&#x5B;1] + r_AB&#x5B;0];\r\n<\/pre>\n<p>Next, the reciprocal lattice vectors are calculated using the expressions at the beginning of the Brillouin zone section.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nVector3d k&#x5B;3];\r\nfor(unsigned int n = 0; n &lt; 3; n++){\r\n    k&#x5B;n] = 2*M_PI*r&#x5B;(n+1)%3]*r&#x5B;(n+2)%3]\/(\r\n        Vector3d::dotProduct(\r\n            r&#x5B;n],\r\n            r&#x5B;(n+1)%3]*r&#x5B;(n+2)%3]\r\n        )\r\n    );\r\n}\r\n<\/pre>\n<p>Note that here &#8216;*&#8217; indicates the cross product, while the scalar product between u and v is calculated using Vector3d::dotProduct(u, v).<\/p>\n<p>Having defined the lattice vectors, we can now construct a Brillouin zone.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nBrillouinZone brillouinZone(\r\n    {\r\n        {k&#x5B;0].x, k&#x5B;0].y},\r\n        {k&#x5B;1].x, k&#x5B;1].y}\r\n    },\r\n    SpacePartition::MeshType::Nodal\r\n);\r\n<\/pre>\n<p>Here the first argument is a list of lattice vectors, while the second argument specifies the type of mesh that is going to be associated with this Brillouin zone. SpacePartition::MeshType::Nodal means that when the Brillouin zone is divided into small parallelograms, the mesh points will lie on the corners of these parallelograms. If SpacePartition::MeshType::Interior is used instead, the mesh points will lie in the middle of the parallelograms.<\/p>\n<p>Having constructed a Brillouin zone, we finally generate a mesh by passing the number of segments to divide each reciprocal lattice vector to the following function.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvector&lt;vector&lt;double&gt;&gt; mesh\r\n    = brillouinZone.getMinorMesh(\r\n        numMeshPoints\r\n    );\r\n<\/pre>\n<h3>Set up the model<\/h3>\n<p>The model is set up using the following code.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nModel model;\r\nfor(unsigned int n = 0; n &lt; mesh.size(); n++){\r\n    \/\/Get Index representation of the current\r\n    \/\/k-point.\r\n    Index kIndex = brillouinZone.getMinorCellIndex(\r\n        mesh&#x5B;n],\r\n        numMeshPoints\r\n    );\r\n\r\n    \/\/Calculate the matrix element.\r\n    Vector3d k({mesh&#x5B;n]&#x5B;0], mesh&#x5B;n]&#x5B;1], 0});\r\n    complex&lt;double&gt; h_01 = -t*(\r\n        exp(\r\n            -i*Vector3d::dotProduct(\r\n                k,\r\n                r_AB&#x5B;0]\r\n            )\r\n        )\r\n        + exp(\r\n            -i*Vector3d::dotProduct(\r\n                k,\r\n                r_AB&#x5B;1]\r\n            )\r\n        )\r\n        + exp(\r\n            -i*Vector3d::dotProduct(\r\n                k,\r\n                r_AB&#x5B;2]\r\n            )\r\n        )\r\n    );\r\n\r\n    \/\/Add the matrix element to the model.\r\n    model &lt;&lt; HoppingAmplitude(\r\n        h_01,\r\n        {kIndex&#x5B;0], kIndex&#x5B;1], 0},\r\n        {kIndex&#x5B;0], kIndex&#x5B;1], 1}\r\n    ) + HC;\r\n}\r\nmodel.construct();\r\n<\/pre>\n<p>Here the loop runs over each lattice point in the mesh. To understand line 4-7, we first note that the mesh contains k-points of the form <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-bfd55008dd1af36c3cab3b2451d469b1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#40;&#107;&#95;&#120;&#44;&#32;&#107;&#95;&#121;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"55\" style=\"vertical-align: -6px;\"\/> with real numbers <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-5ae17990efd725478b1fdb7cb6dfb9b3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#107;&#95;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"17\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d000b9b9682684db25381ccd9773857a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#107;&#95;&#121;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"16\" style=\"vertical-align: -6px;\"\/>. However, to specify a model, we need discrete indices with integer-valued subindices to label the points. Think of this as each k value being of the form <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-93461429fe752404df725f8813f8fb86_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"15\" style=\"vertical-align: -3px;\"\/>, where <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-93461429fe752404df725f8813f8fb86_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#107;&#125;&#95;&#123;&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"15\" style=\"vertical-align: -3px;\"\/> is a real-valued vector while <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1b8efe2424cfdcf9d67a6ecabb69d4aa_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#102;&#123;&#105;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"6\" style=\"vertical-align: 0px;\"\/> is an integer-valued vector that indexes the different k-points. The BrillouinZone solves this problem for us by automatically providing a mapping from continuous indices to discrete indices. Given a real index in the first Brillouin zone and information about the number of subdivisions of the lattice vectors, brillouinZone.getMinorCellIndex() finds the closest discrete point and returns its Index representation. This index can then be used to refer to the k-point whenever an Index object is required.<\/p>\n<p>In line 10, the mesh point is converted to a Vector3d object that is then used in lines 11-30 to calculate the matrix element we derived in the section about the Hamiltonian. The matrix element, together with its Hermitian conjugate, is then fed to the model in lines 33-37. Here we construct the full index for the model by combining the integer kIndex[0] and kIndex[1] values, together with the sublattice index, into an index structure of the form {kx, ky, sublattice}. A zero in the sublattice index refers to an A site, while one refers to a B site. Finally, the model is constructed in line 39.<\/p>\n<h3>Selecting solver<\/h3>\n<p>We are now ready to solve the model and will use diagonalization to do so. In this case, we have a problem that is block-diagonal in the k-index. For this reason, we will use the solver Solver::BlockDiagonalizer that can take advantage of this block structure. To set up and run the diagonalization we write<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nSolver::BlockDiagonalizer solver;\r\nsolver.setModel(model);\r\nsolver.run();\r\n<\/pre>\n<p>We then set up the corresponding property extractor and configure the energy window using<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nPropertyExtractor::BlockDiagonalizer\r\n    propertyExtractor(solver);\r\npropertyExtractor.setEnergyWindow(\r\n    ENERGY_LOWER_BOUND,\r\n    ENERGY_UPPER_BOUND,\r\n    ENERGY_RESOLUTION\r\n);\r\n<\/pre>\n<h3>Extracting the DOS<\/h3>\n<p>Extracting, smoothing, and plotting the DOS is now done as follows.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/\/Calculate the density of states (DOS).\r\nProperty::DOS dos\r\n    = propertyExtractor.calculateDOS();\r\n\r\n\/\/Smooth the DOS.\r\nconst double SMOOTHING_SIGMA = 0.03;\r\nconst unsigned int SMOOTHING_WINDOW = 51;\r\ndos = Smooth::gaussian(\r\n    dos,\r\n    SMOOTHING_SIGMA,\r\n    SMOOTHING_WINDOW\r\n);\r\n\r\n\/\/Plot the DOS.\r\nPlotter plotter;\r\nplotter.plot(dos);\r\nplotter.save(&quot;figures\/DOS.png&quot;);\r\n<\/pre>\n<h3>Extract the band structure<\/h3>\n<p>We are now ready to calculate the band structure. To do so, we begin by defining the high symmetry points<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nVector3d Gamma({0,        0,                 0});\r\nVector3d M({M_PI\/a,       -M_PI\/(sqrt(3)*a), 0});\r\nVector3d K({4*M_PI\/(3*a), 0,                 0});\r\n<\/pre>\n<p>These are then packed in pairs to define the three paths <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-7b98e40912aa34858392d649908029c5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#71;&#97;&#109;&#109;&#97;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#77;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"58\" style=\"vertical-align: -1px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-8b16322c8053353ceb8a992d590ebfb5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#77;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#75;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"63\" style=\"vertical-align: -1px;\"\/>, and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9382f2d90fecefcdb59817b2c62f3f5f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#75;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#97;&#114;&#114;&#111;&#119;&#32;&#92;&#71;&#97;&#109;&#109;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"55\" style=\"vertical-align: -1px;\"\/><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvector&lt;vector&lt;Vector3d&gt;&gt; paths = {\r\n    {Gamma, M},\r\n    {M, K},\r\n    {K, Gamma}\r\n};\r\n<\/pre>\n<p>We now loop over each of the three paths and calculate the band structure at each k-point along these paths.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nArray&lt;double&gt; bandStructure(\r\n    {2, 3*K_POINTS_PER_PATH},\r\n    0\r\n);\r\nRange interpolator(0, 1, K_POINTS_PER_PATH);\r\nfor(unsigned int p = 0; p &lt; 3; p++){\r\n    \/\/Select the start and endpoints for the\r\n    \/\/current path.\r\n    Vector3d startPoint = paths&#x5B;p]&#x5B;0];\r\n    Vector3d endPoint = paths&#x5B;p]&#x5B;1];\r\n\r\n    \/\/Loop over a single path.\r\n    for(\r\n        unsigned int n = 0;\r\n        n &lt; K_POINTS_PER_PATH;\r\n        n++\r\n    ){\r\n        \/\/Interpolate between the paths start\r\n        \/\/and end point.\r\n        Vector3d k = (\r\n            interpolator&#x5B;n]*endPoint\r\n            + (1 - interpolator&#x5B;n])*startPoint\r\n        );\r\n\r\n        \/\/Get the Index representation of the\r\n        \/\/current k-point.\r\n        Index kIndex = brillouinZone.getMinorCellIndex(\r\n            {k.x, k.y},\r\n            numMeshPoints\r\n        );\r\n\r\n        \/\/Extract the eigenvalues for the\r\n        \/\/current k-point.\r\n        bandStructure&#x5B;\r\n            {0, n+p*K_POINTS_PER_PATH}\r\n        ] = propertyExtractor.getEigenValue(\r\n            kIndex,\r\n            0\r\n        );\r\n        bandStructure&#x5B;\r\n            {1, n+p*K_POINTS_PER_PATH}\r\n        ] = propertyExtractor.getEigenValue(\r\n            kIndex,\r\n            1\r\n        );\r\n    }\r\n}\r\n<\/pre>\n<p>Here we first set up the array &#8216;bandStructure&#8217; that is to contain the band structure with two eigenvalues per k-point. The variable &#8216;interpolator&#8217; is then defined, which is an array of values from 0 to 1 that will be used to interpolate between the paths start and endpoints. In lines 9 and 10 we then select the start and endpoints for the current path, and the loop over this path begins in line 13.<\/p>\n<p>In lines 20-23, we calculate an interpolated k-point value between the first and last points in the given path. Similarly, as when setting up the model, we then request the Index that corresponds to the given k-point. Having obtained this Index, we extract the lowest eigenvalue for the corresponding block in lines 34-39 and store it in the array &#8216;bandStructure&#8217;. Similarly, the highest eigenvalue is obtained for the same block in lines 40-45.<\/p>\n<p>Next, we calculate the maximum and minimum value of the band structure along the calculated paths. We do this to allow for drawing vertical lines of the correct height at the M and K points when plotting the data.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ndouble min = bandStructure&#x5B;{0, 0}];\r\ndouble max = bandStructure&#x5B;{1, 0}];\r\nfor(\r\n    unsigned int n = 0;\r\n    n &lt; 3*K_POINTS_PER_PATH; n++ ){ if(min &gt; bandStructure&#x5B;{0, n}])\r\n        min = bandStructure&#x5B;{0, n}];\r\n    if(max &lt; bandStructure&#x5B;{1, n}])\r\n        max = bandStructure&#x5B;{1, n}];\r\n}\r\n<\/pre>\n<p>Finally, we plot the band structure.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nplotter.clear();\r\nplotter.setLabelX(&quot;k&quot;);\r\nplotter.setLabelY(&quot;Energy&quot;);\r\nplotter.plot(\r\n    bandStructure.getSlice({0, _a_}),\r\n    {{&quot;color&quot;, &quot;black&quot;}}\r\n);\r\nplotter.plot(\r\n    bandStructure.getSlice({1, _a_}),\r\n    {{&quot;color&quot;, &quot;black&quot;}}\r\n);\r\nplotter.plot(\r\n    {K_POINTS_PER_PATH, K_POINTS_PER_PATH},\r\n    {min, max},\r\n    {{&quot;color&quot;, &quot;black&quot;}}\r\n);\r\nplotter.plot(\r\n    {2*K_POINTS_PER_PATH, 2*K_POINTS_PER_PATH},\r\n    {min, max}\r\n    {{&quot;color&quot;, &quot;black&quot;}}\r\n);\r\nplotter.save(&quot;figures\/BandStructure.png &quot;);\r\n<\/pre>\n<p>Here the &#8216;_a_&#8217; flag in the call to bandStructure.getSlice({0, _a_}, {{&#8220;color&#8221;, &#8220;black&#8221;}}) on line 5 (and 6) is a wildcard. It indicates that we want to get a new array that contains all the elements of the original array that has a zero in the first index and an arbitrary index in the second. &#8216;a&#8217; stands for &#8216;all&#8217;.<\/p>\n<h2>Results<\/h2>\n<p>Below the results are shown. The DOS is characteristically v-shaped around <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-085cc74f4d857c448bac2fd4192e6f10_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#69;&#61;&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"47\" style=\"vertical-align: 0px;\"\/> and is peaked 1\/3 of the way to the band edge. In the band structure, we can see the Dirac cone at the K-point (the second vertical line). The low density of states at <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-085cc74f4d857c448bac2fd4192e6f10_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#69;&#61;&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"47\" style=\"vertical-align: 0px;\"\/> can be understood as a consequence of the small number of k-points around the K-point for which the energy is close to zero. The cone has a finite slope, and therefore only a single k-point is at <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-085cc74f4d857c448bac2fd4192e6f10_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#69;&#61;&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"47\" style=\"vertical-align: 0px;\"\/> (one more point is at the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/second-tech.com\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b063268581b06951ebc5637f21fad0fd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#75;&#39;\" title=\"Rendered by QuickLaTeX.com\" height=\"14\" width=\"20\" style=\"vertical-align: 0px;\"\/>-point, which we have not considered here but which is at another corner of the Brillouin zone). Compare this with the flat region at the M-point (first vertical line), which results in a significant amount of k-points with roughly the same energy. This flat region is responsible for the strong peaks in the DOS.<\/p>\n<h3>DOS<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1888 size-full\" src=\"http:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/DOS-1.png\" alt=\"\" width=\"800\" height=\"600\" srcset=\"https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/DOS-1.png 800w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/DOS-1-300x225.png 300w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/DOS-1-768x576.png 768w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<h3>Band structure<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1887 size-full\" src=\"http:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/BandStructure-1.png\" alt=\"\" width=\"800\" height=\"600\" srcset=\"https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/BandStructure-1.png 800w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/BandStructure-1-300x225.png 300w, https:\/\/second-tech.com\/wordpress\/wp-content\/uploads\/2019\/07\/BandStructure-1-768x576.png 768w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<h2>Full code<\/h2>\n<p>The full code is available in <a href=\"https:\/\/github.com\/dafer45\/SecondTechCode\/blob\/master\/2019_07_05\/src\/main.cpp\">src\/main.cpp<\/a> in the project <a href=\"https:\/\/github.com\/dafer45\/SecondTechCode\/tree\/master\/2019_07_05\">2019_07_05<\/a> of the <a href=\"https:\/\/github.com\/dafer45\/SecondTechCode\">Second Tech code package<\/a>. See the README for instructions on how to build and run.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most recent TBTK release at the time of writing: v1.1.1 Updated to work with: v2.0.0 In condensed matter physics, the electronic band structure is one of the most commonly used tools for understanding the electronic properties of a material. Here we take a look at how to set up a tight-binding model of graphene and &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/second-tech.com\/wordpress\/index.php\/2019\/07\/05\/the-graphene-band-structure\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The band structure of graphene&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1614"}],"collection":[{"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=1614"}],"version-history":[{"count":41,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1614\/revisions"}],"predecessor-version":[{"id":1889,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/1614\/revisions\/1889"}],"wp:attachment":[{"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=1614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=1614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/second-tech.com\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=1614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}