AkaiKKRでfccNiMnの磁性と格子定数

AkaiKKR(machikaneyama)を用いて面心立方構造(fcc)の不規則NixMn100-x合金の計算を強磁性状態、反強磁性状態、非磁性状態について行いました。その結果、最安定な磁気状態や格子定数の組成依存性が実験結果を(少なくとも定性的には)再現できました。

fccNiMn.gif

Fig.1: fcc NixMn100-x不規則合金の全エネルギーと自発磁化



強磁性・反強磁性転移


志賀正幸著磁性入門―スピンから磁石まで (材料学シリーズ)工学と理学のはざまで - インバー研究の流れ -などに、不規則fccNiMn合金の格子定数と磁性の関係が議論されています。

以下に示すFig.2は工学と理学のはざまで - インバー研究の流れ -から引用したNi-Mn系の実験から得られている格子定数と磁気モーメントです。右端の純ニッケルでは 0.6 μB の磁気モーメントを持つ強磁性体ですが、マンガン濃度が増していく(ニッケル濃度が減っていく)とNi70Mn30よりマンガン側で自発磁化がなくなります。
これは、合金が非磁性になるのではなく、局所モーメントを持ったまま反強磁性体になるからであると書かれています。つまり、この系では(L12型規則相のNi3Mnを除けば)結晶構造が面心立方構造(fcc)から変化せず、格子定数と磁性だけが変化することになります。

NiMn.png

Fig.2: fcc NiMn合金の格子定数とバルクの磁気モーメント 工学と理学のはざまで - インバー研究の流れ -より


AkaiKKRでγ-Mnの反強磁性ではL10型に似た単純な反強磁性の第一原理計算をAkaiKKR(machikaneyama)を用いて行いました。今回は、この単純な反強磁性を仮定してfcc NixMn100-xの計算を行いました。

計算方法


基本的にはAkaiKKRでγ-Mnの反強磁性のときの入力ファイルをコヒーレントポテンシャル近似(CPA)を用いた合金の計算に拡張するだけです。強磁性初期ポテンシャルから、反強磁性初期ポテンシャルをつくるのには、他のパターンもあるのかもしれませんが、1種類だけを考えました。

今回もこれまで同様、強磁性、反強磁性、非磁性の入力ファイルのテンプレートを作成しておいて、格子定数と原子の濃度をパラメータとして変化させながら計算させるシェルスクリプトを作成しました。反強磁性状態の初期ポテンシャルは、強磁性状態のポテンシャルから作成しました(参考:AkaiKKRで反強磁性クロム)。以下に示すのは反強磁性状態の入力ファイルのテンプレートです。

c-----------------------L10fccMn-----------------------------
go data/L10fccNiMn_XINI_AFM_ABOHR
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
bso ABOHR , 1 , 1 , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.2 sra gga91 mag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 8 500 0.023
c------------------------------------------------------------
c ntyp
2
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
NiMn1 2 1 0.0 2 28 XINI
25 XIMN
NiMn2 2 1 0.0 2 28 XINI
25 XIMN
c------------------------------------------------------------
c natm
2
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 NiMn1
1/2 0 1/2 NiMn2
c------------------------------------------------------------


計算結果と議論


冒頭のgif動画は、結果の全磁気モーメント(自発磁化)と全エネルギーを格子定数ごとにプロットしたものです。
赤が反強磁性の初期ポテンシャルから計算した結果です。反強磁性状態が保たれているか、あるいは非磁性状態になっている場合は、全磁気モーメントはゼロになります。こうニッケル濃度側では、有限の自発磁化を持ってしまい、初期ポテンシャルを反強磁性にしても強磁性の解が得られています。

同様に、緑の線で示したのが強磁性初期ポテンシャルから計算したものです。格子定数が小さくなると磁気モーメントがなくなり、非磁性になっているのが分かります。

青はスピン分極を含まない、非磁性の計算で磁気モーメントは常にゼロです。

