Transition State Search (NEBs)#

FAIR chemistry models can be used to enumerate and study reaction pathways via transition state search tools built into ASE or in packages like Sella via the ASE interface.

The first section of this tutorial walks through how to use the CatTsunami tools to automatically enumerate a number of hypothetical initial/final configurations for various types of reactions on a heterogeneous catalyst surface. If you already have a NEB you’re looking to optimize, you can jump straight to the last section (Run NEBs)!

Since the NEB calculations here can be a bit time consuming, we’ll use a small number of steps during the documentation testing, and otherwise use a reasonable guess.

import os

# Use a small number of steps here to keep the docs fast during CI, but otherwise do quite reasonable settings.
fast_docs = os.environ.get("FAST_DOCS", "false").lower() == "true"
if fast_docs:
    optimization_steps = 20
else:
    optimization_steps = 300

Do enumerations in an AdsorbML style#

from __future__ import annotations

import matplotlib.pyplot as plt
from ase.io import read
from ase.mep import DyNEB
from ase.optimize import BFGS
from fairchem.applications.cattsunami.core import Reaction
from fairchem.applications.cattsunami.core.autoframe import AutoFrameDissociation
from fairchem.applications.cattsunami.databases import DISSOCIATION_REACTION_DB_PATH
from fairchem.core import FAIRChemCalculator, pretrained_mlip
from fairchem.data.oc.core import Adsorbate, AdsorbateSlabConfig, Bulk, Slab
from fairchem.data.oc.databases.pkls import ADSORBATE_PKL_PATH, BULK_PKL_PATH
from x3dase.x3d import X3D

# Instantiate the reaction class for the reaction of interest
reaction = Reaction(
    reaction_str_from_db="*CH -> *C + *H",
    reaction_db_path=DISSOCIATION_REACTION_DB_PATH,
    adsorbate_db_path=ADSORBATE_PKL_PATH,
)
/home/runner/work/_tool/Python/3.12.11/x64/lib/python3.12/site-packages/torchtnt/utils/version.py:12: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
# Instantiate our adsorbate class for the reactant and product
reactant = Adsorbate(
    adsorbate_id_from_db=reaction.reactant1_idx, adsorbate_db_path=ADSORBATE_PKL_PATH
)
product1 = Adsorbate(
    adsorbate_id_from_db=reaction.product1_idx, adsorbate_db_path=ADSORBATE_PKL_PATH
)
product2 = Adsorbate(
    adsorbate_id_from_db=reaction.product2_idx, adsorbate_db_path=ADSORBATE_PKL_PATH
)
# Grab the bulk and cut the slab we are interested in
bulk = Bulk(bulk_src_id_from_db="mp-33", bulk_db_path=BULK_PKL_PATH)
slab = Slab.from_bulk_get_specific_millers(bulk=bulk, specific_millers=(0, 0, 1))
# Perform site enumeration
# For AdsorbML num_sites = 100, but we use 5 here for brevity. This should be increased for practical use.
reactant_configs = AdsorbateSlabConfig(
    slab=slab[0],
    adsorbate=reactant,
    mode="random_site_heuristic_placement",
    num_sites=10,
).atoms_list
product1_configs = AdsorbateSlabConfig(
    slab=slab[0],
    adsorbate=product1,
    mode="random_site_heuristic_placement",
    num_sites=10,
).atoms_list
product2_configs = AdsorbateSlabConfig(
    slab=slab[0],
    adsorbate=product2,
    mode="random_site_heuristic_placement",
    num_sites=10,
).atoms_list
# Instantiate the calculator
predictor = pretrained_mlip.get_predict_unit("uma-s-1")
calc = FAIRChemCalculator(predictor, task_name="oc20")
WARNING:root:device was not explicitly set, using device='cuda'.
# Relax the reactant systems
reactant_energies = []
for config in reactant_configs:
    config.calc = calc
    config.pbc = True
    opt = BFGS(config)
    opt.run(fmax=0.05, steps=optimization_steps)
    reactant_energies.append(config.get_potential_energy())
      Step     Time          Energy          fmax
BFGS:    0 20:15:47     -300.972831        3.983653
BFGS:    1 20:15:47     -301.381807        3.298639
BFGS:    2 20:15:47     -302.581702        3.640801
BFGS:    3 20:15:47     -302.581560        6.287884
BFGS:    4 20:15:47     -302.934278        2.688035
BFGS:    5 20:15:47     -303.091779        0.919115
BFGS:    6 20:15:47     -303.117894        1.008084
BFGS:    7 20:15:47     -303.139100        0.721572
BFGS:    8 20:15:47     -303.156962        0.933865
BFGS:    9 20:15:48     -303.199938        0.883175
BFGS:   10 20:15:48     -303.214193        0.454827
BFGS:   11 20:15:48     -303.221389        0.306626
BFGS:   12 20:15:48     -303.234867        0.584558
BFGS:   13 20:15:48     -303.250274        0.793954
BFGS:   14 20:15:48     -303.273143        0.929728
BFGS:   15 20:15:48     -303.296523        1.001804
BFGS:   16 20:15:48     -303.349703        1.447501
BFGS:   17 20:15:48     -303.410271        2.672016
BFGS:   18 20:15:49     -303.475479        3.135280
BFGS:   19 20:15:49     -303.556799        3.124450
BFGS:   20 20:15:49     -303.665653        3.543620
      Step     Time          Energy          fmax
BFGS:    0 20:15:49     -300.644423        4.009455
BFGS:    1 20:15:49     -301.106787        3.915258
BFGS:    2 20:15:49     -302.502406        3.747488
BFGS:    3 20:15:49     -302.271113        9.303611
BFGS:    4 20:15:49     -302.794711        3.251677
BFGS:    5 20:15:49     -302.961668        2.431853
BFGS:    6 20:15:49     -303.087102        2.522448
BFGS:    7 20:15:50     -303.129759        0.481047
BFGS:    8 20:15:50     -303.137355        0.402448
BFGS:    9 20:15:50     -303.149999        0.470743
BFGS:   10 20:15:50     -303.159230        0.502238
BFGS:   11 20:15:50     -303.166372        0.300471
BFGS:   12 20:15:50     -303.167804        0.172269
BFGS:   13 20:15:50     -303.169311        0.165484
BFGS:   14 20:15:50     -303.171324        0.187923
BFGS:   15 20:15:50     -303.174319        0.209234
BFGS:   16 20:15:51     -303.177287        0.174795
BFGS:   17 20:15:51     -303.178936        0.117305
BFGS:   18 20:15:51     -303.179531        0.128378
BFGS:   19 20:15:51     -303.180057        0.148548
BFGS:   20 20:15:51     -303.180916        0.149891
      Step     Time          Energy          fmax
BFGS:    0 20:15:51     -301.278540        4.049461
BFGS:    1 20:15:51     -301.663595        2.991106
BFGS:    2 20:15:51     -302.676800        3.593046
BFGS:    3 20:15:51     -302.821117        3.369658
BFGS:    4 20:15:52     -303.127091        1.523433
BFGS:    5 20:15:52     -303.183799        1.932144
BFGS:    6 20:15:52     -303.223687        1.199588
BFGS:    7 20:15:52     -303.334717        0.973255
BFGS:    8 20:15:52     -303.551581        2.074243
BFGS:    9 20:15:52     -303.711279        2.389216
BFGS:   10 20:15:52     -303.900786        2.277359
BFGS:   11 20:15:52     -304.160089        1.721485
BFGS:   12 20:15:52     -304.285948        1.276014
BFGS:   13 20:15:52     -304.407673        1.319636
BFGS:   14 20:15:53     -304.481099        1.084353
BFGS:   15 20:15:53     -304.513868        0.871850
BFGS:   16 20:15:53     -304.554289        0.687471
BFGS:   17 20:15:53     -304.612993        0.460475
BFGS:   18 20:15:53     -304.620114        0.309335
BFGS:   19 20:15:53     -304.636003        0.353739
BFGS:   20 20:15:53     -304.645043        0.505044
      Step     Time          Energy          fmax
BFGS:    0 20:15:53     -301.480673        4.074416
BFGS:    1 20:15:53     -301.871638        3.092183
BFGS:    2 20:15:54     -302.902723        3.502442
BFGS:    3 20:15:54     -303.064971        3.841353
BFGS:    4 20:15:54     -303.376368        2.202786
BFGS:    5 20:15:54     -303.569126        3.935808
BFGS:    6 20:15:54     -303.710000        1.940561
BFGS:    7 20:15:54     -303.887706        0.946392
BFGS:    8 20:15:54     -303.947984        1.519532
BFGS:    9 20:15:54     -303.998787        0.997282
BFGS:   10 20:15:54     -304.044180        0.603257
BFGS:   11 20:15:54     -304.128163        1.665389
BFGS:   12 20:15:55     -304.173820        1.487694
BFGS:   13 20:15:55     -304.216801        0.507175
BFGS:   14 20:15:55     -304.228320        0.373964
BFGS:   15 20:15:55     -304.244528        0.661951
BFGS:   16 20:15:55     -304.268553        0.933672
BFGS:   17 20:15:55     -304.294806        0.975454
BFGS:   18 20:15:55     -304.326670        0.860134
BFGS:   19 20:15:55     -304.364401        1.134260
BFGS:   20 20:15:55     -304.434208        1.363694
      Step     Time          Energy          fmax
