NEB (Nudged elastic band) 法は、反応経路探索を行い活性化エネルギーを算出する手法として有用です。Matlantisではase.neb.NEB classやMatlantisFeatures.features.common.NEBFeatureなどを利用して簡便に計算を実行することが可能です。
(参考)MatlantisFeaturesでは遷移状態を高精度かつ自動的に計算するために、String法[3]をベースとしてCI-NEBに近いアルゴリズムの計算手法としてReactionStringFeatureも提供しております。
この記事ではNEB計算実行時の注意点について説明いたします。
NEB計算時の注意点
1. 始状態、終状態の構造について
- 始状態、終状態の原子のindxが同一になるように構造作成してください。
- 周期的境界条件(PBC)適用時、Cellの外側に飛び出した原子を wrap 関数などを使って周期構造の内側に戻さないでください。
- cif formatで構造を保存するとCell外に出た原子が周期構造の内側に戻された状態で登録されますので、xyz, ase traj, jsonなどで保存することを推奨します。
2. calculatorの割り当てについて
NEB計算では始状態と終状態、それらを補完する状態の全ての構造(全経路の構造)についてcalculatorを割り当てております。このcalculatorの割り当て時の注意点を説明いたします。
-
ase.neb.NEB classを利用して並列実行する際の注意点
以下のようにNEBの引数`parallel=True`とすることで全経路の構造の計算を並列実行できますので、NEB計算の実行時間を大幅に短縮できます。
neb = NEB(neb_images, k=0.05, parallel=True, climb=True, allow_shared_calculator=False)
ただし、PFPをcalculatorとして利用する場合、PFPは一つのcalculatorで並列実行できない仕様となっておりますので、`allow_shared_calculator=False`とし、かつNEBに渡す`neb_images`の全ての構造に対して、以下のようにして個別にPFP calculatorを生成してセットするようにしてください。
for neb_image in neb_images: estimator = Estimator(calc_mode=calc_mode, model_version=model_version) calculator = ASECalculator(estimator) neb_image.calc = calculator
- 始状態、終状態での構造最適化で利用したcalculatorと、NEB実行時のcalculatorの設定
始状態、終状態の構造最適化に利用するcalculatorの設定と、NEB計算実行時のcalculatorの設定が同一となるようにしてください。同一でない場合、NEB計算が収束しなかったり、異常な経路で計算が収束します。
参考リンク
1. Atomic Simulation Environment, Nudged elastic band
https://wiki.fysik.dtu.dk/ase/ase/neb.html
2. RactionStringFeature
3. Weinan, E., Ren, W., and Vanden-Eijnden, E., Physical Review B, 66, 052301 (2002).
4. Atomistic Simulation Tutorial, 反応経路解析
https://docs.matlantis.com/atomistic-simulation-tutorial/ja/5_1_neb_basic.html
https://docs.matlantis.com/atomistic-simulation-tutorial/ja/5_2_neb_catalyst.html