Top Page > Browsing
H and S at specific Kpoint
Date: 2022/04/14 21:36
Name: Wei Li   <>

Dear Developers:

I would like to print H and S at specific K. Thanks Naoya for guiding me extract the needed infos
For H and S at K other than Gamma, one needs to multiply e^ikr.

1. Has it (multiply e^ikr) already been done in scfout file, or not? If not, then one needs to multiply the factor manually if k is not gamma after reading the H and S from HS.out.

2. HS.out doesn't contain the H and S for each Kpoint (in case there are many K in calculations), so the H and S are simply the sum over different K, or not?

3. If one want to multiply e^ikr manually given a kpoint in fractional coordinate of [0,0,0.5], so which unit for the kpoint should be used?
The outputs in openmx are in Hartree unit.

Best regards,

Page: [1]

Re: H and S at specific Kpoint ( No.1 )
Date: 2022/04/19 17:43
Name: Kunihiro Yananose  <>

Dear wei,

1. It has not been done. You should do this by yourself.

2. The scfout file does not need to contain H(k) and S(k) at each k point.
Because in the tight-binding formalism, once you get the H and S components defined by each basis orbital, you can construct the H(k) and S(k) at arbitrary k.
Even at the k point which was not included in the scf k-grid, you can construct H(k) and S(k).
The matrices H(k) and S(k) are defined at each k-point. But the matrix components H_{(i\alpha\sigma)(j/beta/sigma')}(R) and S_{(i\alpha)(j/beta)}(R) are independent of k,
where i and j are atom indices, \alpha and \beta are orbital indices, \sigma and \sigma' are spin indices, and R is lattice vectors.
What scfout file contains are these k-independent components of H(R) and S(R).
The k-grid in scf determines the electron density, which determines the Hamiltonian in the DFT formalism. The Hamiltonian is written in the form of H(R) components in openmx.
By multiplying exp(ikR) to those components and summing them, you can get each H(k) and S(k). Please, carefully check the tight-binding theory.

3. In scfout file, the unit of the reciprocal lattice vector is 1/Bohr.
Let's say the reciprocal lattice vectors are g1,g2, and g3.
The variable rtv in the read_scfout.c code is the the reciprocal lattice vectors written in 1/Bohr.
g1 = (rtv[1][1],rtv[1][2],rtv[1][3])
g2 = (rtv[2][1],rtv[2][2],rtv[2][3])
g3 = (rtv[3][1],rtv[3][2],rtv[3][3])
Then the fractional coordinate (0,0,0.5) corresponds to 0.5*g3

Re: H and S at specific Kpoint ( No.2 )
Date: 2022/04/20 21:05
Name: Wei Li  <>

Dear K.Yananose,

thank you very much for your reply. It really helps me a lot.



Page: [1]

Thread Title (must) Move the thread to the top
Your Name (must)
E-Mail (must)
Password (used in modification of the submitted text)
Comment (must)

   Save Cookie