AkaiKKRでスーパーセル その1

AkaiKKRではコヒーレントポテンシャル近似(CPA)を用いて不純物を含んだ系の第一原理計算を行うことが出来ます。しかしながら、これは(他のコードでしばしば行われる)スーパーセルの計算が出来ないことを意味しません。
今回は計算機マテリアルデザイン入門 に載っている例であるFe87.5Li12.5合金の計算をスーパーセル法で行いました。

Chaparral_Supercell_520.jpg

Fig.1: スーパーセル(気象)。なお今回のエントリとは関係ない。



不純物の計算


多くの第一原理計算パッケージでは、不純物や格子欠陥の計算を行う際に、単位格子を複数個並べてその中の少数の原子を他の組成や格子欠陥に置き換えると言うことを行います。このように単位格子をたくさん並べたものをスーパーセルと、スーパーセルを使う計算手法をスーパーセル法と呼びます。

他方、AkaiKKRではコヒーレントポテンシャル近似(CPA)を用いることで、単位格子を用いながら不純物や格子欠陥の計算ができます。
CPAでは不規則性の効果によりバンド構造がにじむ(電子が有限の寿命を持つ)効果がはっきりと確認できます。
これに対して、スーパーセル法では、不純物周りの構造緩和を取り入れることが出来ます。

AkaiKKRはCPAが使えるという点が特徴的であるのですが、当然ながら、スーパーセルの計算ができないと言うわけではありません。(実際に構造緩和までやろうとすると大変だとは思いますが。)

今回は計算機マテリアルデザイン入門 に載っている体心立方構造(bcc)の鉄を2×2×2のスーパーセルとして、その中の1原子をリチウムに置き換えた計算を行います。

入力ファイル


以下に8個の鉄原子のうち1個をリチウムに置換したスーパーセルの入力ファイルを示します。
この他にスーパーセル法のテストのために純鉄の計算もスーパーセルで行います。

 go    data/fe_li_super
bcc 10.85, , , , , ,
0.001 1.2 nrl mjw mag 2nd
update 10 200 0.024
3
Fe1 1 0 0 2 26 100
Fe2 1 0 0 2 26 100
Li 1 0 0 1 3 100
8
0.00000 0.00000 0.00000 Li
0.50000 0.00000 0.00000 Fe1
0.00000 0.50000 0.00000 Fe1
0.00000 0.00000 0.50000 Fe1
0.25000 0.25000 0.25000 Fe2
0.25000 0.25000 0.75000 Fe2
0.25000 0.75000 0.25000 Fe2
0.75000 0.25000 0.25000 Fe2


比較のためにCPAを用いた不規則合金の計算も行います。

 go    data/fe_li
bcc 5.43, , , , , ,
0.001 1.2 nrl mjw mag 2nd
update 10 200 0.024
1
FeLi 2 0 0 2 26 87.5
3 12.5
1
0.00000 0.00000 0.00000 FeLi


大きなセルでのspecx.fの設定


今回のスーパーセルは2×2×2なので、原子の数は高々8個なのですが、計算する原子の数が増えるとspecx.fを編集して再makeする事が必要になる可能性があります。

パラメータの設定にはhow to run a system of over 30 atoms?AkaiKKRの角運動量(方位量子数)のメモが参考になるはずです。
以下に、赤井先生の回答とそれを私が意訳したものを示します。

It is still possible to run for a system with over 30 atoms.
Take care about the following:

1) Decrease the number of k-points in order that the memory addressing does not overflow (in the case of 32bit addressing system, such as Pentium 4 with 32bit addressing). This can be done by decreasing "nk1x". The test run should be done bu "bzqlty=0" or "bzqlty=1" for which nk1x=1~20 would be enough.

2) Increase the number aoms that can be handled:
For that increase "natmmx", "ncmpmx", and "msizmx".

For example if you have 30 atoms and for each atom you would like to calculate up to d states (l=2), all atoms have different types, each site has a single component (i.e. not a random alloy) the following parameters are suitable:
natmmx=30, ncmpmx=30, msizmx=270, mxlmx=3

30原子以上の系に関しても計算を行うことが出来ます。以下の点に注意してください。

1) メモリのオーバーフローを避けるためk点の数を減らします。そのためには"nk1x"を小さくします。"bzqlty=0"や"bzqlty=1"のテスト計算ではnk1x=1~20で充分です。

2) 原子数を増やします。これには"natmmx", "ncmpmx" 及び "msizmx"を大きくします。

例えば30原子をd状態までの計算で、全ての原子が異なる組成で、各サイト(原子位置)には1種類の組成しか持たない(つまり不規則合金でない)場合は、下記のパラメータとなります。
natmmx=30, ncmpmx=30, msizmx=270, mxlmx=3


計算結果


まずテスト計算としての純鉄の状態密度をスーパーセル法で計算したものを示します。
AkaiKKRでニッケル・鉄・コバルトなどの純鉄の状態密度と一致することが確認できます。

FeSuper.png

Fig.2: スーパーセル法により計算した鉄の状態密度


次にスーパーセル法を用いたFeLi合金とコヒーレントポテンシャル近似(CPA)を用いて計算したFeLi合金の状態密度を示します。

FeLiCPA.png

Fig.3: スーパーセル法(赤)とコヒーレントポテンシャル近似(緑)によるFe87.5Li12.5合金の状態密度


スーパーセル法による結果とCPAによる結果は、状態密度のおおよその形状に関しては非常に良く似ています。しかしながらCPAでは不規則性の効果で状態密度の鋭さが減じているのに対して、スーパーセル法ではとがったままです。

