n行ごとに改行を挿入するシェルスクリプト

Gnuplotで3次元プロットを行うためには、入力するデータのファイルに改行が入っていないとエラーが出ます。
そこでn行ごとに改行を挿入するシェルスクリプトinsbreak.shを書きました。

#!/bin/bash

tmpfile=$(mktemp)
cat ${1} | awk '{print $0} NR%'${2}'==0 {printf "\n"}' > ${tmpfile}
mv ${tmpfile} ${1}


使い方は以下のようにコマンドラインに打ち込みます。

./insbreak.sh hoge.dat 5



上記の例ではhoge.datにたいして5行ごとに改行が入ります。
仮にhoge.datが以下の内容だったとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


するとhoge.datは以下のように上書きされます。

1
2
3
4
5

6
7
8
9
10

11
12
13
14
15

16
17
18
19
20



本当は安全な一時ファイルの削除の仕方とかもあるようですが、今回はここまで。(どうせこのスクリプトは自分では使わないし)
結果を上書きしてしまうので、もし使うならファイルのバックアップは取っておいた方がいいです。

関連エントリ




参考URL




付録


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


フィードバック



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

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


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


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

tag: cygwin シェルスクリプト awk 

AkaiKKRのインストール

AkaiKKR(machikayema)は、東京大学の赤井久純先生が開発された第一原理計算パッケージで、KKR-CPA法を採用することで化学的な不規則(不純物、不規則合金、固溶体)のバンド計算が可能です。

CygwinでAkaiKKR(Machikaneyama)では Cygwin + g77 でAkaiKKRを利用する方法を書きましたが g77 がCygwinのパッケージからなくなってしまったこともあり、新しい情報でエントリをまとめなおします。
また、AkaiKKRがOpenMPに対応したので、並列化を行う際の注意点についても触れます。ただし、最初はOpenMPを使わない設定で試してみることをお勧めします。

今回のエントリは、以下の流れで展開します。

  1. コンパイラのインストール
  2. AkaiKKR(machikayema)のダウンロードと展開
  3. makefileの編集
  4. specx.fの編集とコンパイル
  5. .bashrcの設定

この際、使用している環境(Ubuntu/Cygwin)とコンパイラ(ifort/gfortran)の違いによって設定方法の説明が枝分かれしていることに注意してください。

注) エントリを書いている間に September 05, 2014 がリリースされたようですが、このエントリは July 29, 2014 を基準に書かれています。September 05, 2014でも大丈夫なようです。
注) 5aと5bの.bashrcへの追記する内容が間違っていたものを修正しました。(2014年9月18日)



はじめに


CygwinでAkaiKKR(Machikaneyama)ではWindowsのCygwinでAkaiKKR(machikayema)を使う方法をまとめました。しかしながら、主に以下の理由で情報が古くなったので新しいエントリにまとめます。

  • AkaiKKRがOpenMPに対応した
  • Cygwinからg77が無くなった

g77の代わりにはgfortranが利用できます。AkaiKKRの現在の最新版(cpa2002v009c July 29, 2014)ではデフォルトではIntel Fortran Compiler(ifort)でOpenMPを有効にしたものを使う設定になっています。

しかしAkaiKKR(machikayema)にも下記の様にあるとおり、AkaiKKRは実際に様々な環境で動作させることが可能です。
AkaiKKR単体で使用することができ、小さなノートパソコンから大きなスーパーコンピュータまで様々な環境で同じように動きます。FORTRANコンパイラが入っているものならば、UNIX、Linux、Mac、Windowsといったあらゆるプラットホーム上で使用できます。

今回は、以下の各条件で動作させる際のインストールの方法と.bashrcの設定について書きます。

  • Cygwin + gfortran (+ OpenMP)
  • Ubuntu + gfortran (+ OpenMP)
  • Ubuntu + ifortran (+ OpenMP)

OpenMP


現在の最新版(cpa2002v009c July 29, 2014)よりも前のバージョンのAkaiKKRではCPUを1スレッドしか利用しません。これに対して最近のPCのCPUは2コア,4コアが当たり前となっています。そうすると極端な話、AkaiKKRはそのPCの性能の半分や四分の一しか利用できていないことになります。

そこでOpenMPを利用すると、計算に利用するスレッドの数を増やした並列計算をすることが可能になります。単純に速度が2倍4倍になるわけではないでしょうが、いくばくかの高速化が期待できるはずです。

