• Empirical Pseudopotential Method: Obtaining charge density from eigenve

    From Adam Hirst@21:1/5 to All on Fri Nov 4 16:07:59 2016
    Dear all,

    I'm not sure how active this group is (indeed, the last non-spam post
    seems to be a good couple of years ago), but if I don't get a response
    by Christmas (this issue isn't urgent) I think I'll just post the
    question again to another newsgroup.

    I'm in the process of trying to get back into using Usenet, and am
    testing the waters of a couple of groups relevant to me with some
    questions pertaining to loose threads from my past. So here we go:

    ---

    A few years ago, I wrote a simple Fortran 2003 code to compute
    bandstructures using the empirical pseudopotential method, and which
    also has basic capabilities to also compute the density of states. It
    was just a bit of fun, done in my free time between my Masters and my
    PhD, but I was thinking about it the other day and decided to dig up my
    old notes and see what was left to implement.

    The algorithm of course constructs the matrix equation

    H \psi = E \psi

    where H depends on the wavevectors k, lattice vectors G, and
    pseudopotentials, and solves for its eigenvalues and eigenvectors, the eigenvalues being the values of the energy bands at each k, plot-able as
    a bandstructure if k is varied along the high symmetry directions.

    The density of states is evaluated by computing the eigenvalues for a
    set of 'special' (symmetry reduced inside the Brillouin Zone) k-points (weighted according to their symmetry), and then gaussian smearing to
    convert the discrete values into an approximate co
  • From Adam Hirst@21:1/5 to Adam Hirst on Fri Nov 4 16:08:41 2016
    On 04/11/16 16:07, Adam Hirst wrote:
    A few years ago, I wrote a simple Fortran 2003 code to compute
    bandstructures using the empirical pseudopotential method, and which
    also has basic capabilities to also compute the density of states. It
    was just a bit of fun, done in my free time between my Masters and my
    PhD, but I was thinking about it the other day and decided to dig up my
    old notes and see what was left to implement.

    Ah, I forgot to post the link:

    https://github.com/aphirst/BandFTN

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adam Hirst@21:1/5 to Adam Hirst on Fri Nov 4 17:08:55 2016
    On 04/11/16 16:07, Adam Hirst wrote:
    The algorithm of course constructs the matrix equation

    H \psi = E \psi

    where H depends on the wavevectors k, lattice vectors G, and pseudopotentials, and solves for its eigenvalues and eigenvectors, the eigenvalues being the values of the energy bands at each k, plot-able as
    a bandstructure if k is varied along the high symmetry directions.

    Another correction: the matrix equation solved for seems to not use the
    vector \psi, but rather the vector A made up of the coefficients a_{g'},
    each of which is part of a plane-wave expansion term from

    \psi_k(r) = e^{i k.r} u_k(r)

    where

    u_k(r) = \sum_{g'} a_{g'}(k) e^{i g'.r}

    and thus

    \psi_k(r) = \sum_{g'} a_{g'}(k) e^{i(k+g').r}

    g seems to refer to the vectors used for the potential expansion
    (vertical of the H matrix), and g' for the wavefunction expansion
    (horizontal of the H matrix).

    The A vector appears essentially to be \psi with the plane wave
    components factored out.

    Each eigenvector will thus be a list of coefficients which can
    presumably be combined with the corresponding plane waves (the g' being
    in whatever order I coded them to be, which should be in increasing
    magnitude), the combination of which ought to be the \psi, but I remain ignorant of how one is meant to then convert this into a function of r
    (i.e. of 3D space)...

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)