スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


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

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

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。