BFGS:    0 20:15:56     -300.627365        3.965488
BFGS:    1 20:15:56     -301.085224        3.872547
BFGS:    2 20:15:56     -302.475404        3.673573
BFGS:    3 20:15:56     -302.090279       10.335891
BFGS:    4 20:15:56     -302.685198        3.480568
BFGS:    5 20:15:56     -302.798967        3.156925
BFGS:    6 20:15:56     -303.035847        2.230243
BFGS:    7 20:15:56     -303.098049        1.005204
BFGS:    8 20:15:56     -303.114394        0.616369
BFGS:    9 20:15:56     -303.138046        0.427862
BFGS:   10 20:15:57     -303.151991        0.350700
BFGS:   11 20:15:57     -303.165623        0.299513
BFGS:   12 20:15:57     -303.168522        0.200036
BFGS:   13 20:15:57     -303.169541        0.153101
BFGS:   14 20:15:57     -303.173618        0.194773
BFGS:   15 20:15:57     -303.177397        0.237662
BFGS:   16 20:15:57     -303.180515        0.183920
BFGS:   17 20:15:57     -303.181821        0.099509
BFGS:   18 20:15:57     -303.182392        0.103578
BFGS:   19 20:15:58     -303.183079        0.129763
BFGS:   20 20:15:58     -303.184133        0.147039
      Step     Time          Energy          fmax
BFGS:    0 20:15:58     -301.442880        4.175996
BFGS:    1 20:15:58     -301.827131        3.438785
BFGS:    2 20:15:58     -302.815984        3.275007
BFGS:    3 20:15:58     -302.927831        4.349219
BFGS:    4 20:15:58     -303.209946        2.412576
BFGS:    5 20:15:58     -303.452399        2.598110
BFGS:    6 20:15:58     -303.565448        2.385562
BFGS:    7 20:15:58     -303.899595        1.095619
BFGS:    8 20:15:59     -303.872767        2.218520
BFGS:    9 20:15:59     -303.997160        0.825466
BFGS:   10 20:15:59     -304.032454        0.705002
BFGS:   11 20:15:59     -304.106780        0.535770
BFGS:   12 20:15:59     -304.119575        0.433346
BFGS:   13 20:15:59     -304.134478        0.245078
BFGS:   14 20:15:59     -304.142380        0.241363
BFGS:   15 20:15:59     -304.149202        0.295846
BFGS:   16 20:15:59     -304.155529        0.311096
BFGS:   17 20:16:00     -304.161137        0.184927
BFGS:   18 20:16:00     -304.163999        0.138891
BFGS:   19 20:16:00     -304.166448        0.154088
BFGS:   20 20:16:00     -304.169466        0.232042
      Step     Time          Energy          fmax
BFGS:    0 20:16:00     -301.059748        4.078519
BFGS:    1 20:16:00     -301.450619        3.399803
BFGS:    2 20:16:00     -302.533979        3.400186
BFGS:    3 20:16:00     -302.517646        6.140175
BFGS:    4 20:16:00     -302.864305        2.629943
BFGS:    5 20:16:00     -303.022320        1.174942
BFGS:    6 20:16:01     -303.088930        1.614297
BFGS:    7 20:16:01     -303.126907        0.928103
BFGS:    8 20:16:01     -303.197405        1.461076
BFGS:    9 20:16:01     -303.241666        1.206686
BFGS:   10 20:16:01     -303.279274        0.617914
BFGS:   11 20:16:01     -303.301571        0.524819
BFGS:   12 20:16:01     -303.356002        1.373341
BFGS:   13 20:16:01     -303.460453        2.367141
BFGS:   14 20:16:01     -303.512584        2.696930
BFGS:   15 20:16:02     -303.650267        2.910886
BFGS:   16 20:16:02     -303.838934        1.516542
BFGS:   17 20:16:02     -303.940384        1.668951
BFGS:   18 20:16:02     -304.012444        1.849182
BFGS:   19 20:16:02     -304.075241        1.129255
BFGS:   20 20:16:02     -304.126541        0.575551
      Step     Time          Energy          fmax
BFGS:    0 20:16:02     -302.024613        4.117278
BFGS:    1 20:16:02     -302.413700        2.915380
BFGS:    2 20:16:02     -303.335445        3.415626
BFGS:    3 20:16:02     -303.514182        3.094440
BFGS:    4 20:16:03     -303.854259        1.555138
BFGS:    5 20:16:03     -303.907238        1.032027
BFGS:    6 20:16:03     -304.007050        0.980537
BFGS:    7 20:16:03     -304.063202        0.699724
BFGS:    8 20:16:03     -304.094646        0.764358
BFGS:    9 20:16:03     -304.140171        0.566362
BFGS:   10 20:16:03     -304.170088        0.397966
BFGS:   11 20:16:03     -304.177823        0.245511
BFGS:   12 20:16:03     -304.183289        0.236900
BFGS:   13 20:16:04     -304.187494        0.289361
BFGS:   14 20:16:04     -304.192554        0.300869
BFGS:   15 20:16:04     -304.196267        0.246456
BFGS:   16 20:16:04     -304.198873        0.205597
BFGS:   17 20:16:04     -304.202033        0.250370
BFGS:   18 20:16:04     -304.207959        0.374383
BFGS:   19 20:16:04     -304.219846        0.570597
BFGS:   20 20:16:04     -304.227540        0.829058
      Step     Time          Energy          fmax
BFGS:    0 20:16:04     -301.945019        4.100603
BFGS:    1 20:16:04     -302.339986        3.140468
BFGS:    2 20:16:05     -303.326904        3.303828
BFGS:    3 20:16:05     -303.515432        3.089112
BFGS:    4 20:16:05     -303.776951        1.873318
BFGS:    5 20:16:05     -303.907121        1.854275
BFGS:    6 20:16:05     -303.953030        1.050800
BFGS:    7 20:16:05     -304.035721        0.757666
BFGS:    8 20:16:05     -304.079253        0.951754
BFGS:    9 20:16:05     -304.113278        0.788708
BFGS:   10 20:16:05     -304.150696        0.463375
BFGS:   11 20:16:06     -304.169911        0.306361
BFGS:   12 20:16:06     -304.178347        0.212333
BFGS:   13 20:16:06     -304.184055        0.258107
BFGS:   14 20:16:06     -304.188023        0.226240
BFGS:   15 20:16:06     -304.191832        0.220651
BFGS:   16 20:16:06     -304.194392        0.201635
BFGS:   17 20:16:06     -304.196642        0.193777
BFGS:   18 20:16:06     -304.199689        0.226799
BFGS:   19 20:16:06     -304.204802        0.284894
BFGS:   20 20:16:06     -304.213064        0.296450
      Step     Time          Energy          fmax
BFGS:    0 20:16:07     -301.397531        4.050052
BFGS:    1 20:16:07     -301.784805        3.138459
BFGS:    2 20:16:07     -302.818746        3.480790
BFGS:    3 20:16:07     -302.957487        3.960001
BFGS:    4 20:16:07     -303.241120        2.262587
BFGS:    5 20:16:07     -303.403081        3.565392
BFGS:    6 20:16:07     -303.511021        1.898343
BFGS:    7 20:16:07     -303.735906        1.187196
BFGS:    8 20:16:07     -304.001245        2.250222
BFGS:    9 20:16:08     -304.073777        2.122212
BFGS:   10 20:16:08     -304.294678        1.155691
BFGS:   11 20:16:08     -304.360312        1.771793
BFGS:   12 20:16:08     -304.521291        2.007904
BFGS:   13 20:16:08     -304.586122        0.834206
BFGS:   14 20:16:08     -304.608995        0.461455
BFGS:   15 20:16:08     -304.621055        0.430707
BFGS:   16 20:16:08     -304.634900        0.441559
BFGS:   17 20:16:08     -304.645020        0.358918
BFGS:   18 20:16:08     -304.650640        0.255649
BFGS:   19 20:16:09     -304.654982        0.250628
BFGS:   20 20:16:09     -304.661166        0.336502
# Relax the product systems
product1_energies = []
for config in product1_configs:
    config.calc = calc
    config.pbc = True
    opt = BFGS(config)
    opt.run(fmax=0.05, steps=optimization_steps)
    product1_energies.append(config.get_potential_energy())
      Step     Time          Energy          fmax