ただし、OpenMPを使うためにはコンパイルオプションを指定したり、.bashrcを設定したりする必要があります。少々厄介なことにコンパイルオプションや.bashrcで設定する環境変数の値は、コンパイラの違い(gfortran or ifort)だけでなくAkaiKKRで計算する系によっても異なる場合があります。そのため、まずは、OpenMPを使わない状況で計算できるようにするのがオススメです。

以降、適切なタイミングで紹介しますが、OpenMPを利用する場合は下記のサイトが参考になります。


共通の確認事項


どのOSとコンパイラを使うにしても、以下の流れは共通です。

  1. コンパイラのインストール
  2. AkaiKKR(machikayema)のダウンロードと展開
  3. makefileの編集
  4. specx.fの編集とコンパイル
  5. .bashrcの設定

CygwinでAkaiKKR(Machikaneyama)と比較して「5. .bashrcの設定」の項目が増えました。これはOpenMPを使う場合は特に必須になります。

1. コンパイラのインストール


WindowsでAkaiKKRを実行する場合、Cygwin上でgfortranを使うことができます。
UbuntuなどのLinuxではgfortranの他にIntel Fortran Compiler(ifort)も非商用なら無料で利用できます。

1.a Cygwin + gfortran (+ OpenMP)


CygwinでAkaiKKR(Machikaneyama)にも書いたとおり、CygwinでAkaiKKRを使う場合、とにかく全部のパッケージをInstallにしてしまうのが簡単です(時間はかかりますが)。
最新のCygwinには32bit版と64bit版が存在します。私の環境では64bit版をインストールしました。


002_20130114153227.png

Fig.2: Cygwinのインストールでかならずgfortranがインストールされるようにする。全パッケージのインストールを選ぶとgfortranもインストールされる。


インストールの確認にはCygwinのターミナル上で以下の様にタイプします。

gfortran --version

コンパイラのバージョンが表示されればインストール完了です。

1.b Ubuntu + gfortran (+ OpenMP)


Ubuntuにgfortranをインストールする場合は、シェル上で以下のようにタイプします。

sudo apt-get install gfortran

この際、パスワードを聞かれるので入力します。

1.c Ubuntu + ifort (+ OpenMP)


AkaiKKRはIntel Fortran Compiler(ifort)を利用するのが最も標準的であると思われます。(恐らく赤井先生をはじめAkaiKKRの開発者の方々はifortをメインに利用している気がします。makefileのデフォルトの設定もifortですし。)

Ubuntu 12.04 64bitでHiLAPWでも書きましたが、私は64bit版のUbuntu 12.04にifortをインストールしています。私がインストールしたときにはUbuntu12.04 IntelR Parallel Studio XE 2011 for Linuxのインストールの通りに行いました。
しかし、最近のバージョンでは上手く行かないとのことでUbuntu14.04 64bit にIntelR Parallel Studio XE 2013 for Linuxのインストールが新たに公開されています(私はまだ試していません)。

2. AkaiKKRのダウンロードと展開


AkaiKKRのダウンロードには『計算コード利用許諾契約』への同意と利用登録が必要です。
利用登録に必要な情報は
  • 名前
  • メールアドレス
  • 所属
の3つだけです。

利用登録が完了すると入力したメールアドレスにパスワードが送信されてきます。
このパスワードを利用して、このエントリを書いている段階での最新版であるcpa2002v009c.tar.gzをダウンロードします。

AkaiKKRのページでは、プログラム本体のほかにマニュアルも配布しています。KKR-Green関数法によるバンド計算Machikaneyama2000の使用に関するメモは印刷して手元においておくとよいと思います。

また市販の書籍として計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)密度汎関数法の発展 -マテリアルデザインへの応用にAkaiKKRに関する言及があります。特に前者は、第一原理計算を"良くわからないけど、とにかくやってみる"という立場の人(私とか)にはよい本だと思います。



KKR-Green関数法によるバンド計算の『プログラムの入手、コンパイルと実行』にならった方法でインストールを進めます。

ダウンロードしたcpa2002v009c.tgzがホームディレクトリにおいてあるとします。64bit版のCygwinを利用している場合には C:\cygwin64\home\ユーザー名 がホームディレクトリとなっていると思います。

