STATE-Senri

Simulation Tool for Atom TEchnology

What

STATE (Simulation Tool for Atom TEchnology)は密度汎関数法に基づく、ノルム保存/ウルトラソフト擬ポテンシャル、平面波基底を用いた第一原理計算パッケージです。STATEを用いて以下のような計算が可能です。

  • 電子状態の最適化
    • Davidson法
    • DIIS (Direct Inversion in Iterative subspace)法
  • Projected density of state、バンド図(オプション)などの電子状態の解析
  • 構造最適化
    • Quenched Molecular dynamics法
    • GDIIS(Generalized Direct Inversion in Iterative Subspace)法
  • 反応経路探索
    • NEB(Nudged Elastic Band)法
  • 分子動力学
    • NVE ensemble
    • NVT ensemble (velocity-scaling,Nose-Hoover)
    • Blue moon ensemble
  • 非局所ポテンシャルの実空間での取り扱い(King-Smith, et al.)
  • Neugebauer+Schefflerによる電場(双極子)補正

k点はMonkhorst-Packまたは通常のガンマ点を含む一様なメッシュ上で生成することが可能で、Brillouine zone積分にはスメアリング法(Fermi-Dirac、Hermite-Gaussian)あるいは(修正)四面体法を用いることができます。

Version

  • 5.0.1
    吉田研で使われ出したSTATEの最初のバージョン。バンド並列のみ。当グループでは主にSX-5上で使用されてきました。
  • 5.2.0
    k点並列が実装された最初のバージョン。Itanium2上でかなりテストがなされています。Spin polarizedした系の計算はBUGがあり、クラッシュする恐れがあります。修正されたバージョンが配布されているかは分かりません。修正バージョンは濱田が所有しています。
  • 5.3
    OpenMPとMPIのhybrid並列が可能になりました。
  • 5.x.xa
    濱田バージョン。Lozzovoiらの方法によるCharged slabの計算が可能。
  • STATE_5.3.1
    Wu&CohenによるGGAを追加(experimental)。マイナーな変更が多数あります。
  • STATE_5.3.3
  • STATE_5.3.5
    PBEsolの追加や数多くのバグ修正を含む。FFTW3への対応により中・大規模系のPCクラスタ上で計算が高速化されました。
    ソースは以下にあります。 rafiki:~hamada/STATE/src/STATE_5.3.5
  • STATE_5.3.6
    k点分解したPDOSやlayer resolved DOS (ALDOS)の出力などの機能追加とバグ修正

ESMバージョンは rafiki:~hamada/STATE/src/STATE_5.3.6_ESM です。ESMに関しては

通常版とESM版の統一バージョンは今後作成予定。

  • STATE_5.3.8b
    van der Waals力の計算をインプリメント。S.GRIMME J.COMPUT.CHEM.26 1463.
  • STATE_5.3.8c
    SX-9用に高速化。SX-9では従来機種よりメモリRWが演算速度に対して相対的に低速になったので、リストベクトル処理が遅い。そこで、davidsonの計算からリストベクトルの使用を排して高速化した。rmmのリストベクトル使用はそのままなのでrmmは遅いまま。モデルサイズを相当大きくしないとdavidsonより速くならないと思われる。 rmmのリストベクトルの削除が望まれる。
  • STATE_5.3.9a
    CINEB:(Climbing Image NEB法)を実装。J.Chem.Phys. 113 9901 (2000).
    (マシンにより動作不安定があるようだったが解消。(ISSP systemBでファイルquotaにより動作停止していた。))

Compilation

STATEはf90で書かれておりMPIを用いて並列化されています。最新バージョンではOpenMPを用いたハイブリッド並列化も行われています。 コンパイルにはfortran90コンパイラとMPIが必要です。

以下のプラットフォーム上で動作が確認されています。

  • NEC SX-5、SX-7、Earth Simulator (SX-6)、SX-8
  • Hitach SR8000、SR11000 (ISSP)
  • Intel Pentium4、Itanium2
  • AMD Opteron

バージョンによりコンパイルの方法(Makefile)が異なるので注意が必要です。

