構造緩和計算
PWscfの入力作成補助にあるように xtl2pw.py がインストールされているという前提でMg
2Si の CIF ファイルから PWscf (Quantum ESPRESSO) の入力ファイルを作成します。
最初にMg
2SiのCIFファイルを入手します。今回は
Materials projectのページから Primitive Cell のモノをダウンロードしました。このCIFファイルを VESTA で開いて xtl 形式でエクスポートします(Mg2Si.xtl)。
DFT計算用のマシンに Mg2Si/ ディレクトリを作成し、そこに Mg2Si.xtl を置きます。これを xtl2pw.py に渡して入力ファイルのひな型を作ります。
xtl2pw.py Mg2Si.xtl vc-relax 1
作成された入力ファイルのひな型を基に、構造緩和計算用の入力ファイルを作成します。
mv Mg2Si.in Mg2Si.relax.in
emacs -nw Mg2Si.relax.in
擬ポテンシャルファイルやカットオフを正しく設定することに加えて
system に以下を追記します。
occupations = 'smearing' ,
degauss = 0.005 ,
私の環境では、以下のような入力ファイルになりました。
&control
calculation='vc-relax' ,
restart_mode='from_scratch' ,
prefix='Mg2Si' ,
outdir = './Mg2Si/' ,
wfcdir = './Mg2Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 5 ,
celldm(1) = 8.50304569 ,
celldm(4) = 0.50000000 ,
nat = 3 ,
ntyp = 2 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
occupations = 'smearing' ,
degauss = 0.005 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Mg 24.305 Mg.pbe-n-kjpaw_psl.0.3.0.upf
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Mg 0.750000 0.750000 0.750000 0 0 0
Mg 0.250000 0.250000 0.250000 0 0 0
Si 0.000000 0.000000 0.000000 0 0 0
K_POINTS automatic
4 4 4 0 0 0
これを pw.x に渡して構造緩和計算を行います。
mpirun -np 4 pw.x < Mg2Si.relax.in > Mg2Si.relax.out
nscf計算
次にnscf計算を行います。まずは構造緩和計算の入力ファイルを基にnscf計算の入力ファイルを作成します。
cp Mg2Si.relax.in Mg2Si.nscf.in
emacs -nw Mg2Si.nscf.in
変更点は以下です。
calculation='nscf' ,
verbosity = 'high' ,
K_POINTS automatic
10 10 10 0 0 0
k点はもっと細かく採った方がいいかもしれませんが、今回は練習なのでこの程度にしておきます。
&control
calculation='nscf' ,
restart_mode='from_scratch' ,
prefix='Mg2Si' ,
outdir = './Mg2Si/' ,
wfcdir = './Mg2Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'high' ,
nstep = 100 ,
/
&system
ibrav= 5 ,
celldm(1) = 8.50304569 ,
celldm(4) = 0.50000000 ,
nat = 3 ,
ntyp = 2 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
occupations = 'smearing' ,
degauss = 0.005 ,
/
&electrons
electron_maxstep = 100 ,
mixing_beta = 0.7 ,
! use smaller conv_thr for better results ,
conv_thr = 1.0d-12 ,
/
&ions
ion_dynamics='bfgs' ,
/
&CELL
cell_dynamics = 'bfgs' ,
press = 0.001,
press_conv_thr = 0.05 ,
! cell_dofree = 'xyz' ,
/
ATOMIC_SPECIES
Mg 24.305 Mg.pbe-n-kjpaw_psl.0.3.0.upf
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Mg 0.750000 0.750000 0.750000 0 0 0
Mg 0.250000 0.250000 0.250000 0 0 0
Si 0.000000 0.000000 0.000000 0 0 0
K_POINTS automatic
10 10 10 0 0 0
これを実行します。
mpirun -np 4 pw.x < Mg2Si.nscf.in > Mg2Si.nscf.out
BoltzTraPの実行
BoltzTraP に渡すためのファイルを作成します。最初にnscf計算の結果からフェルミエネルギーを読み出します。
grep "Fermi" Mg2Si.nscf.out
つぎに qe2boltz.py を用いて BoltzTraP に与えるバンド構造の数値データや計算の設定ファイルを作成します。
qe2boltz.py Mg2Si pw 4.5310 0
4.5310の部分は、先ほど読みだしたフェルミエネルギーの値です。
これを走らせると Mg2Si.intrans や Mg2Si.energy が出力されます。
Mg2Si.intrans が BoltzTraP に与える計算の設定が書かれたファイルなので、適宜編集します。
emacs -nw Mg2Si.intrans
編集したら以下のように BoltzTraP を実行します。
x_trans BoltzTraP
300Kのデータのプロット
色々なファイルが出力されますが、もっとも重要なのは Mg2Si.trace です。
開いてみると1列目にエネルギー(フェルミエネルギーと書いてありますが、ただのエネルギーだと思います、状態密度の横軸とおなじ意味での)、2列目に温度、3列目以降に色々な物性が出力されており、今回の目的のゼーベック係数は5列目にあります。
今回は300Kにおけるゼーベック係数をエネルギーの関数としてプロットしてみます。そのままだとプロットしにくいので300Kのデータだけ抜き出します。
awk '{if($2 == 300){print $0}}' Mg2Si.trace > 300K.txt
こうして得られたデータをプロットするためのgnuplot用のpltファイルを下記のように準備しました。
set terminal pngcairo size 520,390
set output "300K.png"
set ylabel "Seebeck coefficient (uV/K)"
set title "Seebeck coefficient of Mg2Si at 300 K"
set xlabel "Energy (eV)"
set xrange [-2:2]
plot "300K.txt" u (($1-0.334102802189)*13.6058):($5*1E6) w l not
関連エントリ
参考URL
参考文献/使用機器
フィードバック

↑ 電子工作ブログランキング参加中です。1クリックお願いします。
コメント・トラックバックも歓迎です。 ↓
↓ この記事が面白かった方は「拍手」をお願いします。