AkaiKKRで最急降下法

擬ポテンシャル法を用いた第一原理計算パッケージは、多くの場合、結晶構造の最適化機能を持っています。しかしAkaiKKRにはそのような機能はありません。そこで、最急降下法を用いて全エネルギーが最小となる結晶構造を探してみました。
対象として選んだのは六方最密充填構造(hcp)のコバルトです。

steepest.png
Fig.1: 全エネルギーのカラーマップと最急降下法探索による全エネルギー最小化



結晶構造の最適化


多くの第一原理計算パッケージには、結晶構造の最適化機能があります。これは多くの場合、原子にかかる力を計算して、その方向に原子を動かすことによって実現されています。しかしながらAkaiKKR(machikaneyama)では原子にかかる力の計算が出来ません。AkaiKKRでも、全エネルギーが最小になるようにすることで結晶構造の最適化が出来るはずですが、手動ですべてのパラメータの探索を行うのは大変です。そこで最急降下法を使って全エネルギーが最小になる構造を探して見ます。
Scilabで最急降下法 その1Scilabで最急降下法 その2では、簡単な関数f(x,y)に対して、最小値を探すことで最急降下法のアルゴリズムを確認しました。今回は f(x,y)の代わりに第一原理計算を行います。今回はテスト計算として六方最密充填構造(hcp)のコバルトの計算をします。具体的には以下の3つのステップを行います。
  1. マフィンティン半径の決定
  2. エネルギーマップの作成
  3. 最急降下法計算


マフィンティン半径の決定


AkaiKKRで全エネルギーを比較するときは、色々な計算条件が変化しないようにする必要があります。特にマフィンティン半径の設定には注意が必要です。AkaiKKRの入力ファイルでは、マフィンティン半径は格子定数 a で規格化されます。私の理解では「AkaiKKRでマフィンティン半径を固定する」というのは「原子の位置や計算セルのサイズを変更したときに、計算セルの体積に対する各マフィンティン球の体積の比が変化しないようにする」ということです。(これは他の計算手法、例えばAPW法などとは違うことに注意が必要です。)この条件を満たす範囲でマフィンティン半径を最大になるようにするのが最良であると理解しています。(AkaiKKRでBain機構 その1その2も参照。)

そこでまず、全エネルギー最小を探索する格子定数の範囲を決めます。次に、その範囲でrmt=1としたときの実際のマフィンティン球の体積比が一番小さくなってしまう条件を探します。この条件でのマフィンティン半径を全ての計算に用いれば、マフィンティン球が重なることなく、かつ、マフィンティン半径を固定することが出来ます。
決められたマフィンティン半径は、格子体積の1/3乗で規格化しておくのが後々の事を考えると便利なはずです。具体的には下記のようなシェルスクリプトを作成し、計算しました。1.60 ≦ c/a ≦ 1.70 の範囲では rMT/V1/3 = 0.439518 ぐらいのようです。
このスクリプトを走らせる際には、第一原理計算を収束させる必要はないので bzqlty=0maxitr=0としておきます。

#!/bin/csh -f
#setenv GFORTRAN_UNBUFFERED_ALL y

## *** パラメーター範囲 ***
set COA_LIST=( 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 )
set OMEGA_LIST=( 160 158 156 154 152 150 148 146 144 142 140 )

# set COA_LIST=( 1.63 )
# set OMEGA_LIST=( 150 )