How to

  • Charged system
  • van der Waals correction
    input fileの最後に以下の指定を追加 &~のオプション同士は順不同
    &VWD_CORRECTION
    GRIMME
    &END_VWD_CORRECTION
    確認
    SEMIEMPIRICAL CORRECTION FOR F STATE: 0 0.000
    VANDER WAALS CORRECTION OF S.GRIMME J.COMPUT.CHEM.26 1463
    が表示されることを確かめる。

Analysis

Utilities

  • chkinpf: 入力ファイルをチェックしてXSF形式のファイルを出力するプログラム(f90コンパイラが必要)
    最新版は1.3.2
    使用例: chkinpf nfinp_1
  • state2*.pl, state2*.sh STATEの出力ファイルから構造やポテンシャルを取り出すperlとshで書かれたスクリプト群
    • state2xsf.pl, state2axsf: XCrySDen形式の構造データ(xsf)とアニメーション用データ(axsf)をSTATEの出力から取り出すスクリプトです。
      使用例: state2xsf.pl nfout_1 > nfout_1.xsf
    • state2xyz.pl, state2axyz: XMOL XYZ形式の構造データを取り出すスクリプトです。使用法は上と同じです。
    • ChargeUtil: STATEで出力された電荷密度をXSFなどのフォーマットに変換するためのfortraで書かれたプログラム群です。
    • CubeUtil: Gaussian cube形式のファイルを操作するプログラム群です。
    • state2pdos.pl: STATEで計算したPDOSを各原子ごとに取り出すperlスクリプト。花岡くん(草部グループ)作。
      オリジナルのソースはstate_pdos.plです。機能を強化予定です。

得られた構造データはXCrySDenやVMDで可視化することが可能です。
スクリプト群は
rafiki:~hamada/STATE/tools以下に置いてあります。
(web上にこれらのツールをアップデートする予定)

  • chg2xsf_2d_3d: 濱田さんのchg2xsfに、少し機能を付け足したもの。STATEからのnfchgt_r.dataを実空間3次元可視化する(chg2xsf)のと、スラブ平行方向(x,y)の各点で等電荷密度面を計算し、2次元可視化する。STM像の解析に有用かもしれない。インプットとしてnfchgt_r.dataに加えて、stmset.data(真空準位のエネルギーと、等電荷密度面をプロットする値を含む)が必要(S. Yanagisawa)。

免責:これらのユーティリティの動作と、それらを使って得られた結果については私(濱田)は一切の責任を負いません。

Known issues

  • INIPOS=2またはINIVEL=2が動作しない(Intel、Opteronで問題を確認)
    • reading_nhc.f90に問題あり。geofile.f90の中のサブルーチンgeoin中の
             SEC=TRIM(SEC)
      という一文をコメントアウトすることで問題を回避することができる。当然ソースを修正した後はmakeを実行しSTATEのビルドを再度行う必要がある。
  • バージョン5.2(とそれ以降?、2005年にNECによってチューンされたバージョン)ではスピン分極した系の計算がうまくいかない場合があります。(5.3以降で修正済み)
  • PDOSを計算するサブルーチンはバージョン5.2.0、5.3では並列化されていません。
    • バンド並列には対応(k点並列に対応していない)ので、k点で並列化されないように使用するプロセッサーの数を調整するか、1プロセッサーのみで計算を行って下さい。(5.3.2で対応済み)
  • ガンマ点のみの計算(孤立分子、大規模系)ではPDOSの計算が正しくされません。pdos.f90の修正が必要になります。修正版がありますので濱田までご連絡下さい(最新版では修正済み)
  • Intel pentium4上ではコンパイラのバージョンによってはビルドはできてもSTATEが正しい計算結果を与えず、Segmentation faultで止まることがあります。最近調べたところ(J. B. Marronson)によるとGram-Schmidtの直交化のルーチンでSegmentation faultが起こっていることが分かりました。
  • Hitach SR上でバージョン5.3のk点並列に不具合が起こるようです。writing.f90の並列化を抑制するとうまく動作するようです(S. Yanagisawa)。
    (追記)SR上でバージョン5.3はk点並列されていない可能性があります。現在調査中です。
    (追記2)この問題は5.3.0bで解決されました。
    • ICOND=9 (CHG_TOTAL)として出力した電荷密度の和が正しい電子数を与えない。 この問題はcharge_renomalizeの修正が必要です。ICOND=9の時に内部変数chgq_111、chgq_112に正しい値が入っていないようです。
    • SX上で動作しているVersion 5.0.1の時間計測ルーチンは正しい時間を返していない様子です。STATEの実行開始時刻と終了時刻から計算した実行時間と、時間計測ルーチンを使用して計算した実行時間が大きく異なります。この問題は5.3.0以降で解決されています。
  • LDA+U
    • k点並列ができていない(5.3.4で導入済み)
    • Hellmann-Feynmant力がimplementされていない。Hubbard Uに起因する補正項を導入しないとEnergyとconsistentな構造最適化/分子動力学が不可能(式はほぼ完成、現在、実装の準備中)

