5.3. [sampling.solver], [mlref.solver] セクション

配位 (原子配置など) からエネルギーを計算するソルバーの設定を行います. sampling.solver はモンテカルロサンプリング中のエネルギー計算に, mlref.solver は機械学習モデルの訓練データ作成に使われます.

現在, ソルバーは大きく分けて次の2種類あります.

  • 第一原理ソルバー

    • 原子配置から DFT エネルギーを計算するソルバーです.

    • 実際には VASP など, 外部の第一原理計算ソフトウェアを利用します.

      • 収束条件など, ソフトウェア固有のパラメータなどはそれぞれの入力ファイルから読み取ります.

      • それぞれのソフトウェア固有の注意事項(入力ファイル名など)は 第一原理ソルバー利用時の注意点 を参照してください.

    • 原子の存在する座標や原子種などは [config] セクションで指定します.

  • Potts 模型ソルバー

    • 超立方格子上のスピン配位 (\(\{\sigma_i\}\), \(\sigma_i = 0, 1, \dots, Q-1\)) のエネルギー \(E = -\sum_{ij} \delta_{\sigma_i, \sigma_j} \quad (\sigma_i = 0, 1, \dots, Q-1)\) を計算するソルバーです.

    • 超立方格子の次元および格子点の数, スピンの取りうる値 \(Q\)[config] セクションで指定します.

    • アルゴリズムのテストおよびチュートリアルを目的としたソルバーです.

ソルバーの種類 (VASP, QE, ...)、ソルバーへのパス、不変な入力ファイルのあるディレクトリなど(第一原理計算)ソルバーのパラメータを指定します. 以下のようなファイルフォーマットをしています.

[sampling.solver]
type = 'vasp'
path = './vasp'
base_input_dir = './baseinput'
perturb = 0.1
run_scheme = 'mpi_spawn_ready'

5.3.1. 入力形式

keyword = value の形式でキーワードとその値を指定します. また, #をつけることでコメントを入力することができます(それ以降の文字は無視されます).

5.3.2. キーワード

  • type

    形式 : str型

    説明 : ソルバーの種類を指定します. 大文字小文字の区別はありません.

    • OpenMX

      • OpenMXを利用します.

    • QE

      • Quantum Espressoを利用します.

    • VASP

      • VASPを利用します.

    • aenet

      • aenetを利用します.

    • aenetPyLammps

      • LAMMPS を経由してaenetを利用します.

    • nequip

      • NequIPを利用します.

    • allegro

      • Allegroを利用します.

    • mlip_3

      • MLIP-3を利用します.

    • user

      • ユーザー定義のソルバーを利用します.

    • potts

      • Potts 模型ソルバーを利用します.

      • 主にアルゴリズムのテストおよびチュートリアルを目的としたソルバーです.

    type = "potts" の場合には以下のパラメータは利用しません.

  • path

    形式 : str型

    説明 : ソルバーへのパスを指定します.

  • base_input_dir

    形式 : str型 or str型のリスト

    説明 : ベースとなる入力ファイルへのパスを指定します. リスト形式で複数設定した場合は、各々の入力を使った計算が順番に実行されます. 2番目以降の計算では、前の計算の最終ステップでの構造が初期座標として用いられ, 最後の計算のエネルギーが使用されます. 例えば、1つ目の入力ファイルで精度を犠牲にして高速な構造最適化を行い、2番目以降の入力ファイルで高精度な設定で構造最適化を行うといったことが可能にります. あるいは、格子ベクトルの緩和を行う場合に、設定した平面波カットオフに基づいて計算メッシュをリセットするために同じ入力の計算を複数回実行するといったことも可能です.

  • perturb

    形式 : float型

    説明 : 対称性が良い構造を入力にしてしまうと、構造最適化が鞍点で止まってしまいがちである。これを避けるため、各原子をこのパラメータに比例するようにランダムに変位させたものを初期構造とする。0.0あるいはfalseに設定することも可能. デフォルト値 = 0.0.

  • ignore_species

    形式 : list型

    説明 : aenet などのニューラルネットワークモデルで「無視」する原子種を指定します. 常に占有率が1のものについては、ニューラルネットワークモデルの訓練および評価時に存在を無視した方が、計算効率が高くなります.

  • run_scheme (sampling.solver のみ)

    形式 : str型

    説明 : ソルバーを起動する方法を指定します. 詳細は 第一原理ソルバー利用時の注意点 を参照してください。

  • parallel_level (type = "QE" のみ)

    形式 : 辞書型

    説明 : Parallelization levels について、各level の並列数を指定します。 長い形式のコマンドラインオプションから - を抜いたもの、すなわち、 nimage, npools, nband, ntg, ndiag をキーとして、各level の分割数を値とする辞書として指定します。 指定した要素のみ、実際のコマンドラインオプションとして pw.x に渡されます。

  • function (type = "user" のみ)

    形式 : str型

    説明 : ユーザー定義のソルバー関数を指定します.

    • ソルバー関数は pymatgen.core.Structure を受け取って float を返す関数である必要があります.

    • . で区切られたパッケージ名を含む場合は、パッケージは自動でインポートされます.

      • 例えば function = "mypackage.mymodule.myfunction" と指定した場合、 mypackage.mymodule がインポートされ、 myfunction が呼び出されます.

      • インポートされるパッケージはカレントディレクトリからも探索されます.