Ubuntuでシンボリックリンクの作成

AkaiKKR(machikaneyama)などのソフトウエアパッケージをインストールする際に、以前のバージョンも残しておきたいと思うことが良くあります。一方で、最新版には簡単にアクセスできるようにもしておきたいです。そこで最新版のディレクトリにシンボリックリンクを作成すると便利です。Windowsで言うところのショートカットです。現在の最新版である January 17, 2018 を ~/kkr/20180117/cpa2002v009c/ にインストールしてあるとして、以下のようにコマンドを打ち込みます。

ln -s ~/kkr/20180117/cpa2002v009c/ ~/kkr/cpa2002v009c


このようにする事によって、あたかも ~/kkr/cpa2002v009c/ に最新版があるかのように操作することが出来ます。新しいバージョンが公開されたら、シンボリックリンクだけを作り直せばOKです。

参考URL




フィードバック



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

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


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


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

tag: Ubuntu AkaiKKR machikaneyama 

AkaiKKRのMT球の充填率 その2

AkaiKKRのMT球の充填率 その1では、面心立方構造と体心立方構造の金属のマフィンティン半径を変えながら全エネルギーを計算しました。その結果、マフィンティン球をできるだけ大きくするとき、全エネルギーが低くなることが確認できました。
これに対して、プリミティブセルに2種類以上の原子を含む場合、それぞれの原子のMT半径の比をどのように取るのがよいのかという問題が発生します。今回は、MgOのマグネシウムと酸素のマフィンティン球半径の比を、マフィンティン球が接する条件を保ちながら変化させたときに全エネルギーがどのように変わるかを確認しました。


計算手法


AkaiKKRのMT球の充填率 その1と同様に入力ファイルのテンプレートとシェルスクリプトを用いて、酸素とマグネシウムの比を変化させながら全エネルギーを計算します。

c------------------------------------------------------------
go data/MgO_RMT
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 7.9582 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 2.0 sra pbe nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
2
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Mg 1 2 0.0 2
12 100
O 1 RMT 0.0 2
8 100
c------------------------------------------------------------
c natm
2
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Mg
1/2 1/2 1/2 O
c------------------------------------------------------------


#!/bin/csh -f

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

## *** プロジェクト名 ***
set PREFIX="MgO"

## *** 酸素のMT半径設定値 ***
set RATIO_LIST=( 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 )

## *** ポテンシャルの再利用フラグ ***
## (0: 利用しない, 1: 利用する)
set POTCOPY=0

## *** 計算結果の出力先 ***
set ANALYSIS="./analysis/${PREFIX}.txt"
if ( -e ${ANALYSIS} ) then
cat ${ANALYSIS} >> ${ANALYSIS}.back
endif
echo "MT_ratio Filling(%) Total_energy(Ry)" > ${ANALYSIS}

## *** 繰り返し計算 ***
foreach RATIO ( ${RATIO_LIST} )
set RMT=`echo "${RATIO}*2" | bc -l | sed -e 's/^\./0./g'`
## *** ファイル名 ***
set TEMPLATE="./template/${PREFIX}_Template.in"
set KKRINP="./in/${PREFIX}_${RMT}.in"
set KKROUT="./out/${PREFIX}_${RMT}.out"
set POTFILE="./data/${PREFIX}_${RMT}"
set POTBACK="./data/${PREFIX}"

## 前回のポテンシャルが存在すれば利用
if (( -e ${POTBACK} ) && ( ${POTCOPY} == 1 )) then
cp ${POTBACK} ${POTFILE}
endif

## *** 入力ファイルの作成 ***
sed 's/'RMT'/'${RMT}'/g' ${TEMPLATE} > ${KKRINP}

## *** 第一原理計算の実行 ***
## 最大計算回数
set nummax=20
## 計算回数の初期化
set num=0
## 最初の第一原理計算
${EXEC} < ${KKRINP} > ${KKROUT}
## *** 繰り返し計算 ***
while ( ( ! { grep -q "err= -6." ${KKROUT} } ) && ( $num < $nummax ) )
${EXEC} < ${KKRINP} > ${KKROUT}
@ num++
end

## 前回のポテンシャルが存在すればバックアップ
if ( ${POTCOPY} == 1 ) then
cp ${POTFILE} ${POTBACK}
endif

## *** 結果の出力 ***
set ENE=`grep "total energy" ${KKROUT} | sed -e s/total//g -e s/energy=//g`
set FIL=`grep "volume filling=" ${KKROUT} | sed -e s/volume//g -e s/filling=//g -e s/%//g`
echo ${RATIO} ${FIL} ${ENE} >> ${ANALYSIS}
end


計算結果


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

MgO.png

Fig.1


酸素とマグネシウムのマフィンティン半径の比rO/rMgが1.2~1.3ぐらいで全エネルギーが最小になっています。
ちなみにマフィンティン球による充填率は、rO/rMg=1のとき最も低くなります。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

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

AkaiKKRのMT球の充填率 その1

