As I mentioned in the previous post, I already have a project on KKR on GitHub1. I won’t add here a lot of description, I’ll point you some references instead. Usually I also try to add links to some other projects that are small enough to be comprehensible in a reasonable time, this time I couldn’t find one, although I searched for one on GitHub and with google. Please let me know if you find another one.
Program in action
Here is a movie with the program running:
Links to Wikipedia
Here is one with a short description of the Korringa–Kohn–Rostoker method. Another one worth looking into is Multiple scattering theory.
As for the previous post, a book that treats the subject is Electronic Structure, Basic Theory and Practical Methods by Richard M Martin2. KKR and MTO and other related subjects are in chapter XVI, LMTO and related subjects are in chapter XVII. I don’t have another one that deals with the subjects, so it’s the only book reference I give here.
The first one is ON THE CALCULATION OF THE ENERGY OF A BLOCH WAVE IN A METAL by J Korringa3. The second one is Solution of the Schrodinger Equation in Periodic Lattices with an Application to Metallic Lithium by W. Kohn and N. Rostoker4.
Here is one that also covers the Ewald summation: Energy Bands in Periodic Lattices—Green’s Function Method by F. S. Ham and B. Segall5.
Here is another one: Algorithms for Korringa-Kohn-Rostoker electronic structure calculations in any Bravais lattice by E. Bruno and B. Ginatempo6.
If you want to look further into MTO and LMTO, here are two worth looking into:
One about MTO: Muffin-tin orbitals and molecular calculations: General formalism by O.K. Andersen and R. G. Woolley7.
One about LMTO (and LAPW): Linear methods in band theory by O. Krogh Andersen8.
Some lecture notes translated from German from TU Graz Institute of Theoretical and Computational Physics: Chap 169.
Another pdf: The Korringa-Kohn-Rostoker (KKR) Green Function Method by Phivos Mavropoulos and Nikos Papanikolaou10.
Again, the code is here, on GitHub1.
It’s worth looking into other projects in order to understand this one, the other three ones that deal with electronic band structure, for example, especially the previous one that deals with APW/LAPW. The Muffin Tin Approximation that is described and used there is relevant for this project, too. I won’t give links here, they are easily accessible from the side bar.
Another project worth looking into is DFTAtom, especially if you would want to implement a LMTO full potential project. Another one is the Scattering one, I modified
Scattering::PhaseShift there just to have a match with this project in the computation of the phase shift.
Most of the interesting classes for the project are in the
KKR namespace, the essential places to look into are the
BandStructure::Compute function and the
Lambda class implementation. Most of the others are similar with those from the APW project, except the
Coefficients class which computes the Gaunt coefficients (using Wigner3j/Clebsch Gordan) and caches them (they are computed only once before doing the calculations).
As an observation, just in case somebody notices, there are small differences in the results of the KKR program and the APW program, especially at high energy (where big L matter more). The reason is that I used a small max L in the KKR program, 2 (maximum that would be needed is 4). With 3 the results are already very good (you can change that in the program to verify, it’s
BandStructure::Compute). The reason I didn’t set it to 3 is that it’s a little faster with 2 and because I implemented and tested it with 2, singularities avoidance is better for that value. It kind of works for 3, too, but not that well.
For the user interface, I used wxWidgets11. For the chart, I used VTK12 and for the matrix stuff, I used as usually for the projects for this blog, Eigen13.
I would like to add to the project MTO and LMTO and perhaps using the later to implement a ‘full potential’ computation, but I’ll take a break from electronic band structure computations for a while, since I already have four open source projects on GitHub on the subject. Maybe I’ll implement those some other time when I’ll have more free time and motivation.
As usual, if you find any bugs or have suggestions, please contact me, either here or on GitHub.
- KKR The project on GitHub ↩ ↩
- Electronic Structure, Basic Theory and Practical Methods by Richard M Martin ↩
- ON THE CALCULATION OF THE ENERGY OF A BLOCH WAVE IN A METAL by J Korringa ↩
- Solution of the Schrodinger Equation in Periodic Lattices with an Application to Metallic Lithium by W. Kohn and N. Rostoker ↩
- Energy Bands in Periodic Lattices—Green’s Function Method by F. S. Ham and B. Segall ↩
- Algorithms for Korringa-Kohn-Rostoker electronic structure calculations in any Bravais lattice by E. Bruno and B. Ginatempo ↩
- Muffin-tin orbitals and molecular calculations: General formalism by O.K. Andersen and R. G. Woolley ↩
- Linear methods in band theory by O. Krogh Andersen ↩
- Chap 16 Lecture notes translated from German from TU Graz Institute of Theoretical and Computational Physics ↩
- The Korringa-Kohn-Rostoker (KKR) Green Function Method by Phivos Mavropoulos and Nikos Papanikolaou ↩
- wxWidgets Cross-platform GUI library ↩
- VTK, The Visualization Toolkit The scientific (and not only) visualization library ↩
- Eigen The matrix library ↩