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のewidth対応表

AkaiKKR(machikaneyama)を使って状態密度(dos)やバンド構造(spc)を計算する場合、セルフコンシステント計算(go)のときと ewidth の範囲が異なります。(参考: AkaiKKRのewidth その1, その2)

デフォルトでは、go計算よりdos計算やspc計算のときに1/4だけエネルギー範囲が正の方向へずらしてあります。
したがって、go計算のときにエネルギー範囲の底がコアにかかっていないかを確認したいときには、状態密度(dos)やバンド構造(spc)を計算するときに、すこし大き目の ewidth を選ばなければなら無い事になります。別に厳密な値にしなくてもいいのですが、キリのよさそうな値を一覧にしました。

godos/spc
0.60.8
0.91.2
1.21.6
1.52.0
1.82.4
2.12.8
2.43.2
2.73.6
3.04.0
table.1: go計算とdos計算で計算範囲の底が同じになるようにするためのewidthの設定値


関連エントリ




参考URL




参考文献/使用機器





フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR ewidth 

AkaiKKRでPd-Rh二相共存領域

二元系の状態図には、全率固溶型や共融型などいくつかのパターンが存在します。Pd-Rhの二元系では、端成分が共に面心立方構造となっています。そのため高温では固溶体となります。しかしながら、低温では二相に分離します。今回はAkaiKKR(machikaneyama)を利用して、この境界となる温度を求めてみます。

Pd-Rh-520.png

Fig.1: Pd-Rh二元系の合金状態図とAkaiKKR(machikaneyama)によって計算された固溶と二相共存の境界温度(紫:マフィンティン近似, 緑:原子球近似)



熱力学


全エネルギーの組成依存性が上に凸の形になる場合、定性的に二相分離が予想されます。境界温度を推定するためには、二相分離した状態と固溶した状態のギブスエネルギーの差がゼロになる条件を探せばよいことが分かります。

\begin{equation}
G = E + PV - TS
\end{equation}

まず、常圧のみを考えると P≒0 としても影響はほとんどありません。エネルギー E の項には、第一原理計算から得られる全エネルギーの他に格子振動の寄与などが考えられますが、二相分離状態と固溶状態の差は小さいと仮定して無視します。

エントロピーSについても配置のエントロピーのほかに格子振動の寄与などが考えられますが、配置のエントロピーのみを考えることにします。するとRh濃度が x のときの全エネルギーの差と、固溶体の配置のエントロピーは、以下の様になります。

\begin{equation}
\Delta E(x) = E_{\mathrm{Pd_{1-x}Rh_{x}}} - \{ (1-x)E_{\mathrm{Pd}} + x E_{\mathrm{Rh}} \} \\
S_m(x) = - k_B \{ (1-x)\ln (1-x) + x \ln (x) \}
\end{equation}

したがって求める温度は以下のようになります。

\begin{equation}
T(x) = \frac{\Delta E(x)}{S_m(x)}
\end{equation}

計算手法


AkaiKKR(machikaneyama)を用いてPd-Rh合金系の全エネルギーを計算しました。交換相関汎関数にはpbeを用いました。シェルスクリプトPdRh_sh.txtを用いて、組成と格子定数を変化させながら、各組成における最安定な格子定数とそのときの全エネルギーを決定しました。ポテンシャルの形状は、マフィンティン近似と原子球近似(ASA)の両方を試しました。

全エネルギーを計算する際に、状態密度の計算も行いました。端成分の状態密度に関してはecaljでも計算し、クロスチェックしました。

結果と議論


Fig.2-3に純粋なPdとRhの状態密度を示します。AkaiKKRで計算した結果とecaljで計算した結果が良く一致していることが分かります。

Pd-DOS.png
Fig.2: Pdの状態密度

Rh-DOS.png
Fig.3: Rhの状態密度


Fig.4にPdの体積と全エネルギーの関係をプロットしたものを示します。ゼロ気圧における体積V0とそのときの全エネルギーE0を得るためにBirch-Murnaghanの状態方程式にフィッティングしました。

\begin{equation}
E(V) = E_0 + \frac{9V_0B_0}{16}\left\lbrace \left[ \left( \frac{V_0}{V} \right)^{\frac{2}{3}} -1 \right]^3 B_0^\prime \\
+ \left[ \left( \frac{V_0}{V} \right)^{\frac{2}{3}} -1 \right]^2 \left[ 6 -4 \left( \frac{V_0}{V} \right)^{\frac{2}{3}} \right] \right\rbrace
\end{equation}

