【翻訳】ABINITユーザーの皆様へ

What is ABINIT? - Getting started - Readmeの翻訳です。翻訳間違い等ありましたら,コメント欄にお願いします。

ABINITユーザー(略称ABINITioner)の皆様へ

ABINITに初めて触れる方,ABINITアナウンスメントを受けた方,初めまして。

ウェブサイトには,ABINITの色んなバージョンやインストールノート,リリースノート,ヘルプファイル (チュートリアルや入力変数リスト),擬ポテンシャル,ユーティリティ,メーリングリスト,ドキュメントといった多くの情報があります。パッケージ自体にさらに情報が含まれています。

展開したABINITパッケージを含むディレクトリ名を~ABINITと表記することにします。~ABINITにはサブディレクトリがあります。例えば,チュートリアルやABINITの入力変数リストはhtmlファイル形式で~ABINIT/docサブディレクトリが含まれていて,同じ内容はウェブサイトからもアクセスできます。インストール後に"ニューユーザーズガイド"を読むのが最善でしょう。

ABINITのバージョンリリースの付け方は以下のルールに従っています:
バージョンの正式名称は3桁の数字から成ります(例えば5.7.3)。1桁目は、大体1年に1度程度の頻度で変更され,そのバージョンの主張な取り組みと動向を示すものです。バージョン1.x.yでは,"基底状態"特性(全エネルギー,力,構造最適化,分子動力学...)に注力しています。バージョン2.x.yでは,応答関数機能(フォノン,誘電応答,有効電荷,原子間力定数)を導入しています。バージョン3.xyの主な特徴は,GNU 一般公衆利用許諾契約書の下での配布です。セットアップドキュメントやヘルプをHTML形式でウェブから参照することができ,GW機能も有しています。バージョン4.xyは計算速度向上(例えばPAW)と並列化が特徴です。バージョン5.xyでは,プラグインが追加され,PAW(およびGW)が完全にサポートされました。

バージョンの2桁目は機能付加を表します。例えば,バージョン4.xは4.0から始まり,4.6で終わっていますが,数字が増えるほど機能も追加されています。バージョン5.6は2008年9月にリリースされ,2009年1月にバージョン5.7になりました。3桁目が違っていても機能は同じですが,数字が大きいものはデバッグされています。例えば,バージョン5.7.3は,5.7.2や5.7.0と比べてデバッグが進んでいますが,新機能はありません(新たなバグも追加されていないはずです!)。

前述のように,バージョン3以降のABINITはGNU 一般公衆利用許諾契約書の下で配布されています。GNUは,ソフトウェアを自由に共有したり変更するなど,すべてのユーザーにとってフリーであることを保証することを意図したものです。この権利を保護するために,あなたが権利を放棄したり譲渡するよう依頼することを禁じる制限が設けられています。あなたがソフトウェアのコピーや変更したものを配布する際にもこの制約は引き継がれます。

通常,ABINITのバージョンは,5つのプラットフォームでインストールテストに成功した後にリリースされます。”インストールテストの成功”とは,500もの計算テストを含み,計算結果は自動的に解析されます。ただ,"成功"が,バグがないことを意味するものではないことをご了承ください。そして,皆様の貢献が非常に重要であることは言うまでもありません。

最後に,ABINIT案内メーリングリスト(やり取りは少なめ)とフォーラムメーリングリストに登録することを強くお勧めします。当面,ABINITの開発具合を知る最善の方法です。

それでは,ABINITをご堪能下さい!

ザビエルとABINITグループより

【翻訳】ABINITとは?

What is ABINIT? - Presentationの翻訳です。翻訳間違い等ありましたら,コメント欄にお願いします。

ABINITとは?

ABINITは,擬ポテンシャルと平面波またはウェーブレット基底を用いた密度汎関数理論 (Density Functional Theory; DFT)によって,全エネルギー,電荷密度,電子と原子核からなる系(分子や周期的固体)の電子構造を計算するプログラムパッケージであす。他に,力やストレスを使って幾何学パラメーターの最適化や分子動力学シミュレーションを行なったり,密度汎関数摂動論 (DFPT)に基づいて動力学的行列やボルン有効電荷誘電率テンソル他の値を得ることができます。多体摂動論 (MBPT) (GW近似法やベーテ・サルピーター方程式)や時間依存密度汎関数理論を使って,励起状態の計算も可能です。ABINITのメインコードに加えて,沢山のユーティリティープログラムが提供されています。開発の協力や共同研究は大歓迎です (ABINITプロジェクトの簡単なプレゼンテーションはこちら (10ページのpdfファイル)にあります)。

