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カウンター
カテゴリ
ユーザータグ

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

最新コメント
リンク

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