Lead self-energy in Green Function method
Dear Sir/Madam, Hello, I am interested in Green Function, so I read related Kwant codes (kwant.solver.greens_function, make_linear_system, solve_linear_system, etc.). I found a lot of optimizations in Kwant, such as LU Decomposition and Matrix Partition, which make Kwant more efficient. To calculate Green Function, we need to calculate the self-energy of leads. Though I know how to get self-energy by using command "lead.selfenergy(energy)". I want to know how this command works, the codes in "leads.py" are too diffcult to me. Sincerely, Hu Yongliang
Dear Hu Yongliang,
Hello, I am interested in Green Function, so I read related Kwant codes (kwant.solver.greens_function, make_linear_system, solve_linear_system, etc.). I found a lot of optimizations in Kwant, such as LU Decomposition and Matrix Partition, which make Kwant more efficient. To calculate Green Function, we need to calculate the self-energy of leads. Though I know how to get self-energy by using command "lead.selfenergy(energy)". I want to know how this command works, the codes in "leads.py" are too diffcult to me.
The inverse of the left-hand side matrix produced by make_linear_system in Kwant is the Green's function, i.e. it already includes the relevant self-energy. However computing the complete Green's function is extremely inefficient. Can you please be more specific: do you perhaps need only some matrix elements of the Green's function? What observable is your final goal? Best, Anton
Sincerely,
Hu Yongliang
Dear Mr. Akhmerov and Kwant-team, Thank you for your email. I have learned how to calculate Green Function through reading Kwant codes(/Kwant/solvers/commom.py), and I have learned basic principles of Green Function method before. As I want to write a program all by myself to calculate transmission of a simple 2-D system of electrons and phonons by using the Green Function method, I need to know the procedures to get every element in the lhs(left-hand-side of (H + Sigma_L + Sigma_R - e) G = - I ). It is easy to get the Hamiltonian of the central region and the excitation energy matrix. Yet I don't know the detailed procedures to calculate lead self-energy in Kwant. Summary: 1. To sharpen my Python skills and increase Physics comprehension, I want to write a program to calculate Green Function all by myself. 2. Exactly speaking, I know how to calculate the lead self-energy by iteration [1]. However, my code is slow and not stable. So I want to know the calculation procedures of lead self-energy in Kwant. [1] M P Lopez Sancho, J M Lopez Sancho, J M L Sancho, and J Rubio. Highly convergent schemes for the calculation of bulk and surface green functions. J. Phys. F: Metal Physics, 15(4):851–858, 1985. Sincerely, Hu Yongliang ________________________________ 发件人: anton.akhmerov@gmail.com <anton.akhmerov@gmail.com> 代表 Anton Akhmerov <anton.akhmerov+kd@gmail.com> 发送时间: 2017年4月9日 22:58 收件人: 胡 勇亮 抄送: kwant-discuss@kwant-project.org 主题: Re: [Kwant] Lead self-energy in Green Function method Dear Hu Yongliang,
Hello, I am interested in Green Function, so I read related Kwant codes (kwant.solver.greens_function, make_linear_system, solve_linear_system, etc.). I found a lot of optimizations in Kwant, such as LU Decomposition and Matrix Partition, which make Kwant more efficient. To calculate Green Function, we need to calculate the self-energy of leads. Though I know how to get self-energy by using command "lead.selfenergy(energy)". I want to know how this command works, the codes in "leads.py" are too diffcult to me.
The inverse of the left-hand side matrix produced by make_linear_system in Kwant is the Green's function, i.e. it already includes the relevant self-energy. However computing the complete Green's function is extremely inefficient. Can you please be more specific: do you perhaps need only some matrix elements of the Green's function? What observable is your final goal? Best, Anton
Sincerely,
Hu Yongliang
Dear Hu, The article you are mentioning is discussing the recursive algorithm for the calculation of the Green's function. Using this method to obtain the self energy may be unstable because it is difficult to choose the correct small imaginary part (i*epsilon) to start with. If your goal is just to use the self energy in a correct way I suggest for you to see this very instructive example by Joseph [1]. If you want to know the exact and general solution of the fixed point method (the solution giving the self energy from the recursive algorithm) I suggest for you this very good paper [2]. You can also find a different (and very simple method) in this paper [3]. For the numerical subtilities, I suggest for you to have a look at Wimmer's thesis (chapter: Lead Green's function ) which is very interesting to attack the stability problem. [4] I hope that this helps. Adel [1] https://mailman-mail5.webfaction.com/pipermail/kwant-discuss/2015-May/000350... [2] Exact solution for the resolvent matrix of a generalized tridiagonal Hamiltonian, PRB 20, 4237 [3] J. Phys. Soc. Jpn 77, 025003 (2008) [4] https://epub.uni-regensburg.de/12142/ On Mon, Apr 10, 2017 at 3:51 AM, 胡 勇亮 <hukismet@outlook.com> wrote:
Dear Mr. Akhmerov and Kwant-team,
Thank you for your email.
I have learned how to calculate Green Function through reading Kwant codes(/Kwant/solvers/commom.py), and I have learned basic principles of Green Function method before. As I want to write a program all by myself to calculate transmission of a simple 2-D system of electrons and phonons by using the Green Function method, I need to know the procedures to get every element in the lhs(left-hand-side of (H + Sigma_L + Sigma_R - e) G = - I ).
It is easy to get the Hamiltonian of the central region and the excitation energy matrix. Yet I don't know the detailed procedures to calculate lead self-energy in Kwant.
Summary:
1. To sharpen my Python skills and increase Physics comprehension, I want to write a program to calculate Green Function all by myself.
2. Exactly speaking, I know how to calculate the lead self-energy by iteration *[1]*. However, my code is slow and not stable. So I want to know the calculation procedures of lead self-energy in Kwant.
[1] M P Lopez Sancho, J M Lopez Sancho, J M L Sancho, and J Rubio. Highly convergent schemes for the calculation of bulk and surface green functions. J. Phys. F: Metal Physics, 15(4):851–858, 1985.
Sincerely,
Hu Yongliang
------------------------------ *发件人:* anton.akhmerov@gmail.com <anton.akhmerov@gmail.com> 代表 Anton Akhmerov <anton.akhmerov+kd@gmail.com> *发送时间:* 2017年4月9日 22:58 *收件人:* 胡 勇亮 *抄送:* kwant-discuss@kwant-project.org *主题:* Re: [Kwant] Lead self-energy in Green Function method
Dear Hu Yongliang,
Hello, I am interested in Green Function, so I read related Kwant codes (kwant.solver.greens_function, make_linear_system, solve_linear_system, etc.). I found a lot of optimizations in Kwant, such as LU Decomposition and Matrix Partition, which make Kwant more efficient. To calculate Green Function, we need to calculate the self-energy of leads. Though I know how to get self-energy by using command "lead.selfenergy(energy)". I want to know how this command works, the codes in "leads.py" are too diffcult to me.
The inverse of the left-hand side matrix produced by make_linear_system in Kwant is the Green's function, i.e. it already includes the relevant self-energy. However computing the complete Green's function is extremely inefficient. Can you please be more specific: do you perhaps need only some matrix elements of the Green's function? What observable is your final goal?
Best, Anton
Sincerely,
Hu Yongliang
-- Abbout Adel
participants (3)
-
Abbout Adel
-
Anton Akhmerov
-
胡 勇亮