AkaiKKRでバンド構造(分散関係)

最新版(August 26, 2015)のAkaiKKR(machikaneyama)でバンド構造が簡単に描ける機能が追加されました。そのまま外部向けの文章(プレゼンテーションや論文など)に使うにはそっけないですが、計算の確認には便利です。

002_20150912192936f79.png

003_2015091219293582c.png
Fig.1-2: 面心立方構造(fcc)のNi90Fe10合金のバンド構造(upスピンとdownスピン)


今回は、この機能の使い方について書きます。


バンド構造計算の新機能


AkaiKKR(machikaneyama)では、バンド構造をプロットする代わりに、ブロッホスペクトル関数をプロットします。これまでもこの方法でバンド構造を描くことが可能でしたが、ブロッホスペクトル関数を計算するk点のパスを「全て」手動で設定しなければならなかったり、描画のためのgnuplotのスクリプトを自分で書かなければならなかったりと、不便がありました。(参考:AkaiKKRで不規則NiMn合金の分散関係AkaiKKRでSrTiO3ペロフスカイト)

August 26, 2015版のcpa2002v009cでは、これらの手間が随分と軽減される機能が新たに実装されました。この機能に関しては付属のReleaseNoteV009cに以下のように書かれています。(タイポと考えられる点は勝手に修正してあります。)

Another new feature provided by this version is the "spc" program that plots a dispersion relation (or broadened dispersion/Bloch spectrum function for alloy cases) if gnuplot is installed. If "spc" is specified instead of "go", then the program create data/file_up.spc and data/file_dn.spc, where data/file is the file specified as a data file in the input. Using the command

spc data/file_up.spc

will plot the dispersion on a gnuplot window. In the input data some additonal data specifying the symmetry points are needed in addition to the number of k-points that will be plotted.
For example, input data like

spc data/nife
fcc 6.65 , , , , , ,
0.001 1.0 nrl mjw mag 2nd
update 4 50 0.03
1
NiFe 2 1 0.0 2 26 40
28 60
1
0 0 0 NiFe
c------- below needed only for "spc" cases
c---number of k-point used for the plot
300
c--- W-point
1 0.5 0
c--- L-point
0.5 0.5 0.5
c--- Gamma-point
0 0 0
c--- X-point
1 0 0
c--- W-point
1 0.5 0
c--- K-point
0.75 0.75 0

will create data/nife_up.spc and data/nife_dn.spc.
Then

spc data/nife_up.spc
spc data/nife_dn.spc

plot the broadend dispersion curves for spin up and down states of Ni60Fe40 disorderd alloy along the W-L-Gamma-X-W-K symmetry lines using 300 k-points. To create the "spc" command, just type

make spc

This is a similar procedure to obtain "gdp" command that plot the DOS curve on a gnuplot window using "make gdp".


かなりいい加減な意訳をすると、以下のような感じでしょうか。

このバージョンのもう一つの新機能は"spc"というプログラムです。これはgnuplotがインストールされていれば、分散関係(合金の場合はにじんだ分散/ブロッホスペクトル関数)をプロットします。"go"の代わりに"spc"を指定することにより、specxプログラムはdata/file_up.spcとdata/file_dn.spcを作成します。ここでdata/fileは入力ファイルで指定されたデータファイルです。以下のコマンドを利用してgnuplotのウインドウ上に分散関係をプロットすることができます。

spc data/file_up.spc

入力ファイルには、通常の計算に加えていくつかのデータが必要になります。プロットする対称性の高いk点とその分割数です。
例えば、入力ファイルは以下のようになります。

spc data/nife
fcc 6.65 , , , , , ,
0.001 1.0 nrl mjw mag 2nd
update 4 50 0.03
1
NiFe 2 1 0.0 2 26 40
28 60
1
0 0 0 NiFe
c------- below needed only for "spc" cases
c---number of k-point used for the plot
300
c--- W-point
1 0.5 0
c--- L-point
0.5 0.5 0.5
c--- Gamma-point
0 0 0
c--- X-point
1 0 0
c--- W-point
1 0.5 0
c--- K-point
0.75 0.75 0

これはdata/nife_up.spcとdata/nife_dn.spcを作成します。

次に以下のコマンドを実行します。
spc data/nife_up.spc
spc data/nife_dn.spc

するとNi60Fe40合金のアップスピンとダウンスピンのにじんだ分散関係をW-L-Γ-X-W-Kの経路を300個のk点でプロットします。

表示のための"spc"実行ファイルを作成するには、以下のように端末に入力します。

make spc

これは状態密度曲線をgnuplotで表示する実行ファイル"gpd"を作成するために実行するmake gpdの手続きと同様です。


もはや上記の通りなのですがNi90Fe10合金のバンド構造を計算しています。

表示用プログラムspcのコンパイル


第一原理計算を実行する前に、結果をプロットするための実行ファイルをコンパイルします。コンパイラはifortでもgfortranでもコンパイル可能です。specxを作成したときと同様にAkaiKKRのインストールディレクトリに移動してmakeを利用します。

make spc

これで実行ファイルspcが作成されるはずです。

ポテンシャルファイルの作成


状態密度の計算と同様に、あらかじめgo計算を収束せてポテンシャルファイルを作成しておく必要があります。

./specx < in/nife


この際の入力ファイルは、AkaiKKRのインストールディレクトリにあるin/nifeを利用しました。

c--------------------NiFe------------------------------------
go data/nife
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 6.65 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.0 nrl mjw mag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 50 0.03
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
NiFe 2 1 0.0 2
28 90
26 10
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 NiFe
c------------------------------------------------------------


