xiaoqiugood的个人博客分享 http://blog.sciencenet.cn/u/xiaoqiugood

博文

PWSCF计算电声耦合常数

已有 23593 次阅读 2013-9-15 23:39 |个人分类:声子谱计算|系统分类:科研笔记

关注:

1) 电声耦合常数的物理意义;

2) 计算原理;

3) 计算步骤;

4) 后处理步骤得到超导温度


1. PWSCF5.0.2 : example 03解读

Sincev.5.0, there are two ways of calculating electron-phonon coefficients【哪两种?】, distinguished according to the value of variable electron_phonon. The following holds for case electron_phonon='interpolated' (see also Example 03). 【以内插值替换的?】

Thecalculation of electron-phonon coefficients in metals is made difficult by the slow convergence of the sum at the Fermi energy. It is convenient to

use acoarse k-point grid to calculate phonons on a suitable wavevector grid【合适的波矢网格?与下面的2对应:a normal scf + phonon dispersion calculation on the coarse k-point   grid,】;

a dense k-point grid to calculate the sum at the Fermi energy.The calculation proceeds in this way:

  1. a scf calculation for the dense k-point  grid (or a scf     calculation followed by a non-scf one on the dense k-point grid【自洽,再非自洽,这是老版pwscf的做法吗】);

       specify   option la2f=.true.to pw.x in order to save a file with the     eigenvalues on the dense k-point grid. The latter MUST contain all k and k+q grid points used in the subsequent     electron-phonon calculation. All grids MUST be unshifted, i.e. include k = 0 .

  2. a normal scf + phonon dispersion calculation on the coarse k-point     grid, specifying option electron_paononh='interpolated'. and the file name where the     self-consistent first-order variation of the potential is to be stored:     variable fildvscf).

        The electron-phonon coefficients are    calculated using several values of Gaussian     broadening (see PHonon/PH/elphon.f90) because this quickly shows whether results are  converged or not with respect to the k-point grid and Gaussian broadening.【gaussian展宽?】

  3. Finally, you can use matdyn.x and lambda.x (input documentation in the header of PHonon/PH/lambda.f90) to get the $ .alpha^{2}_{}$F($ .omega$) function, the electron-phonon    coefficient $ .lambda$ , and an estimate of the critical     temperature Tc .

See the appendix for the relevant formulae.


Read Me of example 03

This example illustrates how to calculate electron-phonon interaction

c oefficients, for a (444) Monkhorst-Pack (MP) grid of q-points, in fcc Al.

 

IMPORTANT NOTICE:the calculation of electron-phonon coefficients is tricky.

Do not attempt it unless you have a clear idea of the technical problems

(e.g. very slowconvergence with k-point grid,, divergence at q=>0 for optical

modes). Carefullyread the relevant literature first.

 

The calculationproceeds as follows (for the meaning of the cited input

variables see theappropriate INPUT_* file)

 

1) make a self-consistent calculation for Al using a dense grid of k-points.

  The dense grid must contain all k and k+q grid points used in the

  subsequent electron-phonon 【如何做到?】calculation andmust be dense enough to

  produce accurate el-phon coefficients (in particular the double-delta

  integral at Ef is very critical). Note that you have to use unshifted

  grids (k1=k2=k3=0) only, that include k=0!

  This example uses a (16 16 16) MP grid. Notethat the k-point grids

  used here are NOT dense enough for a seriouscalculation!!!

  The option "la2F=.true." instructs the code to save data into a

  "a2Fsave" file, subsequently readduring the el-phon calculation

 (input=al.scf.fit.in, output=al.scf.fit.out)

 

2) make aself-consistent calculation for Al using a grid of k-points

  that is suitable for good self-consistencyand phonon calculation.

  This example uses a (888) MP grid.

  (input=al.scf.in,output=al.scf.out)

 