グラフの下のパネルは、全エネルギーの比較です。
縦軸に数値は振っていませんが、同じ化学組成で相対的な比較ができるようにスケーリングしてあります。

fccNi0Mn100.png

Fig.3: fcc Mnの全エネルギーと磁気モーメント


例えば純マンガンの場合は、反強磁性状態が最安定で、格子定数は a=6.9 Bohr 付近であることが分かります。
強磁性状態と非磁性状態の比較を行うと a=7.1 Bohr 以下では強磁性が消えて、2つの計算は同じ結果を示すことがわかります。高体積側では強磁性状態に極小値がありそうです。

fccNi60Mn40.png

Fig.4: fcc Ni60Mn40の全エネルギーと磁気モーメント


ニッケル濃度を上げて行くと、強磁性状態の全エネルギーが相対的に下がっていきます。Ni60Mn40まで行くと、非磁性状態よりも強磁性状態のほうが安定になりますが、まだ反強磁性が最安定です。

fccNi75Mn25.png

Fig.5: fcc Ni75Mn25の全エネルギーと磁気モーメント


Ni75Mn25から反強磁性初期ポテンシャルの計算でも、正味の磁化が出てくるようです。強磁性計算との全エネルギー差はほとんどないのですが、磁気モーメントには違いがあるので、これらは別の解であるといえます。

fccNi85Mn15.png

Fig.6: fcc Ni85Mn15の全エネルギーと磁気モーメント


Ni85Mn15では、強磁性初期ポテンシャルの計算結果が最低エネルギー状態となります。
全エネルギーの差が小さいので、本当はどちらの磁気構造が安定なのかは微妙な議論になりますが。

次に平衡格子定数についてみてみます。
ニッケル濃度が薄い側からNi50Mn50程度までは、格子定数にほとんど変化が見られないように思います。
それよりも高濃度では、強磁性状態が安定になる前であっても低体積側へ最低エネルギーが移動しているように見えます。

これらの結果を好意的に捉えるなら、Fig.2に示した実験結果をかなりよく再現しているように思えます。

例えば、実験結果では、純ニッケルからマンガン濃度を増していったときには、自発磁化が大きくなっていき、Ni90Mn10付近で最大値をとり、その後、減少していきNi90Mn10付近で自発磁化が消滅します。
このことを踏まえて、計算結果を見てみます。強磁性初期ポテンシャルの計算だけを見ると、純ニッケルからマンガン濃度を増していくにつれて、自発磁化は単純に大きくなっていきます。しかしながら、反強磁性初期ポテンシャルの計算を見ると、単純な強磁性状態とは異なる自発磁化を持った解が得られる組成領域が存在していることが分かります。そしてその解は、本当に微妙な議論ですが、単純な強磁性初期ポテンシャルの結果よりもエネルギー的に安定な領域があってもよさそうです。
このあたりは微妙な議論なので、どの程度本当の物理を再現できているのかは難しいと思います。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR CPA 強磁性 反強磁性 

AkaiKKRのspc計算の入出力フォーマット

AkaiKKR(machikaneyama)は26 August 2015からブロッホスペクトル関数の入出力形式が変更されました。
簡単にバンド図が描けるようになり便利なのですが、一方で、これまでのほうが便利だったケースもありえます。
今回は、これを22 May 2015のバージョンと同じフォーマットに戻す方法について書きます。

入力フォーマットは source/spmain.f でサブルーチン readk を呼び出す際の引数 iread を1に指定します。
出力フォーマットは source/spmain.f でサブルーチン wrtspc を呼び出している行をコメントアウトしてしまい、代わりに22 May 2015で出力をしている部分のソースコードをコピペします。


AkaiKKRのブロッホスペクトル関数


