バンド分散は次の2つの段階を経由して、計算されます。
(1) SCF計算
ダイヤモンド構造の炭素を例として、バンド分散の計算方法を説明します。 「work」ディレクトリ内のファイル「Cdia.dat」には、原子の座標、単位胞ベクトル および「scf.Kgrid」が次のように指定されています。
Atoms.Number 2 Atoms.SpeciesAndCoordinates.Unit Ang # Ang|AU <Atoms.SpeciesAndCoordinates 1 C 0.000 0.000 0.000 2.0 2.0 2 C 0.890 0.890 0.890 2.0 2.0 Atoms.SpeciesAndCoordinates> Atoms.UnitVectors.Unit Ang # Ang|AU <Atoms.UnitVectors 1.7800 1.7800 0.0000 1.7800 0.0000 1.7800 0.0000 1.7800 1.7800 Atoms.UnitVectors> scf.Kgrid 7 7 7 # means n1 x n2 x n3
バンド分散の単位胞ベクトルとバンド分散を計算するためのk点の経路は次の書式で与えられます。
Band.dispersion on # on|off, default=off <Band.KPath.UnitCell 3.56 0.00 0.00 0.00 3.56 0.00 0.00 0.00 3.56 Band.KPath.UnitCell> Band.Nkpath 5 <Band.kpath 15 0.0 0.0 0.0 1.0 0.0 0.0 g X 15 1.0 0.0 0.0 1.0 0.5 0.0 X W 15 1.0 0.5 0.0 0.5 0.5 0.5 W L 15 0.5 0.5 0.5 0.0 0.0 0.0 L g 15 0.0 0.0 0.0 1.0 0.0 0.0 g X Band.kpath>
次にOpenMXを以下の様に、通常実行します。
% ./openmx Cdia.datここでは単一コアを使用した計算例を示しましたが、もちろん並列計算も実行可能です。 この実行が正常に終了すると、「work」ディレクトリに「cdia.Band」というファイルが生成されます。 キーワード「Band.KPath.UnitCell」が存在する場合には この単位胞ベクトルを用いてk点経路の指定における逆格子ベクトル基底が計算されます。 もしこのキーワード「Band.KPath.UnitCell」が指定されない場合には、「Atoms.UnitVectors」による 単位胞ベクトルを用いて逆格子ベクトルを計算し、その目的に使用されます。
「source」ディレクトリに「bandgnu13.c」というファイルがあります。このファイルを次のようにしてコンパイルします。
% gcc bandgnu13.c -lm -o bandgnu13コンパイルが正常に終了すると、「source」ディレクトリに実行可能なファイル「bandgnu13」が生成します。 このファイルを「work」ディレクトリにコピーして下さい。 実行ファイル「bandgnu13」を使い、次のコマンドを実行することにより、ファイル「cdia.Band」はgnuplot形式に変換されます。
% ./bandgnu13 cdia.Bandこれで、「cdia.GNUBAND」、「cdia.BANDDAT1」(および「cdia.BANDDAT2」)の2または3個のファイルが生成されます。 ファイル「cdia.GNUBAND」はgnuplotのスクリプトであり、アップとダウンのスピン状態のデータファイル(それぞれ「cdia.BANDDAT1」および「cdiaBANDDAT2」)を 読み込むためのファイルです。 もし「LSDA-CA」、「LSDA-PW」、「GGA-PBE」のいずれかを用いるスピン分極計算を行った場合には、「*.BANDDAT1」に加えて ダウンスピン状態の「*.BANDDAT2」が生成されます。 ファイル「cdia.GNUBAND」は次のコマンドにより、gnuplotを使ってプロットすることができます。
% gnuplot cdia.GNUBAND図12はここで説明した方法で計算した炭素ダイヤモンドのバンド分散を示しています。 「cdia.GNUBAND」内のy軸の範囲は変更されています。 化学ポテンシャルがエネルギーの原点となるように自動的に移動されていますので、注意して下さい。 化学ポテンシャルの具体的な値は、「cdia.out」中に記載されています。
逆格子の基底ベクトルを適切に選ぶと、バンド分散の計算においてk点の指定が容易になります。 バンド分散の計算で使用する単位胞ベクトルを新たに設定する場合には、 「Band.KPath.UnitCell」キーワード」を用いて、 下記の例のように指定します。
<Band.KPath.UnitCell 3.56 0.0 0.0 0.0 3.56 0.0 0.0 0.0 3.56 Band.KPath.UnitCell>記述は「Band.KPath.UnitCell」で開始し、「Band.KPath.UnitCell」で終了します。 「Band.KPath.UnitCell」キーワードの記述がある場合、同キーワードで指定した単位胞ベクトルからバンド分散の 計算に使用する逆格子基底ベクトルを算出します。 「Band.KPath.UnitCell」を指定しない場合には、「Atoms.UnitVectors」キーワードで指定した単位胞ベクトルから 計算した逆格子ベクトルが基底として使用されます。面心立方格子構造 (fcc)や体心立方格子構造(bcc)の場合には 「Band.KPath.UnitCell」キーワードで逆格子ベクトルを再定義した方が、特殊k点の指定が容易です。