BFGS:    0 20:16:09     -296.169749        4.391894
BFGS:    1 20:16:09     -296.665741        4.691964
BFGS:    2 20:16:09     -298.208587        3.261027
BFGS:    3 20:16:09     -297.365888       12.877390
BFGS:    4 20:16:09     -298.426457        1.920376
BFGS:    5 20:16:09     -298.493928        1.085670
BFGS:    6 20:16:09     -298.537470        0.941684
BFGS:    7 20:16:10     -298.549588        0.782296
BFGS:    8 20:16:10     -298.607376        0.807822
BFGS:    9 20:16:10     -298.624893        1.001345
BFGS:   10 20:16:10     -298.723667        1.924651
BFGS:   11 20:16:10     -298.817085        2.844441
BFGS:   12 20:16:10     -298.902153        3.374532
BFGS:   13 20:16:10     -299.029409        3.880448
BFGS:   14 20:16:10     -299.286370        4.348925
BFGS:   15 20:16:10     -299.975769        3.497260
BFGS:   16 20:16:10     -300.389590        1.646238
BFGS:   17 20:16:11     -300.482320        1.076514
BFGS:   18 20:16:11     -300.541219        0.742729
BFGS:   19 20:16:11     -300.596103        0.406160
BFGS:   20 20:16:11     -300.601851        0.288001
      Step     Time          Energy          fmax
BFGS:    0 20:16:11     -296.797978        4.560280
BFGS:    1 20:16:11     -297.264528        4.756853
BFGS:    2 20:16:11     -298.578916        3.837944
BFGS:    3 20:16:11     -298.861245        5.212182
BFGS:    4 20:16:11     -299.095162        2.020783
BFGS:    5 20:16:12     -299.245775        2.030852
BFGS:    6 20:16:12     -299.719609        1.613411
BFGS:    7 20:16:12     -299.808531        2.071410
BFGS:    8 20:16:12     -299.889150        0.883092
BFGS:    9 20:16:12     -299.936904        0.927734
BFGS:   10 20:16:12     -300.206125        1.235326
BFGS:   11 20:16:12     -300.311658        1.206623
BFGS:   12 20:16:12     -300.368383        1.186083
BFGS:   13 20:16:12     -300.474275        1.312577
BFGS:   14 20:16:13     -300.514227        1.093988
BFGS:   15 20:16:13     -300.545043        0.758559
BFGS:   16 20:16:13     -300.582003        0.493379
BFGS:   17 20:16:13     -300.588858        0.369949
BFGS:   18 20:16:13     -300.604695        0.357251
BFGS:   19 20:16:13     -300.614403        0.255916
BFGS:   20 20:16:13     -300.620069        0.108445
      Step     Time          Energy          fmax
BFGS:    0 20:16:13     -296.044759        4.394316
BFGS:    1 20:16:14     -296.565406        4.729040
BFGS:    2 20:16:14     -298.195609        3.143054
BFGS:    3 20:16:14     -296.966521       15.686276
BFGS:    4 20:16:14     -298.384020        1.902513
BFGS:    5 20:16:14     -298.448085        1.059848
BFGS:    6 20:16:14     -298.484574        0.664001
BFGS:    7 20:16:14     -298.490020        0.412756
BFGS:    8 20:16:14     -298.499897        0.259772
BFGS:    9 20:16:14     -298.503118        0.300670
BFGS:   10 20:16:15     -298.505923        0.290857
BFGS:   11 20:16:15     -298.509540        0.281558
BFGS:   12 20:16:15     -298.520309        0.353412
BFGS:   13 20:16:15     -298.558711        0.820837
BFGS:   14 20:16:15     -298.593473        1.466701
BFGS:   15 20:16:15     -298.613580        2.204418
BFGS:   16 20:16:15     -298.671351        2.300513
BFGS:   17 20:16:15     -298.844896        2.446099
BFGS:   18 20:16:15     -298.979373        2.251372
BFGS:   19 20:16:15     -299.140438        2.576210
BFGS:   20 20:16:16     -299.173859        2.463522
      Step     Time          Energy          fmax
BFGS:    0 20:16:16     -296.396143        4.440961
BFGS:    1 20:16:16     -296.874621        4.683137
BFGS:    2 20:16:16     -298.300717        3.407499
BFGS:    3 20:16:16     -297.924199        9.642152
BFGS:    4 20:16:16     -298.575750        1.939395
BFGS:    5 20:16:16     -298.651983        1.278140
BFGS:    6 20:16:16     -298.743463        1.635685
BFGS:    7 20:16:16     -298.815179        1.846557
BFGS:    8 20:16:17     -299.054660        1.968226
BFGS:    9 20:16:17     -299.238829        1.822343
BFGS:   10 20:16:17     -299.309283        1.650407
BFGS:   11 20:16:17     -299.426764        1.395468
BFGS:   12 20:16:17     -299.787905        1.002989
BFGS:   13 20:16:17     -299.882447        0.611021
BFGS:   14 20:16:17     -299.893859        0.488236
BFGS:   15 20:16:17     -299.923760        0.318439
BFGS:   16 20:16:17     -299.940817        0.344206
BFGS:   17 20:16:17     -299.951280        0.329503
BFGS:   18 20:16:18     -299.956708        0.341120
BFGS:   19 20:16:18     -299.963659        0.380660
BFGS:   20 20:16:18     -299.977955        0.433853
      Step     Time          Energy          fmax
BFGS:    0 20:16:18     -296.997692        4.651580
BFGS:    1 20:16:18     -297.470681        4.826795
BFGS:    2 20:16:18     -298.754588        3.949523
BFGS:    3 20:16:18     -299.189067        4.054310
BFGS:    4 20:16:18     -299.375586        1.911852
BFGS:    5 20:16:18     -299.655389        1.939646
BFGS:    6 20:16:19     -299.915611        1.118650
BFGS:    7 20:16:19     -299.956285        1.096236
BFGS:    8 20:16:19     -300.248766        1.430372
BFGS:    9 20:16:19     -300.349158        1.672075
BFGS:   10 20:16:19     -300.423829        1.180947
BFGS:   11 20:16:19     -300.505092        0.914935
BFGS:   12 20:16:19     -300.535009        0.865452
BFGS:   13 20:16:19     -300.569555        0.478737
BFGS:   14 20:16:19     -300.584201        0.524890
BFGS:   15 20:16:19     -300.595107        0.414322
BFGS:   16 20:16:20     -300.606599        0.298036
BFGS:   17 20:16:20     -300.614270        0.270428
BFGS:   18 20:16:20     -300.618944        0.167884
BFGS:   19 20:16:20     -300.620928        0.097474
BFGS:   20 20:16:20     -300.621874        0.067349
      Step     Time          Energy          fmax
BFGS:    0 20:16:20     -295.931152        4.397523
BFGS:    1 20:16:20     -296.481537        4.756415
BFGS:    2 20:16:20     -298.205883        2.981540
BFGS:    3 20:16:20     -296.481633       19.133582
BFGS:    4 20:16:21     -298.367934        1.855270
BFGS:    5 20:16:21     -298.428672        1.045723
BFGS:    6 20:16:21     -298.463473        0.529572
BFGS:    7 20:16:21     -298.467049        0.216865
BFGS:    8 20:16:21     -298.470445        0.090723
BFGS:    9 20:16:21     -298.472217        0.085338
BFGS:   10 20:16:21     -298.472674        0.046508
      Step     Time          Energy          fmax
BFGS:    0 20:16:21     -295.948448        4.393580
BFGS:    1 20:16:21     -296.493186        4.751348
BFGS:    2 20:16:22     -298.202280        3.012831
BFGS:    3 20:16:22     -296.567876       18.533580
BFGS:    4 20:16:22     -298.368607        1.867912
BFGS:    5 20:16:22     -298.430001        1.051052
BFGS:    6 20:16:22     -298.464935        0.522249
BFGS:    7 20:16:22     -298.468691        0.230259
BFGS:    8 20:16:22     -298.472478        0.088384
BFGS:    9 20:16:22     -298.474280        0.103837
BFGS:   10 20:16:22     -298.474769        0.066360
BFGS:   11 20:16:22     -298.474874        0.042408
      Step     Time          Energy          fmax
BFGS:    0 20:16:23     -296.396651        4.434788
BFGS:    1 20:16:23     -296.867303        4.683406
BFGS:    2 20:16:23     -298.286619        3.472585
BFGS:    3 20:16:23     -297.989917        9.144493
BFGS:    4 20:16:23     -298.579457        1.951589
BFGS:    5 20:16:23     -298.658049        1.288671
BFGS:    6 20:16:23     -298.759906        1.830447
BFGS:    7 20:16:23     -298.853639        2.179722
BFGS:    8 20:16:23     -299.113125        2.298892
BFGS:    9 20:16:24     -299.318373        2.309284
BFGS:   10 20:16:24     -299.435605        2.067990
BFGS:   11 20:16:24     -299.579694        2.065175
BFGS:   12 20:16:24     -300.196189        1.710985
BFGS:   13 20:16:24     -300.517151        1.050331
BFGS:   14 20:16:24     -300.538361        0.885842
BFGS:   15 20:16:24     -300.589635        0.329636
BFGS:   16 20:16:24     -300.597016        0.327865
BFGS:   17 20:16:24     -300.604775        0.324872
BFGS:   18 20:16:24     -300.613059        0.275265
BFGS:   19 20:16:25     -300.618204        0.171304
BFGS:   20 20:16:25     -300.620329        0.106944
      Step     Time          Energy          fmax