## *** マフィンティン半径の計算 ***
set OMEGA=${OMEGA_LIST[1]}
set COA0=`echo $COA_LIST[1]`
set A0=`echo "e((1/3)*l(2*${OMEGA}/(sqrt(3)*${COA0})))" | bc -l`
if (`echo "${COA0} > 2*sqrt(2)/sqrt(3)" | bc -l` == 1) then
set RMTB0=`echo "${A0}/2" | bc -l`
else
set RMTB0=`echo "${A0}*sqrt(1/3+(${COA0}^2)/4)/2" | bc -l`
endif
set COA1=`echo $COA_LIST[$#COA_LIST]`
set A1=`echo "e((1/3)*l(2*${OMEGA}/(sqrt(3)*${COA1})))" | bc -l`
if (`echo "${COA1} > 2*sqrt(2)/sqrt(3)" | bc -l` == 1) then
set RMTB1=`echo "${A1}/2" | bc -l`
else
set RMTB1=`echo "${A1}*sqrt(1/3+(${COA1}^2)/4)/2" | bc -l`
endif
if (`echo "${RMTB0} < ${RMTB1}" | bc -l` == 1) then
set RMTB=`echo $RMTB0`
else
set RMTB=`echo $RMTB1`
endif
set RMTOMEGA=`echo "${RMTB}/e((1/3)*l(${OMEGA}))" | bc -l | sed -e 's/^\./0./g'`
echo ${RMTOMEGA}


なおhcp構造の場合はAkaiKKRでコバルトのc/a その2の方法でマフィンティン半径を決めることが出来るのですが、今回は将来的により複雑な構造をやることも考えてこのようにしました。

エネルギーマップの作成


必要ないはずの手順ですが、今回は最急降下法のテストでもあるので、考える体積・軸比の範囲の全ての全エネルギーを計算しておきます。この結果がFig.1のカラーコンターです。

Cシェルスクリプトには関数を実装することが出来ませんが、下請けのシェルスクリプトに変数を渡すことによって、それっぽい事は出来ます。
今回は という下請けのスクリプトを作成しました。これは、体積・軸比・マフィンティン半径の3つを引数として受け取り、第一原理計算を行って全エネルギーを返り値にします。

#!/bin/csh -f
##setenv GFORTRAN_UNBUFFERED_ALL y

## *** プロジェクト名 ***
set PROJECT="hcpCo"

## *** 実行ファイル ***
set EXEC="~/kkr/cpa2002v009c/specx"

## *** 標準入力から値を読み取る ***
## 格子体積
set OMEGA=$1
## c/a
set COA=$2
## RMT
set RMTOMEGA=$3

## ファイル名
set INFILE="in/${PROJECT}_go_${OMEGA}_${COA}.in"
set OUTFILE="out/${PROJECT}_go_${OMEGA}_${COA}.out"
set POTFILE="data/${PROJECT}_${OMEGA}_${COA}"
set POTBACK="data/${PROJECT}_${OMEGA}"

## 格子定数 a の計算
set ABOHR=`echo "scale=7; e((1/3)*l(2*${OMEGA}/(sqrt(3)*${COA})))" | bc -l | sed -e 's/^\./0./g'`
## マフィンティン半径の計算
set RMTA=`echo "scale=7; ${RMTOMEGA}*e((1/3)*l(${OMEGA}))/${ABOHR}" | bc -l | sed -e 's/^\./0./g'`

## テンプレートから入力ファイルを作成
sed 's/'OMEGA'/'${OMEGA}'/g' template/${PROJECT}_go_Template.in | sed 's/'ABOHR'/'${ABOHR}'/g' | sed 's/'COA'/'${COA}'/g' | sed 's/'RMTA'/'${RMTA}'/g' > ${INFILE}

## ポテンシャルファイルのコピー
if ( ! -e ${POTFILE} ) then
if ( -e ${POTBACK} ) then
cp ${POTBACK} ${POTFILE}
endif
endif

## 計算回数の初期化
set num=0
## 最大計算回数
set nummax=20
## 第一原理計算
${EXEC} < ${INFILE} > ${OUTFILE}
while ( ( ! { grep -q "err= -6." ${OUTFILE} } ) && ( $num < $nummax ) )
${EXEC} < ${INFILE} > ${OUTFILE}
@ num++
end

## ポテンシャルのバックアップ
cp ${POTFILE} ${POTBACK}

