PWscfでシリコンのバンド構造
セルフコンシステント計算
以下のようにシリコンの入力ファイルを作ります。
何らかの作成補助を使うとラクかもしれません(参考: PWscfの入力作成補助)。
今回は構造緩和を行うため
vc-relax
を利用しました。xtl2pw.pw Si.xtl vc-relax 1
このままだと単位胞に原子を8個含む単純立方格子なので、ブラベ格子を fcc (ibrav=2)にして ATOMIC_POSITIONS もそれに倣うように編集し、これを走らせます。
mpirun -np 4 pw.x < Si.relax.in | tee Si.relax.out
&control
calculation='vc-relax' ,
restart_mode='from_scratch' ,
prefix='Si' ,
outdir = './Si/' ,
wfcdir = './Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 2 ,
celldm(1) = 10.26221441
nat = 2 ,
ntyp = 1 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
/
&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
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Si 0.000000 0.000000 0.000000 0 0 0
Si 0.250000 0.250000 0.250000 0 0 0
K_POINTS automatic
4 4 4 0 0 0
nscf計算
セルフコンシステント計算の入力ファイルをコピーして
nscf
計算の入力ファイルを作成します。cp Si.relax.in Si.nscf.in
その後、以下の点を編集します。
- calculation='bands'
- nbnd=12
- K_POINTS {crystal_b}
nbnd
はバンドの数です。省略すると価電子数の半分×原子の個数(Siの場合はnbnd=4)となります。そうすると、半導体の場合は、価電子帯のみが計算されることになるので、少し大きめに取っておくほうがいいと思います。今回は nbnd=12
としました。K_POINTS {crystal_b}
の後の L 20
とかは、バンド構造をプロットする特徴的なk点のパスです。最初の数字が特徴的なk点の数(だと思う)で、文字の後の数字が分割数(だと思う)です。LはL点、gGはΓ点で、この標記で使える点の名前は Doc/brillouin_zones.pdf を参照との事です。
mpirun -np 4 pw.x < Si.nscf.in | tee Si.nscf.out
なお nscf 計算用の入力ファイルの格子定数などは、構造緩和をする前の値のままですが、実際の nscf 計算では、ちゃんと構造緩和後の値を使ってくれます。
&control
calculation='bands' ,
restart_mode='from_scratch' ,
prefix='Si' ,
outdir = './Si/' ,
wfcdir = './Si/' ,
pseudo_dir = './' ,
disk_io='default' ,
forc_conv_thr= 0.001 ,
verbosity = 'default' ,
nstep = 100 ,
/
&system
ibrav= 2 ,
celldm(1) = 10.26221441
nat = 2 ,
ntyp = 1 ,
ecutwfc = 50.0 ,
ecutrho = 250.0 ,
nbnd = 12 ,
/
&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
Si 28.086 Si.pbe-n-kjpaw_psl.0.1.UPF
ATOMIC_POSITIONS crystal
Si 0.000000 0.000000 0.000000 0 0 0
Si 0.250000 0.250000 0.250000 0 0 0
K_POINTS {crystal_b}
5
L 20
gG 20
X 20
W 20
gG 20
プロット用データの出力
このまででバンド計算は完了しています。次に gnuplot でプロットしやすい形式に直します。
以下のように Si.band.in を用意します。
&bands
outdir = './Si/' ,
prefix='Si' ,
filband='Si.band' ,
lsym=.true.
/
実行ファイルは
bands.x
です。mpirun -np 4 bands.x < Si.band.in | tee Si.band.out
実行後に作成された Si.band.gnu が gnuplot 用の数値データです。
プロット
gnuplot でプロットするための plt ファイルとして以下のようなものを準備しました。
set terminal pngcairo size 520,390
set output "Si-band.png"
## *** Plot range ***
x1=0.8585
x2=1.8499
x3=2.3455
xmax=3.4539
set xrange [0:xmax]
set yrange [-15:10]
ef=5.9827
set xzeroaxis
set grid x
set ylabel "Energy (eV)"
set xtics ("{L}" 0, "{/Symbol G}" x1, "{X}" x2, "{W}" x3, "{/Symbol G}" xmax)
set x2tics ("{L}" 0, "{/Symbol G}" x1, "{X}" x2, "{W}" x3, "{/Symbol G}" xmax)
plot "Si.band.gnu" u 1:($2-ef) w lp not
特徴的なk点の座標は Si.band.out の中を見ると、以下のように書かれています。
high-symmetry point: 0.4957 0.4957 0.4957 x coordinate 0.0000
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.8585
high-symmetry point: 0.0000 0.9913 0.0000 x coordinate 1.8499
high-symmetry point: 0.4957 0.9913 0.0000 x coordinate 2.3455
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 3.4539
エネルギーの単位は eV のようです。
Too many bands... と言われる場合
バンド計算をすると
Too many bands are not converged from nscf calculation
というメッセージが出て計算が止まることがあります。Google 検索をすると対策として下記の[Pw_forum] Too many bands are not converged from nscf calculationがヒットします。Hi,Zhiting Tian
"Too many bands are not converged" can be solved for two way:
1.increase ecutwfc
2.decrease conv_thr
or both do them.
Best
Regards
--
Yun Song,Kang
Physical Science and Technology of Inner Mongolia University.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.democritos.it/pipermail/pw_forum/attachments/20110926/8f5f3309/attachment.htm
ここに書かれている通り ecutwf を大きくするか、conv_thr を小さくすると計算できるようになります。
関連エントリ
参考URL
参考文献/使用機器
フィードバック

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