AkaiKKR(machikaneyama)は通常のバンド図を出力する代わりにブロッホスペクトル関数を出力します。cpa2002v009cの22 May 2015までは、計算するk点をすべて手動で入力しなければなりませんでした。そのためAkaiKKRでSrTiO3ペロフスカイトなどではgnuplotでバンド構造をプロットするための補助的なScilabスクリプトを使っています。

これに対して26 Augst 2015では、他の一般的なDFTパッケージで見られるように、特徴的なk点の座標とその分割数を指定することで、バンド図を描くことができるようになりました(参考: AkaiKKRでバンド構造(分散関係))。

便利になった反面、特徴的なk点をつなぐパスに沿った計算以外を行う場合、例えばAkaiKKRで銅と銅亜鉛合金のフェルミ面のような計算はやりにくくなりました。また、それ以外にもこれまで書いたスクリプトを再利用するのにも不便です。
そんな折、26 August 2015のソースコードを編集して、以前の入出力形式に戻す方法を教えていただいたので、今回は、この方法についてまとめます。

入力ファイルの形式


spc計算のためのk点指定方法は source/spmain.f の382行目(ぐらい)にある call readk(vkp,coa,boa,nk1,nk3,nk3x,nkmx,kcrt,25,kblst,korder,3) の最後の引数の3を変更することで変えることができます。引数は1, 2, 3の三種類から選ぶことができ、その内容はsource/readk.fのコメントに書かれています。
c-----------------------------------------------------------------------
c This program read-in the k-points according either format (a),
c (b) or (c).
c
c (a) simply input all the k-point to be calculated.
c
c (b) input k-point corresponding to the Gamma, K, M, etc., with
c the number of devision of the k-mesh between that point and
c the previous point. For example, input data such as
c 0.0 0.0 0.0 0
c 1.0 0.0 0.0 50
c
c means that the line connecting (0, 0, 0) and (1, 0, 0)
c is divided into 50 pieces, and on each grid points
c including both endpoints the Bloch spectrum function
c will be calculated.
c
c (c) input k-point corresponding to the Gamma, K, M, etc., with
c the total number of k-point to be used as the first data.
c For example, input data such as
c 101
c 0.0 0.0 0.0
c 1.0 0.0 0.0
c 1.0 0.5 0.0
c
c means that the line connecting (0, 0, 0), (1, 0, 0), and
c (1, 0.5, 0) is divided into more or less equidistant 100
c pieces, and on each grid points including both endpoints
c the Bloch spectrum function will be calculated.
c
c In all formats, data will be read-in untill any data that
c do not follow the above format be met. Which format should be
c adopted is controled by a parameter iread. If iread=1,
c format (a), iread=2 for (b), and iread=3 for (c)
c All the data shoulbe be given in the unit of 2pi*(1/a, 1/b, 1/c),
c i.e. actual k vector is 2pi*(kx/a, ky/b, kz/c), where a, b, c
c are the lattice constant along x, y, and z direction.
c
c Coded by H. Akai, 4 June 2015, Tokyo
c-----------------------------------------------------------------------

今回は、すべてのk点を手動で指定する(a)に戻すので、最後の引数である iread の3を1に変更します。
c     call readk(vkp,coa,boa,nk1,nk3,nk3x,nkmx,kcrt,25,kblst,korder,3)
call readk(vkp,coa,boa,nk1,nk3,nk3x,nkmx,kcrt,25,kblst,korder,1)


出力ファイルの形式


出力形式の指定は source/wrtspc.f の中で行われますが source/readk.f ほどには、整備されていないようです。このsource/readk.fが追加されたのは26 August 2015からで22 May 2015の段階では、まだsource/wrtspc.fは作成されておらずファイルの出力も source/spmain.f の中で行われています。26 August 2015では wrtspcのサブルーチンは source/spmain.f の735行目(ぐらい)の call wrtspc(spctrl,is,e,mse,kcrt,kblst,nk3,ef) で呼び出されています。そこでこの呼び出しの部分をコメントアウトしてしまい、代わりに22 May 2015の source/spmain.f の else if(ids .eq. 4) then (748行目ぐらい)と endif (784行目ぐらい)の間をコピー&ペーストします。