3) make the phonon and electron-phonon calculation for the grid of q-points.

  Specify elph=.true., and the name of a file where the derivative of the

  potential is stored "fildvscf".This example uses a (444) MP grid of

  q-points (nq1=4, nq2=4, nq3=4).

  The output contains the results for the el-ph coefficient at each q-point

  lambda(q), gamma(q), and the double-delta integral at several values of

  the gaussian broadening (set in filePH/elphon.f90). These are useful

  for convergence testing.

  (input=al.elph.in,output=al.elph.out)

  The results are also written into outputfiles "a2Fq2r.*", one per value

  of the gaussian broadening, for further use.

 

4) Bring tor-space both force constants and el-phon coefficients using "q2r.x"

  Output in files "a2Fmatdyn.*", one per value of the gaussian broadening

 

5) Calculate gamma  on selected lines using "matdyn.x" (dos=.false.)

 

6) Calculate  lambda coefficient (in file"lambda") and the a^2F(omega)

  function using "matdyn.x" (dos=.true.)

 

7) Calculate lambda coefficient (in "lambda.out")and Tc using "lambda.x"




# #########SCF at dense k-mesh, good enough forelectronic DOS 【多密算密】 #######

#

cat >al.scf.fit.in << EOF

&control

   calculation='scf'

   restart_mode='from_scratch',

   prefix='al',

   pseudo_dir = '$PSEUDO_DIR/',

   outdir='$TMP_DIR/'

/

 &system

   ibrav= 2, celldm(1) =7.5, nat= 1, ntyp= 1,

   ecutwfc =15.0,

   occupations='smearing',smearing='methfessel-paxton', degauss=0.05,

   la2F= .true.,

/

&electrons

   conv_thr =  1.0d-8

   mixing_beta = 0.7

/

ATOMIC_SPECIES

Al 26.98 Al.pz-vbc.UPF

ATOMIC_POSITIONS

Al 0.00 0.00 0.00

K_POINTS{automatic}

16 16 16 0 0 0

EOF

$ECHO "  running the scf calculation with densek-point grid...\c"

$PW_COMMAND  < al.scf.fit.in > al.scf.fit.out



# ########## SCFat k-mesh good enough for phonons【多好算好!】######

#

cat > al.scf.in<< EOF

&control

   calculation='scf'

   restart_mode='from_scratch',

   prefix='al',

   pseudo_dir = '$PSEUDO_DIR/',

   outdir='$TMP_DIR/'

/

 &system

   ibrav= 2, celldm(1) =7.5, nat= 1, ntyp= 1,

   ecutwfc =15.0,

   occupations='smearing',smearing='methfessel-paxton', degauss=0.05

/

&electrons

   conv_thr = 1.0d-8

   mixing_beta = 0.7

/

ATOMIC_SPECIES

Al 26.98 Al.pz-vbc.UPF   ####  Pseudopotential type: NORMCONS


ATOMIC_POSITIONS

Al 0.00 0.00 0.00

K_POINTS{automatic}

8 8 8  00 0

EOF

$ECHO "  running the scf calculation...\c"

$PW_COMMAND <al.scf.in > al.scf.out


#############################

cat >al.elph.in << EOF

Electron-phonon coefficients for Al

&inputph

 tr2_ph=1.0d-10,

 prefix='al',

 fildvscf='aldv',

 amass(1)=26.98,

 outdir='$TMP_DIR/',

 fildyn='al.dyn',

  electron_phonon='interpolated',   #与elph=.true.,的区别何在?

 trans=.true.,

 ldisp=.true.

 nq1=4, nq2=4, nq3=4

/

EOF

$ECHO "  running the el-ph calculation...\c"

$PH_COMMAND <al.elph.in > al.elph.out



#

#   q2r and matdyn

#

cat > q2r.in<< EOF

&input

 zasr='simple',  fildyn='al.dyn', flfrc='Al444.fc', la2F=.true.

/

EOF

$ECHO "  running q2r...\c"