maxitr=50だとerr=-6まで達するのに2回ぐらい実行する必要があると思います。(参考:AkaiKKRでテスト計算)

バンド構造の計算


次にバンド構造を計算するための入力ファイルを作成します。
以下の内容のファイルをin/nife-spcとして保存しました。

c--------------------NiFe------------------------------------
spc data/nife
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 6.65 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.0 nrl mjw mag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 50 0.03
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
NiFe 2 1 0.0 2
28 90
26 10
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 NiFe
c------------------------------------------------------------
c------- below needed only for "spc" cases
c---number of k-point used for the plot
300
c--- W-point
1 0.5 0
c--- L-point
0.5 0.5 0.5
c--- Gamma-point
0 0 0
c--- X-point
1 0 0
c--- W-point
1 0.5 0
c--- K-point
0.75 0.75 0


go計算用の入力ファイルからの変更点はgoをspcにしたことと、ファイルの末尾にk点の分割数と計算するパスの対称性の高い点の座標を追加したことです。

これをspecxへ渡して.spcファイルを作成します。

./specx < in/nife-spc

するとdata/nife_up.spcとdata/nife_dn.spcが作成されます。
これらをそれぞれ実行ファイルspcへ渡せば、バンド構造が表示されます。

./spc data/nife_up.spc


補足


AkaiKKR(machikaneyama)のバージョンは、現在cpa2002v009cですが、この同じ名前のバージョンの中で頻繁に更新がされています。そんなわけで、バージョン名の代わりに公開された日付で、バージョンの違いを表しています。今回の記事ではAugust 26, 2015のバージョンを使って計算しています。

ブロッホスペクトル関数の計算における、入力ファイルと出力結果のフォーマットは、バージョンごとによく変更されるようです。今回の更新の前もAkaiKKRで不規則NiMn合金の分散関係のエントリを書いていた時期とAkaiKKRでSrTiO3ペロフスカイトのエントリを書いていた時期では出力のフォーマットが異なります。

今後、ねがてぃぶろぐでどのバージョンを使うかは、悩ましい問題ではありますが、おそらく今回(August 26, 2015)のバージョンよりも前の古いフォーマットのものを使い続けることになると思います。その理由は、AkaiKKRで銅と銅亜鉛合金のフェルミ面のような計算をする際に、任意のk点でブロッホスペクトル関数を指定できると便利だからです。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。


tag: AkaiKKR machikaneyama KKR CPA 分散関係 バンド構造 不規則合金 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性OPアンプPICCPAecaljモンテカルロ解析常微分方程式odeトランジスタ状態密度DOSインターフェース定電流PDS5022スイッチング回路半導体シェルスクリプト乱数レベルシフト分散関係HP6632AI2C可変抵抗トランジスタ技術ブレッドボード温度解析R6452A反強磁性確率論バンドギャップセミナー数値積分熱設計非線形方程式ソルババンド構造絶縁偏微分方程式ISO-I2CLM358マフィンティン半径フォトカプラシュミットトリガカオスLED三端子レギュレータGW近似A/Dコンバータ発振回路PC817C直流動作点解析USBTL431数値微分アナログスイッチカレントミラー74HC4053サーボ量子力学単振り子チョッパアンプ補間2ちゃんねる開発環境bzqltyFFT電子負荷LDAイジング模型BSch基本並進ベクトルブラべ格子パラメトリック解析標準ロジックアセンブラ繰り返し六方最密充填構造SMPコバルトewidthFET仮想結晶近似QSGW不規則合金VCAMaximaGGA熱伝導cygwinスレーターポーリング曲線キュリー温度スイッチト・キャパシタ失敗談ランダムウォークgfortran抵抗相対論位相図スピン軌道相互作用VESTA状態方程式TLP621ラプラス方程式TLP552条件分岐NE555LM555TLP521マントル詰め回路MCUテスタFXA-7020ZR三角波過渡解析ガイガー管自動計測QNAPUPSWriter509ダイヤモンドデータロガー格子比熱熱力学起電力awkブラウン運動スーパーセルUbuntu差し込みグラフ第一原理計算フェルミ面fsolveCIFxcrysden最大値最小値ubuntu最適化平均場近似OpenMP井戸型ポテンシャル固有値問題シュレディンガー方程式TeX2SC1815結晶磁気異方性OPA2277フラクタルFSM固定スピンモーメントc/a非線型方程式ソルバgnuplot全エネルギーfcc初期値マンデルブロ集合縮退正規分布interp1ウィグナーザイツ胞L10構造multiplotフィルタ面心立方構造PGAハーフメタル二相共存ZnOウルツ鉱構造BaOSIC重積分磁気モーメント電荷密度化学反応クーロン散乱岩塩構造CapSenseノコギリ波デバイ模型キーボード半金属フォノンquantumESPRESSOルチル構造スワップ領域リジッドバンド模型edelt合金Realforce軸ラベルグラフの分割凡例線種シンボルMAS830LCK1026LMC662PIC16F785トランス関数フィッティングトラックボールPC等価回路モデルヒストグラムパラメータ・モデル不規則局所モーメント最小二乗法TS-112TS-110直流解析ExcelGimp円周率片対数グラフ両対数グラフspecx.f疎行列三次元ifort文字列不純物問題P-10等高線ジバニャン方程式ヒストグラム確率論マテリアルデザイン入出力境界条件陰解法AACircuit熱拡散方程式HiLAPWMBEEAGLE連立一次方程式ナイキスト線図負帰還安定性Crank-Nicolson法日本語

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