# What is the correct way to perform numerical integration over Brillouin zone?

Let us have an integral $$I$$ over the first Brillouin zone (BZ) of a 2D lattice. $$I = \int\int \Omega(k_x,k_y) dk_x dk_y$$ where $$\Omega(k_x,k_y)$$ is some function (let's say it's Berry curvature). what is the correct numerical approximation of this integral? I thought Riemann sums would work i.e. $$I \approx \sum_{k_x = k_{x_1}}^{k_{x_2}}\sum_{k_y = k_{y_1}}^{k_{y_2}} \Omega(k_x,k_y)\Delta k_x\Delta k_y$$ where $$\Delta k_x = (k_{x_2}-k_{x_1})/N_x$$ and $$N_x\to\infty$$, and $$k_{i_j}$$ are the limits of BZ. When using this approximation, I calculated a transportation coefficient, the result was not correct. I even increase the $$N_x (and\: N_y)$$ but the result does not improve. The article that I am trying to replicate says that they used Gaussian meshes with 2500 points.

My question is, how do people generally perform numerical integration over BZ? What are Gaussian meshes? What is a proper way for k points sampling? Is the Riemann approximation that I am using the correct way for BZ integration? Are there other approximations for this kind of integration?

• What's the article and how is it? Nov 2, 2020 at 21:57
• what kind of 2d lattice - square, honeycomb, kagome - meshing depends on the lattice? Nov 2, 2020 at 21:59
• Is it a Berry curvature obtained through numerical diagonalization, or some unrelated function? It can matter. Nov 3, 2020 at 1:24
• Not pretty sure what's Gaussian mesh, but if you integrate Berry curvature over BZ, it's better to have a reasonably fine mesh, and treat the edge of the BZ carefully. If your band is topological(i.e. if you expect your integral is nonzero), it's very likely that most contribution will be from the edge of BZ. Also, make sure your wavefunction is properly defined. If you are trying to replicate nonzero value of Berry curvature integration, there must be a singularity point inside your BZ. Check if you treat wavefunction around that point properly. Nov 4, 2020 at 0:43