さあ始めましょう

【翻訳】FAQ - 7. フォノン

RESOURCES - FAQ - 7. Phononsの翻訳です。翻訳間違い等ありましたら,コメント欄にお願いします。

7. フォノン

7.1 フォノンモードの対称性を決定する簡単な方法はありますか?

v3.2以降のQEには,対称性分析ツール(Andrea Cal Corsによる開発)が含まれています。
フォノンモードの対称性を解析する他のパッケージは,以下があります。

7.2 音響フォノンモードがゼロになりません。なぜでしょうか?

音響学的総和則(ASR),すなわち並進不変性は近似計算に違反するためです。平面波計算では,FFTグリッドの離散性が理由で違反が生じることが大半です。その他の理由として,収束が不十分ということがあるかも知れません。“2つのパラメータ(フォノンtr2_ph,基底状態のconv_thr)がフォノン計算の質に影響することに最近気が付きました。特に,分子において周波数が"消えて"しまうのです。"(Katalyn Gaal-Nagy談)。いずれにせよ,周波数がゼロではないけれども小さい場合,ASRを動力学行列に課してやれば,良い結果を得ることができます。

分子の回転モードにおいて周波数がゼロにならないのは,スーパーセルサイズが有限であることや分子が幾何学的に完全な収束から多かれ少なかれ外れることによって,架空の効果として現れます。

7.3 フォノン振動が負になります。

"負"の周波数は,実際には"虚"の周波数です( \omega^2 \le 0)。ガンマ点での音響周波数や分子の回転モードでこの症状が起こった場合は,上記を参照してください。その他の場合,状況に依ります。収束が悪い可能性(上述参照)もありますし,実際の不安定性を意味している可能性もあります。

7.4 金属の計算で,no elec. fieldというメッセージが出ます。

電場のフォノンに対する巨視的な寄与は,絶縁体についてのみ明確に定義されている量であるため,SFC計算によるスメアリングで得ることはできません。そのため,QEがメッセージを出力します。

7.5 金属のラマン/IR係数を計算する方法を教えてください。

計算できません。ラマン/IR係数は絶縁体において定義される物理量です。

7.6 絶縁体の電子-フォノン係数を計算する方法を教えてください。

計算できません。現在、金属においてのみ計算コードが実装されています。

7.7 原子間What is the format of the file containing interatomic force constants?

以下の各投稿をご覧ください。
[Pw_forum] force constants file
[Pw_forum] *.fc file in PW_SCF help.
[Pw_forum] *.fc file in PW_SCF help.
Re: [Pw_forum] IFCs and supercell

【翻訳】FAQ - 6. 自己無撞着

RESOURCES - FAQ - 6. Self Consistancyの翻訳です。翻訳間違い等ありましたら、コメント欄にお願いします。

6. 自己無撞着

6.1 XYZの単位は何ですか?

特に指定しない限り,PWscfの入出力単位系は"リュードベリ"であり,エネルギーはRy,長さはボーア半径a0などです。CPでは代わりに"ハートリー"単位系を使います。このとき,エネルギーはRyではなくHaとなります。電荷密度の単位は,はa0-3で,全電子数を意味します。

6.2 中々収束しなかったり,全く収束しません。

多くの場合,入力ファイルに不備があるか,計算対象の系が金属なのに絶縁体として扱っているかです。そうでなければ,mixing_betaを0.3 ÷ 0.1程度に減らして,mixing_modeを適切な値に変えてみてください。

6.3 全磁化と絶対磁化の違いは何ですか?

全磁化はセル中の磁化を積分したもので,
 M_T = \int \left( n_\mbox{up} - n_\mbox{down} \right) \mbox{d}^3 r
と書けます。絶対時かはセル中の絶対磁化を積分したもので,
 M_A = \int \left| n_\mbox{up} - n_\mbox{down} \right| \mbox{d}^3 r
となります。

単純な強磁性体の場合,両者は一致します(符号は異なる可能性はあります)。FeOやNiOなど,単純な反強磁性体の場合, M_Tはゼロ, M_Aは各二原子の磁化の2倍になります。

6.4 各原子の磁気モーメントはどのように計算しますか?

