分类:
2009-12-31 08:47:34
pwscf是采用线性响应的方法来进行晶格动力学性质的计算。在计算晶体的声子色散和态
密度时的步骤:i)用pw.x进行自洽计算;
ii)用ph.x对小的q点网格进行计算,得到这些q点的动力学矩阵元;iii)用q2r.x计算出实空间中的力常数矩阵;
iv)用matdyn.x计算声子色散曲线;v)用matdyn.x计算声子态密度。
下面以Sc为例子并针对pwscf的最新版本3.2.1来说明(早期版本在计算声子色散曲线较麻烦,因为它不能自动处理q点网格,然后对每个q点一次性计算,而是需要手动产生这些点,一个个计算)。
1) 用pw.x进行电子密度的自洽计算
&control
title='Sc, hexagonal cell'
calculation = 'scf'
restart_mode='from_scratch',
prefix='sc',
pseudo_dir = './',
outdir='./tmp'
tprnfor=.true.
/
&system
ibrav=4,
celldm(1)=6.05606,
celldm(3)=1.71298,
nat=2,
ntyp=1, nbnd= 30,
ecutwfc=30.0,
occupations ='smearing', degauss =0.01
smearing ='mp'
/
&electrons
diagonalization='cg'
diago_cg_maxiter= 60
mixing_mode = 'plain'
mixing_beta = 0.5
conv_thr = 1.0d-6
/
ATOMIC_SPECIES
Sc 44.955910 Sc.pw91-nsp-van.UPF
ATOMIC_POSITIONS (crystal)
Sc 0.3333333333333286 0.6666666666666714 0.2500000000000000
Sc 0.6666666666666714 0.3333333333333286 0.7500000000000000
K_POINTS (automatic)
8 8 6 0 0 0
注
意Sc是金属,在此例子中,我们选用MP方法来确定电子的占有数(见occupations ='smearing', smearing
='mp'),这里未经测试而选用了展宽系数为0.01 Ry (见degauss=0.01)。在进行声子色散曲线的计算时,不必需对
calculation设置为'phonon',在新版本中,直接设置为scf。这一步计算产生势以及电荷密度供一下的计算中利用到。
2)用ph.x对小的q网格点进行动力学矩阵元的计算
phonon for Sc
&inputph
tr2_ph=1.0d-10,
prefix='sc',
fildvscf='scdv',
amass(1)=44.955910,
outdir='./tmp',
fildyn='sc.dyn',
elph=.false.,
trans=.true.,
ldisp=.true.
nq1=4, nq2=4, nq3=2
/
注
意这里trans和ldisp必须设置为.true.。其中trans为.true.表示要计算声子相关的性质,ldisp设置为.true.表示要计算
声子色散曲线。另外
prefix和outdir的设置尽量与上一步自洽计算中的设置一致,以能读入上一步计算得到的数据。另外nq1,nq2和nq3是用来设置q网格点的。
为了得到实空间的力常数矩阵,这里采用的是先计算出q空间中小的q网格点的动力矩阵元,然后采用fft变换得到实空间的力常数矩阵。因此在这一步计算中需
设置小的q网格点的网格大小。
3)用q2r.x计算实空间力常数矩阵
&input
zasr='simple', fildyn='sc.dyn', flfrc='Sc444.fc', la2F=.false.
/
在q2r.x的输入文件中需指定
fildyn: 用来设置包含了q网格点的动力学矩阵元的文件,与上一步的 fildyn设置一致;
flfrc:用来设置输出力常数矩阵的文件;
la2F:用来设置是否计算出实空间中电-声耦合系数;针对计算材料的超导性质;
zasr:如何处理‘声学支求和规则“,该规则是用在处理Born有效电荷的,要求Born有效电荷的总和是零。可赋的值有:
no,表示不处理声学支求和问题
simple, 表示通过对力常数矩阵的对角元素进行修正来考虑3支声学横模的求和处理;
crystal,
one-dim,
zero-dim
这里我们设置为simple。
4)用matdyn.x计算出声子色散曲线
&input
asr='simple', amass(1)=44.955910,
flfrc='Sc444.fc', flfrq='Sc444.freq', la2F=.false., dos=.false.
/
131
0.000000 0.000000 0.000000 0.00
0.000000 0.016667 0.000000 0.00
0.000000 0.033333 0.000000 0.00
0.000000 0.050000 0.000000 0.00
0.000000 0.066667 0.000000 0.00
0.000000 0.083333 0.000000 0.00
0.000000 0.100000 0.000000 0.00
0.000000 0.116667 0.000000 0.00
0.000000 0.133333 0.000000 0.00
0.000000 0.150000 0.000000 0.00
0.000000 0.166667 0.000000 0.00
0.000000 0.183333 0.000000 0.00
0.000000 0.200000 0.000000 0.00
0.000000 0.216667 0.000000 0.00
0.000000 0.233333 0.000000 0.00
0.000000 0.250000 0.000000 0.00
0.000000 0.266667 0.000000 0.00
....
这里要输入131个特殊q点的坐标。与计算能带结构时一样,需先选出要计算的高对称q点的走向以及高对称点的坐标,然后产生这些线上的q点的坐标。
计算出来的每一个q点的本征频率可按上一个blog中提到的方法处理一下后画图。
5),用matdyn.x计算声子态密度
&input
asr='simple', amass(1)=44.955910,
flfrc='Sc444.fc', flfrq='Sc444.freq', la2F=.false., dos=.true.
fldos='phonon.dos', nk1=10, nk2=10, nk3=10, ndos=50
/
要计算声子态密度,dos必须设置为.true.另外fldos用来设置输出的态密度值,计算态密度时要用更密的q点网格,这需设置nk1, nk2, nk3。另外还有态密度的能量刻度上的点的数目,由ndos来设置。