BFGS:    0 20:16:25     -296.418184        4.450849
BFGS:    1 20:16:25     -296.896185        4.685763
BFGS:    2 20:16:25     -298.313278        3.432753
BFGS:    3 20:16:25     -297.987156        9.305506
BFGS:    4 20:16:25     -298.598927        1.943172
BFGS:    5 20:16:25     -298.677070        1.315756
BFGS:    6 20:16:25     -298.782454        1.770960
BFGS:    7 20:16:26     -298.877888        2.076834
BFGS:    8 20:16:26     -299.127891        2.226611
BFGS:    9 20:16:26     -299.310917        1.777908
BFGS:   10 20:16:26     -299.354262        1.617667
BFGS:   11 20:16:26     -299.488243        1.313728
BFGS:   12 20:16:26     -299.719659        1.143787
BFGS:   13 20:16:26     -299.869600        0.620756
BFGS:   14 20:16:26     -299.893731        0.447903
BFGS:   15 20:16:26     -299.902855        0.390322
BFGS:   16 20:16:27     -299.931861        0.407199
BFGS:   17 20:16:27     -299.938219        0.408167
BFGS:   18 20:16:27     -299.947764        0.339772
BFGS:   19 20:16:27     -299.953321        0.316328
BFGS:   20 20:16:27     -299.962265        0.398064
      Step     Time          Energy          fmax
BFGS:    0 20:16:27     -296.375567        4.429213
BFGS:    1 20:16:27     -296.847849        4.681869
BFGS:    2 20:16:27     -298.276960        3.451278
BFGS:    3 20:16:27     -297.935601        9.449546
BFGS:    4 20:16:27     -298.561087        1.948114
BFGS:    5 20:16:28     -298.638250        1.258806
BFGS:    6 20:16:28     -298.729403        1.718345
BFGS:    7 20:16:28     -298.804553        1.991339
BFGS:    8 20:16:28     -299.055419        2.077375
BFGS:    9 20:16:28     -299.248657        2.210500
BFGS:   10 20:16:28     -299.371858        2.195293
BFGS:   11 20:16:28     -299.546958        2.289469
BFGS:   12 20:16:28     -300.005871        2.248306
BFGS:   13 20:16:28     -300.479357        0.918851
BFGS:   14 20:16:29     -300.542584        0.846042
BFGS:   15 20:16:29     -300.561738        0.628104
BFGS:   16 20:16:29     -300.580861        0.420581
BFGS:   17 20:16:29     -300.598123        0.273352
BFGS:   18 20:16:29     -300.606618        0.330435
BFGS:   19 20:16:29     -300.611353        0.323241
BFGS:   20 20:16:29     -300.615914        0.252182
product2_energies = []
for config in product2_configs:
    config.calc = calc
    config.pbc = True
    opt = BFGS(config)
    opt.run(fmax=0.05, steps=optimization_steps)
    product2_energies.append(config.get_potential_energy())
      Step     Time          Energy          fmax
BFGS:    0 20:16:29     -295.214328        1.450760
BFGS:    1 20:16:29     -295.303508        1.313193
BFGS:    2 20:16:29     -295.496762        1.880522
BFGS:    3 20:16:30     -295.556156        0.514100
BFGS:    4 20:16:30     -295.567919        0.558498
BFGS:    5 20:16:30     -295.593976        0.392334
BFGS:    6 20:16:30     -295.600923        0.278694
BFGS:    7 20:16:30     -295.606500        0.331192
BFGS:    8 20:16:30     -295.613459        0.346473
BFGS:    9 20:16:30     -295.620982        0.344365
BFGS:   10 20:16:30     -295.627445        0.263844
BFGS:   11 20:16:30     -295.631491        0.351722
BFGS:   12 20:16:31     -295.637423        0.506410
BFGS:   13 20:16:31     -295.667792        1.001790
BFGS:   14 20:16:31     -295.737493        0.693739
BFGS:   15 20:16:31     -295.818835        0.474613
BFGS:   16 20:16:31     -295.827119        0.829497
BFGS:   17 20:16:31     -295.860780        0.486454
BFGS:   18 20:16:31     -295.875974        0.484256
BFGS:   19 20:16:31     -295.902531        0.496085
BFGS:   20 20:16:31     -295.911585        0.405221
      Step     Time          Energy          fmax
BFGS:    0 20:16:31     -295.351488        1.231497
BFGS:    1 20:16:32     -295.422931        1.129556
BFGS:    2 20:16:32     -295.630634        1.324527
BFGS:    3 20:16:32     -295.663964        0.576223
BFGS:    4 20:16:32     -295.674724        0.483247
BFGS:    5 20:16:32     -295.713805        0.523089
BFGS:    6 20:16:32     -295.721115        0.517783
BFGS:    7 20:16:32     -295.807139        0.577488
BFGS:    8 20:16:32     -295.847175        0.900052
BFGS:    9 20:16:32     -295.865274        0.756976
BFGS:   10 20:16:33     -295.917243        0.651634
BFGS:   11 20:16:33     -295.945431        0.377389
BFGS:   12 20:16:33     -295.951789        0.275583
BFGS:   13 20:16:33     -295.956422        0.239929
BFGS:   14 20:16:33     -295.958826        0.241497
BFGS:   15 20:16:33     -295.962221        0.222055
BFGS:   16 20:16:33     -295.965186        0.158739
BFGS:   17 20:16:33     -295.966739        0.079390
BFGS:   18 20:16:33     -295.967196        0.026631
      Step     Time          Energy          fmax
BFGS:    0 20:16:33     -295.111233        1.709333
BFGS:    1 20:16:34     -295.222874        1.536746
BFGS:    2 20:16:34     -295.395681        2.534744
BFGS:    3 20:16:34     -295.494929        0.428452
BFGS:    4 20:16:34     -295.511658        0.598212
BFGS:    5 20:16:34     -295.532231        0.644457
BFGS:    6 20:16:34     -295.548564        0.434088
BFGS:    7 20:16:34     -295.554939        0.204206
BFGS:    8 20:16:34     -295.559199        0.275520
BFGS:    9 20:16:34     -295.564281        0.289552
BFGS:   10 20:16:35     -295.567998        0.207774
BFGS:   11 20:16:35     -295.569885        0.087252
BFGS:   12 20:16:35     -295.570168        0.025305
      Step     Time          Energy          fmax
BFGS:    0 20:16:35     -295.395504        1.166003
BFGS:    1 20:16:35     -295.462636        1.075010
BFGS:    2 20:16:35     -295.672669        1.159616
BFGS:    3 20:16:35     -295.700293        0.570506
BFGS:    4 20:16:35     -295.711461        0.480714
BFGS:    5 20:16:35     -295.755615        0.583489
BFGS:    6 20:16:35     -295.765145        0.569939
BFGS:    7 20:16:36     -295.855753        0.530481
BFGS:    8 20:16:36     -295.882210        0.741361
BFGS:    9 20:16:36     -295.898113        0.566884
BFGS:   10 20:16:36     -295.909173        0.520123
BFGS:   11 20:16:36     -295.946540        0.269195
BFGS:   12 20:16:36     -295.949238        0.233420
BFGS:   13 20:16:36     -295.953581        0.238294
BFGS:   14 20:16:36     -295.958231        0.195750
BFGS:   15 20:16:36     -295.962940        0.102009
BFGS:   16 20:16:37     -295.965299        0.063631
BFGS:   17 20:16:37     -295.966054        0.055526
BFGS:   18 20:16:37     -295.966290        0.055653
BFGS:   19 20:16:37     -295.966592        0.047253
      Step     Time          Energy          fmax
BFGS:    0 20:16:37     -295.265208        1.354750
BFGS:    1 20:16:37     -295.347149        1.230151
BFGS:    2 20:16:37     -295.548577        1.619409
BFGS:    3 20:16:37     -295.594039        0.555838
BFGS:    4 20:16:37     -295.604882        0.534405
BFGS:    5 20:16:37     -295.636584        0.374398
BFGS:    6 20:16:38     -295.641647        0.396390
BFGS:    7 20:16:38     -295.659985        0.428867
BFGS:    8 20:16:38     -295.674087        0.557024
BFGS:    9 20:16:38     -295.696099        0.518679
BFGS:   10 20:16:38     -295.712356        0.728885
BFGS:   11 20:16:38     -295.739393        0.976037
BFGS:   12 20:16:38     -295.767697        0.902017
BFGS:   13 20:16:38     -295.808448        0.506888
BFGS:   14 20:16:38     -295.822240        0.398177
BFGS:   15 20:16:39     -295.831067        0.281127
BFGS:   16 20:16:39     -295.833736        0.294466
BFGS:   17 20:16:39     -295.840102        0.271375
BFGS:   18 20:16:39     -295.844032        0.179228
BFGS:   19 20:16:39     -295.846217        0.110182
BFGS:   20 20:16:39     -295.847227        0.111295
      Step     Time          Energy          fmax
