AkaiKKRでコバルトのc/a その2

AkaiKKRでコバルトのc/a その1では、hcp構造の格子定数最適化のために格子体積を固定した状態でc/aを変化させるシェルスクリプトを作成しました。
今回はこれをさらに拡張しc/aを変化させる際にMT半径が変化しないようにするシェルスクリプトを作成しました。


マフィンティン半径(MT半径)の固定


AkaiKKRでコバルトの格子定数ではbzqltyが低いという問題(参考: AkaiKKRの計算精度と計算時間 その2AkaiKKRでFeCoの磁気モーメントと格子定数)の他にc/aを決めるに際してマフィンティン半径(MT半径)を固定していないという問題がありました。

AkaiKKRでコバルトのc/a その1では、この問題を解決するための前半として格子体積Ωを固定しながらc/a≡ηを変化させる(必然的に格子定数aが決まる)シェルスクリプトを書きました。
今回は、それをさらに発展させて格子体積ΩとMT半径(マフィンティン球の体積)を固定した状態でc/aを変化させるシェルスクリプトを書きます。

MT半径の取り得る値


MT半径は。互いに接触するような大きさよりも大きく取ることはできません。したがってすべてのMTをそろえるためには、変化させる範囲のc/aの中で、MT半径が最小になるときを探さなければいけません。

今hcp構造の単位格子の中の(0,0,0)と(a/3, 2a/3, c/2)の位置にコバルト原子があるとします。MT半径をゼロから次第に大きくしていったとき、a軸方向(およびb軸方向)の原子同士が先にぶつかる場合と、単位格子内の2つの原子が先にぶつかる場合の2種類の可能性が考えられます。
どちらが先にぶつかるかはc/aにより変わります。

ab面内でぶつかるときのMT半径は

r_{\mathrm{MT}}=\frac{a}{2}

単位格子内でぶつかるときのMT半径はc/a≡ηとおくと

r_{\mathrm{MT}}=\frac{a}{2}\sqrt{\frac{1}{3}+\frac{\eta^2}{4}}

Scilabによるプロット


それでは、上記のMT半径をc/aの関数としてプロットしてみましょう。
格子体積Ω=150 Bohr3に固定してc/aを1.6から1.7まで変化させたときのMT半径の大きさをScilabでプロットしました。

001_20140914011020cc3.png

Fig.1: 格子体積Ω=150(Bohr3)のした場合のタッチング時のMT半径のc/a依存性。


この図からc/aが理想値2√2/√3≒1.633のときにMT半径が最大になり、MT半径が最小となるのはc/aが最大・最小のいずれかの時であることがわかります。
そこでシェルスクリプトのアルゴリズムは、おおよそ以下のようになります。

  1. η=[η1, η2, ..., ηn]の中から最大値と最小値を探す
  2. ηmaxとηminのときのMT半径を計算してみて小さい方を実際のMT半径として採用する
  3. AkaiKKRの入力ファイルのMT半径は格子定数aで規格化しなければならないので、そのようにする

1.に関しては(やり方はあるはずだと思いますが)どうやればよいのか分からなかったのでηのリストは常に昇順または降順に並べておくという仕様にしました。

MT半径は1未満の小数になりますが、bcの仕様では先頭のゼロが省略されます。AkaiKKRはそれでも気にせず計算してくれるようですが、Unix command > bcによる少数の演算の方法を利用して頭にゼロを補うようにしました。

'0'の部分は消されてしまうことに注意してください。 個人的には、'0.5'と表示してほしいのですが、今のところ、シンプルな解決策を見つけられてません。 応急処置としては、先頭がカンマだった場合に、'0.'に置換する方法があります。 sedを使った例は以下のとおりです。

bc$ echo "1 - 0.5" | bc | sed -e 's/^\./0./g'
0.5

結局、シェルスクリプトCo.shは以下のようになります。
なおこの際入力ファイルを作るためのテンプレートファイルCoTemplate.inはtemplateという名前のディレクトリにおいておく仕様に変更しました。

#!/bin/csh -f

set OMEGA_LIST=( 140 142 144 146 148 150 152 154 156 158 160 )
set ETA_LIST=( 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 )