多原子系の局所磁気モーメントを定義する"正しい"方法はありません。多くの場合,近似法として,原子の状態密度を投影して算出します。QEではprojwfc.xを用います。projwfx.cでは,各原子波動関数へ投影された状態密度が多数のファイルに,また大量のデータが標準出力に出力されます。最終行付近に,Löwdin電荷を各原子の角運動量とスピン成分に分離した結果が記載されています。

6.5 投影した状態密度や波動関数のYLM成分の次元は何ですか?

出力l行目のm個目の要素の次元は以下の通りです。
1, cos(phi), sin(phi), cos(2*phi), sin(2*phi), ..., cos(l*phi), sin(l*phi)
projwfc.xのマニュアル「入力データ」もご覧ください。

6.6 部分Löwdin電荷の総和が全電荷と異なるのは何故ですか?

Löwdin電荷等,電荷密度は総和則を満たしません。計算に使われる原子軌道が任意なものであるという理由から納得できるでしょう。不足している電荷が非局在であったり,結合に寄与していると考えることもできますが,Löwdin電荷とはまた別の範疇のことです。
(Stefano Baroni談, 2009年9月)

splillingパラメータの定義(Sanchez-Portal et al., Sol. State Commun. 95, 685 (1995))も合わせてご覧ください。spillingパラメータは,ハミルトニアンの固有状態が部分空間の外へどの程度はみ出しているかを調べることによって,結晶の固有状態を表す擬原子波動関数の基底を評価します。

6.7 フェルミエネルギーはどこに記載がありますか?

出力ファイルに出力されます。されていないとしたら,フェルミエネルギーを細かく計算するのに必要なガウス関数型スメアリングの情報を入力していなかったのでしょう。その場合,pw.xは最高位の占有レベルと最低位の非占有レベルを出力します。計算するバンドの数が入力されていなければ,占有バンドのみを計算します。

6.8 コーン-シャムエネルギーの基準値は?コーン-シャムレベルが負の値になります。

周期的境界条件における固体の計算においては,基準値は定義できません。コーン-シャム固有値の絶対値には意味がありません。

6.9 フェルミエネルギーの値が変です。

全てのエネルギーと同様,フェルミエネルギーの値は基準レベルに依存します。得たいフェルミエネルギーは,真空レベルを基準としたもの,つまり仕事関数だと思います。これを得るために,真空レベルが何かを知る必要がありますが,バルク計算だけから真空レベルを得ることは出来ません。
(Stefano Baroni談, 2008年9月)

6.10 平衡状態で圧力や力がゼロになりません。

格子定数を固定して計算した場合,擬ポテンシャルやカットオフ,k点が完璧でない限り,圧力や力がゼロになることはありません。計算で平衡状態となるようなセルは,実験値とは僅かに異なるでしょう。格子定数が僅かに異なると,圧力や力はkBarのオーダーの圧力や力で変わるということに注意してください。

6.11 同じ初期構造でも,構造緩和とsrcとで結果が異なります。

まず第一に,構造が本当に同じであるかどうかを確認してください(エヴァルトエネルギーを比較します)。セル可変に使われる平面波基底セットはカットオフと初期セル構造によって決まります。最後の計算を同じカットオフで行っていれば,平面波基底が異なるため,結果は僅かに異なります。カットオフが小さ過ぎなければ,差異は僅かでしょう。QE v.4.3.1以降では,最終SFCは,最終構造で得た平面波基底セットを使って,構造緩和の後に実行しています。
構造緩和計算用に運動エネルギー関数を修正して使っている場合,圧力や力の計算結果に影響を与えることに注意してください。

6.12 電荷密度の初期推定値が負になります。

セルフコンシスタントを実現するには,反復アルゴリズムを実行するために初期推定電荷密度が必要です。通常,最初の推定値は擬ポテンシャルデータを元に,原子の電荷を重ねて作成します。

多かれ少なかれ,この推定電荷は平面波を展開するには硬いため,どうしても誤差が発生してしまいます。特に,単位胞が大きく,単位胞内にあまり原子がない場合,局所的に負の電荷密度になりがちです。

"しかし,これは大きな問題ではありません。というのが,適切に処理され,計算サイクル中に無くなってしまうためです。もちろん,あまりに程度が酷い場合(電子数×0.001)は,カットオフが小さ過ぎるために起こっていると思われます。" (L. Paulatto談, 2008年11月)

