AkaiKKRのk点メッシュ

AkaiKKR(machikaneyama)の計算に使われるk点の数は、入力ファイルの bzqlty で指定されます。計算で実際に使われた既約的ブリルアンゾーンのk点の数は、出力の nk に表示されます。

計算に使用したk点の数の表し方には、既約的ブリルアンゾーンの中のk点数のほかに、全ブリルアンゾーンの中でそれぞれの逆格子ベクトルをメッシュ状に何分割したかを N1 × N2 × N3 のような形で表すやり方もあります。
この分割数の情報は、通常出力されないのですが、必要なら source/bzmesh.fend 文の直前に以下の行を追加することで、出力されるようにできると教えていただきました。

      write(*,'(3x,3(a,i3))')'nfa=',nfa,'  nfb=',nfb,'  nfc=',nfc


fcc等の立方晶の場合は単純に nfa=nfb=nfc=bzqlty となります。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR bzqlty 

AkaiKKRで銅の格子定数

第一原理計算パッケージAkaiKKR(Machikaneyama)で銅の格子定数を計算しました。計算精度は入力パラメータbzqltyに依存しますが、bzqlty=3程度でも文献値に充分近い格子定数を得ることが出来ました。

この値はAkaiKKRの計算精度と計算時間 その1で求めた全エネルギーの変化が落ち着くのに必要な値であるbzqlty=8よりもずいぶんと低い値です。

一方でbzqlty=1での計算は、平衡となる格子定数が得られませんでした。このためbzqlty=1はチェック計算のみに使うのがよさそうです。


非磁性金属のbzqlty


AkaiKKRの計算精度と計算時間 その1では、AkaiKKR(Machikaneyama)で銅の第一原理計算をする際の全エネルギーとbzqltyの関係を調べました。その結果、全エネルギーの変化が落ち着くためにはbzqlty=8程度が必要であることがわかりました。

001_20140428034407bbe.png
Fig.1: 銅の全エネルギーのbzqlty依存性


それでは、第一原理計算から現実的な物性値を推定するためには、どの程度のbzqltyが必要なのでしょうか?

今回はbzqlty=1,3,9,16に対して銅のセルフコンシステント計算を行い、結果をMurnaghanの状態方程式にフィッティングすることによって銅の平衡格子定数や体積弾性率を計算しました。

セルフコンシステント計算


AkaiKKRでコバルトの格子定数では、格子定数aとc/aの2つのパラメータを可変するシェルスクリプトを使いました。今回は似たように格子定数aとbzqltyの2つのパラメータを可変シェルスクリプトを作成しました。

入力ファイルのテンプレートとシェルスクリプトは、下記の通りです。

 go  data/cu_nbzq
fcc abohr 1.0 1.0, , , ,
0.001 1.0 sra gga91 nmag 2nd
update nbzq 200 0.02
1
Cu 1 0 0 2 29 100
1
0.00000 0.00000 0.00000 Cu


#!/bin/csh -f

set BZQLTY_LIST=( 1 3 9 16 )
set ABOHR_LIST=( 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 )

foreach BZQLTY ( ${BZQLTY_LIST} )
echo " bzqlty = "${BZQLTY}
foreach ABOHR ( ${ABOHR_LIST} )
sed 's/'abohr'/'${ABOHR}'/g' in/cu00.in | sed 's/'nbzq'/'${BZQLTY}'/g' > in/cu.in
specx < in/cu.in >> out/cu_${BZQLTY}.out
tail -n 1 data/cu_${BZQLTY}.info
end
end


状態方程式


セルフコンシステント計算から平衡格子定数を求めるために、Murnaghanの状態方程式に全エネルギーをフィッティングします。

E_{tot}(V) = \frac{BV}{B^{'}(B^{'}-1)}\left[B^{'}\left(1-\frac{V_0}{V}\right)+\left(\frac{V_0}{V}\right)^{B^{'}}-1\right]+E_0

セルフコンシステント計算の結果をまとめたものがCuVolume.txtです。これをScilabのスクリプトであるfitMurnaghanEoS_sce.txtでフィッティングします。

結果


bzqlty=3,9,16のときの全エネルギーと状態方程式へのフィッティング結果をFig.2に示します。bzqlty=1のときの結果は全くフィッティングできなかったのでプロットしていません。

000_20140505000502358.png
Fig.2: 全エネルギーの状態方程式へのフィッティング


Fig.1から予測できたことですが、bzqlty=3の場合とbzqlty=9,16の場合の間には、全エネルギーの絶対値に0.01Ryのオーダーの差があります。しかしながら、同じbzqltyで計算する限り、全エネルギーの格子定数を変化させたときの相対的な変化は同程度です。格子定数aを計算してみると、bzqlty=3でも充分文献値に近い値が得られることが分かります。

bzqlty a (Å)B (GPa)B'
33.681274.75
93.671304.84
163.671344.73
文献値3.61138
table.1: AkaiKKRによる計算結果と文献値の比較。文献値の出典は格子定数がCrystal Base、体積弾性率がFintechのデータベース。


結論


AkaiKKRの計算精度と計算時間 その1では全エネルギーの変化が安定するまで計算することを考えると、bzqltyの大きさは8程度まで大きくしなければならないように思われました。しかしながら実際に平衡格子定数を求めてみると、非磁性金属であるfcc構造の銅に関してはbzqlty=3程度でもbzqlty=9や16のときの結果と大差ない値が得られる事がわかりました。

一方で、bzqlty=1のときは全くフィッティング出来ないような結果が出てきました。このことから、bzqlty=1の計算は入力ファイルやspecx.fの設定が間違っていないかのチェックを行う程度の利用にとどめておいたほうがよさそうです。

Appendix: 単位の換算


原子単位系において、長さはボーア半径で表されます。

1 bohr = 0.5291772 × 10-10 m

また、エネルギーは、リュードベリで表されます。

1 Ry = 2.179872 × 10-18 J

圧力(と同じ次元を持つ体積弾性率)を長さとエネルギーで表すことを考えます。

Pa = N / m2 = J / m3

したがって、リュードベリ原子単位系での圧力は

1 au = 2.179872 × 10-18 / (0.5291772 × 10-10)3
= 1.471 × 1013 Pa
= 1.471 × 104 GPa

体積弾性率は100GPaのオーダーなので、Bの初期値は0.01 au程度でよさそうです。なお、B'の初期値は4程度です。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR bzqlty 

AkaiKKRの計算精度と計算時間 その2

AkaiKKRの計算精度と計算時間 その1では、銅とシリコンの全エネルギーがbzqltyの値によってどの程度変化するかを調べました。
今回は、結晶構造が異なるニッケル(面心立方構造,fcc)、鉄(体心立方構造,bcc)、コバルト(六方最密重点構造,hcp)の全エネルギーとbzqltyの関係を調べるとともに、磁気モーメントの大きさもプロットしました。

その結果、全エネルギーの変化は、予想に反して結晶構造の違いに鈍感であることが分かりました。また、磁気モーメントは実験値を再現することが確認できました。


遷移金属の計算


AkaiKKRの計算精度と計算時間 その1では、fcc格子をもつ銅とシリコンに対して、AkaiKKR(Machikaneyama)の入力パラメータのひとつであるbzqltyを変化させたときに計算結果がどのように変化するかを調べました。

今回は、強磁性体であるニッケル(fcc)、鉄(bcc)、コバルト(hcp)に関して同様の計算を行い、全エネルギーと磁気モーメントがどのように変化するかを調べます。

計算手法


基本的には前回と同様に入力ファイルのbzqltyをシェルスクリプトで変化させながらセルフコンシステント計算を行っていきます。
下記は、ニッケルのbzqltyを変化させるシェルスクリプトです。

#!/bin/csh -f
set path=($path ~/kkr/cpa2002v009c )

set BZQLTY_LIST=( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )

foreach BZQLTY ( ${BZQLTY_LIST} )
sed 's/'nbzq'/'${BZQLTY}'/g' in/Ni0.in > in/Ni.in
specx < in/Ni.in >> out/Ni.out
tail -n 1 data/ni.info
end


各元素の入力ファイルのテンプレートはAkaiKKRでニッケル・鉄・コバルトをベースにしています。

 go    data/ni
fcc 6.67 , , , , , ,
0.001 1.2 nrl mjw mag init
update nbzq 100 0.02
1
Ni 1 0 0 2 28 100
1
0 0 0 Ni


(前回はシリコンの全エネルギーも出力の生の値を書いてしまいましたが)全エネルギーは、原子1個あたりの値に直してあります。単純にコバルトの全エネルギーのアウトプットを2で割っただけですが。
プロットしてあるのは、bzqltyを1小さくしたときの全エネルギーとの差の絶対値です。およそ1mRy≒100Kで、AkaiKKRの出力の最小桁は1×10-7Ryです。

磁気モーメントの値もコバルトは2で割ってあります。負の値が出るときは絶対値を取ってあります。

ニッケルの計算結果


最初にfcc構造のニッケルの結果を示します。
全エネルギーに関しては、前回計算した銅の値も比較のために同時にプロットしてあります。

NiE2.png
Fig.1: ニッケルの全エネルギーの変化


銅と比較した場合、ほとんど全く同じ挙動を示していることがわかります。

NiM.png
Fig.2: ニッケルの磁気モーメントの変化


磁気モーメントFig.2の様になりました。
磁性入門によるとニッケルの磁気モーメントは0.604μBと言うことなので、bzqltyを上げていったときに収束しそうな値は多少の過小評価ではありますが、変動の範囲内に入っています。

鉄の計算結果


次にbcc構造の鉄の計算結果を示します。

FeE.png
Fig.3: 鉄の全エネルギーの変化


FeM.png
Fig.4: 鉄の磁気モーメントの変化


磁気モーメントに関しては磁性入門の値が2.218μBなのでわずかな過大評価です。

コバルトの計算結果


以下にhcp構造のコバルトの計算結果を示します。
コバルトの計算結果は、原子1つあたりの値にするため2で割ってあります。

CoE.png
Fig.5: コバルトの1原子あたりの全エネルギーの変化


CoM_20140429235150589.png
Fig.6: コバルトの1原子あたりの磁気モーメントの変化


磁気モーメントに関しては磁性入門の値が1.715μBなのでわずかな過小評価です。

結論


ニッケル・鉄・コバルトの全エネルギーのグラフをひとつにまとめたものが以下に示すFig.5です。

NiFeCo.png
Fig.7: ニッケル・鉄・コバルトの1原子あたりの全エネルギーの変化


前回紹介したInstalling and Running AKAI KKR(PDF)の表を再掲します。

fccbcchcpscbctstbcorhbfct
ttest run331221232
llow quality562442454
mmedium91147858108
hhigh121559107101210
uultra high1620713159151715
table.1: bzqltyの値と対応する文字(Installing and Running AKAI KKR(PDF))


Installing and Running AKAI KKR(PDF)の表では、結晶構造によってクオリティを表す文字が変えてありますが、Fig.7をみると、むしろbzqltyの値と全エネルギーの変化に関しては結晶構造の違いによる差は見られないように思えます。

磁性入門によると絶対零度における飽和磁気モーメントとキュリー温度は以下の様に表されます。

原子磁気モーメントキュリー温度 (K)
Ni0.604μB631
Fe2.218μB1043
Co1.715μB1422
table.1:強磁性遷移金属の磁気モーメントとキュリー温度


今回の計算結果は、多少の誤差を持つものの、実験結果をよく再現できていると思います。
なおAkaiKKRで鉄のキュリー温度で見積もった鉄のキュリー温度は1260Kでした。

関連エントリ




参考URL




参考文献/使用機器






フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR bzqlty 強磁性 

AkaiKKRの計算精度と計算時間 その1

AkaiKKR(Machikaneyama)の入力ファイルは指定しなければならないパラメータも少ないため、第一原理計算の初心者であっても比較的簡単に計算を行うことが出来ます。とは言うものの、全てのパラメータに関して、すぐにどういった値にすればよいのかが理解できるわけではないです。今回はbzqltyについて値を変更しながら計算を行うシェルスクリプトを作成しました。

その結果、AkaiKKRの計算精度と計算時間の間のトレードオフの関係を確認することが出来ました。


AkaiKKRのbzqltyの推奨値


bzqltyはk点のメッシュの細かさを指定するためのパラメータであり、ゼロ以上の整数値を指定します。第一原理計算入門 AkaiKKRによるとSCF計算(go)のときは4程度でよく、状態密度(dos)の計算をする場合には8~10など大きめに取るのがよいとの事です。

その一方でInstalling and Running AKAI KKR(PDF)によるとAkaiKKRにはbzqltyを指定するための文字があらかじめ用意されており、文字と数値の対応は結晶構造により異なり以下の様に対応するとあります。

fccbcchcpscbctstbcorhbfct
ttest run331221232
llow quality562442454
mmedium91147858108
hhigh121559107101210
uultra high1620713159151715
table.1: bzqltyの値と対応する文字(Installing and Running AKAI KKR(PDF))


また、その注釈には以下の通りbzqlty = hが推奨されているようです。

The setting bzqlty = h should work in most of the given cases. However, one should always check the actually used value of nk in outfile.


(結晶構造にもよりますが)bzqlty = 4は大雑把に言ってlow quality相当です。これに対してhigh qualityはbzqlty = 10程度でしょうか。これは結構な差のような気がします。

当然ながらbzqltyを大きな値で計算するほうが計算精度が良くなるはずですが、計算時間も長くなってしまうので、計算精度と計算時間はトレードオフの関係と言うことになります。
したがって、必要な計算精度が保てる範囲で計算時間を短くしたいという要求が発生します。

こういうときは、bzqltyの値を変化させながら計算結果がどのように変化するかを調べてみればよいと思います。数値計算の常識によるところのたった1回だけの計算なんてというヤツです。


計算手法


今回のエントリでは、面心立方構造の銅とシリコンについてAkaiKKR(Machikaneyama)のセルフコンシステント計算を行います。bzqltyは0から20までの間で変化させ、それぞれの収束後の全エネルギーの変化を調べます。
bzqltyを変化させる処理は、AkaiKKRでコバルトの格子定数のときと同様にシェルスクリプトを用います。

以下に示すのが、銅の計算のためのシェルスクリプトです。(Cu.sh)
#!/bin/csh -f
set path=($path ~/kkr/cpa2002v009c )

## rm data/cu
## rm data/cu.info
## rm out/cu.out

set BZQLTY_LIST=( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )

foreach BZQLTY ( ${BZQLTY_LIST} )
sed 's/'nbzq'/'${BZQLTY}'/g' in/cu0.in > in/cu.in
specx < in/cu.in >> out/cu.out
tail -n 1 data/cu.info
end


上記のシェルスクリプトに加えて、銅のインプットファイルのテンプレートとなるcu0.inも必要です。
今回はbzqltyの値によって計算時間がどの程度変化するかも調べたいので、ポテンシャルファイルを毎回作り直すためにrecord = initとします。

 go  data/cu
fcc 6.76 1.0 1.0, , , ,
0.001 1.0 sra gga91 nmag init
update nbzq 200 0.02
1
Cu 1 0 0 2 29 100
1
0.00000 0.00000 0.00000 Cu


シリコンに対しても同様にSi.shsi0.inを利用します。


銅の計算結果


以下に示すのは、銅に対するセルフコンシステント計算の結果です。

001_20140428034407bbe.png
Fig.1: 銅の全エネルギーのbzqlty依存性


上記のFig.1は、横軸にbzqltyを取っており、縦軸には全エネルギーに関してbzqltyが一つ小さいときとの差の絶対値を対数でプロットしてあります。
例えばbzqlty=5の点は、bzqlty=5として計算したときの全エネルギーとbzqlty=4として計算したときの全エネルギーを比較したものであると言うことです。この例の場合ではbzqlty=4からbzqlty=5の間で1×10-3Ryオーダーで計算結果が変化したことを意味します。エネルギー差をボルツマン定数kBを用いて温度に換算するならば、これはおよそ100Kのオーダーの温度差に相当します。

002_20140428034406a21.png
Fig.2: 銅の計算時間のbzqlty依存性


今度は計算時間を見てみます。Fig.2は私の環境での計算時間なのでコンピュータの性能によって値は全く変わるはずですが、相対的な比較には意味があるはずです。

シリコンの計算結果


次にシリコンの場合を示します。

003_201404280344067c0.png
Fig.3: シリコンの全エネルギーのbzqlty依存性


シリコンの全エネルギーの変化も同様にbzqltyを大きくするほど小さくなっていきます。
AkaiKKRの全エネルギーの最小桁は10-7なので、最高精度の計算では最後の桁しか変化していないことがわかります。

その反面、シリコンの計算には銅と比べて一桁以上長い時間がかかります。bzqlty=20の場合は約1400秒、つまり20分以上の時間がかかりました。

004_20140428034406aed.png
Fig.4: シリコンの計算時間のbzqlty依存性


結論


今回のエントリでは、AkaiKKR(Machikaneyama)の入力ファイルのbzqltyというパラメータを変化させた際の計算精度と計算時間のトレードオフについて調べるために銅とシリコンのセルフコンシステント計算を行いました。
その結果、bzqltyを変化させると計算結果の全エネルギーの値が変化する事、その全エネルギーの変化率はbzqltyを大きくするほど小さくなること、更にbzqltyを大きくしていくとその変化率は頭打ちになることが分かりました。
同時にbzqltyを大きくするほど計算時間が長くかかるようになり、計算精度と計算時間の間には確かにトレードオフがあることが分かりました。
ある程度以上まじめに計算をする必要があるときは、本エントリのシェルスクリプトを参考にbzqltyを変化させながらセルフコンシステント計算を複数回行うことは有意義であろうと思います。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR bzqlty 

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

最新コメント
リンク

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