こうすることによって26 August 2015を使いながら、ブロッホスペクトル関数の入出力を22 May 2015以前の形式にすることができます。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama 分散関係 

gnuplotのmultiplotのメモ

Windows版のgnuplot(wgnuplot)を使って、一つの図の中に複数のグラフを描画する際のmultiplotを利用するためのTIPについて書きます。
  • multiplotの中でterminalの変更はできない
  • replotは使えないのでplotですべてプロット。改行は,\
  • 横軸が共通のときはmarginで合わせる
  • xrangeをデフォルトへ戻すのはset xrange [*:*]
  • wgnuplot.exeのプロセスが残ってしまうなら unset multiplot の後に何でもいいからplot

001_2015101506141594f.png

Fig.1: AkaiKKRでγ-Mnの反強磁性の結果をmultiplotで一つのグラフにまとめたもの



gnuplotのmultiplot


gnuplotではmultiplotを利用して一枚の図の中に複数のグラフを描くことが可能です。この際にいくつか注意しなければならない点があります。今回は、それらのポイントを(最小限のものだけ)まとめました。multiplotの詳しい使い方は、米澤 進吾さんのホームページなどを参照されるのが良いと思います。

set terminal pngcairo enhanced color size 520,600
set output "fccMn.png"

## *** マルチプロットの開始 ***
set multiplot layout 2,1
set lmargin 8 # 左マージン
set rmargin 2 # 右マージン

## *** 磁気モーメントのプロット ***
set key left top # 凡例の位置
set yrange [0:4]
set xlabel "Lattice constant a (Bohr)"
set ylabel "Local spin moment ({/Symbol m}_B)"
plot 'fccMn-Moment.txt' u 1:4 w lp title "Non-mag",\
'fccMn-Moment.txt' u 1:3 w lp title "Ferro",\
'fccMn-Moment.txt' u 1:2 w lp title "Antiferro"

## *** 全エネルギーのプロット ***
set key right top
unset ytics
set yrange [*:*] # yの範囲をデフォルトに戻す
set xlabel "Lattice constant a (Bohr)"
set ylabel "Total Energy (arb. unit)"
plot 'fccMn-NMG.txt' u 1:2 w lp title "Non-mag",\
'fccMn-FMG.txt' u 1:2 w lp title "Ferro",\
'fccMn-AFM.txt' u 1:($2/2.0) w lp title "Antiferro"

## *** マルチプロットの終了 ***
unset multiplot

## *** 後処理 ***
# 何かプロットしておくとwgnuplot.exeのプロセスが残らない
set terminal windows
plot sin(x)


terminalの切り替え不可


multiplot環境下ではterminalの切り替えができません。
私はこれまでmultiplotを使わない状況では、windowsのterminalで画面上で描画を確認した後、terminalをpngcairo等に変更して画像出力をしていましたがmultiplotを使う場合は、最初からpngcairoやpostscriptなど画像出力用のterminalを指定して一発勝負にします。

一つのグラフにつき一回のplot


multiplot環境の中では、一回のplotに付きひとつのパネルが作成されます。
一つのパネルの中に複数の線を描きたい場合、一回のplotで行う必要があります。
plot 'fccMn-NMG.txt' u 1:2 w lp title "Non-mag",\
'fccMn-FMG.txt' u 1:2 w lp title "Ferro",\
'fccMn-AFM.txt' u 1:($2/2.0) w lp title "Antiferro"

この際に、改行を表す ,\ を利用します。

グラフの横位置を合わせる


複数のパネルが共通のx軸を持っている場合、位置がずれて見栄えが悪くなることがあります。
そういう場合は lmarginrmargin でマージンを設定します。
set lmargin 8
set rmargin 2


描画範囲のリセット