$Q2R_COMMAND < q2r.in > q2r.out

#

###########声子谱:声子色散曲线####

cat >matdyn.in.freq << EOF

&input

   asr='simple',  amass(1)=26.98,

   flfrc='Al444.fc', flfrq='Al444.freq', la2F=.true., dos=.false.

/

 19

 0.000 0.0 0.0     0.0

 0.125 0.0 0.0     0.0

 0.250 0.0 0.0     0.0

 0.375 0.0 0.0     0.0

 0.500 0.0 0.0     0.0

 0.750 0.0 0.0     0.0

 1.000 0.0 0.0     0.0

 0.825 0.125 0.125 0.0

 0.750 0.250 0.250 0.0

 0.625 0.375 0.375 0.0

 0.500 0.500 0.500 0.0

 0.325 0.325 0.325 0.0

 0.250 0.250 0.250 0.0

 0.125 0.125 0.125 0.0

 0.000 0.000 0.000 0.0

 0.125 0.125 0.000 0.0

 0.250 0.250 0.000 0.0

 0.325 0.325 0.000 0.0

 0.500 0.500 0.000 0.0

EOF

$ECHO "  running matdyn for frequencycalculation...\c"

$MATDYN_COMMAND< matdyn.in.freq > matdyn.out.freq

check_failure $?


###########声子态密度计算####

cat >matdyn.in.dos << EOF

&input

   asr='simple',  amass(1)=26.98,

   flfrc='Al444.fc', flfrq='Al444.freq', la2F=.true., dos=.true.

   fldos='phonon.dos', nk1=10, nk2=10, nk3=10,ndos=50

/

EOF

$ECHO "  running matdyn for a2F(omega) calculation...\c"

$MATDYN_COMMAND< matdyn.in.dos > matdyn.out.dos

check_failure $?

$ECHO "  done"

#

#

############Eliashberg函数alpha^2 F和电声耦合常数lamda计算########

cat > lambda.in<< EOF

10  0.12 1    ! emax (something more thanhighest phonon mode in THz), degauss, smearing method

   8         ! Number of q-points for which EPC is calculated,

   0.0000000 0.0000000  0.0000000   1.00 ! the first q-point, use kpoints.x program to calculate

   -0.2500000 -0.2500000  0.2500000  8.00  ! q-points and their weight

   -0.5000000 -0.5000000  0.5000000  4.00  !

    0.0000000 0.0000000  0.5000000   6.00 ! 4th q-point, qx,qy,qz

   -0.2500000 -0.2500000  0.7500000 24.00  !

   -0.5000000 -0.5000000  1.0000000 12.00  !

    0.0000000 0.0000000  1.0000000   3.00 !

   -0.5000000 0.0000000  1.0000000   6.00 ! the last q-point

elph. 0.000000.0.000000. 0.000000 ! elph output file names,

elph.-0.250000.0.250000.-0.250000 ! in the same order as the q-points before  

elph.0.500000.-0.500000. 0.500000

elph. 0.000000.0.500000. 0.000000

elph.0.750000.-0.250000. 0.750000

elph. 0.500000.0.000000. 0.500000

elph.0.000000.-1.000000. 0.000000

elph.-0.500000.-1.000000.0.000000

0.10                     ! \mu the Coloumbcoefficient in the modified

                        ! Allen-Dynes formulafor T_c (via \omega_log)

EOF

$ECHO "  running lambda.x for lambdacalculation...\c"

$LAMBDA_COMMAND< lambda.in > lambda.out


 