set ENE=`grep "total energy" ${OUTFILE} | sed -e s/total//g -e s/energy=//g`
echo ${ENE}


enemap.sh は下請けスクリプト dogo.sh を利用して 1.60 ≦ c/a ≦ 1.70, 140 ≦ V ≦ 160 の範囲で全エネルギーのマップを作ります。dogo.sh は最急降下法のシェルスクリプトでも利用します。

最急降下法


エネルギーのマップから最安定な格子定数が V = 150 Bohr3, c/a = 163 付近にあることが予想できます。とりあえず初期値を V = 156 Bohr3, c/a = 1.68 として計算してみます。その結果がFig.1上に白で示された経路です。最急降下法では、その関数の値の微分の方向に向かって次の入力パラメータを探します。今回の計算では、4回程度で格子定数の最適化が出来ている事が確認できます。

最急降下法のCシェルスクリプト steepest.sh は以下の通りです。

#!/bin/csh -f
#setenv GFORTRAN_UNBUFFERED_ALL y

## *** マフィンティン半径 ***
set RMTOMEGA=0.43951815598150528923

## *** 係数 ***
set KEISUU_OMEGA="10000.0"
set KEISUU_COA="0.5"

## *** 初期値 ***
set OMEGA=$1
set COA=$2

## *** 微分のステップ ***
set dOMEGA="1.0"
set dCOA="0.01"
set OMEGA_PLUS=`echo "${OMEGA}+${dOMEGA}" | bc -l`
set OMEGA_MINUS=`echo "${OMEGA}-${dOMEGA}" | bc -l`
set COA_PLUS=`echo "${COA}+${dCOA}" | bc -l`
set COA_MINUS=`echo "${COA}-${dCOA}" | bc -l`

## *** 第一原理計算 ***
set ENE=`./dogo.sh ${OMEGA} ${COA} ${RMTOMEGA}`
echo "Center energy:" ${ENE} "(Ry)"
set ENE_OMEGA_PLUS=`./dogo.sh ${OMEGA_PLUS} ${COA} ${RMTOMEGA}`
echo "Omega plus: " ${ENE_OMEGA_PLUS} "(Ry)"
set ENE_OMEGA_MINUS=`./dogo.sh ${OMEGA_MINUS} ${COA} ${RMTOMEGA}`
echo "Omega minus: " ${ENE_OMEGA_MINUS} "(Ry)"
set ENE_COA_PLUS=`./dogo.sh ${OMEGA} ${COA_PLUS} ${RMTOMEGA}`
echo "c/a plus: " ${ENE_COA_PLUS} "(Ry)"
set ENE_COA_MINUS=`./dogo.sh ${OMEGA} ${COA_MINUS} ${RMTOMEGA}`
echo "c/a minus: " ${ENE_COA_MINUS} "(Ry)"

## *** 数値微分(中心差分) ***
set dENEdOMEGA=`echo "(${ENE_OMEGA_PLUS}+(-1*${ENE_OMEGA_MINUS}))/(2*${dOMEGA})" | bc -l`
echo ${dENEdOMEGA}
set dENEdCOA=`echo "(${ENE_COA_PLUS}+(-1*${ENE_COA_MINUS}))/(2*${dCOA})" | bc -l`
echo ${dENEdCOA}

echo ${OMEGA} ${COA} ${ENE} >> analysis/steepest.txt

set OMEGA=`echo "scale=7; (${OMEGA}-${KEISUU_OMEGA}*${dENEdOMEGA})/1.0" | bc -l`
set COA=`echo "scale=7; (${COA}-${KEISUU_COA}*${dENEdCOA})/1.0" | bc -l`
echo "Next:"
echo "./steepest.sh" ${OMEGA} ${COA}


関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama Scilab KKR 強磁性 シェルスクリプト 

cshスクリプトで配列の最大値と最小値