6.13 仕事関数の計算をしたいです。

仕事関数は,(真空中の平均ポテンシャル) - (フェルミエネルギー)で定義されます。前者はスラブモデルでのスーパーセルにおいて静電ポテンシャルの平均値(通常,交換相互作用なし)から見積もることができます。仕事関数を算出する方法を示す例があります。

6.14 力がゼロになります。BFGSで結晶の構造緩和ができません。

無限系では,単位胞に影響しない変位(q=0でのフォノンモード)と影響する変位(弾性モード)との間に根本的な違いがあります。前者は力に,後者はストレスに起因します。力とストレスの両方がゼロの場合が平衡状態です。周期的結晶では,対称性によって力がゼロになることがよくあります。
その場合,ストレスを無視して単位胞を一定に保GFBSアルゴリズム等では上手く計算できません。

【翻訳】FAQ - 5. よくあるエラー

RESOURCES - FAQ - 5. Frequent errors during executionの翻訳です。翻訳間違い等ありましたら、コメント欄にお願いします。

5. よくあるエラー

5.1 forrtl: severe (59): list-directed I/O syntax error, unit 5, file stdinのようなエラーは何を意味しますか?

“forrtl” = Fortranランタイムライブラリ (つまり,Fortranのエラーです)
“list-directed I/O syntax error” = 読み書き中に起こったエラー (下記参照)
“unit 5″ = fortran unit (5 is typically used to read input data)
“stdin” = 標準入力 (つまり,端末入力かリダイレクト)
ターミナルか,"code < data-dile"という形式でデータを読み込んでいるのだと思います。多くの場合,ターミナルへの入力か,"data-file"にエラーがあります。データに不備があるのであり,コードに不備があるのではありません。データを注意深くご覧ください。よく見ても判明しない場合,FAQの4.4節をご覧ください。

5.2 segmentation faultでジョブがクラッシュします。

考えられる理由は幾つかあります。メモリの要求量が多い,実行ファイルや数学ライブラリが別のハードウェア用にコンパイルされている,コンパイラと数学ライブラリの間の非互換性,ハードウェアの異常,コンパイラや数学ライブラリのバグ。。後二者は,マシンやコンパイラが異なると再現しなくなります。バグは時々回避することもできますが,通常は何度も再現されるでしょう。動作テストや実施例におけるセグメンテーション違反は,ほとんど常に,コンパイラや数学ライブラリ,あるいは両者の互換性に関する問題点を指摘しています。

並列化計算で原因がよくわからない,予測できない,不安定なエラーは,ほとんどの場合はコンパイラやMPIライブラリのバグが原因で,時にはハードウェアの不備も可能性として考えられます。
大変申し訳ありませんが,Quantum ESPRESSOのせいではありません。

5.3 IOTKという意味不明なエラーでクラッシュします。

IOTKはXMLファイルを読み書きするツールキットです。
IOTKがXMLファイルデータの変数を見つけられないことに起因したエラーが,特にgfortranでコンパイルしたケースやMKLライブラリにおいて良く報告されています。
エラー内容に関する説明がない場合(例えば,ファイルは正常に読み込まれ,検索している変数は確かに存在する場合)や,再現性なく時たま発生する場合(例えば,特定のコンパイラの特定のバージョンで発生するなど)は,コンパイラのバグです。最適化レベルを下げるか,他のコンパイラ試してみてください。市販のコンパイラを利用しているのであれば,販売元へ問い合わせてください。

5.4 davcioというエラーで止まります。

davcioはディスクの読み書きルーチンです。I/O操作に対応する番号がエラー番号として返されていますので,エラーが発生したという以上の意味合いを持ちます。考えられる理由は幾つか考えられます。ディスク容量が無い,出力ディレクトリへの書込みができない,pw.xが生成しないデータの後処理命令が含まれている(あるいは変数wf_collectが設定されていない),データファイルやディレクトリが混乱している,データファイルが破損している,同一ファイル名の同一一時ディレクトリで複数のpw.xを実行している,などです。

5.5 原子座標が間違っていると言われます。

2つ以上の原子位置が重複しているか,近過ぎるのが原因です。XCrysDenなどのソフトで可視化して良く見てみてください。また,コード側でも周期的イメージをチェックしていることを忘れないでください。

5.6 wrong charge errorでコードが止まります。

