4.11. 偶极修正计算¶
偶极修正计算是针对具有极性的slab体系进行的,能够对极性进行修正。
4.11.1. \(TiO\)2 -(011)的偶极修正计算输入文件¶
\(TiO\)2 的(011)表面结构如下图所示
可以看到上表面(左侧)为O原子,下表面(右侧)为Ti原子。 由于氧原子是-2价,Ti原子是+4价,所以上表面带负电,下表面带正电,整个slab体系会形成一个内建电场。 这时需要使用偶极修正来消除这个内建电场对体系的影响。
偶极修正可以在各种类型的计算任务中开启,需要的输入文件与该类型的计算文件相同。 这里以scf自洽计算作为例子说明偶极修正计算的输入文件JSON文件的参数设置。
JSON文件如下:
{
"job": {
"calculation_type": "scf",
"plus_u": true,
"occupation_method": "smearing",
"is_slab": true
},
"job_io": {
"prefix": "scf",
"output_rho": true,
"output_ns": true,
"pp_dir": ".",
"pp_files": [
"Ti_ONCV_PBE_sr.upf",
"O_ONCV_PBE_sr.upf"
]
},
"pw": {
"ecutwfc": 35,
"ecutrho": 140
},
"kpts": {
"k_type": "automatic",
"k_mesh": [
3,
3,
1
]
},
"symmetry": {
"use_sym": false
},
"smearing": {
"smearing_alg": "gauss",
"smearing_width": 0.005
},
"hubbard": {
"u_projection_type": "atomic",
"u": [
5,
0
]
},
"pef": {
"pef_dir": 3,
"pef_max_loc": 0.8,
"pef_dec_region_leng": 0.1,
"pef_max_e": 0
},
"slab": {
"slab_corr_method": "dipole correction"
},
"cell": {
"lattice": [
8.67384297,
0,
0,
0,
10.32103598,
0,
0,
0,
31.5017347
],
"cell_units": "bohr"
},
"ions": {
"element_names": [
"Ti",
"O"
],
"element_nums": [
6,
12
],
"positions": [
[
0,
0,
0.301032
],
[
0.5,
0.5,
0.301032
],
[
0,
0.293721,
0.450258
],
[
0.5,
0.793721,
0.450258
],
[
0,
0.587441,
0.599484
],
[
0.5,
0.087441,
0.599484
],
[
0.327,
0.769047,
0.349829
],
[
0.827,
0.024674,
0.401461
],
[
0.673,
0.524674,
0.401461
],
[
0.173,
0.269047,
0.349829
],
[
0.327,
0.062767,
0.499055
],
[
0.827,
0.318395,
0.550687
],
[
0.673,
0.818395,
0.550687
],
[
0.173,
0.562767,
0.499055
],
[
0.327,
0.356488,
0.648281
],
[
0.827,
0.612115,
0.699913
],
[
0.673,
0.112115,
0.699913
],
[
0.173,
0.856488,
0.648281
]
]
}
}
JSON输入参数介绍:
JSON输入文件可以分为几个模块,这里分别是job/job_io/pw/kpts/smearing/electron_step/pef/slab/cell/ions, 这里只介绍一些与自旋极化计算需要额外设置的参数。 下面将依次进行介绍。
job模块: 用来设置和本次计算类型相关的参数。
is_slab
:设置本次计算是否需要为slab体系进行修正,这里设为true,表示要进行修正。
slab模块: 用来设置slab修正相关的参数。
slab_corr_method
:设置slab修正的方法。这里设置为dipole correction,表示使用偶极修正。
pef模块: 用来设置电场相关的参数。
pef_dir
:设置电场沿倒格矢的方向,这里设为3,表示沿倒格矢g3的方向。pef_max_loc
:设置电场最大处所在的位置,以分数坐标表示。这里设为0.8。pef_dec_region_leng
:设置电场下降的区间长度,电场在下降和上升的转变点必须设置在真空层当中。这里设为0.1,使转变点在0.9处,在真空层当中。pef_max_e
:设置电场最大处的值,在偶极修正中必须设为0。
4.11.2. 执行计算¶
准备好JSON文件和赝势文件之后,按照 Hylanemos运行 中的方法执行计算。
4.11.3. 计算结果分析¶
输出文件与普通的scf计算的是一样的。
在 scf_OUT
文件中的每一个scf迭代步中可以看到与偶极修正相关的部分。
================================================================================
| Main part of scf calculation |
--------------------------------------------------------------------------------
iteration 1 begins
efield #偶极修正相关部分
buffers.elec_dipole = 2.943328385288919
v_max_value = 9.225260111011776
length = 28.35156123
buffers.e_efield = 2.9701114655392353
E(Ha) dE(Ha) estimated scf_diff(Ha)
-524.10960991 0.00000000 17.68189039
Energy by parts:
one_electron contribution = -2524.65627872 Ha / -68699.39706337 eV
hartree contribution = 1280.76413940 Ha / 34851.36764903 eV
xc contribution = -86.55975574 Ha / -2355.41094430 eV
ewald contribution = 788.99719214 Ha / 21469.70731887 eV
smearing contribution = -0.00000000 Ha / -0.00000000 eV
iteration 1 ends, not converged yet.
--------------------------------------------------------------------------------
#中间省略
================================================================================
| scf result |
--------------------------------------------------------------------------------
Electron Step Finish
Total Energy: -538.04185808 Ha / -14640.86480053 eV
Fermi level: 1.70745171 eV
Energy by parts:
one_electron contribution = -2505.09690549 Ha / -68167.15940403 eV
hartree contribution = 1262.74107737 Ha / 34360.93514719 eV
xc contribution = -84.67961627 Ha / -2304.24974289 eV
ewald contribution = 788.99719214 Ha / 21469.70731887 eV
smearing contribution = -0.00736151 Ha / -0.20031698 eV
使用了偶极修正后得到了体系总能量为-538.04185808 Ha / -14640.86480053 eV。