描画範囲を設定するときには set yrange [0:4] のように指定します。
これをデフォルトの設定に戻すには set yrange [*:*]のように指定します。
set xrange [*:*]
set yrange [*:*]

なんとなく unset を使いたくなりますが、こちらは間違いです。

wgnuplot.exeのプロセスが残ってしまう場合


私の環境(のうちのひとつ)では wgnuplot.exe のプロセスが残ってしまうことがあるようです。
multiplot環境を抜けた後、terminalをwindowsに切り替えて、何でも良いのでプロットするとプロセスが残りません。
set terminal windows
plot sin(x)

プロセスが残らないなら必要ないと思います。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


フィードバック



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

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


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


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

tag: gnuplot multiplot AkaiKKR machikaneyama 

AkaiKKRでコバルトの格子定数 その4

六方最密充填構造(hcp)の結晶はaとc/aの二つの格子定数を指定する必要があります。第一原理計算から、全エネルギーの最小化の条件からこれらのパラメータを決めることができます。
今回は、Equation of State and equilibrium configuration of hcp Titaniumで紹介されている準ニュートン法を使ってc/aの最適化を行うスクリプトを作成し、hcpコバルトの計算を行ってみました。


c/aの最適化


体心立方構造(bcc)や面心立方構造(fcc)など立方晶系の結晶は、格子定数が一種類しかないので、比較的簡単に格子定数の最適化が可能です。しかしながら、より対称性の低い構造の結晶の場合、変化させなければならない格子定数がたくさんになり大変になります。

ねがてぃぶろぐでは、これまでAkaiKKR(machikaneyama)を用いて六方最密充填構造(hcp)のコバルトに対して、以下の3つのエントリで格子定数の最適化を試みました。

その後、Equation of State and equilibrium configuration of hcp Titaniumというページを見つけたので、今回は同様のスクリプトを作成してみました。一連のエントリの名前の統一感が無くなってしまっていますが、今回はトータルで4回目という事で「その4」としました。

マフィンティン半径


AkaiKKRでコバルトのc/a その1, その2で書いた通りAkaiKKRはマフィンティン球近似を行っているので全エネルギーの比較をする際には、格子体積とマフィンティン球の体積の比を一定にしておく必要があります。そして、この条件を満たす範囲でMT半径をできるだけ大きく採るのが好ましいはずです。

具体的にはどのようにこの条件を満たすのがベストなのかはわかりませんが、今回はシェルスクリプトの中にあらかじめc/aの範囲が超えてはいけない上限と下限を与えておくことにしました。(ETA0とETA1)

準ニュートン法のスクリプトのアルゴリズム


E(η)の関係は、実際にはどのような関数の形をしているかわかりませんが、最適なη(≡c/a)で全エネルギーEが最小になる、下に凸の形をしているはずです。そこでE(η)の関係が(少なくともηの最適値の近くの比較的狭い範囲では)二次関数で近似できると仮定します。
Maximaで3点を通る放物線で書いた通り、独立な3点 (η1, E1), (η2, E2), (η3, E3)が分かっていれば、その3点を通る放物線を求めることができます。そこで、適当にηを3点ほど選んで、その時の全エネルギーの第一原理計算の結果から、エネルギーが最小になるηの値を推定することを考えます。

E(η)=a(η-ηmin)2+Emin

η(≡c/a)の初期値をηiniとしたときにE(ηini),E(0.99*ηini),E(1.01*ηini)の全エネルギーを計算したのち、放物線の頂点でもう一度第一原理計算を行うスクリプトを書きます。

コバルトのc/aの計算


作成したシェルスクリプトは qnewt_sh.txt で、入力ファイルのテンプレートは hcpCo_Template_in.txt です。
以下のようなディレクトリ構成とします。
hcpCo/─┬─analysis/
├─in/
├─out/
├─data/
├─template/─hcpCo_Template.in
└─qnewt.sh

このシェルスクリプトを格子体積を 150 Bohr3 c/aの初期値を 1.60 として実行してみました。
./qnewt.sh 150 1.60