AkaiKKRでコバルトのc/a その2ではcshのシェルスクリプトの中で、配列の中の最大値と最小値を探す方法が分からないので、常に昇順または降順に並んでいると仮定してスクリプトを書きました。

今回は、その点の補足として awk を使った配列の中で最大値と最小値を探すスクリプトを書きました。

#!/bin/csh -f

set LIST=( 1.2 3.00 4.3 2.1 1 3.2 )
set MAX=${LIST[1]}
set MIN=${LIST[1]}

foreach NUM ( ${LIST} )
set MAX=`echo ${NUM} ${MAX} | awk '{if ($1>=$2) print $1; else print $2}'`
set MIN=`echo ${NUM} ${MIN} | awk '{if ($1<=$2) print $1; else print $2}'`
end

echo ${MAX} ${MIN}


...たぶんもっとシンプルな回答があるのだろうとは思いますが。

関連エントリ




参考文献/使用機器




フィードバック



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

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


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


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

tag: シェルスクリプト awk 

AkaiKKRの.infoファイルから情報を取り出す

AkaiKKR(machikaneyama)は、その計算結果のうち「全エネルギー」と「磁気モーメント」の二つを格子定数aとともに.infoファイルに出力します。これらの二つの値をtail, sed, awkの3つの命令を利用して、上手に取り出す方法を知っていれば、結果の解析を行うためのシェルスクリプトが作れます。

例えばcshスクリプトでdata/fe.infoの最後から2行目の全エネルギーをENEという変数に代入するには以下のようにします。

set ENE=`tail -n 2 data/fe.info | sed '$d' | awk '{print $2}'`



AkaiKKRの.infoファイル


AkaiKKR(machikaneyama)は、その実行ファイルであるspecxの実行が終了する度にデータディレクトリの.infoファイルの末尾に「格子定数a」「全エネルギー」「磁気モーメント」の3つの値が出力されます。標準出力に出力される(悪く言えば雑多な)情報に比べて、最低限の重要な値だけが出力されるので便利ではあります。

以下に示すのは、AkaiKKRでテスト計算で行った鉄の計算の後のdata/fe.infoの内容です。

       5.2700       -2522.8222938   2.17548
5.2700 -2522.8222950 2.17547
5.2700 -2517.8475965 0.30790

ここで.infoへの出力はspecxの実行終了ごとに毎回行われることに注意が必要です。例えばAkaiKKRでテスト計算の場合ではdata/fe.infoに保存された3行3列の数字のうちで真ん中の2列目だけが意味を持つ値でした。
今回は、このような.infoファイルの中から、指定した行だけを出力するのに便利なコマンドについてまとめます。実行にはsedawkを利用するので、これらをインストールしておく必要があります。

最後の行だけを取り出す


tail -n 1 data/fe.info

tailコマンドは、ファイルの後ろの方のデータを読みだすことができます。tail -n 1とすれば、指定されたファイルの最後の1行だけを取り出すことができます。収束させるため複数回go計算を行うと、一番最後の行が最新の(つまり収束した)値となっているはずです。

最後から2行目だけを取り出す


tail -n 2 data/fe.info | sed '$d'

tailコマンドはtail -n 2 data/fe.infoとすれば後ろから2行分、tail -n 3 data/fe.infoとすれば後ろから3行分読み出します。後ろから2行分を取り出した後、sedを利用して最後の行を削除すれば最後から2行目だけが残ります。
AkaiKKRでテスト計算の様に、go計算を行った後でdos計算を行うなど、最後の行が不要なデータのときには、このようにして最後から2行目だけを取り出します。

最後から3行目だけを取り出す


tail -n 3 data/fe.info | sed '$d' | sed '$d'

後ろから3行分を取り出した後、最後の行を削除する工程を2回行えば、最後から3行目だけが残ります。
go計算を収束させた後、dos計算とspc計算の両方を行った場合などは、後ろの2行が不要データで後ろから3行目が必要なデータという事になります。同様な方法で後ろから4行目、5行目を取り出すこともできるでしょう。はっきり言って力技です。おそらくもっとスマートな方法があると思います、誰か教えてください。

最後の行の全エネルギーを取り出す


tail -n 1 data/fe.info | awk '{print $2}'

ここからは、列を取り出す方法です。.infoファイルの中で全エネルギーは2列目です。tailコマンドで最後の行を取り出した後、awkをつかって2列目を取り出します。

最後の行の磁気モーメントを取り出す


tail -n 1 data/fe.info | awk '{print $3}'

同様に3列目を取り出せば、磁気モーメントです。また1列目を取り出せば、格子定数aを読みだすことができます(格子定数を読みだすケースはまれと思いますが)。

最後から2行目の全エネルギーを取り出す


tail -n 2 data/fe.info | sed '$d' | awk '{print $2}'

ここからは単なる組み合わせです。
tailで最後から2行分を取り出した後、sedで最後の行を削除することによって、最後から2行目だけを取り出し、awkをつかって2列目だけを取り出します。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama シェルスクリプト 

AkaiKKRでγ-Mnの反強磁性

AkaiKKR(machikaneyama)を用いて、L10型構造のようにスピンが配置されている面心立方構造(fcc)のマンガン(γ-Mn)の全エネルギーと局所モーメントを計算しました。
AkaiKKRで反強磁性クロムAkaiKKRで反強磁性fcc鉄のときとは異なり、ちゃんと反強磁性状態がエネルギー的に安定であるという結果が得られました。

001_201506221048228b2.png 002_20150622104821ee3.png



γ-Mnの反強磁性


マンガンは室温で体心立方構造(bcc)に近い結晶構造を持つ複雑な反強磁性体です(α-Mn)。温度を上げていくとβ-Mnへ相転移しますが、この結晶構造もやはり複雑なものです。
しかしながら1095℃以上では、単純なfcc構造を持つ単純な反強磁性体に相転移します(γ-Mn)。このときの局所磁気モーメントはAkaiKKRで反強磁性fcc鉄で考えた第1種反強磁性と同じくL10型の配置をしています。

001_20150616101545812.png

Fig.1: fcc鉄の第一種反強磁性。異なる向きのスピンをもつ原子がL10型構造のように配置されている。FCC鉄の磁気構造より。γ-Mnも同様の磁気構造を持つ。


入力ファイルとシェルスクリプト


基本的にはAkaiKKRで反強磁性fcc鉄で行っているものと同じ計算です。入力ファイルのテンプレートとシェルスクリプトを以下に示します。


#!/bin/csh -f

## *** フォルダ構造 ***
## fccMn/─┬─analysis/
## ├─in/─L10fccMn_FMG.in
## ├─out/
## ├─data/
## ├─template/┬─L10fccMn_AFM_Template.in
## │ ├─L10fccMn_NMG_Template.in
## │ └─L10fccMn_FMG_Template.in
## ├─L10fccMn
## ├─L10fccMn.sh
## └─L10fccMn-Result.sh

## *** 格子定数のリスト ***
set ABOHR_LIST=( 7.4 7.3 7.2 7.1 7.0 6.9 6.8 6.7 6.6 6.5 6.4 6.3 6.2 6.1 6.0 )

## *** プロジェクト名 ***
set PROJECT="L10fccMn"
## ポテンシャルファイル名
set POTENTIAL=${PROJECT}

## *** 強磁性初期ポテンシャルの作成 ***
if ( ! -e data/${POTENTIAL}_AFM ) then
specx < in/${PROJECT}_FMG.in > out/${PROJECT}_FMG.out
fmg < ${PROJECT}
endif

