アルミニウム †
この例ではバンド構造の計算方法を記述する。以下は5.6.3以降で有効である。
SCF計算 †
- 入力ファイル: nfinp_scf
0 0 0 0 0 0 : I_CTRL(1:6) (DUMMY)
4.00 8.00 1 1 1 : GMAX GMAXP NTYP NATM NATM2
221 2 : NUM_SPACE_GROUP TYPE
7.60 7.60 7.60 90.00 90.00 90.00 : A B C ALPHA BETA GAMMA
06 06 06 1 1 1 : N1 N2 N3 M1 M2 M3
0 0 : NCORD, NINV
0.00 0.00 0.00 1 0 1 : CPS(1,1:3) IWEI IMDTYP ITYP
13 0.50 26.98 6 1 0.2 : IATOMN ALFA AMION ILOC IVAN
0 0 0 0 0 : ICOND INIPOS INIVEL ININOS INIACC
0 1 : IPRE IPRI
30 30 0 84200.00 0 : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
6 1 : WAY_MIX MIX_WHAT
0 20 0.60 : ITER_START KBXMIX MIX_ALPHA
0.20 0.30 0.20 0.20 0.20 : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
300.00 4 1 0.50D-09 : DTIO IMDALG IEXPL EDELTA
-0.0020 0.50D+03 0 : WIDTH FORCCR ISTRESS
ggapbe 1 : XCTYPE KSPIN
2.00 : DESTM
101 : NBZTYPE
4 4 4 : NKX NKY NKZ (DUMMY)
4 4 4 : NKX2 NKY2 NKZ2 (DUMMY)
6 : KEG
1 : NEXTST
0 : (DUMMY)
2 : IMSD
0 : EVALUATE_EKO_DIFF
0 : NPDOSAO
0 0.000 : SM_N DOPPING (DUMMY)
STATEを実行し、電荷密度を得る。
mpirun -np 4 ./STATE < nfinp_scf > nfout_scf
バンド計算 †
- 入力ファイル (nfinp_band)
0 0 0 0 0 0 : I_CTRL(1:6) (DUMMY)
4.00 8.00 1 1 1 : GMAX GMAXP NTYP NATM NATM2
221 2 : NUM_SPACE_GROUP TYPE
7.60 7.60 7.60 90.00 90.00 90.00 : A B C ALPHA BETA GAMMA
06 06 06 1 1 1 : N1 N2 N3 M1 M2 M3
0 0 : NCORD, NINV
0.00 0.00 0.00 1 0 1 : CPS(1,1:3) IWEI IMDTYP ITYP
13 0.50 26.98 6 1 0.2 : IATOMN ALFA AMION ILOC IVAN
22 0 0 0 0 : ICOND INIPOS INIVEL ININOS INIACC
0 1 : IPRE IPRI
30 30 0 84200.00 0 : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
6 1 : WAY_MIX MIX_WHAT
0 20 0.60 : ITER_START KBXMIX MIX_ALPHA
0.20 0.30 0.20 0.20 0.20 : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
300.00 4 1 0.50D-09 : DTIO IMDALG IEXPL EDELTA
-0.0020 0.50D+03 0 : WIDTH FORCCR ISTRESS
ggapbe 1 : XCTYPE KSPIN
2.00 : DESTM
101 : NBZTYPE
4 4 4 : NKX NKY NKZ (DUMMY)
4 4 4 : NKX2 NKY2 NKZ2 (DUMMY)
6 : KEG
1 : NEXTST
0 : (DUMMY)
2 : IMSD
0 : EVALUATE_EKO_DIFF
0 : NPDOSAO
0 0.000 : SM_N DOPPING (DUMMY)
&KPOINTS_BAND
NKSEG 4
KMESH 40 20 20 20
KPOINTS
0.000 0.000 0.000
0.000 0.500 0.500
0.250 0.500 0.750
0.500 0.500 0.500
0.000 0.000 0.000
&END
バンド計算を行うためには
を指定し、&KPOINTS_BAND...&ENDで以下のパラメータを設定する。
- NKSEG: バンドを計算するブリルアンゾーン中の高対称線(セグメント)の数
- KMESH: 各セグメントでのメッシュ (KMESHの和+1が計算されるk点の合計数)
- KPOINTS: このキーワード以下にNKSEG+1の高対称点を指定。今の例では
(0,0,0) -> (0,/1/2,1/2) -> (1/4,1/2,3/4) -> (1/2,1/2,1/2) -> (0,0,0)
に沿ってバンド構造が計算される。ここでk点は基本逆格子ベクトルを単位に入力する。カーテシアン座標で入力する場合はKPOINTSの代わりにKPOINTS CARTESIANを指定する。
上の入力ファイルを使いSTATEを実行することでnon-selfconsistent計算を実行する。
mpirun -np 4 ./STATE < nfinp_band > nfout_band
入力ファイルで指定されたk点上での固有値がenergy.dataに出力される。
energy.dataの可視化を容易にするためにフォーマットを変更する。ここではutil/bandutil/energy2bandを利用する。コマンドパスが指定されていると仮定し
energy2band
を実行。あるいは
${HOME}/STATE/src/state/util/bandutil/src/energy2band
フェルミエネルギー、k点の数、バンドの数、プロットするバンドの数を聞かれるので、逐次入力することでband.dataが得られる。これをgnuplotあるいはxmgraceを用いて可視化すると以下のようになる。例えば
$ gnuplot
$ > plot 'band.data'
図は添付のスクリプトを実行することで作成した。