すると次のような出力が表示されます。
1.60000000 -5573.7540546 -3.17105
1.58400000 -5573.7533001 3.15755
1.61600000 -5573.7544598 3.24135
Guess:
1.62701252 -5573.7545691 3.24756
Next:
./qnewt.sh 150 1.62701252

Guessの値が推定値です。
Nextの次の行に書かれている
./qnewt.sh 150 1.62701252

をコピペして実行すれば、今回の推定値を初期値として次の計算を開始することができます。
次の計算の結果は 1.62837316 がc/aの推定値となり、前回の値である 1.62701252 とほぼ同じ値です。更にもう一回やっても 1.62739097 となりこれ以上は改善しそうにありません。

この一連の計算の各ステップの推定値は analysis ディレクトリにファイルを作って出力するようになっています。
上記の例では analysis/hcpCo_150.txt というファイルが作成されているはずです。
1.62701252 -5573.7545691 3.24756
1.62837316 -5573.7545706 3.24800
1.62739097 -5573.7545698 3.24769


今回はhcp構造のc/aを決定するためにシェルスクリプトを作成しましたが、似たような方法で正方晶(tetragonal)のc/aを決めるためにも使えるでしょうし、格子定数が1種類しかない立方晶(cubic)なら平衡格子定数を決めるためにも使えると思います。
ただし(今回に限った話ではありませんが)注意しなければならない点として、シェルスクリプト自体は第一原理計算が正しく収束しているかを感知しません。したがってユーザー側が目視で確認を行う必要があります。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR c/a 強磁性 

AkaiKKRでバンドギャップの測り方

AkaiKKR(machikaneyama)にはバンドギャップの大きさを数値として出力する機能がないように思えます。そこでBlochスペクトル関数にローレンツ関数をフィッティングすることにより、ギャップのエネルギーを計算してみました。このような方法が、どの程度物理的に意味があるのかは、難しいところですが。

001_20150928230014732.png

Fig.1: AkaiKKRによるGaAsのバンド構造の計算結果。Γ点のバンドギャップはグラフから目視で読み取る限り0.6Ry程度。



バンドギャップを目視で読みだす


ecaljなどでは、バンドギャップの大きさが数値として出力される機能があります。しかしながらAkaiKKR(machikaneyama)にはバンドギャップの大きさを数値として出力する機能がないように思えます。もちろん状態密度やバンド図を描いて目視で読み取ることは可能です。例えばGaAsはΓ点にVBM(Valence Band Mzximum)とCBM(Conduction Band Minimum)を持つ直接遷移型の半導体です。Fig.1はAkaiKKRによって計算されたΓ点付近のバンド構造で VBM は -0.03 Ry あたり CBM は 0.05 Ry あたりにあるのでバンドギャップは約 0.08 Ry だと読み取ることができます。(なおこの場合のエネルギー基準点 E=0 は必ずしも半導体のフェルミ準位(絶対零度における化学ポテンシャル)ではありません。金属の場合は問題なくフェルミ準位になりますが、半導体の場合はバンドギャップの間の「どこか」以上の事は言えないと思います。)

所詮LDAやGGAの範囲で決めたバンドギャップなので細かいことは気にしても仕方ないかもしれません。とは言うものの目視ではなくもうちょっと「ちゃんとした風」な値の出し方があった方が良いと思うときもあります。そんなわけで今回はBlochスペクトル関数にローレンツ関数をフィッティングしてピークの中心値を求めてみました。

計算方法


今回はspc計算の入力方法が、古いバージョンのAkaiKKRの方がやりやすいので(少なくともspc計算には)最新版(August 26, 2015)ではなく、それより以前のバージョン(May 22, 2015)を使用します。

最初に通常のgo計算を行います。以下はgo計算のための入力ファイルで、サンプルの入力ファイルを原子球近似(asa)としたものです。