PdRh_0.png
Fig.4: Pdの体積と全エネルギーの関係


フィッティングする体積の範囲はV0付近でフィッティング結果が良くなるように適切に選びます。

得られた全エネルギーから固溶と二相分離の境界の温度をプロットしたのがFig.1です。計算結果は、二元合金状態図集の状態図と比較してあります。Pd-Rh合金の計算ではASAの結果が実験結果を驚くほどよく再現しています。しかしながら、今回のような良い結果が得られるのは、どうやら周期表で同じ周期に隣接している元素同士の合金だけのようです。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR CPA 二相共存 状態密度 DOS 

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

AkaiKKRのspc計算の入出力フォーマットでは、AkaiKKR(machikaneyama)の26 Augsut 2015のバージョンを利用して、それよりも以前の 22 May 2015 のバージョンと同じspcの入出力フォーマットに戻す方法を書きました。入力フォーマットの変更は簡単だったのですが、出力フォーマットの指定方法の変更は、少し面倒くさい感じでした。最新版の 22 July 2016 バージョンのAkaiKKRでは、この出力フォーマットの指定方法も簡単になりました。

具体的には source/spmain.firdfmt の値を変更することによって入力のフォーマットを、また、 iwrtfmt の値を変更することによって出力のフォーマットを変更できます。22 May 2015 のバージョンと同じspcの入出力フォーマットに戻すには、両方とも 1 を指定します。デフォルトの 3 を指定しておくほうがバンド構造のテスト計算には便利かもしれません(参考:AkaiKKRでバンド構造(分散関係))。しかしながら、ねがてぃぶろぐでは、今後とも基本的に22 May 2015 のバージョンと同じ入出力フォーマットで計算をすることにします。

関連エントリ




参考URL




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama 分散関係 

AkaiKKRとgfortranの出力バッファリング

gfortran の出力バッファリングによるとgfortranは、デフォルトで出力をバッファリングするようになっているとのことです。AkaiKKRの実行コマンドで書いたように出力ファイルを tail -f で監視する際に邪魔になるので、環境変数を利用してバッファリングしないようにしてみました。

ちなみに私の環境では ifort でコンパイルした specx では、このようなバッファリングの問題は起こっていません。


gfortranの出力バッファリングの無効化


AkaiKKRの実行コマンドではAkaiKKR(machikaneyama)の実行ファイルである specx を使うときに必要となるコマンドやリダイレクトを紹介しました。このエントリの中で tail -f で出力ファイルをリアルタイムに監視する方法を書いたところで環境によっては出力ファイルへの書き込みがリアルタイムに行われず、ある程度バッファしてから行われることがあるようです。と書きました。

gfortran の出力バッファリングによると、この挙動はgfortranの仕様であるとのことです。更にgfortran の出力バッファリングのエントリでは、fortranのソースコードを編集する方法と環境変数を利用する方法の2種類の解決方法が紹介されています。

AkaiKKRのソースコードを変更するのは大変そうなので、環境変数を使う方法を試してみます。
具体的には specx の前に GFORTRAN_UNBUFFERED_ALL=y をつけて実行するだけです。

GFORTRAN_UNBUFFERED_ALL=y specx out/outfile &


このようにすることで、出力ファイルが逐次書き込まれ tail -f で中身をリアルタイムに確認することができるようになります。

.bashrc等への記述


しかしながら GFORTRAN_UNBUFFERED_ALL=y を毎回すべて打つのは大変なので .bashrc などに記述しておくことを考えます。
一番シンプルなのは、そのまま .bashrc などに記述してしまうことです。

export GFORTRAN_UNBUFFERED_ALL=y


csh系なら、下記のようになるでしょうか。

setenv GFORTRAN_UNBUFFERED_ALL=y


これらの方法は簡単でよいのですが、AkaiKKR以外のプログラムにgfortranを使っている場合、そのプログラムの挙動にも影響を与えてしまう副作用があります。
したがって .bashrc などに記述してしまうよりは specx を呼び出すシェルスクリプトなどに記述しておくほうが良いかもしれません。
あるいは、エイリアスを使う方法も考えられます。たとえば、以下のような記述を .bashrc に書いておきます。

alias specx='GFORTRAN_UNBUFFERED_ALL=y specx'


こうすることによって単純に specx とタイプすることによって、環境変数付きで specx を実行することができるようになります。

関連エントリ




参考URL




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama gfortran 

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

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

最新コメント
リンク

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