関連エントリ




参考URL




付録


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


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR CPA スーパーセル 

VESTAでLaMnO3ペロフスカイト

VESTA - Visualization for Electronic and STructual Analysisを利用してLaMnO3ペロフスカイトの結晶構造を描画しました。

LaMnO3pv.png


結晶構造の描画


VESTAで結晶構造を表示するためには、なんらかのデータベースから結晶構造データ(.cifフィアルや.vestaファイル)を入手するか、或いは、自分で結晶構造のパラメターを入力する必要があります。

結晶構造のパラメータの入力の仕方を含むVESTAの使い方は、以下のサイトで分かりやすく紹介されています。



また、結晶構造データベースとしての有名どころは、以下の様なものがあります。


American Mineralogist Crystal Structure DatabaseGeneral Searchに化学式などを入力して検索すると、結晶構造のパラメータと.cifファイルの一覧が表示されます。


LaMnO3のパラメータ


今回は、一例としてLaMn3の結晶構造を描画します。
結晶構造のパラメータはTutorial for XtalEditや http://kotliar6.rutgers.edu/udo/prof/projects/lda/tutorial/tut_01.htm のInternet Archiveのアーカイブのものを利用します。

空間群は62番で、格子定数は以下の通りです。

  • a = 5.742 Å
  • b = 7.668 Å
  • c = 5.332 Å


単位格子内の原子位置はTable.1の通りです。

Wyckoffx/ay/bz/c
La4c0.5491/40.010
Mn4a000
OI4c-0.0141/4-0.070
OII8d0.3090.0390.224
table.1: LaMnO3単位格子内の原子位置


これらの情報を信州大学 情報科学演習空間群を利用して、さらに複雑な構造を描くに倣って入力します。


第一原理計算の入力ファイルに関して


AkaiKKR(Machikaneyama)などの第一原理計算のための入力には、結晶構造と原子位置を入力する必要があります。AkaiKKRの入力支援にはXtalEditというソフトがありますが、VESTAでもある程度のことはできそうだと言う感触はあります。

第一原理計算の入力ファイル作成に関して参考になりそうなURLを列挙しておきます。



関連エントリ




参考URL




付録


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


フィードバック



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

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


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


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

tag: VESTA AkaiKKR machikaneyama 

AkaiKKRの角運動量(方位量子数)のメモ

AkaiKKR(machikaneyama)を用いた第一原理計算でいつもいくつにするのだったか忘れがちな方位量子数の設定値に関してメモをまとめました。

d状態まで計算するなら mxl = 2 (入力ファイル)と mxlmx = 3 (specx.f)が必要で、f状態まで計算するなら mxl = 3, mxlmx = 4 が必要になります。

またspecx.fのmsizmxは、以下の値が必要と考えるのが簡単です。

msizmx ≧ natmmx * mxlmx2


軌道角運動量(方位量子数)


AkaiKKR(machikaneyama)の入力ファイル、及びspecx.fには軌道角運動量量子数(方位量子数)の設定に関するパラメータがあります。

  • mxl (入力ファイル)
  • mxlmx (specx.f)
  • msizmx (specx.f)

この方位量子数は l = 0, 1, 2, 3, ... と整数値を取り、順にs軌道、p軌道、d軌道、f軌道 ... と対応します(参考:電子配置 - Wikipedia)。

mxlとmxlmxの設定


AkaiKKRの入力ファイルの中では、どの軌道まで計算するかを入力ファイルの mxl で指定する必要があります。
更に、これを受けてspecx.fではmakeの前にあらかじめどの軌道まで計算できるかを mxlmx で指定しておく必要があります。この対応関係を以下に示します。


spdf
mxl0123
mxlmx1234
table.1: 計算する電子の軌道と設定すべきmxl,mxlmxの関係

ここで注意しなければならないのは、mxlmxのほうが常にmxlよりも1以上大きくなければならないと言う点です。このことはAkaiKKRのマニュアルや計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)では分かりにくいのですが、実を言うとspecx.fのなかにコメントとして記入されています。

note: mxlmx is l_max + 1 where l_max is the maximum angular momentum used in the calculation.

msizmxの設定


更にspecx.fのなかのmsizmxも、どの軌道まで計算するかに依存します。

AkaiKKRのマニュアルや計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)には以下の式が書かれています。

\sum_{i = 1}^{\mathrm{natm}}(l_{max,i}+1)^2

これは各原子位置において、異なる軌道まで計算するときのことを考えてシグマを使った和の形にしていますが、全て同じ軌道まで計算するのなら以下の様に簡単になります。

msizmx ≧ natmmx * mxlmx2

例えばhow to run a system of over 30 atoms?の例の様に単位格子の中の原子の数が30個でd軌道(l=2)まで計算する場合は msizemx ≧ 30 * (2 + 1)2 = 270 が必要になります。msizmxにいくつが必要になるのかの早見表を以下に示します。一列目が原子数です。

spdf
114916
2281832
33122748
44163664
55204580
66245496
772863112
883272128
993681144
10104090160
11114499176
121248108192
131352117208
141456126224
151560135240
161664144256
171768153272
181872162288
191976171304
202080180320
212184189336
222288198352
232392207368
242496216384
2525100225400
2626104234416
2727108243432
2828112252448
2929116261464
3030120270480
3131124279496
3232128288512
table.2: msizmxに必要な値の原子数・角運動量依存性


参考URL




参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama specx.f 

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 

引越ししました

以前住んでいたところで猫を見かけるのと同じぐらいの頻度でリスに出くわします。

001_20140831220344ca1.jpg


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

最新コメント
リンク

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