多くの場合,金属の系を絶縁体として取り扱っていることが原因です。ガウス関数によるスミアリングを用いてください。

5.7 cdiaghgやrdiaghgというエラーでコードが止まります。

このエラーは深刻です。部分占有空間と補正状態で計算されたハミルトニアンや重なり行列(反復対象化で使用)がおかしいことを意味します。しかし,このエラーは,1) 原子位置が酷く間違っている(例えば,近過ぎる),または2) 擬ポテンシャルが悪いか良くない限り発生しません。2)は通常,ウルトラソフト擬ポテンシャルで発生します。エラーが他のマシンで再現できない等不安定な場合,数学ライブラリを疑ってください。原因が分からない場合,"diagonalization='cg'"をオプションで指定してみてください。

5.8 scale_hルーチンでエラーが出て止まります。

可変セル構造最適化("vc-relax")の際,以下のエラーが出ることがあります。

Error in routine scale_h (1):
Not enough space allocated for radial FFT: try restarting with a larger cell_factor.

これは,単位胞の初期値が小さ過ぎる場合に起こります。単位胞が酷く大きく変化すると,平面はやGベクトルの数が増え,最初に割り当てられた配列長を超えてしまうためです。変数"cell_factor"の値を大きくするか,より大きな単位胞で計算をしてみてください。

5.9 XXXというネームリストを読み込み中にエラーで止まります。

ネームリストXXXのスペルミスか,数値の指定ミス(例えば,整数変数に実数値を与えた)です。または,ファイル中の改行文字コード(CR-LF)や引用符の違い('xyz'ではなくxyz),コメントの指定の仕方が間違っている(ネームリストでは,!がコメントの開始を意味します)可能性もあります。他には,入力ファイルが空の場合,最初のネームリスト(通常は,&control)を読みに行ったところでエラーとなります。並列化計算についての同エラーは,FAQの4.3, 4.4節をご覧ください。

【翻訳】FAQ - 4. 並列化計算

RESOURCES - FAQ - 4. Parallel executionの翻訳です。翻訳間違い等ありましたら、コメント欄にお願いします。

4. 並列化計算

並列計算を効果的に実施するには,並列計算機の動作原理やQuantum ESPRESSOでの実装状況の基本を知る必要があります。経験やアイデアをお持ちでない場合,ユーザーガイドの3節をご覧ください。

4.1 並列計算のセットアップ法,プロセッサー数の選び方を教えてください。

この質問が消えないうちは,並列計算機の動作原理やQuantum ESPRESSOでの実装状況の基本をまだ知らないということになります。前の質問をご覧ください。

4.2 並列化ジョブがお粗末な方法で実行されるのは何故でしょうか?

多くの人々が電子構造計算のスケーリングに対して,あらゆる期待をしています。適切な通信ハードウェアやプロセッサのための十分なメモリ領域があり,複雑な計算をする場合,並列化レベルを良く考えて選ぶと,良いスケーリングを得ることができます。メモリの競合(並列化レベルに達しないメモリの混在等)やライブラリが問題でMPI-OpenMPが競合(過去の例からすると,MKLが最も悪名高いです)していて,スケーリングがまずくなるケースもあります。このような場合,例えば,シリアル計算よりも遅くなります。

4.3 並列化ジョブがネームリストxxxxを読みにいくとエラーで停止します。

FAQの5.9節をご覧ください。並列計算でのみこの問題が生じる,つまりシングルプロセッサーで実行したときは正しく動作するのであれば,次の項目を参照してください。

4.4 シリアルジョブではうまく計算できる入力ファイルを並列化ジョブ読むことができません。

"mydode < input_file"の代わりに,"mycode -inp input_file"を使ってください。幾つかのMPIライブラリは,入力リダイレクトリを処理できません。

4.5 並列ジョブがN個ではなく1個のプロセッサーで計算されているようです。

まずはじめに,ご利用のMPIランチャー (mpirun, mpiexeなど)の構文を確認してください。正しい場合,出力ファイルのヘッダを見てください。

  • serial compilationとあれば,"並列化"コードが並列になっておらず,N個のコードを実行していることになります。
  • parallel (…) compilationとあり,それでも1つのプロセッサーで計算されている場合,コンパイルをしたMPIと実際に使っているMPIランチャーが異なっている等、MPIライブラリに問題があります。
Copyright © 2015 qespresso. All Rights Reserved.