AkaiKKR(machikaneyama)は、マフィンティン球近似(MT近似)を利用しています。このマフィンティン球の半径をどのような値に採るのがよいのかは、よく議論になります。今回は、面心立方構造(fcc)の銅とニッケル、体心立方構造(bcc)の鉄についてマフィンティン半径を変化させながら全エネルギーを計算してみました。


タッチング半径


プリミティブセルに1個だけしか原子を持たないfccやbccの場合、マフィンティン半径を出来るだけ大きく取る方がよい結果になるといわれています。格子定数 a に対して、面心立方構造の最近接原子間距離は $\sqrt{2}a/2$ となります。よってMT球のタッチング半径は、最近接原子間距離の半分で以下のようになります。

\begin{equation*}
r_{MT,fcc} = \frac{\sqrt{2}}{4} a \simeq 0.3535534 a
\end{equation*}

同様に、体心立方構造の場合の最近接原子間距離が $\sqrt{3}a/2$ なので、タッチング半径は以下のようになります。

\begin{equation*}
r_{MT,bcc} = \frac{\sqrt{3}}{4} a \simeq 0.4330127 a
\end{equation*}

タッチング半径を 1 としたときに、実際のMT半径を小さくしていったときに全エネルギーがどのように変化するかを計算します。

計算手法


template/を作成して、以下のような入力ファイルのテンプレートを置きます。

c------------------------------------------------------------
go data/Cu_RMT
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
fcc 6.83 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.2 sra pbe nmag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.01
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Cu 1 RMT 0.0 2
29 100
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx atmtyp
0 0 0 Cu
c------------------------------------------------------------


このテンプレートでは、マフィンティン半径の部分が RMT という文字列にされているので、この文字列を置き換えながら第一原理計算を行うようなシェルスクリプトを用意します。

#!/bin/csh -f

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

## *** プロジェクト名 ***
set PREFIX="Cu"

## *** タッチング半径に対するMT半径の比 ***
set RATIO_LIST=( 1.00 0.99 0.98 0.97 0.96 0.95 0.94 0.93 0.92 0.91 0.90 0.89 0.88 0.87 0.86 0.85 0.84 0.83 0.82 0.81 0.80 )

## *** ポテンシャルの再利用フラグ ***
## (0: 利用しない, 1: 利用する)
set POTCOPY=0

## *** 計算結果の出力先 ***
set ANALYSIS="./analysis/${PREFIX}.txt"
if ( -e ${ANALYSIS} ) then
cat ${ANALYSIS} >> ${ANALYSIS}.back
endif
echo "MT_ratio Filling(%) Total_energy(Ry)" > ${ANALYSIS}

## *** 繰り返し計算 ***
foreach RATIO ( ${RATIO_LIST} )
## fcc
set RMT=`echo "${RATIO}*sqrt(2)/4" | bc -l | sed -e 's/^\./0./g'`
## bcc
#set RMT=`echo "${RATIO}*sqrt(3)/4" | bc -l | sed -e 's/^\./0./g'`

## *** ファイル名 ***
set TEMPLATE="./template/${PREFIX}_Template.in"
set KKRINP="./in/${PREFIX}_${RATIO}.in"
set KKROUT="./out/${PREFIX}_${RATIO}.out"
set POTFILE="./data/${PREFIX}_${RATIO}"
set POTBACK="./data/${PREFIX}"

## 前回のポテンシャルが存在すれば利用
if (( -e ${POTBACK} ) && ( ${POTCOPY} == 1 )) then
cp ${POTBACK} ${POTFILE}
endif

## *** 入力ファイルの作成 ***
sed 's/'RMT'/'${RMT}'/g' ${TEMPLATE} > ${KKRINP}

## *** 第一原理計算の実行 ***
## 最大計算回数
set nummax=5
## 計算回数の初期化
set num=0
## 最初の第一原理計算
${EXEC} < ${KKRINP} > ${KKROUT}
## *** 繰り返し計算 ***
while ( ( ! { grep -q "err= -6." ${KKROUT} } ) && ( $num < $nummax ) )
${EXEC} < ${KKRINP} > ${KKROUT}
@ num++
end

## 前回のポテンシャルが存在すればバックアップ
if ( ${POTCOPY} == 1 ) then
cp ${POTFILE} ${POTBACK}
endif

## *** 結果の出力 ***
set ENE=`grep "total energy" ${KKROUT} | sed -e s/total//g -e s/energy=//g`
set FIL=`grep "volume filling=" ${KKROUT} | sed -e s/volume//g -e s/filling=//g -e s/%//g`
echo ${RATIO} ${FIL} ${ENE} >> ${ANALYSIS}
end


計算結果


Cu_2017122303463390d.png
Fig.1: 銅の計算結果


Ni.png

Fig.2: ニッケルの計算結果


Fe.png
Fig.3: 鉄の計算結果


とりあえず、いずれの場合もMT球の半径が大きくなるほど全エネルギーが低くなることが分かります。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 

AkaiKKRで仮想結晶近似

ecaljで仮想結晶近似ecaljでB-dopedダイヤモンドでは、原子番号に小数を指定することによって合金の計算を行いました。AkaiKKR(machikaneyama)ではCPAで合金の計算が出来るので出番はなさそうだと思っていましたが、原子番号の部分に小数を指定できるということです。