## *** 繰り返し計算 ***
foreach ABOHR ( ${ABOHR_LIST} )
## 強磁性
if ( ! -e data/${POTENTIAL}_FMG_${ABOHR} ) then
if ( -e data/${POTENTIAL}_FMG ) then
cp data/${POTENTIAL}_FMG data/${POTENTIAL}_FMG_${ABOHR}
endif
endif
sed 's/'ABOHR'/'${ABOHR}'/g' template/${PROJECT}_FMG_Template.in > in/${PROJECT}_FMG_${ABOHR}.in
specx < in/${PROJECT}_FMG_${ABOHR}.in > out/${PROJECT}_FMG_${ABOHR}.out
cp data/${POTENTIAL}_FMG_${ABOHR} data/${POTENTIAL}_FMG

## 反強磁性
if ( ! -e data/${POTENTIAL}_AFM_${ABOHR} ) then
if ( -e data/${POTENTIAL}_AFM ) then
cp data/${POTENTIAL}_AFM data/${POTENTIAL}_AFM_${ABOHR}
endif
endif
sed 's/'ABOHR'/'${ABOHR}'/g' template/${PROJECT}_AFM_Template.in > in/${PROJECT}_AFM_${ABOHR}.in
specx < in/${PROJECT}_AFM_${ABOHR}.in > out/${PROJECT}_AFM_${ABOHR}.out
cp data/${POTENTIAL}_AFM_${ABOHR} data/${POTENTIAL}_AFM

## 非磁性
if ( ! -e data/${POTENTIAL}_NMG_${ABOHR} ) then
if ( -e data/${POTENTIAL}_NMG ) then
cp data/${POTENTIAL}_NMG data/${POTENTIAL}_NMG_${ABOHR}
endif
endif
sed 's/'ABOHR'/'${ABOHR}'/g' template/${PROJECT}_NMG_Template.in > in/${PROJECT}_NMG_${ABOHR}.in
specx < in/${PROJECT}_NMG_${ABOHR}.in > out/${PROJECT}_NMG_${ABOHR}.out
cp data/${POTENTIAL}_NMG_${ABOHR} data/${POTENTIAL}_NMG
end


結果と議論


以下に計算した全エネルギーと局所モーメントを示します。


001_201506221048228b2.png
Fig.2: 全エネルギー

002_20150622104821ee3.png
Fig.3: 局所磁気モーメント


反強磁性状態が最安定になりました。
AkaiKKRで反強磁性クロムAkaiKKRで反強磁性fcc鉄のときには、複雑な反強磁性の代わりとして、単純な反強磁性の計算を行いました。
これに対して、今回のγ-Mnは本当に単純な反強磁性が実験的にわかっている系だけあって、第一原理計算からもこのことが確認できました。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 反強磁性 強磁性 シェルスクリプト 

AkaiKKRでL12構造Ni3Mnの格子定数

AkaiKKRを用いてL12構造のNi3Mnの全エネルギーを格子定数を変化させながら計算しました。

001_2015062210034936e.png

Fig.1: L12構造のNi3Mnの結晶構造(VESTAにより描画)。面心位置(グレー)がニッケル、頂点位置(紫)がマンガン。



L12構造Ni3Mn


Ni3MnはL12構造を取る強磁性金属で、格子定数はa=3.6Å程度です。
今回はAkaiKKR(machikaneyama)を用いて格子定数と全エネルギーの関係を調べます。

シェルスクリプトを用いて、入力ファイルのテンプレートから連続的にAkaiKKRの入力ファイルを作成することにします。以下に示すのが、入力ファイルのテンプレートです。

c-----------------------L12Ni3Mn-----------------------------
go data/L12Ni3Mn_ABOHR
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
sc ABOHR , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 2.0 sra gga91 mag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 8 200 0.023
c------------------------------------------------------------
c ntyp
2
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Ni 1 1 0.0 2 28 100
Mn 1 1 0.0 2 25 100
c------------------------------------------------------------
c natm
4
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Mn
0 1/2 1/2 Ni
1/2 0 1/2 Ni
1/2 1/2 0 Ni
c------------------------------------------------------------