【转自Valenhou+解读】PWSCF计算电声耦合常数

    在采用pwscf计算研究材料的超导性质时,可以计算出声子振动频率、Eliashberg函数alpha^2 F和电声耦合常数lamda以及Tc温度。 pwscf是根据线性响应理论来计算声子振动频率以及电声耦合相互作用的。在最新版本(3.2.1)中,计算步骤为:

      i)选取很密的k点网格,用pw.x进行自洽计算;

     ii)选取略疏的k点网格,用pw.x进行自洽计算;

     iii)选取较疏的q点网格,用ph.x进行声子的计算,得到每一个q点的动力学矩阵;

     iv)用q2r.x由每一个q点的动力学矩阵得到实空间中力常数矩阵;

    v) 选取沿高对称q点走向所确定的线,用matdyn.x计算这些线上每一个q点的本征频率(也就是计算声子色散曲线);

    vi)选取较密的q点网格,用matdyn.x计算声子态密度、Eliashberg函数alpha^2 F和电声耦合常数lamda。

下面以采用pwscf3.2.1来计算Al的为例:
1)、选取很密的k点网格,用pw.x进行自洽计算
在这一步中,输入文件中必须加入la2F = .true.,k网格要求足够密,以致它包含下面两步中的小k点网格和q网格之和所确定的k点和k+q点。


#################SCF at dense k-mesh, good enough for electronic DOS##############
&control
calculation='scf'
restart_mode='from_scratch',
prefix='al',
pseudo_dir = './',
outdir='./tmp'
/
&system
ibrav= 2, celldm(1) =7.5, nat= 1, ntyp= 1, ecutwfc =15.0,
occupations='smearing', smearing='methfessel-paxton', degauss=0.05,
la2F = .true.,
/
&electrons
conv_thr = 1.0d-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
ATOMIC_POSITIONS

Al 0.00 0.00 0.00
K_POINTS {automatic}
16 16 16 0 0 0


$PW_COMMAND  < al.scf.fit.in > al.scf.fit.out


此例子中采用16x16x16的k点网格。

2)、选取略疏的k点网格,用pw.x进行自洽计算

###### #  SCF at k-mesh good enough for phonons #########
&control
calculation='scf'
restart_mode='from_scratch',
prefix='al',
pseudo_dir = './',
outdir='./tmp'
/
&system
ibrav= 2,
celldm(1) =7.5, nat= 1, ntyp= 1,
ecutwfc =15.0,
occupations='smearing', smearing='methfessel-paxton', degauss=0.05
/
&electrons
conv_thr = 1.0d-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
ATOMIC_POSITIONS
Al 0.00 0.00 0.00
K_POINTS {automatic}
8 8 8 0 0 0


$PW_COMMAND < al.scf.in > al.scf.out


这里采用了8x8x8的k点网格,而且不需再输入文件中加入la2F=.true.的设置。

3)、选取较疏的q点网格,用ph.x进行声子的计算,得到每一个q点的动力学矩阵;
Electron-phonon coefficients for Al
&inputph
tr2_ph=1.0d-10,
prefix='al',
fildvscf='aldv',
amass(1)=26.98,
outdir='./tmp' ,
fildyn='al.dyn',
elph=.true.,   #5.0.2改为electron_phonon='interpolated',
trans=.true.,
ldisp=.true. 
nq1=4, nq2=4, nq3=4
/

$PH_COMMAND < al.elph.in > al.elph.out


这里通过nq1,nq2和nq3设置采用4x4x4的q点网格。另外因为要计算电声耦合常数,因此,在ph.x的输入文件中须设置elph=.true.,另外要计算声子色散曲线,也须把ldisp设置为.true.,同时这些都是与声子性质相关的物理量,因此要对它们进行计算,也必须设置trans为.true.。

4)、由每一个q点的动力学矩阵用q2r.x得到实空间中力常数矩阵
输入文件的例子:
&input
zasr='simple',
fildyn='al.dyn',
flfrc='Al444.fc',
la2F=.true.
/


$Q2R_COMMAND < q2r.in > q2r.out


这些参数与在计算声子时的一样,此时要为了计算电声耦合常数,la2F必须设置.true.。flfrc是用来设置保存所计算出来的力常数矩阵的文件名。 fildyn是用来设置上一步已经计算得到的q点的动力学矩阵的文件名。

