* アルミニウム [#tf4cfc82]
この例ではバンド構造の計算方法を記述する。以下は5.6.3以降で有効である。
** SCF計算 [#bf196ac3]
- 入力ファイル: 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

**バンド計算 [#wd40d5bf]
- 入力ファイル (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

バンド計算を行うためには
- ICOND=22

を指定し、&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を用いて可視化すると以下のようになる。図は添付のスクリプトを実行することで作成した。
フェルミエネルギー、k点の数、バンドの数、プロットするバンドの数を聞かれるので、逐次入力することでband.dataが得られる。これをgnuplotあるいはxmgraceを用いて可視化すると以下のようになる。例えば
 $ gnuplot
 $ > plot 'band.data'
図は添付のスクリプトを実行することで作成した。
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/band_Al.png,cener)
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS