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 

comment

Secret

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

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

最新コメント
リンク

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