BFGS:    0 20:16:39     -295.133117        1.640487
BFGS:    1 20:16:39     -295.239165        1.477789
BFGS:    2 20:16:39     -295.416348        2.411296
BFGS:    3 20:16:39     -295.507693        0.431158
BFGS:    4 20:16:40     -295.523397        0.592231
BFGS:    5 20:16:40     -295.544573        0.614689
BFGS:    6 20:16:40     -295.558445        0.389527
BFGS:    7 20:16:40     -295.564072        0.220198
BFGS:    8 20:16:40     -295.568464        0.287761
BFGS:    9 20:16:40     -295.573039        0.284417
BFGS:   10 20:16:40     -295.576777        0.188406
BFGS:   11 20:16:40     -295.578390        0.082608
BFGS:   12 20:16:40     -295.578697        0.074265
BFGS:   13 20:16:41     -295.578878        0.083006
BFGS:   14 20:16:41     -295.579255        0.101158
BFGS:   15 20:16:41     -295.580080        0.129886
BFGS:   16 20:16:41     -295.581878        0.165365
BFGS:   17 20:16:41     -295.585213        0.186371
BFGS:   18 20:16:41     -295.592226        0.311863
BFGS:   19 20:16:41     -295.605365        0.506134
BFGS:   20 20:16:41     -295.644901        0.669572
      Step     Time          Energy          fmax
BFGS:    0 20:16:41     -295.094222        1.779626
BFGS:    1 20:16:42     -295.211475        1.595995
BFGS:    2 20:16:42     -295.380978        2.643394
BFGS:    3 20:16:42     -295.486953        0.466795
BFGS:    4 20:16:42     -295.504608        0.604094
BFGS:    5 20:16:42     -295.524723        0.665976
BFGS:    6 20:16:42     -295.543802        0.467476
BFGS:    7 20:16:42     -295.551080        0.193837
BFGS:    8 20:16:42     -295.555311        0.262826
BFGS:    9 20:16:42     -295.561330        0.292642
BFGS:   10 20:16:42     -295.565066        0.224064
BFGS:   11 20:16:43     -295.567297        0.100889
BFGS:   12 20:16:43     -295.567653        0.022308
      Step     Time          Energy          fmax
BFGS:    0 20:16:43     -295.416577        1.105449
BFGS:    1 20:16:43     -295.483055        1.019821
BFGS:    2 20:16:43     -295.693844        1.076395
BFGS:    3 20:16:43     -295.718997        0.555324
BFGS:    4 20:16:43     -295.729991        0.486048
BFGS:    5 20:16:44     -295.773141        0.555515
BFGS:    6 20:16:44     -295.781802        0.524177
BFGS:    7 20:16:44     -295.826197        0.437280
BFGS:    8 20:16:44     -295.835783        0.266077
BFGS:    9 20:16:44     -295.839519        0.252916
BFGS:   10 20:16:44     -295.843702        0.216899
BFGS:   11 20:16:44     -295.846954        0.182973
BFGS:   12 20:16:44     -295.850880        0.147604
BFGS:   13 20:16:44     -295.852696        0.137554
BFGS:   14 20:16:44     -295.853800        0.136274
BFGS:   15 20:16:45     -295.855332        0.139353
BFGS:   16 20:16:45     -295.858200        0.153302
BFGS:   17 20:16:45     -295.862504        0.189380
BFGS:   18 20:16:45     -295.867066        0.239536
BFGS:   19 20:16:45     -295.871490        0.287071
BFGS:   20 20:16:45     -295.877530        0.343294
      Step     Time          Energy          fmax
BFGS:    0 20:16:45     -295.194133        1.490848
BFGS:    1 20:16:45     -295.287350        1.348680
BFGS:    2 20:16:45     -295.477929        2.030256
BFGS:    3 20:16:46     -295.545792        0.496551
BFGS:    4 20:16:46     -295.558578        0.571383
BFGS:    5 20:16:46     -295.583125        0.473689
BFGS:    6 20:16:46     -295.591733        0.240093
BFGS:    7 20:16:46     -295.596799        0.298410
BFGS:    8 20:16:46     -295.602888        0.333577
BFGS:    9 20:16:46     -295.608951        0.300699
BFGS:   10 20:16:46     -295.614391        0.237135
BFGS:   11 20:16:46     -295.617311        0.263334
BFGS:   12 20:16:46     -295.619991        0.347533
BFGS:   13 20:16:47     -295.628513        0.574858
BFGS:   14 20:16:47     -295.668918        1.102956
BFGS:   15 20:16:47     -295.752274        1.093172
BFGS:   16 20:16:47     -295.791260        0.881390
BFGS:   17 20:16:47     -295.814730        0.795000
BFGS:   18 20:16:47     -295.844164        0.569604
BFGS:   19 20:16:47     -295.869113        0.310263
BFGS:   20 20:16:47     -295.875443        0.361466
      Step     Time          Energy          fmax
BFGS:    0 20:16:47     -295.203463        1.473080
BFGS:    1 20:16:48     -295.295033        1.333579
BFGS:    2 20:16:48     -295.486330        1.991299
BFGS:    3 20:16:48     -295.552056        0.503000
BFGS:    4 20:16:48     -295.564565        0.568040
BFGS:    5 20:16:48     -295.589593        0.450743
BFGS:    6 20:16:48     -295.597715        0.256217
BFGS:    7 20:16:48     -295.603011        0.312149
BFGS:    8 20:16:48     -295.609524        0.342171
BFGS:    9 20:16:48     -295.616226        0.327228
BFGS:   10 20:16:49     -295.622369        0.256223
BFGS:   11 20:16:49     -295.626003        0.310004
BFGS:   12 20:16:49     -295.629995        0.424707
BFGS:   13 20:16:49     -295.644972        0.762817
BFGS:   14 20:16:49     -295.689664        1.269966
BFGS:   15 20:16:49     -295.763062        1.270285
BFGS:   16 20:16:49     -295.761938        1.186658
BFGS:   17 20:16:49     -295.803474        1.039359
BFGS:   18 20:16:49     -295.825253        0.898291
BFGS:   19 20:16:49     -295.883431        0.379642
BFGS:   20 20:16:50     -295.891426        0.387337

Enumerate NEBs#

af = AutoFrameDissociation(
    reaction=reaction,
    reactant_system=reactant_configs[reactant_energies.index(min(reactant_energies))],
    product1_systems=product1_configs,
    product1_energies=product1_energies,
    product2_systems=product2_configs,
    product2_energies=product2_energies,
    r_product1_max=2,  # r1 in the above fig
    r_product2_max=3,  # r3 in the above fig
    r_product2_min=1,  # r2 in the above fig
)
import random

nframes = 10
random.seed(
    42
)  # set the seed to make the random generation deterministic for the tutorial!
frame_sets, mapping_idxs = af.get_neb_frames(
    calc,
    n_frames=nframes,
    n_pdt1_sites=4,  # = 5 in the above fig (step 1)
    n_pdt2_sites=4,  # = 5 in the above fig (step 2)
)
      Step     Time          Energy          fmax
BFGS:    0 20:16:50     -303.822508        0.975776
BFGS:    1 20:16:50     -303.846033        0.804404
BFGS:    2 20:16:50     -303.918286        0.404978
BFGS:    3 20:16:50     -303.927880        0.388775
BFGS:    4 20:16:50     -303.952084        0.331913
BFGS:    5 20:16:50     -303.961362        0.321555
BFGS:    6 20:16:50     -303.967039        0.302830
BFGS:    7 20:16:50     -303.973022        0.292838
BFGS:    8 20:16:51     -303.984629        0.390024
BFGS:    9 20:16:51     -303.997209        0.609608
BFGS:   10 20:16:51     -304.014880        0.654551
BFGS:   11 20:16:51     -304.032601        0.465120
BFGS:   12 20:16:51     -304.054038        0.513316
BFGS:   13 20:16:51     -304.080914        0.442057
BFGS:   14 20:16:51     -304.107197        0.723754
BFGS:   15 20:16:51     -304.141614        0.867648
BFGS:   16 20:16:51     -304.184715        0.906023
BFGS:   17 20:16:52     -304.249385        0.878938
BFGS:   18 20:16:52     -304.313407        0.660795
BFGS:   19 20:16:52     -304.357748        0.667064
BFGS:   20 20:16:52     -304.390310        0.563378
BFGS:   21 20:16:52     -304.418110        0.414112
BFGS:   22 20:16:52     -304.435752        0.224283
BFGS:   23 20:16:52     -304.440160        0.180413
BFGS:   24 20:16:52     -304.442821        0.190307
BFGS:   25 20:16:52     -304.445493        0.170992
BFGS:   26 20:16:52     -304.448544        0.119545
BFGS:   27 20:16:53     -304.450456        0.072774
BFGS:   28 20:16:53     -304.451185        0.043208
      Step     Time          Energy          fmax
