Currently I'm using some software package to do the data analysis from the DFT calculation so that I can study the surface state of some topological insulator. I found that the method they use is called surface green function method. After obtaining the tight binding matrix of the system, in principle we can use it to do the surface state calculation to produce the ARPES result. I want to know the algorithm of this, but I can only find limited resource on internet. Is there any recommended source on this topic ?


2 Answers 2


The surface Green's function method is described in detail here, but here is a summary.

Principal Layers: Block Tridiagonal Form

We consider a semi-infinite system (a surface with an infinite bulk below it) and we split it into so-called principal layers. A principal layer is a collection of atomic layers such that each principal layer only interacts with nearest neighboring principal layers. The point of this being, the Hamiltonian takes the block tridiagonal form:

$$ \tag{1}H = \begin{pmatrix} H_{00} & V & & & & & \\ V^\dagger & H_{11} & V & & & & \\ & V^\dagger & H_{22} & V & & \\ & & V^\dagger & \ddots \end{pmatrix} $$ where $V$ describes the interaction between principal layers, $H_{00}$ describes interactions within the surface principal layer, and $H_{11}=H_{22}=H_{33}=\dots$ describes interactions within bulk principal layers. For simplicity I have assumed all bulk principal layers are identical and all $V$'s are the same (valid for a perfect crystal).

Surface Green's Function + Recursion Relations

With this block form of $H$ in mind, we now turn to the Green's function / resolvent defined by $$ G(\omega) = (\omega - H)^{-1} $$ And in particular, we look at the top-left element $G_{00}(\omega) = (\omega - H)^{-1}_{00}$. This defines the surface Green's function and it contains the spectral information about the surface. To calculate it, we will take advantage of the block tridiagonal form of $H$ to derive recursion relations. By definition of $G(\omega)$, we have \begin{align*} (\omega - H) G(\omega) &= 1 \tag{2}\\ \sum_k(\omega \delta_{ik} - H_{ik}) G_{kj}&= \delta_{ij} \tag{3}\\ \end{align*} This is the central equation we will use. From it, we can use the form of $H$ to extract the following two equations:

\begin{align} \left( \omega - H_{00} \right)G_{00} &= 1 + V G_{10} \tag{4}\\ \left( \omega - H_{nn} \right)G_{n0} &= V^\dagger G_{n-1,0} + V G_{n+1,0}\tag{5} \end{align}

The Algorithm

We can now use the above two equations to derive an iterative scheme for arriving at $G_{00}$. Use the second equation for $G_{10}$ and plug it into the first. Also use the second equation on itself for $G_{n-1,0}$ and $G_{n+1,0}$ on the right. Group terms so that we can write the renormalized equations

\begin{align} \left( \omega - \varepsilon^S_1 \right)G_{00} &= 1 + \alpha_1 G_{20} \tag{6}\\ \left( \omega - \varepsilon_1 \right)G_{n0} &= \beta_1 G_{n-2,0} + \alpha_1G_{n+2,0}\tag{7} \end{align} where we have grouped factors into the new blocks $\alpha_1, \beta_1, \varepsilon_1, $ and $\varepsilon^S_1$. Now repeat. Use the new second equation to plug in to the first new equation along with its own RHS. Continuing this way, after $m$ iterations, we have

\begin{align} \left( \omega - \varepsilon^S_m \right)G_{00} &= 1 + \alpha_m G_{2^m0} \tag{8}\\ \left( \omega - \varepsilon_m \right)G_{n0} &= \beta_m G_{n-2^m,0} + \alpha_mG_{n+2^m,0}\tag{9} \end{align} where at each iteration we obtain new renormalized parameters $\alpha,\beta,\varepsilon$, and $\varepsilon^S$. Eventually, $\alpha$ becomes very small so that the first equation becomes $$ \left( \omega - \varepsilon^S_m \right)G_{00} \approx 1 \tag{10}$$ and so we obtain the surface Green's function as $G_{00}(\omega) = (\omega - \varepsilon^S_m)^{-1}$ Then the spectral function gives us the surface state spectrum as $$ \rho_{00}(\omega) = -\frac{1}{\pi}\text{tr}\Im G_{00}(\omega + i0^+) \tag{11}.$$

  • 2
    $\begingroup$ +1. Great first answer and welcome to our community!! How did you find us? Thanks for your contributions and we hope to see much more of you here in the future !!! I've just added the equation numbers which are important even if you're not referring to them, because we want others to be able to refer to them in their answers if necessary. $\endgroup$ Commented Jan 13, 2021 at 20:38
  • 2
    $\begingroup$ Thanks, I agree the equation numbers are a good edit. I found Matter Modeling just through some google results a while back. Glad to be here! $\endgroup$
    – jgw
    Commented Jan 13, 2021 at 21:47
  • $\begingroup$ @jgw, how do we know that $\alpha$ is small since it is a function of $\omega$ $\endgroup$
    – MMA13
    Commented Feb 1 at 14:34
  • $\begingroup$ @MMA13 Physically, $\alpha_m$ can be interpreted as the renormalized coupling between the surface and the layer that is $2^m$ layers deep into the bulk. As along as interactions are local, distant layers are expected to be non-interacting. Hence $\alpha_m$ should approach 0 $\endgroup$
    – jgw
    Commented Feb 2 at 3:12

You can see the open-source package WannierTools: https://github.com/quanshengwu/wannier_tools

  • A brief description:

We present an open-source software package WannierTools, a software for the investigation of novel topological materials. This code works in the tight-binding framework, which can be generated by another software package Wannier90. It can help to classify the topological phase of a given material by calculating the Wilson loop and can get the surface state spectrum which is detected by angle-resolved photoemission (ARPES) and in scanning tunneling microscopy (STM) experiments. It also identifies positions of Weyl/Dirac points and nodal line structures, calculates the Berry phase around a closed momentum loop and Berry curvature in a part of the Brillouin zone(BZ). Besides, WannierTools also can calculate ordinary magnetoresistance for non-magnetic metal and semimetal using Boltzmann transport theory, calculate Landau level spectrum with given magnetic field direction and strength and get unfolded energy spectrum from a supercell calculation.

  • $\begingroup$ Thank for your answer. I’m also using this software package to obtain the result. But I want to write the code by myself to understand how it works. $\endgroup$
    – JensenPang
    Commented Jan 12, 2021 at 9:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .