@copilot
This one is ambitious so take your time
The goal is to implement the computation of green functions as described in https://hal.science/hal-03611185/document. The algorithm goes as follows:
Input parameters : alpha, deltaE, N, y (assumed to be in the home unit cell)
Output: G(x,y;E) for all x in a given range.
- Use a normal DFTK setup with a monkhorst pack grid with N points per dimension.
- Compute the first few eigenfunctions.
- Compute
h = -alpha sum_n grad lambda_nk chi(lambda_nk-E) where chi(x)=exp(-x^2/deltaE^2)
- Compute nabla h and nabla^2 h. For nabla h, use the Hellman-Feynmann theorem. For nabla^2 h, use finite differences (mind the periodicity)
- Build a new basis with complex kpoints given by k + im h(k), where k belongs to the previous monkhorst pack grid
- With these new kpoints, solve (E-H_(k+im h(k)) u_(k+im h(k)) (x)= P delta_y(x), where P delta_y is the periodized delta function centered at y, using an iterative solver (it's non hermitian so GMRES is appropriate; you can eg use the one in krylovkit)
- Assemble G(x) = (properly normalized) sum_kpoints det(1+im nabla h(k)) e^im(k+im h(k))x u_(k+im h(k))(x)
Test in a 1D case.
You will probably need to extend the Kpoints structure to accept complex numbers.
Do not use symmetry (turn it off explicitly). Test your work. Do not use plots. This is research code, so prioritize concision over extensive docs, and readability over optimizations. Use the style used in the other files in this repo.
@copilot
This one is ambitious so take your time
The goal is to implement the computation of green functions as described in https://hal.science/hal-03611185/document. The algorithm goes as follows:
Input parameters : alpha, deltaE, N, y (assumed to be in the home unit cell)
Output: G(x,y;E) for all x in a given range.
h = -alpha sum_n grad lambda_nk chi(lambda_nk-E)where chi(x)=exp(-x^2/deltaE^2)Test in a 1D case.
You will probably need to extend the Kpoints structure to accept complex numbers.
Do not use symmetry (turn it off explicitly). Test your work. Do not use plots. This is research code, so prioritize concision over extensive docs, and readability over optimizations. Use the style used in the other files in this repo.