bccFeX-float.png

Fig.1: 強磁性鉄中の不純物元素の磁気モーメント


AkaiKKRで不純物の磁気モーメントでは強磁性の鉄の中に、鉄のバンド構造に影響を与えないほど微量の不純物元素を導入したときの不純物元素がもつ磁気モーメントの大きさを計算しました。そして周期表でマンガンよりも左の元素では磁気モーメントが負(鉄の磁気モーメントと反並行)となり、鉄よりも右の元素では正になることが分かりました。

そこで今回は、その中間の原子番号を持つ仮想的な元素ではどうなるのかを調べるために原子番号に非整数を用いて計算を行ってみました。結果はFig.1のようになりました。非整数の原子番号を持つ仮想的な原子の磁気モーメントが、現実の物性と比較してどういう意味があるのかは分かりませんが、思った以上にきれいなトレンドを示す結果になりました。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 仮想結晶近似 VCA 強磁性 

AkaiKKRで不純物の磁気モーメント

第31回のCMDワークショップAkaiKKR(machikaneyama)実習で鉄の中に不純物元素を入れたときの不純物元素の磁気モーメントの計算を行いました。CMDワークショップの時には手動で不純物元素の種類を置き換えて計算していたので、今回はシェルスクリプトを作成して自動化を行いました。

bccFeX.png

Fig.1: 強磁性鉄の中の不純物の磁気モーメント。正の値は鉄と同じ向きのモーメントを持つことを意味し、負の値は逆方向のモーメントを持つことを意味する。



入力ファイルのテンプレートとして以下を用意しました。NIMPの部分を不純物元素の原子番号に置き換えて計算します。

c----------------------Fe------------------------------------
go data/bccFeX_ATOM
c------------------------------------------------------------
c brvtyp a c/a b/a alpha beta gamma
bcc 5.27 , , , , , ,
c------------------------------------------------------------
c edelt ewidth reltyp sdftyp magtyp record
0.001 1.0 sra mjw mag 2nd
c------------------------------------------------------------
c outtyp bzqlty maxitr pmix
update 4 200 0.035
c------------------------------------------------------------
c ntyp
1
c------------------------------------------------------------
c type ncmp rmt field mxl anclr conc
Fe 2 1 0.0 2
26 100
NIMP 0
c------------------------------------------------------------
c natm
1
c------------------------------------------------------------
c atmicx(in the unit of a) atmtyp
0 0 0 Fe
c------------------------------------------------------------


元素の置き換えの部分などもろもろの処理は、以下のようなシェルスクリプトを作って行いました。
実行するには通常のAkaiKKRのディレクトリ構成に加えて前述のテンプレートファイルを置いておくためのtemplate/ディレクトリや計算結果のサマリが出力されるanalysis/ディレクトリを作っておく必要があります。

#!/bin/csh -f
setenv GFORTRAN_UNBUFFERED_ALL y

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

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

## *** 不純物 ***
set ATOM_LIST=( K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr )
set NIMP_LIST=( 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 )

#set ATOM_LIST=( K )
#set NIMP_LIST=( 19 )

## *** 計算結果の出力先 ***
if ( -e analysis/${PROJECT}.txt ) then
cat analysis/${PROJECT}.txt >> analysis/${PROJECT}.txt.back
endif
echo "ATOM NUM MOMFE MONIMP" > analysis/${PROJECT}.txt

## *** 繰り返し計算 ***
set iIMP=1
while ( ${iIMP} <= ${#NIMP_LIST} )
## 変数のセット
set ATOM=${ATOM_LIST[${iIMP}]}
set NIMP=${NIMP_LIST[${iIMP}]}

## ファイル名
set INFILE="in/${PROJECT}_${ATOM}.in"
set OUTFILE="out/${PROJECT}_${ATOM}.out"
set POTFILE="data/${PROJECT}_${ATOM}"
## テンプレートから入力ファイルを作成
sed 's/'ATOM'/'${ATOM}'/g' template/${PROJECT}_Template.in | sed 's/'NIMP'/'${NIMP}'/g' > ${INFILE}

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

## 磁気モーメントの読み出し
set MMOMFE=`grep "spin moment" ${OUTFILE} | sed -n 1p | awk '{print $3}'`
set MMOMIMP=`grep "spin moment" ${OUTFILE} | sed -n 2p | awk '{print $3}'`

## 結果の出力
echo ${ATOM} ${NIMP} ${MMOMFE} ${MMOMIMP} >> analysis/${PROJECT}.txt

## カウントの増加
@ iIMP++
end


計算結果が書き込まれたbccFeX.txtからgnuplotを使ってグラフを描画します。下記のgnuplotスクリプトを利用しました。

set xzeroaxis
set xlabel "Atomic Number"
set ylabel "Magnetic Moment"

plot "bccFeX.txt" u 2:($4*$3/abs($3)):xticlabels(1) w lp pt 7 not

set terminal pngcairo size 520,390
set output "bccFeX.png"
rep


関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR 強磁性 磁気モーメント 不純物問題 

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

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

最新コメント
リンク

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