abacusmodeling / abacus-develop

An electronic structure package based on either plane wave basis or numerical atomic orbitals.
GNU Lesser General Public License v3.0
154 stars 154 forks source link

Questions about the plane wave base #320

Open yang2022i opened 3 months ago

yang2022i commented 3 months ago

—————————————————————————————— Three methods are provided for the distribution of reciprocal space plane waves method1: Distribute according to the size of sticks. method2: Distribute directly in order method3: Based on method1, it handles the distribution of dense grids (in file pw_basis_sup.cpp).

We have the following questions Q1.What is the meaning of dense grid in method3? Is it the points outside the boundary of method1 or some extra points? Q2.Why does method2 not need to consider negative indexing?

———————————————————————————————— There are also some places where the code seems to be the same

Q3: The distribute_r() function exists for both PW_Basis_Big and PW_Basis, the difference is only a few extra arguments. What does “big” mean here? Does it mean the search range is expanded or there are more points? Q4:The difference between pw_transform_k.cpp and pw_transform.cpp is that there is only one more support for wavevector k. Can we just take k = 0 in the formula exp i(k+G)r? That way only one copy of the code has to be written. The other one would just take k = 0 when called.

————————————————————————————

在倒空间平面波的分发时,提供了三种方法 method1:按照sticks大小分发 method2:直接按顺序分发 method3:在方法1的基础上,处理稠密网格的分发(对应文件pw_basis_sup.cpp)

我们有以下疑问 Q1.method3的稠密网格是什么意思?是method1边界之外的点还是一些额外的点? Q2.method2为什么不用考虑负数索引的问题?

还有一些地方的代码似乎是一样的 Q3:PW_Basis_Big 和 PW_Basis 都存在 distribute_r() 函数,区别仅多了几个参数。这里的“big”是什么意思?是扩大了搜索范围还是点变多了? Q4:pw_transform_k.cpp和pw_transform.cpp的差别仅仅在于多了一个对波矢k的支持。能不能直接在公式exp i(k+G)r 中取k = 0。这样只用写一份代码。另一个在调用时取k=0就好了。

谢谢!