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 シェルスクリプト 

comment

Secret

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

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

最新コメント
リンク

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