これを以下のシェルスクリプトで連続的に実行させます。

#!/bin/csh -f

## *** フォルダ構造 ***
## Ni3Mn/─┬─analysis/
## ├─in/
## ├─out/
## ├─data/
## ├─template/─L12Ni3Mn_Template.in
## ├─L12Ni3Mn.sh
## └─L12Ni3Mn-Result.sh


## *** OpenMPの設定 ***
setenv OMP_STACKSIZE 20M
limit stacksize unlimited
setenv OMP_NUM_THREADS 4

## *** プロジェクト名 ***
set PROJECT="L12Ni3Mn"
## ポテンシャルファイル名
set POTENTIAL=${PROJECT}

## *** 格子定数のリスト ***
set ABOHR_LIST=( 7.4 7.3 7.2 7.1 7.0 6.9 6.8 6.7 6.6 6.5 6.4 6.3 6.2 6.1 6.0 )

## *** 繰り返し計算 ***
foreach ABOHR ( ${ABOHR_LIST} )
if ( ! -e data/${POTENTIAL}_${ABOHR} ) then ## ポテンシャルがなければコピー
if ( -e data/${POTENTIAL} ) then
cp data/${POTENTIAL} data/${POTENTIAL}_${ABOHR}
endif
endif
## 自己無撞着計算
sed 's/'ABOHR'/'${ABOHR}'/g' template/${PROJECT}_Template.in > in/${PROJECT}_${ABOHR}.in
specx < in/${PROJECT}_${ABOHR}.in > out/${PROJECT}_${ABOHR}.out
## 次回の初期ポテンシャルをコピー
cp data/${POTENTIAL}_${ABOHR} data/${POTENTIAL}
end


結果と議論


以下に計算結果を示します。


002_2015062210034930b.png
Fig.2: 格子定数と全エネルギーの関係

003_201506221003480e9.png
Fig.3: 格子定数と局所モーメントの関係


格子定数は a=6.8Bohr 程度とわかりました。1原子あたりの局所モーメントはニッケルよりもマンガンの方が大きく、全磁気モーメントのほとんどをマンガンがもっているような結果となりました。これがあってるのかは私は知りません。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 強磁性 シェルスクリプト 

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ブラウン運動起電力スーパーセル差し込みグラフ第一原理計算フェルミ面fsolveCIFxcrysden最大値最小値ubuntu最適化平均場近似OpenMPシュレディンガー方程式固有値問題井戸型ポテンシャル2SC1815TeX結晶磁気異方性OPA2277非線型方程式ソルバフラクタルFSM固定スピンモーメントc/agnuplotPGA全エネルギーfccマンデルブロ集合縮退正規分布キーボード初期値interp1multiplotフィルタ面心立方構造ウィグナーザイツ胞L10構造半金属二相共存ZnOウルツ鉱構造BaOSIC重積分磁気モーメント電荷密度化学反応クーロン散乱岩塩構造CapSenseノコギリ波デバイ模型ハーフメタルRealforceフォノンquantumESPRESSOルチル構造スワップ領域リジッドバンド模型edelt合金等高線凡例軸ラベル線種シンボルトラックボールグラフの分割MAS830LPIC16F785トランス入出力CK1026PC直流解析パラメータ・モデル等価回路モデル不規則局所モーメント関数フィッティング日本語ヒストグラムTS-112ExcelGimp円周率TS-110LMC662片対数グラフ三次元specx.fifortUbuntu文字列疎行列不純物問題ジバニャン方程式ヒストグラム確率論マテリアルデザインP-10境界条件連立一次方程式AACircuit熱拡散方程式HiLAPW両対数グラフ陰解法MBEナイキスト線図負帰還安定性Crank-Nicolson法EAGLE最小二乗法

最新コメント
リンク

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