deepmodeling / abacus-develop

An electronic structure package based on either plane wave basis or numerical atomic orbitals.
http://abacus.ustc.edu.cn
GNU Lesser General Public License v3.0
171 stars 130 forks source link

Downsampling the k points in K_Vectors, required in the planewave hybrid functional calculation #4155

Open Flying-dragon-boxing opened 5 months ago

Flying-dragon-boxing commented 5 months ago

Background

For a k point, get downsampled q points: $\mathbf{q_k} = \mathbf{k} + \mathbf{b}_1 \dfrac{m_1 C_1}{N_1} + \mathbf{b}_2 \dfrac{m_2 C_2}{N_2} + \mathbf{b}_3 \dfrac{m_3 C_3}{N_3}, (m_i = 0, \cdots, N_i/C_i - 1)$ ($\mathbf{b}_i$ are the reciprocal lattice vectors of the primitive cell, and $C_i$ is the integer grid reduction factor along reciprocal lattice direction $\mathbf{b}_i$)

Reference: https://www.vasp.at/wiki/index.php/Downsampling_of_the_Hartree-Fock_operator https://doi.org/10.1063/1.2187006

Describe the solution you'd like

Task list only for developers

Notice Possible Changes of Behavior (Reminder only for developers)

No response

Notice any changes of core modules (Reminder only for developers)

No response

Notice Possible Changes of Core Modules (Reminder only for developers)

No response

Additional Context

I don't really understand much about the M-P sampling and the Gamma Centered sampling process, and I'm curious if the q points got from this method is an exact subset of the k points set. If so, we can use a index iq for one q point, and we can easily get the planewaves on q point iq. If Interpolation is required, the downsampling seems to be not efficient. I think there is no need to support such downsampling for a manually set k point list. (And this may be hard! )

Task list for Issue attackers (only for developers)

Flying-dragon-boxing commented 1 week ago

Actually, for band structure calculation with hybrid functionals, two sets of kpts are used. This may fit in the K_Vectors well.

Flying-dragon-boxing commented 1 week ago

@mohanchen This won't be a quick fix and is not needed in current codes. We may close this issue for now and re-open it when necessary.