このホームディレクトリにkkrというディレクトリを作成します。つぎにcpa2002v009cをkkrフォルダの中に移動します。最後にcpa2002v009c.tgzを展開します。

mkdir kkr
cd kkr
mv ../cpa2002v009c.tgz
tar -xzvf cpa2002v009c.tgz

上記のコマンドを順に打ち込めば展開まで行うことが出来ます。もちろんコマンドではなく解凍レンジなどの解凍用ツールを利用しても大丈夫です。
最終的に ~/kkr/cpa2002v009c/ というディレクトリが出来ます。

3. makefileの編集


cpa2002v009cフォルダへ移動するとmakefileというファイルが存在していることが分かります。これをテキストエディタで開いて編集します。

cd ~/kkr/cpa2002v009c/
emacs makefile -nw

上記のコマンドはemacsで編集する場合の例です。

現在の最新版であるcpa2002v009c(July 29, 2014)に付属するmakefileの中の、以下の4つの項目を適切に設定することで、コンパイラの種類やOpenMPの有無に応じて実行ファイルを生成できるようになります。

fort = 
flag =
omp =
nomp =

OpenMPに対応した並列実行ファイルを生成したい場合であっても、最初はOpenMPなしで実行が出来るかを確認するのが良いと思います。
以降では、OSとコンパイラ、OpenMPの有無のそれぞれの条件でどのようにmakefileを編集すればよいかをまとめます。
なお、下記の条件は私の環境で実行できている設定と言うだけで、全ての環境で上手く行くのかは分かりませんし、最適な設定であることも保証しません。

3.a Ubuntu + ifort (OpenMP無し)


UbuntuなどのLinuxでOpenMPを使わない条件でのmakefileは以下の様になります。

fort = ifort
flag = -mp1 -i-dynamic
omp =
nomp =

cpa2002v009c(July 29, 2014)に付属するmakefileの初期設定が ifort + OpenMP なのでOpenMP関連のオプションを空にするだけです。

3.b Ubuntu/Cygwin + gfortran (OpenMP無し)


次にコンパイラとして gfortran をつかいOpenMPは使用しない設定を書きます。

fort = gfortran
flag =
omp =
nomp =

この設定はUbuntuなどのLinuxでもWindows上のCygwinであってもどちらでも使えます。

3.c Ubuntu + ifort + OpenMP


以下に示すのはcpa2002v009c(July 29, 2014)のデフォルトのmakefileの設定です。
UbuntuなどのLinux上でifortを使いOpenMPの並列化を行う場合は、この設定をそのまま使います。
fort = ifort
flag = -mp1 -i-dynamic
omp = -openmp
nomp = -openmp-stubs

しかしながらOpenMPを使うためには.bashrcの設定が必要になります。これを適切に設定しない場合は入力ファイルの種類によってはセグメンテーション違反(Segmentation fault)の出力が出てAkaiKKRが異常終了する場合があります。

3.d Ubuntu + gfortran + OpenMP


AkaiKKR掲示板の6548 コンパイルスレッドではgfortranでコンパイルする場合についての質問が投稿されています。その際にはOpenMPを利用しない設定にして事なきを得たようですが、実はgfortranもOpenMPに対応しています。ただし、注意しなければならないのはコンパイルオプションとして-openmpではなく-fopenmpが必要になると言うことです。

fort = gfortran
flag =
omp = -fopenmp
nomp =

上記の例はUbuntuなどのLinuxで使う場合です。Cygwinのgfortranの場合は更にコンパイルオプションが必要です。

3.e Cygwin + gfortran + OpenMP


CygwinでOpenMPを使う方法を参考にCygwinのgfortranでOpenMPを使ってAkaiKKRをコンパイルするためのmakefileの設定を書きます。

fort = gfortran
flag =
omp = -fopenmp -Wl,--stack,16777216
nomp =

前述の通りgfortranでOpenMPを使うためのオプションは-fopenmpです。
OpenMPを利用する場合は、AkaiKKRの実行ファイルを走らせる前に ulimit -s unlimited と言うコマンドを実行しておかなければならないのですがCygwinではこのコマンドが使えません。対応策はCygwinでOpenMPを使う方法にあるとおりコンパイルのオプションでスタックサイズを指定しておくことです。
上記の例ではスタックサイズとして16777216を指定していますが、これが本当に妥当な値なのかは分かりません。状況に応じて変える必要があるかもしれません。