BFGS:    0 20:16:53     -303.751429        0.823766
BFGS:    1 20:16:53     -303.774890        0.694125
BFGS:    2 20:16:53     -303.881699        0.696123
BFGS:    3 20:16:53     -303.899698        0.651078
BFGS:    4 20:16:53     -303.959895        0.691633
BFGS:    5 20:16:53     -303.981971        0.409053
BFGS:    6 20:16:54     -303.997604        0.397082
BFGS:    7 20:16:54     -304.012139        0.370407
BFGS:    8 20:16:54     -304.025430        0.383539
BFGS:    9 20:16:54     -304.038301        0.430080
BFGS:   10 20:16:54     -304.057830        0.446548
BFGS:   11 20:16:54     -304.078520        0.548958
BFGS:   12 20:16:54     -304.106079        0.607807
BFGS:   13 20:16:54     -304.143459        0.627943
BFGS:   14 20:16:54     -304.184782        0.670136
BFGS:   15 20:16:54     -304.235704        0.753176
BFGS:   16 20:16:55     -304.300445        0.759893
BFGS:   17 20:16:55     -304.348875        0.697606
BFGS:   18 20:16:55     -304.385376        0.609081
BFGS:   19 20:16:55     -304.412522        0.397654
BFGS:   20 20:16:55     -304.425898        0.300502
BFGS:   21 20:16:55     -304.434269        0.236723
BFGS:   22 20:16:55     -304.440419        0.276653
BFGS:   23 20:16:55     -304.445520        0.190364
BFGS:   24 20:16:55     -304.448018        0.134176
BFGS:   25 20:16:56     -304.448937        0.106825
BFGS:   26 20:16:56     -304.449964        0.082552
BFGS:   27 20:16:56     -304.450732        0.069441
BFGS:   28 20:16:56     -304.451423        0.050517
BFGS:   29 20:16:56     -304.451869        0.043845
      Step     Time          Energy          fmax
BFGS:    0 20:16:56     -304.406916        0.831087
BFGS:    1 20:16:56     -304.426762        0.648630
BFGS:    2 20:16:56     -304.450713        0.359805
BFGS:    3 20:16:56     -304.457158        0.275994
BFGS:    4 20:16:57     -304.463090        0.341873
BFGS:    5 20:16:57     -304.469735        0.326140
BFGS:    6 20:16:57     -304.477100        0.264790
BFGS:    7 20:16:57     -304.483437        0.261783
BFGS:    8 20:16:57     -304.488607        0.242250
BFGS:    9 20:16:57     -304.492646        0.226479
BFGS:   10 20:16:57     -304.497993        0.292752
BFGS:   11 20:16:57     -304.506577        0.375892
BFGS:   12 20:16:57     -304.514253        0.418108
BFGS:   13 20:16:57     -304.521437        0.326467
BFGS:   14 20:16:58     -304.526210        0.176413
BFGS:   15 20:16:58     -304.528969        0.137179
BFGS:   16 20:16:58     -304.530905        0.109277
BFGS:   17 20:16:58     -304.531828        0.066052
BFGS:   18 20:16:58     -304.532327        0.054191
BFGS:   19 20:16:58     -304.532580        0.043556
      Step     Time          Energy          fmax
BFGS:    0 20:16:58     -303.761699        0.735358
BFGS:    1 20:16:58     -303.785676        0.740975
BFGS:    2 20:16:59     -303.870775        0.691511
BFGS:    3 20:16:59     -303.885648        0.563602
BFGS:    4 20:16:59     -303.911797        0.389897
BFGS:    5 20:16:59     -303.926066        0.355173
BFGS:    6 20:16:59     -303.937649        0.290377
BFGS:    7 20:16:59     -303.943634        0.187770
BFGS:    8 20:16:59     -303.947253        0.163649
BFGS:    9 20:16:59     -303.949561        0.161017
BFGS:   10 20:16:59     -303.951751        0.119433
BFGS:   11 20:16:59     -303.953380        0.106715
BFGS:   12 20:17:00     -303.954181        0.065088
BFGS:   13 20:17:00     -303.954504        0.049902
      Step     Time          Energy          fmax
BFGS:    0 20:17:00     -303.187688        1.099577
BFGS:    1 20:17:00     -303.224797        0.833535
BFGS:    2 20:17:00     -303.322586        0.642385
BFGS:    3 20:17:00     -303.345966        0.614315
BFGS:    4 20:17:00     -303.381273        0.417842
BFGS:    5 20:17:00     -303.392923        0.354198
BFGS:    6 20:17:00     -303.402344        0.231184
BFGS:    7 20:17:01     -303.406338        0.255065
BFGS:    8 20:17:01     -303.412924        0.283946
BFGS:    9 20:17:01     -303.416400        0.184452
BFGS:   10 20:17:01     -303.418937        0.177746
BFGS:   11 20:17:01     -303.421487        0.184415
BFGS:   12 20:17:01     -303.424483        0.232187
BFGS:   13 20:17:01     -303.429440        0.265952
BFGS:   14 20:17:01     -303.437575        0.369961
BFGS:   15 20:17:01     -303.450789        0.543883
BFGS:   16 20:17:02     -303.471530        0.634279
BFGS:   17 20:17:02     -303.503548        0.643540
BFGS:   18 20:17:02     -303.543538        0.502576
BFGS:   19 20:17:02     -303.565730        0.607736
BFGS:   20 20:17:02     -303.588796        0.627745
BFGS:   21 20:17:02     -303.615193        0.791010
BFGS:   22 20:17:02     -303.651819        0.770289
BFGS:   23 20:17:02     -303.723289        0.686744
BFGS:   24 20:17:02     -303.762622        0.591503
BFGS:   25 20:17:03     -303.814198        0.746818
BFGS:   26 20:17:03     -303.850635        0.826323
BFGS:   27 20:17:03     -303.906861        0.717470
BFGS:   28 20:17:03     -303.933231        0.282291
BFGS:   29 20:17:03     -303.940191        0.151288
BFGS:   30 20:17:03     -303.943195        0.167008
BFGS:   31 20:17:03     -303.945849        0.147990
BFGS:   32 20:17:03     -303.948224        0.097601
BFGS:   33 20:17:03     -303.949677        0.084939
BFGS:   34 20:17:03     -303.950600        0.080753
BFGS:   35 20:17:04     -303.951599        0.074789
BFGS:   36 20:17:04     -303.952391        0.045964
      Step     Time          Energy          fmax
BFGS:    0 20:17:04     -303.660135        1.452577
BFGS:    1 20:17:04     -303.720300        1.005885
BFGS:    2 20:17:04     -303.787594        0.626079
BFGS:    3 20:17:04     -303.806807        0.583077
BFGS:    4 20:17:04     -303.833501        0.561814
BFGS:    5 20:17:04     -303.858287        0.511320
BFGS:    6 20:17:04     -303.879490        0.411395
BFGS:    7 20:17:05     -303.894422        0.331059
BFGS:    8 20:17:05     -303.906827        0.315173
BFGS:    9 20:17:05     -303.914879        0.353346
BFGS:   10 20:17:05     -303.922657        0.305369
BFGS:   11 20:17:05     -303.932595        0.297151
BFGS:   12 20:17:05     -303.938226        0.199233
BFGS:   13 20:17:05     -303.940307        0.150692
BFGS:   14 20:17:05     -303.942356        0.166470
BFGS:   15 20:17:05     -303.945776        0.167007
BFGS:   16 20:17:06     -303.948986        0.132747
BFGS:   17 20:17:06     -303.950814        0.100124
BFGS:   18 20:17:06     -303.951646        0.075180
BFGS:   19 20:17:06     -303.952115        0.077167
BFGS:   20 20:17:06     -303.952615        0.080351
BFGS:   21 20:17:06     -303.953403        0.076665
BFGS:   22 20:17:06     -303.954206        0.057805
BFGS:   23 20:17:06     -303.954709        0.049272
      Step     Time          Energy          fmax
BFGS:    0 20:17:06     -303.490389        1.297609
BFGS:    1 20:17:07     -303.530982        1.146504
BFGS:    2 20:17:07     -303.727123        1.092125
BFGS:    3 20:17:07     -303.775285        0.892562
BFGS:    4 20:17:07     -303.853019        0.541646
BFGS:    5 20:17:07     -303.881578        0.547494
BFGS:    6 20:17:07     -303.917240        0.507700
BFGS:    7 20:17:07     -303.929191        0.337183
BFGS:    8 20:17:07     -303.937598        0.273753
BFGS:    9 20:17:07     -303.941993        0.272380
BFGS:   10 20:17:07     -303.945217        0.198236
BFGS:   11 20:17:08     -303.947262        0.161933
BFGS:   12 20:17:08     -303.948661        0.100511
BFGS:   13 20:17:08     -303.949491        0.089354
BFGS:   14 20:17:08     -303.950376        0.092195
BFGS:   15 20:17:08     -303.951211        0.077220
BFGS:   16 20:17:08     -303.951704        0.058894
BFGS:   17 20:17:08     -303.951992        0.047234
      Step     Time          Energy          fmax