c----------------------GaAs----------------------------------
go data/gaas
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 10.684 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.5 sra mjwasa nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
4
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Ga 1 1 0.0 2 31 100
As 1 1 0.0 2 33 100
Vc1 1 1 0.0 0 0 100
Vc2 1 1 0.0 0 0 100
c------------------------------------------------------------
c natm
4
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Ga
0.25 0.25 0.25 As
0.5 0.5 0.5 Vc1
0.75 0.75 0.75 Vc2
c------------------------------------------------------------


次にspc計算のための実行ファイルをコンパイルします。
まず source/specx.f の msex を大きめの値に変更します。今回は msex=401 としました。更に source/cemesr.f の data ref/0.75d0/ を data ref/0.5d0/ に変更します。これらの変更ののち make します。
前者はdos計算やspc計算のエネルギー分解能を決めるパラメータです。後者はewidthのうち、どれだけの割合をフェルミ準位より下に割り当てるかを指定するパラメータです。

前述のとおりGaAsのバンドギャップはΓ点にあるのでBlochスペクトル関数はΓ点だけ計算します。エネルギーの範囲もバンドギャップを含んでさえいればいいので小さめに変更します。

c----------------------GaAs----------------------------------
spc data/gaas
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 10.684 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 0.2 sra mjwasa nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
4
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Ga 1 1 0.0 2 31 100
As 1 1 0.0 2 33 100
Vc1 1 1 0.0 0 0 100
Vc2 1 1 0.0 0 0 100
c------------------------------------------------------------
c natm
4
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Ga
0.25 0.25 0.25 As
0.5 0.5 0.5 Vc1
0.75 0.75 0.75 Vc2
c------------------------------------------------------------
c kvector
0.0 0.0 0.0
c------------------------------------------------------------


すると data/gaas_up.spc にエネルギーとBlochスペクトル関数が書きだされます。

002_2015092823001346f.png

Fig.2: GaAsのΓ点のBlochスペクトル関数(赤)とローレンツ関数によるピークのフィッティング(緑と青)。


この数値データのピーク位置を読み取るだけでも良いのですが、もうひと手間かけてローレンツ関数にフィッティングしました。

\begin{equation}
f(x)=\frac{a_1}{1 + a_3 (x - a_2 )^2}
\end{equation}

その結果ピークの中心値は CBM が 0.0516617 Ry で VBM が 0.0297679 Ry となりました。したがってバンドギャップは 0.0814296 Ry となりました。

003_20150928230013664.png

004_20150928230013b79.png
Fig.3-4: それぞれのピークへのフィッティング


何が問題なのか?


Fig.3-4に示したようにAkaiKKRを用いて計算したBlochスペクトル関数は、エネルギーに広がりを持っています。しかし、本来なら規則構造の完全結晶の場合、エネルギーの幅を持たないデルタ関数的なピークになるはずです。このようなエネルギーの広がりがある(持たせてある)理由は第5回CCMSハンズオン(ソフトウェア講習会): AkaiKKRチュートリアル 1. KKR法のP29-30に書いてある通り、数値計算上の理由です。

規則構造の完全結晶だけなら、入力ファイルの edelt を十分小さくとれば、エネルギーの広がりは小さくなっていくので解決できます。問題は、不規則性の影響によってもエネルギーに広がりができるという事です。

不規則構造に関しても CBM や VBM に相当するBlochスペクトル関数のピークに対してフィッティングをすることによってピークの中心値を求めることはできると思います。しかし、数値計算的な理由からピークがぼやけている規則構造の場合と不規則性からエネルギーに不確定性が出ている場合とでは、意味が異なります。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 半導体 

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

LTspiceAkaiKKRScilabmachikaneyamaKKRPSoCOPアンプPICCPA強磁性モンテカルロ解析常微分方程式トランジスタode状態密度インターフェースDOSPDS5022ecaljスイッチング回路定電流半導体シェルスクリプトレベルシフト乱数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

最新コメント
リンク

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