应用案例¶
本章将介绍DS-PAW的各种应用实例,具体包括:如何计算磁矩、如何计算反铁磁材料等;用户通过以下应用教程,将可以更深入了解DS-PAW软件的使用。
2.1 氧原子的磁矩计算¶
本节中我们将以单个氧原子体系为例子来介绍磁性体系的计算。
2.1.1 氧原子自洽计算¶
由于本次计算的是单个氧原子的磁矩,因此并不需要进行结构弛豫计算,我们直接从自洽计算开始,准备参数文件 scf.in
和结构文件 structure.as
, scf.in
如下:
task = scf
sys.symmetry = false
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 1
cal.sigma = 0.01
cal.kpoints = [1, 1, 1]
本次计算的输入文件中以下几个参数需要重点关注下:
sys.symmetry
:本次计算中我们将在关闭对称性的情况下进行计算,因为在DS-PAW中可以通过对称性来减少程序的计算量,但是往往通过对称性优化之后,一些较为细节的东西将会不是特别准确,因此本次计算中将关闭对称性;sys.spin
:指定体系磁性,因为我们知道单个氧原子的磁矩是 2μB ,这里我们将设置体系的磁性为 collinear 也就是 共线自旋 ;cal.kpoints
:在前面的章节中我们介绍过对于没有周期性的维度, K点 可以设置为1;
structure.as 文件参考如下:
Total number of atoms 1 Lattice 7.50000000 0.00000000 0.00000000 0.00000000 8.00000000 0.00000000 0.00000000 0.00000000 8.90000000 Cartesian O 0.00000000 0.00000000 0.00000000
结构文件中我们使用笛卡尔坐标,因此我们设置第七行中坐标类型为 Cartesian
;为了在结构也尽量的减少对称性,手动晶格改为 [7.5,8,8.9] 格子。
2.1.3 计算结果分析¶
根据上述的输入文件,计算完成之后将会得到 DS-PAW.log
、 system.json
这2个文件。
使用文本编辑器或者在线显示 json 格式的网页中打开 system.json
文件,具体数据如下:

在 system.json
中找到 Occupation ,可以看到 Spin1 下0,1,2,3个轨道电子的占据为 1 , Spin2 下只有0,1两个轨道下电子的占据数为 1 , 所以我们可以得到整个体系带有两个 2μB 的磁矩。
2.2 NiO体系的反铁磁计算¶
本节中我们将以NiO体系为例子介绍如何设置计算反铁磁计算。
2.2.1 NiO体系自洽计算¶
本次案例中同样省去了结构弛豫这个过程,用户重现此案例时,可以自行尝试下进行结构弛豫计算,准备参数文件 scf.in
和结构文件 structure.as
, scf.in
如下:
task = scf
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 4
cal.kpoints = [8, 8, 8]
cal.cutoff = 400
本次计算的输入文件中以下几个参数需要重点关注下:
cal.smearing
:本次计算中采用 四面体加布洛赫 的方法,当使用该方法时 sigma 将强制被设置为 0 ;sys.spin
:指定体系磁性, NiO 为反铁磁材料因此我们需要设置磁性为 collinear 也就是 共线自旋 ;cal.cutoff
:这里我们设置计算中平面波的截断为 400 ;
structure.as
文件参考如下:
Total number of atoms
4
Lattice
4.16840000 2.08420000 2.08420000
2.08420000 4.16840000 2.08420000
2.08420000 2.08420000 4.16840000
Cartesian Mag
Ni 1.04210000 1.04210000 1.04210000 2.0
Ni 5.21050000 5.21050000 5.21050000 -2.0
O 3.12630000 3.12630000 3.12630000 0
O 7.29470000 7.29470000 7.29470000 0
可以注意到,在结构文件的第七行的 Cartesian
后面加入 Mag 标签,设置了这个标签之后就可以设置每个原子的磁矩了,由于我们需要体现反铁磁(整个体系不显示磁矩,单个原子有磁矩),我们建立了四个原子的晶胞,一个Ni原子设置磁矩为 -2 ,另一个Ni原子设置磁矩为 2 ,两个O原子设置磁矩为 0 。
2.2.3 自洽计算结果分析¶
根据上述的输入文件,计算完成之后将会得到 DS-PAW.log
、 system.json
这2个文件。
使用文本编辑器或者在线显示 json 格式的网页中打开 system.json
文件,在 system.json
中找到 magnetization ,可以看到自洽完成之后总的磁矩为 1e-08 ,几乎为0。
2.2.4 NiO体系态密度计算¶
之后准备进行态密度计算,准备参数文件 pdos.in
结构文件 structure.as
和自洽的二进制电荷密度文件 rho.bin
,此时 pdos.in 如下:
task = dos
sys.structure = structure.as
sys.spin = collinear
cal.iniCharge = ./rho.bin
cal.smearing = 4
cal.kpoints = [16, 16, 16]
cal.cutoff = 400
dos.project = true
本次计算中我们打开了态密度的投影。
2.2.6 态密度计算结果分析¶
根据上述的输入文件,计算完成之后将会得到DS-PAW.log、dos.json这2个文件。使用python对dos.json进行数据处理画出NiO的t2g和eg轨道,具体操作如下:
我们在计算目录中新建一个 dosplot_t2g_eg.py 文件,内容如下:
1 from pymatgen.electronic_structure.plotter import DosPlotter
2 from dspawpy.io import get_dos_data
3
4 dos_data = get_dos_data("./dos.json")
5 dos_plotter = DosPlotter(stack=False,zero_at_efermi=True)
6 dos_plotter.add_dos_dict(dos_data.get_site_t2g_eg_resolved_dos(dos_data.structure[1]))
7 dos_plotter.save_plot("dos_t2g_eg.png",img_format="png")
8 dos_plotter.show()
第1,2行为需要导入的 python 库函数,这里用到了pymatgen中的 DosPlotter 库,以及我们自己写的
dspawpy.io
中的 get_dos_data 函数;第4行为读取
dos.json
文件构造dos_data
结构体;第5行为调用DosPlotter处理dos_data数据,括号中 stack=False 表示态密度作图方式为曲线, stack=True 表示作图方式为面积, zero_at_efermi 控制是否将零点设为 费米能级 ;
第6行使用 add_dos_dict 获取 投影信息 ,对dos_data进行 get_site_t2g_eg_resolved_dos 操作,获得 投影到轨道 的信息;
第7行为保存图片的名称和格式,这里将数据保存为png格式命名为 dos_t2g_eg.png ;
第8行为显示图片,如果用户运行的环境无法直接显示图片,用户可以将第七行注释了,之后打开 dos_t2g_eg.png 文件查看。
执行 python dosplot_t2g_eg.py ;
生成
dos_t2g_eg.png
文件