5)、选取沿高对称q点走向所确定的线,用matdyn.x计算这些线上每一个q点的本征频率(也就是计算声子色散曲线
输入文件的例子:
&input
asr='simple',
amass(1)=26.98,
flfrc='Al444.fc',
flfrq='Al444.freq',
la2F=.true.,
dos=.false.
/
19
0.000 0.0 0.0 0.0
0.125 0.0 0.0 0.0
0.250 0.0 0.0 0.0
0.375 0.0 0.0 0.0
0.500 0.0 0.0 0.0
0.750 0.0 0.0 0.0
1.000 0.0 0.0 0.0
0.825 0.125 0.125 0.0

0.750 0.250 0.250 0.0

 0.625 0.375 0.375 0.0

 0.500 0.500 0.500 0.0

 0.325 0.325 0.325 0.0

 0.250 0.250 0.250 0.0

 0.125 0.125 0.125 0.0

 0.000 0.000 0.000 0.0

 0.125 0.125 0.000 0.0

 0.250 0.250 0.000 0.0

 0.325 0.325 0.000 0.0

 0.500 0.500 0.000 0.0

EOF



$MATDYN_COMMAND < matdyn.in.freq > matdyn.out.freq


同样这里也必须设置la2F为.true.。



6)、选取较密的q点网格,用matdyn.x计算声子态密度、Eliashberg函数alpha^2 F和电声耦合常数lamda。
(a) 计算声子态密度

输入文件的例子
cat > matdyn.in.dos << EOF

&input
asr='simple',
amass(1)=26.98,
flfrc='Al444.fc',
flfrq='Al444.freq',
la2F=.true.,
dos=.true.
fldos='phonon.dos',
nk1=10, nk2=10, nk3=10,
ndos=50
/

EOF

$MATDYN_COMMAND < matdyn.in.dos > matdyn.out.dos



同样这里也必须设置la2F为.true.。

为了计算得到准确而收敛的结果,需要测试所选取的k 点和q网格。


(a) 计算Eliashberg函数alpha^2 F和电声耦合常数lamda

cat > lambda.in << EOF

10  0.12  1    ! emax (something more than highest phonon mode in THz), degauss, smearing method

   8          ! Number of q-points for which EPC is calculated,

   0.0000000  0.0000000  0.0000000   1.00  ! the first q-point, use kpoints.x program to calculate

   -0.2500000 -0.2500000  0.2500000   8.00  ! q-points and their weight

   -0.5000000 -0.5000000  0.5000000   4.00  !

    0.0000000  0.0000000  0.5000000   6.00  ! 4th q-point, qx,qy,qz

   -0.2500000 -0.2500000  0.7500000  24.00  !

   -0.5000000 -0.5000000  1.0000000  12.00  !

    0.0000000  0.0000000  1.0000000   3.00  !

   -0.5000000  0.0000000  1.0000000   6.00  ! the last q-point

elph. 0.000000. 0.000000. 0.000000 ! elph output file names,

elph.-0.250000. 0.250000.-0.250000 ! in the same order as the q-points before  

elph. 0.500000.-0.500000. 0.500000

elph. 0.000000. 0.500000. 0.000000

elph. 0.750000.-0.250000. 0.750000

elph. 0.500000. 0.000000. 0.500000

elph. 0.000000.-1.000000. 0.000000

elph.-0.500000.-1.000000. 0.000000

0.10                     ! \mu the Coloumb coefficient in the modified

                        ! Allen-Dynes formula for T_c (via \omega_log)

EOF


$LAMBDA_COMMAND < lambda.in > lambda.out








https://blog.sciencenet.cn/blog-567091-725236.html

上一篇:声子谱出现虚频-解决方案摘录
下一篇:pwscf计算费米面
收藏 IP: 128.84.126.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (12 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-16 03:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部