You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: example_problem/index.html
+23-23
Original file line number
Diff line number
Diff line change
@@ -623,7 +623,7 @@
623
623
<h1id="example-calculate-chern-numbers-for-the-haldane-model">Example: Calculate Chern numbers for the Haldane Model</h1>
624
624
<h2id="main-problem-and-dependencies">Main Problem and Dependencies</h2>
625
625
<p><strong>1. Generate an array of Chern numbers for the Haldane model on a hexagonal lattice by sweeping the following parameters: the on-site energy to next-nearest-neighbor coupling constant ratio (<spanclass="arithmatex">\(m/t_2\)</span> from -6 to 6 with <spanclass="arithmatex">\(N\)</span> samples) and the phase (<spanclass="arithmatex">\(\phi\)</span> from -<spanclass="arithmatex">\(\pi\)</span> to <spanclass="arithmatex">\(\pi\)</span> with <spanclass="arithmatex">\(N\)</span> samples) values. Given the lattice spacing <spanclass="arithmatex">\(a\)</span>, the nearest-neighbor coupling constant <spanclass="arithmatex">\(t_1\)</span>, the next-nearest-neighbor coupling constant <spanclass="arithmatex">\(t_2\)</span>, the grid size <spanclass="arithmatex">\(\delta\)</span> for discretizing the Brillouin zone in the <spanclass="arithmatex">\(k_x\)</span> and <spanclass="arithmatex">\(k_y\)</span> directions (assuming the grid sizes are the same in both directions), and the number of sweeping grid points <spanclass="arithmatex">\(N\)</span> for <spanclass="arithmatex">\(m/t_2\)</span> and <spanclass="arithmatex">\(\phi\)</span>.</strong></p>
<p><strong>1.1 Write a Haldane model Hamiltonian on a hexagonal lattice, given the following parameters: wavevector components <spanclass="arithmatex">\(k_x\)</span> and <spanclass="arithmatex">\(k_y\)</span> (momentum) in the x and y directions, lattice spacing <spanclass="arithmatex">\(a\)</span>, nearest-neighbor coupling constant <spanclass="arithmatex">\(t_1\)</span>, next-nearest-neighbor coupling constant <spanclass="arithmatex">\(t_2\)</span>, phase <spanclass="arithmatex">\(\phi\)</span> for the next-nearest-neighbor hopping, and the on-site energy <spanclass="arithmatex">\(m\)</span>.</strong></p>
<strong>1.2 Calculate the Chern number using the Haldane Hamiltonian, given the grid size <spanclass="arithmatex">\(\delta\)</span> for discretizing the Brillouin zone in the <spanclass="arithmatex">\(k_x\)</span> and <spanclass="arithmatex">\(k_y\)</span> directions (assuming the grid sizes are the same in both directions), the lattice spacing <spanclass="arithmatex">\(a\)</span>, the nearest-neighbor coupling constant <spanclass="arithmatex">\(t_1\)</span>, the next-nearest-neighbor coupling constant <spanclass="arithmatex">\(t_2\)</span>, the phase <spanclass="arithmatex">\(\phi\)</span> for the next-nearest-neighbor hopping, and the on-site energy <spanclass="arithmatex">\(m\)</span>.</strong></p>
<p>Source: Fukui, Takahiro, Yasuhiro Hatsugai, and Hiroshi Suzuki. "Chern numbers in discretized Brillouin zone: efficient method of computing (spin) Hall conductances." Journal of the Physical Society of Japan 74.6 (2005): 1674-1677.</p>
750
-
<p>Here we can discretize the two-dimensional Brillouin zone into grids with step <spanclass="arithmatex">\(\delta {k_x} = \delta {k_y} = \delta\)</span>. If we define the U(1) gauge field on the links of the lattice as <spanclass="arithmatex">\(U_\mu (\mathbf{k}_l) := \frac{\left\langle n(\mathbf{k}_l)\middle|n(\mathbf{k}_l + \hat{\mu})\right\rangle}{\left|\left\langle n(\mathbf{k}_l)\middle|n(\mathbf{k}_l + \hat{\mu})\right\rangle\right|}\)</span>, where <spanclass="arithmatex">\(\left|n(\mathbf{k}_l)\right\rangle\)</span> is the eigenvector of Hamiltonian at <spanclass="arithmatex">\(\mathbf{k}_l\)</span>, <spanclass="arithmatex">\(\hat{\mu}\)</span> is a small displacement vector in the direction <spanclass="arithmatex">\(\mu\)</span> with magnitude <spanclass="arithmatex">\(\delta\)</span>, and <spanclass="arithmatex">\(\mathbf{k}_l\)</span> is one of the momentum space lattice points <spanclass="arithmatex">\(l\)</span>. The corresponding curvature (flux) becomes
and the Chern number of a band can be calculated as
755
-
$$
756
-
c = \frac{1}{2\pi i} \Sigma_l F</em>_l),
750
+
<p>Here we can discretize the two-dimensional Brillouin zone into grids with step <spanclass="arithmatex">\(\delta {k_x} = \delta {k_y} = \delta\)</span>. If we define the U(1) gauge field on the links of the lattice as <spanclass="arithmatex">\(U_\mu (\mathbf{k}_l) := \frac{\left\langle n(\mathbf{k}_l)\middle|n(\mathbf{k}_l + \hat{\mu})\right\rangle}{\left|\left\langle n(\mathbf{k}_l)\middle|n(\mathbf{k}_l + \hat{\mu})\right\rangle\right|}\)</span>, where <spanclass="arithmatex">\(\left|n(\mathbf{k}_l)\right\rangle\)</span> is the eigenvector of Hamiltonian at <spanclass="arithmatex">\(\mathbf{k}_l\)</span>, <spanclass="arithmatex">\(\hat{\mu}\)</span> is a small displacement vector in the direction <spanclass="arithmatex">\(\mu\)</span> with magnitude <spanclass="arithmatex">\(\delta\)</span>, and <spanclass="arithmatex">\(\mathbf{k}_l\)</span> is one of the momentum space lattice points <spanclass="arithmatex">\(l\)</span>. The corresponding curvature (flux) becomes</p>
<p>and the Chern number of a band can be calculated as</p>
755
+
<p>$$
756
+
c = \frac{1}{2\pi i} \Sigma_l F_{xy}(\mathbf{k}_l),
757
757
$$
758
-
where the summation is over all the lattice points }(\mathbf{k<spanclass="arithmatex">\(l\)</span>. Note that the Brillouin zone of a hexagonal lattice with spacing <spanclass="arithmatex">\(a\)</span> can be chosen as a rectangle with <spanclass="arithmatex">\(0 \le {k_x} \le k_{x0} = 2\sqrt 3 \pi /(3a),0 \le {k_y} \le k_{y0} = 4\pi /(3a)\)</span>.</p>
758
+
where the summation is over all the lattice points <spanclass="arithmatex">\(l\)</span>. Note that the Brillouin zone of a hexagonal lattice with spacing <spanclass="arithmatex">\(a\)</span> can be chosen as a rectangle with <spanclass="arithmatex">\(0 \le {k_x} \le k_{x0} = 2\sqrt 3 \pi /(3a),0 \le {k_y} \le k_{y0} = 4\pi /(3a)\)</span>.
<spanclass="sd"> The Chern number, a real number that should be close to an integer. The imaginary part is cropped out due to the negligible magnitude.</span>
780
780
<spanclass="sd"> """</span>
781
-
</code></pre></div>
781
+
</code></pre></div></p>
782
782
<divclass="highlight"><pre><span></span><code><spanclass="c1"># test case 1</span>
<p><strong>1.3 Make a 2D array of Chern numbers by sweeping the parameters: the on-site energy to next-nearest-neighbor coupling ratio (<spanclass="arithmatex">\(m/t_2\)</span> from -6 to 6 with <spanclass="arithmatex">\(N\)</span> samples) and phase (<spanclass="arithmatex">\(\phi\)</span> from -<spanclass="arithmatex">\(\pi\)</span> to <spanclass="arithmatex">\(\pi\)</span> with <spanclass="arithmatex">\(N\)</span> samples) values. Given the grid size <spanclass="arithmatex">\(\delta\)</span> for discretizing the Brillouin zone in the <spanclass="arithmatex">\(k_x\)</span> and <spanclass="arithmatex">\(k_y\)</span> directions (assuming the grid sizes are the same in both directions), the lattice spacing <spanclass="arithmatex">\(a\)</span>, the nearest-neighbor coupling constant <spanclass="arithmatex">\(t_1\)</span>, and the next-nearest-neighbor coupling constant <spanclass="arithmatex">\(t_2\)</span>.</strong></p>
809
+
<p><strong>1.3 Make a 2D array of Chern numbers by sweeping the parameters: the on-site energy to next-nearest-neighbor coupling ratio (<spanclass="arithmatex">\(m/t_2\)</span> from -6 to 6 with <spanclass="arithmatex">\(N\)</span> samples) and phase (<spanclass="arithmatex">\(\phi\)</span> from -<spanclass="arithmatex">\(\pi\)</span> to <spanclass="arithmatex">\(\pi\)</span> with <spanclass="arithmatex">\(N\)</span> samples) values. Given the grid size <spanclass="arithmatex">\(\delta\)</span> for discretizing the Brillouin zone in the <spanclass="arithmatex">\(k_x\)</span> and <spanclass="arithmatex">\(k_y\)</span> directions (assuming the grid sizes are the same in both directions), the lattice spacing <spanclass="arithmatex">\(a\)</span>, the nearest-neighbor coupling constant <spanclass="arithmatex">\(t_1\)</span>, and the next-nearest-neighbor coupling constant <spanclass="arithmatex">\(t_2\)</span>.</strong>
<spanclass="sd"> Function to calculate the Chern numbers by sweeping the given set of parameters and returns the results along with the corresponding swept next-nearest-neighbor coupling constant and phase.</span>
<spanclass="sd"> phi_values: array of length N</span>
832
832
<spanclass="sd"> The swept phase values.</span>
833
833
<spanclass="sd"> """</span>
834
-
</code></pre></div>
834
+
</code></pre></div></p>
835
835
<h2id="domain-specific-test-cases">Domain Specific Test Cases</h2>
836
836
<p><strong>Both the <spanclass="arithmatex">\(k\)</span>-space and sweeping grid sizes are set to very rough values to make the computation faster, feel free to increase them for higher accuracy.</strong></p>
837
837
<p><strong>At zero on-site energy, the Chern number is 1 for <spanclass="arithmatex">\(\phi > 0\)</span>, and the Chern number is -1 for <spanclass="arithmatex">\(\phi < 0\)</span>.</strong></p>
838
838
<p><strong>For complementary plots, we can see that these phase diagrams are similar to the one in the original paper: Fig.2 in <ahref="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.61.2015">Haldane, F. D. M. (1988)</a>. To achieve a better match, decrease all grid sizes.</strong></p>
839
839
<p><strong>Compare the following three test cases. We can find that the phase diagram is independent of the value of <spanclass="arithmatex">\(t_1\)</span>, and the ratio of <spanclass="arithmatex">\(t_2/t_1\)</span>, which is consistent with our expectations.</strong></p>
840
-
<divclass="highlight"><pre><span></span><code><spanclass="c1"># Test Case 1</span>
840
+
<p><divclass="highlight"><pre><span></span><code><spanclass="c1"># Test Case 1</span>
0 commit comments