Accessling LDA Codes on OSC

From the desk of Wilfried Aulbur

The LDA calculations are based on a program written by Doug Allan and Zachary Levine which has been modified by me. The way to get the LDA band structure is as follows:

  1. Get LDA ground state density using plane_wave. Look in /b/osu1216/Si/LDA_GS for how that is done. Consider the file si10k07h.job. This is a job file that copies input files into a temp-directory and runs a version of Doug's code plane_wave. A description of plane_wave can be found on pacific in aulbur/GW/srcdoug/plane_wave.help. You should be able to access all these files, but I will double check.

  2. Once you have the ground state charge density si10k07h.rho.950131 (you can choose a more appropriate name, I just stick with the job file so that identification is easier for you) you will have to create the EG-files, i.e., files that contain the energy eigen- values and eigenfunctions. To find out how to do that look in /b/osu1216/Si/EG_EPS (means EG-files for the dielectric constant epsilon). The job file si10k07h.job again provides you a template on how to run my modification of Zachary's code to get the EG-files. Use $HOME/gwtry/myopt.940801/optvm.x instead of $HOME/gwtry/myopt.950124/optvm.x. The later version is needed for pseudopotentials with l=3 and is not completely debugged yet.
Once you're done with the creation of the EG-files you probably should send me another e-mail and I will tell you how to move on from there. As you can see, all these calculations are preparations for the calculation of the dielectric constant, you haven't even started to calculate that charmer yet.

As for the input, later for the calculation of epsilon and sigma there is one input file that will be relatively easy to understand once you know about the input file to plane_wave. The latter is extensively described in plane_wave.help. Feel free to ask me though if you have any questions. Don't worry about the makefile, whatever Sven will tell you is probably more than you will need. Think of it as a convenient tool, a script file that excecutes an array of tasks that you would have to type in otherwise.

le fil rouge

Input needed for epsilon: EG-files and charge density in G-space. Input needed for sigma: different EG-files and plasmon pole band structure.

Hence: plane_wave => ground state charge density
       optvm.x    => EG-files, exchange-correlation energy (comes later into
                     the picture)
       readrh.x   => transforms ground state charge density from real to
                    reciprocal space
       eps.c      => plasmon pole bandstructure
       sigma.c    => self-energy corrected LDA band structure.

The whole approach is somewhat fragmented due to the fact that
  1. We don't have the LDA source code for plane_wave, so I preferred not to use it's subroutines as a black box (hard to maintain, very unflexible).
  2. The GW code is written in C++, so instead of trying to glue things that don't quite fit together, I decided to keep them apart.
As for what you should read/not read: In principle you have to understand optvm.f, readrh.f, eps.c, sigma.c and all the subroutines, otherwise you won't be able to master the code and make significant improvements which all of us want you to do. Also, catching bugs is much easier if you are in control. I would start out reading optvm.f and find out which subroutines are called, where and sometimes (if we have the source code) how potentials and pseudopotentials are set up, combined to a Hamiltonian and then solved. You should find out how potentials are stored on a real space grid and in reciprocal space, etc. This gives you a hands-on experience for LDA rather than a theoretical knowledge resulting from reading papers (that's not bad, but it's a good thing to see how things go in the "real" world). Once that is done, you can move on to eps.c.

I know it sounds a little brutal but I did the same thing, I read the whole code and made notes as to which section does what. I have these notes over here (at least I think so). I will bring them along next time I visit Columbus (I will leave them on your desk since you won't be in during that time anyway, :-)). When I started out, Zachary told me basically to treat his code as a black box. Although his code was in much better shape then my code currently is, I still found out the hard way, that this is not a good way to approach the problem.


Your comments and suggestions are appreciated.
[Previous] [Wilkins Home Page]
[OSU Physics] [OSU Chemical Physics] [Center for Materials Research]
[College of Mathematical & Physical Sciences] [Ohio State University]
Edited by: wilkins@mps.ohio-state.edu [August1997]