4. specx.fの編集とコンパイル


makefileの編集が終わればmakeコマンドを使ってコンパイルを行うことが出来ます。
~/kkr/cpa2002v009c/へ移動します。
古いバージョンの実行ファイルやオブジェクトファイルが存在する可能性があるので念のため touch を行います。その後に make を行います。

cd ~/kkr/cpa2002v009c
touch source/*.f
make

CygwinでAkaiKKRを書いたときのバージョンでは、エラーメッセージが表示されてコンパイルに失敗しましたが、cpa2002v009c(July 29, 2014)では、少なくとも私の環境では、そのままコンパイルに成功しました。

ただし入力ファイルの条件、例えば計算セル内の原子の数やk点の数によっては ~/kkr/cpa2002v009c/source/specx.f の編集が必要になる場合があります。

編集すべきパラメータはcpa2002v009c(July 29, 2014)では以下の2行です。

     & (natmmx=8, ncmpmx=8, msizmx=72, mxlmx=4, nk1x=550, nk3x=25,
& msex=201, ngmx=15, nrpmx=650, ngpmx=650, npmx=350, msr=400)


これらのパラメータは『配列の大きさを指定するパラメータ』です。詳しくはKKR-Green関数法によるバンド計算のP29の表5を見てください。

この中でnatmmxとncmpmxの2つのパラメータに注目します。これらはそれぞれ計算する計算セルの中の『原子の個数』と『原子の種類』の最大値をあらわします。
例えば体心立方構造(bcc)や面心立方構造(fcc)の『原子の個数』は1個、六方最密充填構造(hcp)の場合は2個です。また『原子の種類』の方は、純金属で1種類、二元合金で2種類、三元合金で3種類です。

msizmxとmxlmxに関してはAkaiKKRの角運動量(方位量子数)のメモに書く予定です。

nk1kとnk3xは入力ファイルのbzqltyを大きくする(k点の数を増やす)場合に大きくする必要があります。

これらのパラメータを変更した場合はそのたびに make を行う必要があります。make に成功すると実行ファイルが生成されます。Linuxではspecxで、Cygwinではspecx.exeです。

5. .bashrcの設定


まず、実行ファイルのある~/kkr/cpa2002v009c/にパスを通しておくのが良いと思います。
.bashrcはホームディレクトリに存在するファイルです。テキストエディタで編集を行います。
例えばemacsで編集する場合は以下の様にコマンドをタイプします。

cd ~/
emacs .bashrc -nw

実行ファイルのあるディレクトリにパスを通す場合.bashrcの最後に以下の行を追加します。

PATH="$PATH":$HOME/kkr/cpa2002v009c

OpenMPを利用する場合は、他にも追記する必要があります。そしてその追記の内容はOSとコンパイラの種類、更には計算する入力ファイルによって変化します。

現在の最新版であるcpa2002v009c(July 29, 2014)を実行するとアウトプットの冒頭に以下の様なメッセージが表示されます。OpenMPを利用する場合は、このメッセージに従って.bashrcに追記を行います。

 OpenMP required stack size:               91288.
Use the followings command for Linux csh/tcsh:
------------------------------
setenv KMP_STACKSIZE 1M
limit stacksize unlimited
setenv OMP_NUM_THREADS n
------------------------------
Here, n is the number of threads to be used, maybe 8

ただし、上記の表記はcsh/tcsh用になっているのでbash用の表記に変えます。具体的にどのような追記が必要であるかは以降で個別に紹介します。

.bashrcへの全ての追記/編集が終わったら、再起動またはsourceコマンドで.bashrcを読み込ませます。

source ~/.bashrc

5.a Ubuntu + ifort + OpneMP


まずは最も標準的な環境であるUbuntuなどのLinux上でIntel Fortran Compiler(ifort)を使う場合の.bashrcへの追記について書きます。

export KMP_STACKSIZE=16M
ulimit -s unlimited
export OMP_NUM_THREADS=4

アウトプットファイルの冒頭にある表記をcsh/tcshのものからbashのものに書き直しました。

KMP_STACKSIZEは今回は16Mとしてありますが、計算する系によっては過剰かもしれませんし、また少なすぎるかもしれません。大きすぎて困ることがあるかはわかりませんが、少なくとも小さすぎると計算してくれません。

OMP_NUM_THREADSには、使用するCPUのスレッド数を指定します。クアッドコアのCPUなら4を指定するとフルパワーで計算してくれます。また、クアッドコアであっても、あえて2などを指定しておけばCPUを使い切るのを避けることができます。

5.b Ubuntu + gfortran + OpneMP


次にUbuntuなどのLinux上でgfortranを使う際の.bashrcの設定について書きます。

export OMP_STACKSIZE=16M
ulimit -s unlimited
export OMP_NUM_THREADS=4

各パラメータの意味は、上記の ifort のものと同じですが、注意点としては KMP_STACKSIZE が OMP_STACKSIZE に変わっているということでしょうか。
OpenMP* の環境変数によると KMP_ で始まるものはインテル固有の環境編巣であるとのことです。したがって gfortran を利用する場合には、対応する環境変数である OMP_STACKSIZE を設定します。

5.c Cygwin + gfortran + OpneMP


最後にCygwin上でgfortranを使う場合の.bashrcの設定に関して書きます。

export OMP_STACKSIZE=16M
export OMP_NUM_THREADS=4

内容はUbuntuでgfortranを使う場合と同じですが limit stacksize unlimited がなくなっています。
これは「3. makefileの編集」の中の「3.e Cygwin + gfortran + OpenMP」の項目のところで説明したとおりCygwinでは limit stacksize unlimited が使えないためです。

関連エントリ




参考URL




参考文献/使用機器



フィードバック



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

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


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


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

tag: Scilab AkaiKKR machikaneyama KKR cygwin Ubuntu ifort gfortran OpenMP 

CygwinでAkaiKKR(Machikaneyama)

このエントリの内容は、やや古くなったため新しいエントリを書き直しました。→ AkaiKKRのインストール

AkaiKKR(Machikaneyama)は、大阪大学の赤井久純先生が公開されている第一原理計算パッケージで、KKR-CPA法を採用することで不規則合金のバンド計算が可能です。


NiDOS.png

Fig.1: Niの状態密度


本エントリでは、Cygwinのg77コンパイラを利用してWindows上でAkaiKKRを使う方法について書きます。

Cygwin上のAkaiKKRの利用に関しては、AkaiKKRのBBSの0038
How can I calculate cohesive energy? (in Japanese)
にmakefileの編集だけでコンパイルできるとの報告がありますが、最新版(009c)ではエラーが出てしまいます。そこでmakefileの編集に加えてspecx.fの編集が必要になります。(AkaiKKRのヴァージョンを下げると解決するという報告もあるようですが、おそらくspecx.fの編集の方が正攻法のはずです。)

Cygwin上でのAkaiKKR利用に必要な手順は下記の通りです。
  1. Cygwinのインストール
  2. AkaiKKRのダウンロードと展開
  3. makefileの編集
  4. specx.fの編集とコンパイル
  5. テスト計算(Niの状態密度)



1. Cgywinのインストール


AkaiKKRをコンパイルするためには、FORTRAN77コンパイラが必要です。Windows上で利用できるFORTRAN77コンパイラはいろいろな種類があると思うのですが、今回は無料で利用できるCygwin上のg77コンパイラを利用します。
Cygwinのインストールの方法自体は、ウエブ上にたくさん解説記事があると思うので書きませんが、必ずg77をインストールしてください。デフォルトではインストールされません。


002_20130114153227.png

Fig.2: Cygwinのインストールでかならずg77がインストールされるようにする。全パッケージのインストールを選ぶとg77もインストールされる。


私は面倒くさいので全てインストール(All Install)としました(Fig.2)。これを選ぶとインストールにかなりの時間がかかります。
夜寝る前にインストール作業を開始して、朝起きたらインストールが終わっているか確認するぐらいがいいと思います。

Cygwinのインストールが完了したら、Cygwinのターミナル上で
g77 --version

とタイプしてみます。コンパイラのバージョン情報が表示されればインストール完了です。

2. AkaiKKRのダウンロードと展開


AkaiKKRのダウンロードには『計算コード利用許諾契約』への同意と利用登録が必要です。
利用登録に必要な情報は
  • 名前
  • メールアドレス
  • 所属
の3つだけです。

利用登録が完了すると入力したメールアドレスにパスワードが送信されてきます。
このパスワードを利用して、このエントリを書いている段階での最新版であるcpa2002v009c.tar.gzをダウンロードします。

AkaiKKRのページでは、プログラム本体のほかにマニュアルも配布しています。KKR-Green関数法によるバンド計算Machikaneyama2000の使用に関するメモは印刷して手元においておくとよいと思います。

また市販の書籍として計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)密度汎関数法の発展 -マテリアルデザインへの応用にAkaiKKRに関する言及があります。特に前者は、第一原理計算を"良くわからないけど、とにかくやってみる"という立場の人(私とか)にはよい本だと思います。



KKR-Green関数法によるバンド計算の『プログラムの入手、コンパイルと実行』にならった方法でインストールを進めます。

まず、Cygwinのホームディレクトリにkkrというディレクトリを作成します。Cygwinのホームディレクトリは、普通にインストールを行っていれば『C:\cygwin\home\ユーザー名』となっているはずです。
次に、kkrディレクトリに、ダウンロードしたcpa2002v009c.tar.gzを解凍します。(解凍はマニュアルにあるとおりコマンドを打ち込んでも、解凍レンジなどWindowsの解凍ツールでも、お好きなほうで。)
すると~/kkr/cpa2002v009cというディレクトリができます。

3. makefileの編集


さて、~/kkr/cpa2002v009cのなかをみるとmakefileというファイルがあります。
このファイルをメモ帳などのテキストエディタで開きます。すると5行目に
fort = ifort

と書いてあるのが分かります。これはIntel Fortran Compilerを使ってコンパイルする設定です。今回はg77を使うのでこの行を
fort = g77

と、書き換えます。makefileの編集はこれだけでコンパイルできました。

4. specx.fの編集とコンパイル


KKR-Green関数法によるバンド計算、あるいは計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)のチュートリアルの通りに進めるのならば、ここでソースコードのコンパイルを行います。

コンパイルの方法は簡単でCygwinのターミナル上で~/kkr/cpa2002v009cへ移動し
make

とタイプするだけです。

しかしながら、このままだと下記のようなエラーメッセージが表示されてコンパイルできません。

g77 -O3 -o source/specx.o -c source/specx.f
In file included from source/specx.f:0:
source/specx.f:42: error: size of variable '_BLNK__' is too large
makefile:206: recipe for target `source/specx.o' failed
make: *** [source/specx.o] Error 1


このエラーメッセージの意味するところは、計算に使うメモリの量が多すぎるということです。そこでspecx.fの編集を行います。
~/kkr/cpa2002v009c/source/にあるspecx.fをテキストエディタで開きます。
すると19-20行目に以下の記述があります。

     & (natmmx=22, ncmpmx=12, msizmx=198, mxlmx=3, nk1x=550, nk3x=21,
& msex=201, ngmx=15, nrpmx=650, ngpmx=650, npmx=350, msr=400)


これらのパラメータは『配列の大きさを指定するパラメータ』です。詳しくはKKR-Green関数法によるバンド計算のP29の表5を見てください。

この中でnatmmxncmpmxの2つのパラメータに注目します。これらはそれぞれ計算するブラベー格子の中の『原子の個数』と『原子の種類』の最大値をあらわします。
例えば体心立方構造(bcc)や面心立方構造(fcc)の『原子の個数』は1個、六方最密充填構造(hcp)の場合は2個です。また『原子の種類』の方は、純金属で1種類、二元合金で2種類、三元合金で3種類です。

もともとのspecx.fをみるとブラベー格子に12種類22個の原子を含む結晶の計算ができるような条件となっていますが、本ブログの扱おうとしている対象からは明らかに過剰です。そこで19-20行目を下記の通り書き直します。

     & (natmmx=2, ncmpmx=3, msizmx=198, mxlmx=3, nk1x=550, nk3x=21,
& msex=201, ngmx=15, nrpmx=650, ngpmx=650, npmx=350, msr=400)

これはbcc, fcc, hcp構造の三元合金まで計算できる設定です。

前述の通りCygwinのターミナル上で~/kkr/cpa2002v009cへ移動し
make

とタイプすると、実行ファイルであるspecx.exeが生成されます。

今回は、単位構造の中に3種類2個までの原子を含む設定でコンパイルしましたが、これは逆に言うと、計算したい物質の構造や組成によってspecx.fを編集しなおしてその都度コンパイルを行わなければならないことを意味しています。たとえば、入力ファイルのサンプルとして付いているgamn6mn0as0asは、今回の設定では計算できません。natmmxncmpmxの値をもっと大きくとる必要があるでしょう。

5. テスト計算(Niの状態密度)


それでは、早速計算を行ってみましょう。
最早ここまで来ればKKR-Green関数法によるバンド計算の通りサンプルファイルの計算を行ってもよいのですが、サンプルファイルは自己無撞着計算だけしかやってくれません。そこで標準のニッケル入力ファイルから、状態密度(DOS)計算まで一気にやってしまう入力ファイルを用意しました。

c ***********************************************
c AkaiKKR(Machikaneyama) input file
c for fcc Nickel
c ***********************************************

c *** Self-consistent calculation ***
go data/ni
fcc 6.67 , , , , , ,
0.001 1.2 nrl mjw mag init
update 4 100 0.02
c update 13 100 0.02
1
Ni 1 0 0 2 28 100
1
0 0 0 Ni

c *** Density of States (DOS) calculation ***
dos data/ni
fcc 6.67 , , , , , ,
0.001 1.2 nrl mjw mag 2nd
update 8 100 0.02
c update 13 100 0.02
1
Ni 1 0 0 2 28 100
1
0 0 0 Ni


上記のNi.txtをダウンロードして~/kkr/cpa2002v009c/inへ置きます。Cygwinのターミナル上で~/kkr/cpa2002v009cへ移動して
specx.exe <in/Ni.txt >out/Niout.txt

とタイプすると計算を開始します。計算が完了するまでにはしばらく時間がかかります。

計算が完了すると~/kkr/cpa2002v009c/outNiout.txtが出来るはずです。

計算結果(Niout.txt)にはいろいろな情報が出力されています。
出力された情報の詳細は計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)KKR-Green関数法によるバンド計算を参照していただくとして、今回は計の全状態密度(total DOS)をプロットしました(Fig.1)。磁性を考慮した(mag)計算をしているので、状態密度は上向きと下向きの二つのスピンのものが出力されています。Fig.1の赤のラインと緑のラインがそれぞれに対応します。

その他


たくさんの入力ファイルを順番に計算させるときにはバッチファイルを作ると楽です。Pathを通しておくとよいでしょう。

計算に使うPCの性能は、そこそこのもので充分です。私が使っているのは、いわゆる鼻毛鯖にメモリを8GBまで増設したものです。
自分が寝ている間に計算させるなら、うるさくない所におくことも重要です。というか、PCの性能自体よりも、メインのマシンと別個の物を用意できることのほうが大事だと思います。

OSなしの廉価PCを使う場合ubuntu+ifortでも計算できました(と、いうか私もどちらかというとこっちを使ってる)。この場合もspecx.fの編集は必須です。

テキストエディタはある程度以上高機能なものを使うほうがよいです。ある程度以上の高機能とは、ファイル内の検索が強力なもの(grep, 正規表現)で、大きなサイズのファイルが問題なく開ける必要があります。AkaiKKRの計算結果を出力したテキストファイルは、それなりの容量になり、自分にとって必要な部分を検索機能で探すことになるからです。

私はxyzzyを使っていますが、秀丸サクラエディタとかでもいいと思います。いずれにせよ標準のメモ帳では力不足だと思います。

データの解析には、差し当たりMicrosoft OfficeLibreOfficeのようなOfficeスイートの表計算ソフトがあるとよいでしょう。なおNiの状態密度(Fig.1)はgnuplotで描画しました。



お詫びと注意事項


このエントリは、少し以前に書き溜めておいたものをブログの予約投稿機能をつかって週一更新となるように公開しています。

【2013年7月29日追記】下記の件、AkaiKKRのウエブページが復活していました!

自由電子近似を使った(つまり第一原理計算パッケージを使わなくても計算できる)話を書いてから公開しようと思ってグズグズしていたところ本家であるAkaiKKR(Machikaneyama)のページが公開を停止されたようです。日本バンド(計算)屋さんマップによると(5/17 以降、2013、アクセス不能を確認)との事です。

そのため本エントリにたくさんのリンク切れが出来てしまい申し訳ありません。

AkaiKKR(Machikaneyama)の入手に関してはCMDワークショップへ参加することが最良の手段だと思われますが、計算機ナノマテリアルデザイン手法の開発にて以前のバージョン(cpa2002v007)が公開されているようです。私はcpa2002v007のコンパイルも実行も試していませんので、このバージョンでエントリの内容を再現できるかも確認していません。

なお、この「お詫びと注意事項」を書いている時点とエントリが公開状態になるまでにもタイムラグがあるので、上記の内容が公開時点では的外れになっているかもしれませんが、もしそうなっていたらごめんなさい。

また私は、AkaiKKRの開発者である赤井先生、及び、大阪大学の固体電子論グループとは何の関係も無い一個人であり、自分の固体物理の勉強のためにAkaiKKRを利用させていただこうとしている身です。更に言うなら、バンド計算屋さんではなくただの電子工作趣味人です。従って、このブログの内容の正しさに関しては一切保障できませんので、真似をされる方は自己責任でお願いします。おそらくブログ内の記述には、間違っている点もたくさんあると思います。間違いを見つけられた方は、このブログのコメント欄にてお知らせください。

関連エントリ(予定)




参考URL




付録


このエントリで使用したAkaiKKR(Machikaneyama)の入力ファイルと出力結果を収めたファイルを添付します。


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR CPA cygwin 

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

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoCOPアンプCPAPIC強磁性モンテカルロ解析常微分方程式トランジスタode状態密度インターフェースecalj定電流スイッチング回路PDS5022DOS半導体乱数シェルスクリプトレベルシフトHP6632Aブレッドボード分散関係温度解析トランジスタ技術R6452A可変抵抗I2Cセミナー確率論反強磁性非線形方程式ソルバ絶縁偏微分方程式バンド構造熱設計数値積分バンドギャップカオスA/DコンバータフォトカプラシュミットトリガGW近似LEDLM358ISO-I2C三端子レギュレータ数値微分サーボ直流動作点解析カレントミラーマフィンティン半径TL431PC817C発振回路74HC4053USBアナログスイッチbzqltyFFTチョッパアンプ2ちゃんねる補間量子力学開発環境電子負荷標準ロジックパラメトリック解析アセンブラ基本並進ベクトルブラべ格子単振り子BSchLDAイジング模型繰り返しMaximaキュリー温度位相図状態方程式失敗談スピン軌道相互作用六方最密充填構造相対論FET抵抗コバルト不規則合金TLP621ewidthGGAQSGWgfortranランダムウォークラプラス方程式スイッチト・キャパシタcygwin熱伝導SMPスレーターポーリング曲線三角波格子比熱LM555条件分岐TLP552MCUNE555UPSTLP521QNAPマントルテスタFXA-7020ZR過渡解析詰め回路ガイガー管ダイヤモンド自動計測Writer509データロガー固有値問題VESTAスーパーセルOpenMP差し込みグラフ平均場近似起電力awk仮想結晶近似VCAubuntufsolveブラウン運動熱力学第一原理計算井戸型ポテンシャルシュレディンガー方程式面心立方構造fccウィグナーザイツ胞interp12SC1815L10構造非線型方程式ソルバFSMキーボードTeX結晶磁気異方性初期値OPA2277化学反応等高線ジバニャン方程式ヒストグラム確率論三次元フィルタRealforcePGAフェルミ面正規分布固定スピンモーメント全エネルギースワップ領域リジッドバンド模型edeltquantumESPRESSOルチル構造岩塩構造二相共存ZnOウルツ鉱構造BaOフォノンデバイ模型multiplotgnuplotc/aノコギリ波合金クーロン散乱ハーフメタル半金属CapSenseマンデルブロ集合マテリアルデザインSICGimpCK1026MAS830L円周率トランスPIC16F785凡例線種シンボルLMC662ヒストグラム不規則局所モーメント文字列疎行列TS-110TS-112Excel直流解析等価回路モデル入出力トラックボールPC軸ラベルAACircuitP-10フラクタル境界条件連立一次方程式Ubuntuifortパラメータ・モデルspecx.f関数フィッティング最小二乗法Crank-Nicolson法陰解法日本語EAGLEMBEグラフの分割負帰還安定性ナイキスト線図熱拡散方程式HiLAPW両対数グラフ片対数グラフ縮退

最新コメント
リンク

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