BFGS:    0 20:17:08     -301.869738        1.199586
BFGS:    1 20:17:09     -301.916501        0.966350
BFGS:    2 20:17:09     -301.991289        0.866134
BFGS:    3 20:17:09     -302.054904        1.003123
BFGS:    4 20:17:09     -302.115724        0.870284
BFGS:    5 20:17:09     -302.148581        0.786002
BFGS:    6 20:17:09     -302.186404        0.672616
BFGS:    7 20:17:09     -302.219039        0.356754
BFGS:    8 20:17:09     -302.237300        0.308886
BFGS:    9 20:17:09     -302.248710        0.302230
BFGS:   10 20:17:09     -302.256156        0.294523
BFGS:   11 20:17:10     -302.266309        0.285771
BFGS:   12 20:17:10     -302.277515        0.284542
BFGS:   13 20:17:10     -302.286060        0.361338
BFGS:   14 20:17:10     -302.298515        0.452731
BFGS:   15 20:17:10     -302.333142        0.761245
BFGS:   16 20:17:10     -302.379098        1.521653
BFGS:   17 20:17:10     -302.427943        2.383623
BFGS:   18 20:17:10     -302.478882        3.063951
BFGS:   19 20:17:10     -302.531045        3.388089
BFGS:   20 20:17:11     -302.609225        3.226370
BFGS:   21 20:17:11     -302.712887        2.467872
BFGS:   22 20:17:11     -302.989822        1.704600
BFGS:   23 20:17:11     -303.268831        1.651751
BFGS:   24 20:17:11     -303.368940        1.310482
BFGS:   25 20:17:11     -303.615151        0.800347
BFGS:   26 20:17:11     -303.668172        1.144371
BFGS:   27 20:17:11     -303.732079        1.084321
BFGS:   28 20:17:11     -303.781177        1.185508
BFGS:   29 20:17:11     -303.812055        1.013478
BFGS:   30 20:17:12     -303.845632        0.836663
BFGS:   31 20:17:12     -303.883288        0.645452
BFGS:   32 20:17:12     -303.921154        0.418610
BFGS:   33 20:17:12     -303.934587        0.345138
BFGS:   34 20:17:12     -303.946129        0.231429
BFGS:   35 20:17:12     -303.956867        0.158474
BFGS:   36 20:17:12     -303.962082        0.144103
BFGS:   37 20:17:12     -303.964944        0.167831
BFGS:   38 20:17:12     -303.966872        0.189569
BFGS:   39 20:17:13     -303.969364        0.171868
BFGS:   40 20:17:13     -303.971551        0.113479
BFGS:   41 20:17:13     -303.973461        0.091720
BFGS:   42 20:17:13     -303.974619        0.067340
BFGS:   43 20:17:13     -303.975270        0.054270
BFGS:   44 20:17:13     -303.975704        0.045116
      Step     Time          Energy          fmax
BFGS:    0 20:17:13     -302.065344        0.610182
BFGS:    1 20:17:13     -302.078177        0.598693
BFGS:    2 20:17:13     -302.160756        0.545133
BFGS:    3 20:17:14     -302.173514        0.525722
BFGS:    4 20:17:14     -302.234211        0.299802
BFGS:    5 20:17:14     -302.242983        0.267092
BFGS:    6 20:17:14     -302.249935        0.344586
BFGS:    7 20:17:14     -302.264205        0.410434
BFGS:    8 20:17:14     -302.287106        0.632131
BFGS:    9 20:17:14     -302.314589        0.682246
BFGS:   10 20:17:14     -302.343015        0.663757
BFGS:   11 20:17:14     -302.384688        0.717457
BFGS:   12 20:17:15     -302.457161        1.299089
BFGS:   13 20:17:15     -302.507305        2.304340
BFGS:   14 20:17:15     -302.929514        2.156102
BFGS:   15 20:17:15     -303.320545        1.977869
BFGS:   16 20:17:15     -303.606412        2.678138
BFGS:   17 20:17:15     -303.800139        2.795204
BFGS:   18 20:17:15     -304.073906        2.198898
BFGS:   19 20:17:15     -304.223731        1.352732
BFGS:   20 20:17:15     -304.291750        0.816096
BFGS:   21 20:17:15     -304.366793        1.019168
BFGS:   22 20:17:16     -304.412108        0.877213
BFGS:   23 20:17:16     -304.454166        0.537014
BFGS:   24 20:17:16     -304.478332        0.546227
BFGS:   25 20:17:16     -304.498167        0.407602
BFGS:   26 20:17:16     -304.508925        0.289424
BFGS:   27 20:17:16     -304.517811        0.236445
BFGS:   28 20:17:16     -304.524314        0.189475
BFGS:   29 20:17:16     -304.528636        0.103841
BFGS:   30 20:17:16     -304.530561        0.062382
BFGS:   31 20:17:17     -304.531419        0.062298
BFGS:   32 20:17:17     -304.531845        0.059378
BFGS:   33 20:17:17     -304.532158        0.050666
BFGS:   34 20:17:17     -304.532527        0.036857
      Step     Time          Energy          fmax
BFGS:    0 20:17:17     -302.108232        0.414261
BFGS:    1 20:17:17     -302.116881        0.439109
BFGS:    2 20:17:17     -302.157605        0.449158
BFGS:    3 20:17:17     -302.166474        0.355115
BFGS:    4 20:17:17     -302.176034        0.367253
BFGS:    5 20:17:18     -302.189274        0.304879
BFGS:    6 20:17:18     -302.200571        0.287220
BFGS:    7 20:17:18     -302.208106        0.228553
BFGS:    8 20:17:18     -302.213566        0.267390
BFGS:    9 20:17:18     -302.221909        0.327727
BFGS:   10 20:17:18     -302.234458        0.350637
BFGS:   11 20:17:18     -302.247233        0.330584
BFGS:   12 20:17:18     -302.260684        0.450684
BFGS:   13 20:17:18     -302.283552        0.694234
BFGS:   14 20:17:19     -302.331438        1.358104
BFGS:   15 20:17:19     -302.390838        2.077045
BFGS:   16 20:17:19     -302.466803        2.663118
BFGS:   17 20:17:19     -302.554057        3.000676
BFGS:   18 20:17:19     -302.668931        2.732591
BFGS:   19 20:17:19     -302.874249        2.202609
BFGS:   20 20:17:19     -303.265007        1.615915
BFGS:   21 20:17:19     -303.500506        1.582019
BFGS:   22 20:17:19     -303.675486        1.032579
BFGS:   23 20:17:20     -303.741383        0.864651
BFGS:   24 20:17:20     -303.790910        0.621981
BFGS:   25 20:17:20     -303.865256        0.436184
BFGS:   26 20:17:20     -303.900475        0.435432
BFGS:   27 20:17:20     -303.915980        0.407847
BFGS:   28 20:17:20     -303.925265        0.370420
BFGS:   29 20:17:20     -303.940363        0.299319
BFGS:   30 20:17:20     -303.958233        0.288713
BFGS:   31 20:17:20     -303.969614        0.159184
BFGS:   32 20:17:20     -303.972827        0.163826
BFGS:   33 20:17:21     -303.974795        0.141917
BFGS:   34 20:17:21     -303.975676        0.097988
BFGS:   35 20:17:21     -303.976191        0.051005
BFGS:   36 20:17:21     -303.976555        0.037836
      Step     Time          Energy          fmax