foreach OMEGA ( ${OMEGA_LIST} )
set ETA0=`echo $ETA_LIST[1]`
set A0=`echo "e((1/3)*l(2*${OMEGA}/(sqrt(3)*${ETA0})))" | bc -l`
if (`echo "${ETA0} > 2*sqrt(2)/sqrt(3)" | bc -l` == 1) then
set RMTB0=`echo "${A0}/2" | bc -l`
else
set RMTB0=`echo "${A0}*sqrt(1/3+(${ETA0}^2)/4)/2" | bc -l`
endif

set ETA1=`echo $ETA_LIST[$#ETA_LIST]`
set A1=`echo "e((1/3)*l(2*${OMEGA}/(sqrt(3)*${ETA1})))" | bc -l`
if (`echo "${ETA1} > 2*sqrt(2)/sqrt(3)" | bc -l` == 1) then
set RMTB1=`echo "${A1}/2" | bc -l`
else
set RMTB1=`echo "${A1}*sqrt(1/3+(${ETA1}^2)/4)/2" | bc -l`
endif

if (`echo "${RMTB0} < ${RMTB1}" | bc -l` == 1) then
set RMTB=`echo $RMTB0`
else
set RMTB=`echo $RMTB1`
endif

foreach ETA ( ${ETA_LIST} )
if ( ! -e stop ) then
echo " OMEGA,ETA= "${OMEGA}" "${ETA}

set A=`echo "e((1/3)*l(2*${OMEGA}/(sqrt(3)*${ETA})))" | bc -l | sed -e 's/^\./0./g'`
set RMTA=`echo "${RMTB} / e((1/3)*l(2*${OMEGA}/(sqrt(3)*${ETA})))" | bc -l | sed -e 's/^\./0./g'`

sed 's/'ABOHR'/'${A}'/g' template/CoTemplate.in | sed 's/'ETA'/'${ETA}'/g' | sed 's/'RMTA'/'${RMTA}'/g' | sed 's/'OMEGA'/'${OMEGA}'/g' > in/Co_${OMEGA}_${ETA}.in
specx < in/Co_${OMEGA}_${ETA}.in > out/Co_${OMEGA}_${ETA}.out

tail -n 1 data/co_${OMEGA}_${ETA}.info
endif
end
end


関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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


tag: AkaiKKR machikaneyama KKR Scilab マフィンティン半径 

comment

Secret

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

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj常微分方程式モンテカルロ解析状態密度トランジスタodeDOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト分散関係レベルシフト乱数HP6632AR6452A可変抵抗トランジスタ技術温度解析ブレッドボードI2C反強磁性確率論数値積分セミナーバンドギャップバンド構造偏微分方程式非線形方程式ソルバ熱設計絶縁ISO-I2Cカオス三端子レギュレータLM358GW近似マフィンティン半径A/DコンバータフォトカプラシュミットトリガLEDPC817C発振回路数値微分直流動作点解析サーボカレントミラーTL431アナログスイッチUSB74HC4053bzqltyVESTA補間電子負荷アセンブライジング模型BSch量子力学単振り子2ちゃんねるチョッパアンプLDA開発環境基本並進ベクトルFFT標準ロジックブラべ格子パラメトリック解析抵抗SMPMaxima失敗談ラプラス方程式繰り返し位相図スイッチト・キャパシタ熱伝導状態方程式キュリー温度gfortranコバルトTLP621不規則合金Quantum_ESPRESSO六方最密充填構造ランダムウォーク相対論ewidthスピン軌道相互作用FETQSGWVCAcygwinスレーターポーリング曲線GGA仮想結晶近似PWscfシュレディンガー方程式LM555ハーフメタル固有値問題NE555最小値ガイガー管QNAPUPS自動計測ダイヤモンドマントルTLP552格子比熱最適化MCU井戸型ポテンシャル最大値xcrysdenCIF条件分岐詰め回路フェルミ面差し込みグラフスーパーセルfsolveブラウン運動awk過渡解析起電力三角波第一原理計算FXA-7020ZRWriter509Ubuntuテスタ熱力学データロガーTLP521OpenMPubuntu平均場近似MAS830LトランスCK1026PIC16F785PGA2SC1815EAGLEノコギリ波負帰還安定性ナイキスト線図MBEOPA2277P-10フィルタCapSenseAACircuitLMC662文字列固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型電荷密度重積分SIC二相共存磁気モーメント不純物問題PWgui擬ポテンシャルゼーベック係数ZnOウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデルcif2cell入出力陰解法熱拡散方程式HiLAPW両対数グラフCrank-Nicolson法連立一次方程式specx.fifort境界条件片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

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