|
发表于 2023-10-9 11:51:08
|
显示全部楼层
1. ABACUS关于H(R)、S(R)的输出可以参考http://abacus.deepmodeling.com/e ... ties/hs_matrix.html的说明。
2. calculation设置为scf,out_mat_hs2设置为1,即可输出H(R)矩阵。H(R)矩阵的文件名一般为data-HR-sparse_SPIN0.csr。csr为稀疏矩阵格式,可以参考https://en.wikipedia.org/wiki/Sparse_matrix百科。
3. 关于data-HR-sparse_SPIN0.csr文件格式的说明。下面为某个体系的HR文件:
a. 第一行为“STEP: 0”,表示分子动力学计算的步数。
b. 第二行为“Matrix Dimension of H(R): 26”,表示H(R)的矩阵维度为26*26。
- 开启SOC之后,基组数目会变为原来的2倍。即,开启SOC之后,输出应该为“Matrix Dimension of H(R): 52”。
- 开启SOC之后,基组排列的顺序是\phi_{1, up} 、\phi_{1, down}、\phi_{2, up}、\phi_{2, down}、\phi_{3, up}、\phi_{3, down}、......。也就是说原来的每一个基组变成了up和down两个分量。
c. 第三行为“Matrix number of H(R): 629”,表示H(R)的数目为629个,即H(R1)、H(R2)、H(R3)、......。
d. 从第4行开始,每四行为一组,表示一个H(R)。
- 该组第一行为“-5 -1 0 8”,前三个数字表示R的分数坐标(-5, -1, 0),最后一个数字表是H(R)这个矩阵非零元素的数目为8。
- 该组第二行到第四行表示的是CSR稀疏矩阵。第二行为系数矩阵非零元素数据data,第三行为非零元素的列指标indices,第四行为行偏移量indptr。
关于CSR系数矩阵的说明:
完整矩阵为:
4 2 0 0
0 3 0 0
0 4 5 0
0 0 0 0
注意,我们的记数是从0开始的。
首先,矩阵第一行为 4 2 0 0 ,有2个非零元素 4 2 ,对应的列指标为 0 1 ;矩阵的第二行为 0 3 0 0 ,有1个非零元素 3 ,对应的列指标为 1 ;矩阵的第三行,有2个非零元素 4 5 ,对应的列指标为 1 2 ;第四行全为零,没有非零元素。
所以:
data = [4, 2, 3, 4, 5]; // 非零元素
indices = [0, 1, 1, 1, 2]; // 对应每个非零元素的列指标
/*
从第一行到第四行的非零元素数目分别为2,1,2,0;
在data数组中对应偏移量为0,2,3,5,5,用于记录某一行的第一个元素在data里面的起始偏移位置。通过后一个数减去前一个数得到该行的非零元素数目,即,2-0=2,3-2=1,5-3=2,5-5=0
*/
indptr = [0, 2, 3, 5, 5]; // 该数组维度一定是矩阵的行数加1 |
|