BFGS:    0 20:17:21     -302.149005        0.603877
BFGS:    1 20:17:21     -302.157435        0.609333
BFGS:    2 20:17:21     -302.231968        0.631930
BFGS:    3 20:17:21     -302.253911        0.772199
BFGS:    4 20:17:21     -302.286683        0.714978
BFGS:    5 20:17:22     -302.322776        0.551440
BFGS:    6 20:17:22     -302.346944        0.380277
BFGS:    7 20:17:22     -302.356150        0.239018
BFGS:    8 20:17:22     -302.360243        0.236291
BFGS:    9 20:17:22     -302.364221        0.218688
BFGS:   10 20:17:22     -302.369278        0.177342
BFGS:   11 20:17:22     -302.372712        0.132803
BFGS:   12 20:17:22     -302.374587        0.106098
BFGS:   13 20:17:22     -302.375319        0.097639
BFGS:   14 20:17:23     -302.376486        0.084669
BFGS:   15 20:17:23     -302.378193        0.083702
BFGS:   16 20:17:23     -302.379571        0.068481
BFGS:   17 20:17:23     -302.380241        0.054674
BFGS:   18 20:17:23     -302.380543        0.056868
BFGS:   19 20:17:23     -302.380758        0.058745
BFGS:   20 20:17:23     -302.381125        0.060617
BFGS:   21 20:17:23     -302.381796        0.062284
BFGS:   22 20:17:23     -302.382677        0.060945
BFGS:   23 20:17:23     -302.383335        0.053584
BFGS:   24 20:17:24     -302.383666        0.052356
BFGS:   25 20:17:24     -302.383965        0.053113
BFGS:   26 20:17:24     -302.384663        0.063012
BFGS:   27 20:17:24     -302.385879        0.075993
BFGS:   28 20:17:24     -302.387491        0.125350
BFGS:   29 20:17:24     -302.389024        0.151725
BFGS:   30 20:17:24     -302.390537        0.131609
BFGS:   31 20:17:24     -302.392268        0.167525
BFGS:   32 20:17:24     -302.397006        0.323779
BFGS:   33 20:17:25     -302.402513        1.008532
BFGS:   34 20:17:25     -302.410816        1.656259
BFGS:   35 20:17:25     -302.453594        1.776905
BFGS:   36 20:17:25     -302.500212        2.422186
BFGS:   37 20:17:25     -302.536759        2.974607
BFGS:   38 20:17:25     -302.548415        3.155019
BFGS:   39 20:17:25     -302.564754        3.173887
BFGS:   40 20:17:25     -302.587501        3.170181
BFGS:   41 20:17:25     -302.599196        3.176553
BFGS:   42 20:17:26     -302.610058        3.184384
BFGS:   43 20:17:26     -302.641448        3.081365
BFGS:   44 20:17:26     -302.651073        2.370405
BFGS:   45 20:17:26     -302.692132        2.880399
BFGS:   46 20:17:26     -302.750662        2.925968
BFGS:   47 20:17:26     -302.855960        2.731913
BFGS:   48 20:17:26     -302.938692        2.383197
BFGS:   49 20:17:26     -303.002912        2.204005
BFGS:   50 20:17:26     -303.057383        2.143714
BFGS:   51 20:17:26     -303.127100        1.819453
BFGS:   52 20:17:27     -303.241242        2.175235
BFGS:   53 20:17:27     -303.334910        1.542925
BFGS:   54 20:17:27     -303.366595        1.675707
BFGS:   55 20:17:27     -303.401824        1.933445
BFGS:   56 20:17:27     -303.422710        1.839647
BFGS:   57 20:17:27     -303.451840        1.658993
BFGS:   58 20:17:27     -303.469363        1.572774
BFGS:   59 20:17:27     -303.482745        1.531567
BFGS:   60 20:17:27     -303.492595        1.537810
BFGS:   61 20:17:28     -303.526357        1.621892
BFGS:   62 20:17:28     -303.558202        1.858160
BFGS:   63 20:17:28     -303.700343        1.905041
BFGS:   64 20:17:28     -303.804755        2.180331
BFGS:   65 20:17:28     -303.905055        2.269834
BFGS:   66 20:17:28     -303.992988        2.062442
BFGS:   67 20:17:28     -304.073716        1.689832
BFGS:   68 20:17:28     -304.116504        1.598367
BFGS:   69 20:17:28     -304.180933        1.383627
BFGS:   70 20:17:28     -304.262292        1.367271
BFGS:   71 20:17:29     -304.285629        1.441451
BFGS:   72 20:17:29     -304.298490        1.464399
BFGS:   73 20:17:29     -304.317590        1.445553
BFGS:   74 20:17:29     -304.324504        1.358360
BFGS:   75 20:17:29     -304.330484        1.254158
BFGS:   76 20:17:29     -304.333197        1.206574
BFGS:   77 20:17:29     -304.337215        1.213087
BFGS:   78 20:17:29     -304.340158        1.235802
BFGS:   79 20:17:29     -304.342851        1.294463
BFGS:   80 20:17:30     -304.343935        1.312408
BFGS:   81 20:17:30     -304.345164        1.303772
BFGS:   82 20:17:30     -304.346020        1.296524
BFGS:   83 20:17:30     -304.346904        1.279746
BFGS:   84 20:17:30     -304.347710        1.287712
BFGS:   85 20:17:30     -304.348393        1.301246
BFGS:   86 20:17:30     -304.349036        1.319283
BFGS:   87 20:17:30     -304.349916        1.333478
BFGS:   88 20:17:30     -304.350927        1.332329
BFGS:   89 20:17:31     -304.351868        1.311092
BFGS:   90 20:17:31     -304.352802        1.278760
BFGS:   91 20:17:31     -304.354216        1.237342
BFGS:   92 20:17:31     -304.356986        1.180260
BFGS:   93 20:17:31     -304.362294        1.110377
BFGS:   94 20:17:31     -304.370795        1.042178
BFGS:   95 20:17:31     -304.381381        0.996703
BFGS:   96 20:17:31     -304.393361        0.976030
BFGS:   97 20:17:31     -304.409672        0.958183
BFGS:   98 20:17:31     -304.434234        0.904466
BFGS:   99 20:17:32     -304.468188        0.761123
BFGS:  100 20:17:32     -304.500972        0.476887
BFGS:  101 20:17:32     -304.517363        0.210367
BFGS:  102 20:17:32     -304.523354        0.168499
BFGS:  103 20:17:32     -304.526244        0.124203
BFGS:  104 20:17:32     -304.527949        0.090738
BFGS:  105 20:17:32     -304.529325        0.059518
BFGS:  106 20:17:32     -304.530742        0.050357
BFGS:  107 20:17:32     -304.531839        0.036737
/home/runner/work/fairchem/fairchem/src/fairchem/applications/cattsunami/core/autoframe.py:1551: UserWarning: torch.range is deprecated and will be removed in a future release because its behavior is inconsistent with Python's range builtin. Instead, use torch.arange, which produces values in [start, end).
  alpha = torch.range(0, num_frames - 1, device=device) / (num_frames - 1)

Run NEBs#

## This will run all NEBs enumerated - to just run one, run the code cell below.
# On GPU, each NEB takes an average of ~1 minute so this could take around a half hour on GPU
# But much longer on CPU
# Remember that not all NEBs will converge -- the k, nframes would be adjusted to achieve convergence

fmax = 0.05  # [eV / ang**2]
delta_fmax_climb = 0.4
converged_idxs = []

for idx, frame_set in enumerate(frame_sets):
    neb = DyNEB(frame_set, k=1)
    for image in frame_set:
        image.calc = FAIRChemCalculator(predictor, task_name="oc20")

    optimizer = BFGS(
        neb,
        trajectory=f"ch_dissoc_on_Ru_{idx}.traj",
    )
    conv = optimizer.run(fmax=fmax + delta_fmax_climb, steps=optimization_steps)
    if conv:
        neb.climb = True
        conv = optimizer.run(fmax=fmax, steps=optimization_steps)
        if conv:
            converged_idxs.append(idx)

print(converged_idxs)

This cell will run a shorter calculations for just a single one of the enumerated transition state pathways. You can adapt this code to run transition state searches via nudged elastic band (NEB) calculations for any reaction.

# If you run the above cell -- dont run this one
fmax = 0.05  # [eV / ang**2]
delta_fmax_climb = 0.4
images = frame_sets[0]
neb = DyNEB(images, k=1)
for image in images:
    image.calc = FAIRChemCalculator(predictor, task_name="oc20")

optimizer = BFGS(
    neb,
    trajectory="ch_dissoc_on_Ru_0.traj",
)
conv = optimizer.run(fmax=fmax + delta_fmax_climb, steps=optimization_steps)
if conv:
    neb.climb = True
    conv = optimizer.run(fmax=fmax, steps=optimization_steps)
      Step     Time          Energy          fmax
BFGS:    0 20:18:03     -302.748458        3.612144
BFGS:    1 20:18:04     -302.948859        3.020113
BFGS:    2 20:18:04     -303.458145        7.594482
BFGS:    3 20:18:05     -303.479264        1.818036
BFGS:    4 20:18:06     -303.598372        1.482387
BFGS:    5 20:18:07     -303.711371        0.842066
BFGS:    6 20:18:08     -303.739310        0.669982
BFGS:    7 20:18:09     -303.783549        0.724097
BFGS:    8 20:18:10     -303.795106        0.640758
BFGS:    9 20:18:11     -303.812801        0.445959
BFGS:   10 20:18:12     -303.816942        0.461787
BFGS:   11 20:18:13     -303.819765        0.427347
BFGS:   12 20:18:14     -303.820189        0.390599
BFGS:   13 20:18:15     -303.818451        0.412102
BFGS:   14 20:18:16     -303.815057        0.347879
BFGS:   15 20:18:17     -303.811165        0.343512
BFGS:   16 20:18:18     -303.808688        0.456690
BFGS:   17 20:18:18     -303.808719        0.558568
BFGS:   18 20:18:19     -303.810052        0.614592
BFGS:   19 20:18:20     -303.813252        0.624851
BFGS:   20 20:18:21     -303.819433        0.747668
BFGS:   21 20:18:22     -303.827188        0.927105
BFGS:   22 20:18:23     -303.834046        0.686926
BFGS:   23 20:18:24     -303.836215        0.472624
BFGS:   24 20:18:25     -303.835217        0.521373
BFGS:   25 20:18:26     -303.834039        0.397918
BFGS:   26 20:18:27     -303.832250        0.373378
BFGS:   27 20:18:28     -303.828535        0.414300
BFGS:   28 20:18:29     -303.825130        0.299345
BFGS:   29 20:18:30     -303.823921        0.316555

Visualize the results#

Finally, let’s visualize the results!

optimized_neb = read("ch_dissoc_on_Ru_0.traj", ":")[-1 * nframes :]
es = []
for frame in optimized_neb:
    frame.set_calculator(calc)
    es.append(frame.get_potential_energy())
/tmp/ipykernel_10361/3247994494.py:3: FutureWarning: Please use atoms.calc = calc
  frame.set_calculator(calc)
# Plot the reaction coordinate

es = [e - es[0] for e in es]
plt.plot(es)
plt.xlabel("frame number")
plt.ylabel("relative energy [eV]")
plt.title(f"CH dissociation on Ru(0001), Ea = {max(es):1.2f} eV")
plt.savefig("CH_dissoc_on_Ru_0001.png")
../../_images/a91cb6ba35748836442560cf515a0918b1c9e7c4f6f7a483f6dde52aae031b07.png

To generalize an interactive visualization, use ase gui from the command line or the X3D package

# Make an interative html file of the optimized neb trajectory
x3d = X3D(optimized_neb)
x3d.write("optimized_neb_ch_disoc_on_Ru0001.html")