分类:
2010-02-05 16:15:00
·PWSCF计算实例分析(4)计算费米面
| |
例子:计算fcc Cu的费米面
步骤: 1)先进行一次自洽计算,如前面的例子; 2)用kvecs_FS.x产生要计算费米面时的密集网格k点,这时的k不仅包含了第一布里渊区的,还有其他区域的; 3)进行一次非自洽计算,计算这些k点的本征值; 4)然后采用bands_FS.x将计算的k点以及相应的本征值,转换成xcrysden软件的bxsf格式,以便采用xcrysden来画图。 一、准备计算费米面要用到的密集网格k点
采用shell脚步来准备 Sysname='cu' Calc_Type='FS' nabc=' 12 12 12 ' n_start=3 n_last=6 # E_Fermi=`grep Fermi cu.scf0.out cut -c 26-36` a1=`grep 'b(1)' cu.scf.out cut -c 24-54` a2=`grep 'b(2)' cu.scf.out cut -c 24-54` a3=`grep 'b(3)' cu.scf.out cut -c 24-54` cat > kvecs_FS.in < $a1
$a2
$a3
$nabc
$Sysname
EOF
cat > kvecs_FS.in < kvecs_FS.x< kvecs_FS.in > kvecs_FS.out
注释:这里$Sysname用来标记所计算的体系,这个例子中给它赋值为'cu',$Calc_Type用来标记所进行的是Fermi surface的计算,可以赋值为'FS',$nabc用来设置在计算费米面时所要计算的k点网格,这里设置为'12x12x12'的k点网格。$n_start用来标记从哪个能带开始计算起,这里设置为3,$n_last用来设置要计算到哪根能带为止,这里设置为6,一般它们两个要设置在费米能级所在的带的上下,也就是它们的范围之内要包括了费米能级。$a1, $a2,$a3用来标记所得到k点网格产生的k点坐标。$E_Fermi用来标记在自洽计算中得到的费米能级值。
二、进行非自洽的计算,得到这些k点的本征值:
cat > cu.fs.in << EOF &control
calculation='nscf'
prefix='cu',
pseudo_dir = './',
outdir='./'
/
&system
ibrav=2, celldm(1) =6.73, nat=1, ntyp=1,
ecutwfc = 25.0, ecutrho = 300, nbnd=8
/
&electrons
conv_thr = 1.0e-8 mixing_beta = 0.7
/
ATOMIC_SPECIES
Cu 63.55 Cu.pz-d-rrkjus.UPF
ATOMIC_POSITIONS
Cu 0.0 0.0 0.0
K_POINTS
EOF
cat kvecs_$Sysname >> cu.fs.in
pw.x 三、准备将计算的本征值和对应的k点写成xcrysden的bxsf格式 mv cu.fs.out Bands.out cat > input_FS < $n_start
$n_last
$E_Fermi
$Sysname
$Calc_Type
$nabc
$a1
$a2
$a3
EOF
bands_FS.x > bands_fs.out
mv Bands.bxsf cu.fs.bxsf |