Tips

  • Compiling issue
    • バージョン5.3のコンパイルがSX上でうまくいかない。dav.f90で止まる場合には(_PC_CLUSTER_)というcppのディレクティブを_PC_CLUSTER_(括弧を外す)に修正することで解決できます。
  • Running STATE
    • Intel系のマシンでMPIのエラーにより異常終了することがあります。この問題はbashではulimitを設定(ulimit -a)することによって解決することがあります。
  • Misc

TODO

  • Manual
    • 印刷可能版の作成
    • 英語版の作成

Referene

密度汎関数理論:

  • P. Hohenberg and W. Kohn, Phys. Rev. 136, B864 (1964).
  • W. Kohn and L. J. Sham, Phys. Rev. 140, A1133 (1965).

Ultrasoft pseudopotential法に関して:

  • D. Vanderbilt, Phys. Rev. B41, 7892 (1990).
  • A. Pasquarello, et al., Phys. Rev. Lett. 69, 1982 (1992).
  • K. Lassonone, et al., Phys. Rev. B47, 10142 (1993).

STATEにimplementされているiterative diagonalizationの方法に関しては

  • G. Kresse and J. Furthmuller, Phys. Rev. B54, 11169 (1996).
  • G. Kresse and J. Furthmuller, Comp. Mat. Sci. 6. 15 (1996).

と、ここで引用されている論文を読むと良いでしょう。

Kresse&Furthmuller論文で引用されていますが、Davidson法、DIIS法に関するoriginalの論文が以下です。

  • E.R. Davidson, J. Comp. Phys. 17. 87 (1975).
  • D. M. Wood and A. Zunger, J. Phys. A: Math. Gen. 18, 1343 (1985).

非局所ポテンシャルの実空間での実装に関して:

  • R. D. King-Smith, et al., Phys. Rev. B44, 13063 (1991).

k点サンプリングに関して:

  • H. J. Monkhorst and J. D. Pack, Phys. Rev. B13, 5188 (1976).

双極子補正

  • J. Neugebauer and M. Scheffler, Phys. Rev. B 46, 16067 (1992).
  • L. Bengtsson, Phys. Rev. B 59, 12301 (1999)

ESM法

  • M. Otani, O. Sugino, Phys. Rev. B 73, 115407 (2006)
  • I. Hamada, M. Otani, O. Sugino, Y. Morikawa (unpublished)

Revision

  • 2010-09-26 (日) 10:00:00 K.Inagaki (CINEB, version 538,539の記述)
  • 2008-09-05 (金) 12:11:18 I. Hamada (state_pdos.pl)
  • 2006-12-19 (火) 12:49:07 I. Hamada (misc.)
  • 2006-11-29 (水) 12:26:45 I. Hamada (analysis)
  • 2006-08-25 (金) 19:30:10 N. Mitsuda (Vibrational analysis, NEB method)
  • 2006-08-02 (水) 19:09:13 I. Hamada (News)
  • 2006-07-28 (金) 13:38:36 S. Yanagisawa (pdos, not yet for lda+u case)
  • 2006-07-27 (木) 09:48:05 I. Hamada (incorrect description of DTIM, thanks to Mr. Mitsuda)
  • 2006-06-21 (水) 11:31:21 I. Hamada (input example)
  • 2006-06-20 (火) 10:05:10 I. Hamada
  • 2006-06-19 (月) 17:22:53 I. Hamada (problem in ver. 5.3.x)
  • 2006-06-08 (木) 15:32:43 I. Hamada
  • 2006-06-06 (火) 10:24:40 I. Hamada
  • 2006-06-02 (金) 21:02:36 I. Hamada