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,
)
# 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-1p1")
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 23:42:25     -301.218602        4.072875
BFGS:    1 23:42:25     -301.598946        3.067116
BFGS:    2 23:42:25     -302.603593        3.553070
BFGS:    3 23:42:25     -302.729223        3.542751
BFGS:    4 23:42:25     -303.018620        1.959132
BFGS:    5 23:42:26     -303.081086        2.261626
BFGS:    6 23:42:26     -303.132674        0.698325
BFGS:    7 23:42:26     -303.162770        0.637192
BFGS:    8 23:42:26     -303.310237        1.171801
BFGS:    9 23:42:26     -303.344480        0.851303
BFGS:   10 23:42:26     -303.471078        1.585430
BFGS:   11 23:42:26     -303.579016        2.407776
BFGS:   12 23:42:26     -303.715376        2.884932
BFGS:   13 23:42:26     -303.920791        2.396074
BFGS:   14 23:42:26     -304.188480        2.184216
BFGS:   15 23:42:26     -304.304378        1.472518
BFGS:   16 23:42:27     -304.435275        1.047637
BFGS:   17 23:42:27     -304.544121        1.044754
BFGS:   18 23:42:27     -304.573968        1.176581
BFGS:   19 23:42:27     -304.608696        0.767972
BFGS:   20 23:42:27     -304.637888        0.290422
      Step     Time          Energy          fmax
BFGS:    0 23:42:27     -301.892730        4.081153
BFGS:    1 23:42:27     -302.267837        3.077095
BFGS:    2 23:42:27     -303.201829        3.356044
BFGS:    3 23:42:27     -303.384428        3.165888
BFGS:    4 23:42:27     -303.702986        2.083772
BFGS:    5 23:42:27     -303.901500        3.191561
BFGS:    6 23:42:27     -304.020864        1.886450
BFGS:    7 23:42:28     -304.199093        0.892615
BFGS:    8 23:42:28     -304.234451        0.862622
BFGS:    9 23:42:28     -304.273309        0.722049
BFGS:   10 23:42:28     -304.307241        0.578814
BFGS:   11 23:42:28     -304.320977        0.399727
BFGS:   12 23:42:28     -304.329276        0.264036
BFGS:   13 23:42:28     -304.332706        0.188853
BFGS:   14 23:42:28     -304.335060        0.170655
BFGS:   15 23:42:28     -304.339032        0.233045
BFGS:   16 23:42:28     -304.342339        0.208986
BFGS:   17 23:42:28     -304.344463        0.142626
BFGS:   18 23:42:29     -304.345924        0.111993
BFGS:   19 23:42:29     -304.347876        0.149594
BFGS:   20 23:42:29     -304.350748        0.194874
      Step     Time          Energy          fmax
BFGS:    0 23:42:29     -301.202146        4.091969
BFGS:    1 23:42:29     -301.578785        3.302048
BFGS:    2 23:42:29     -302.575098        3.375863
BFGS:    3 23:42:29     -302.660846        4.106548
BFGS:    4 23:42:29     -302.920911        2.375312
BFGS:    5 23:42:29     -303.054032        2.395200
BFGS:    6 23:42:29     -303.100820        0.863112
BFGS:    7 23:42:29     -303.153244        0.943935
BFGS:    8 23:42:29     -303.271390        1.566464
BFGS:    9 23:42:30     -303.329725        1.458027
BFGS:   10 23:42:30     -303.423228        1.080311
BFGS:   11 23:42:30     -303.524216        1.864293
BFGS:   12 23:42:30     -303.661201        2.656274
BFGS:   13 23:42:30     -303.777265        2.621196
BFGS:   14 23:42:30     -303.943646        2.643876
BFGS:   15 23:42:30     -304.062702        1.400088
BFGS:   16 23:42:30     -304.102168        1.110287
BFGS:   17 23:42:30     -304.256720        1.002121
BFGS:   18 23:42:30     -304.291361        1.144247
BFGS:   19 23:42:30     -304.350624        1.364320
BFGS:   20 23:42:31     -304.435034        1.163195
      Step     Time          Energy          fmax
BFGS:    0 23:42:31     -301.728262        4.203516
BFGS:    1 23:42:31     -302.116575        3.385335
BFGS:    2 23:42:31     -303.085816        3.218547
BFGS:    3 23:42:31     -303.234706        3.412227
BFGS:    4 23:42:31     -303.503460        2.294849
BFGS:    5 23:42:31     -303.734922        3.301649
BFGS:    6 23:42:31     -303.835570        1.403097
BFGS:    7 23:42:31     -303.930574        0.672213
BFGS:    8 23:42:31     -303.986297        0.977115
BFGS:    9 23:42:31     -304.020483        0.879002
BFGS:   10 23:42:31     -304.092237        0.883073
BFGS:   11 23:42:32     -304.130367        0.795474
BFGS:   12 23:42:32     -304.166801        0.482805
BFGS:   13 23:42:32     -304.176764        0.313546
BFGS:   14 23:42:32     -304.187364        0.465537
BFGS:   15 23:42:32     -304.206504        0.753654
BFGS:   16 23:42:32     -304.224929        0.796216
BFGS:   17 23:42:32     -304.242609        0.681606
BFGS:   18 23:42:32     -304.290126        0.928924
BFGS:   19 23:42:32     -304.337461        1.313507
BFGS:   20 23:42:32     -304.414619        1.353819
      Step     Time          Energy          fmax
BFGS:    0 23:42:32     -301.224889        4.070362
BFGS:    1 23:42:32     -301.604853        3.091850
BFGS:    2 23:42:33     -302.612173        3.533300
BFGS:    3 23:42:33     -302.732182        3.658338
BFGS:    4 23:42:33     -303.013438        2.083190
BFGS:    5 23:42:33     -303.079821        2.491456
BFGS:    6 23:42:33     -303.139848        0.730829
BFGS:    7 23:42:33     -303.168499        0.665779
BFGS:    8 23:42:33     -303.346260        0.987419
BFGS:    9 23:42:33     -303.382321        0.808336
BFGS:   10 23:42:33     -303.548717        1.697594
BFGS:   11 23:42:33     -303.696892        2.637015
BFGS:   12 23:42:33     -303.831984        3.157573
BFGS:   13 23:42:34     -303.986318        2.933809
BFGS:   14 23:42:34     -304.282634        1.867459
BFGS:   15 23:42:34     -304.404878        1.435623
BFGS:   16 23:42:34     -304.477604        1.228158
BFGS:   17 23:42:34     -304.541645        0.866533
BFGS:   18 23:42:34     -304.594385        0.618030
BFGS:   19 23:42:34     -304.621846        0.586278
BFGS:   20 23:42:34     -304.636989        0.450261
      Step     Time          Energy          fmax
BFGS:    0 23:42:34     -301.056231        3.954801
BFGS:    1 23:42:34     -301.450618        3.141003
BFGS:    2 23:42:34     -302.599825        3.605341
BFGS:    3 23:42:34     -302.635217        5.679826
BFGS:    4 23:42:35     -302.964684        2.558391
BFGS:    5 23:42:35     -303.108191        1.514581
BFGS:    6 23:42:35     -303.130718        0.788687
BFGS:    7 23:42:35     -303.162457        1.012164
BFGS:    8 23:42:35     -303.185495        1.111552
BFGS:    9 23:42:35     -303.232962        0.690317
BFGS:   10 23:42:35     -303.244763        0.410085
BFGS:   11 23:42:35     -303.269574        0.782456
BFGS:   12 23:42:35     -303.297440        1.189592
BFGS:   13 23:42:35     -303.340392        1.513124
BFGS:   14 23:42:35     -303.392742        1.725968
BFGS:   15 23:42:36     -303.490159        2.124234
BFGS:   16 23:42:36     -303.614786        2.414666
BFGS:   17 23:42:36     -303.867083        2.499353
BFGS:   18 23:42:36     -304.013116        3.342257
BFGS:   19 23:42:36     -304.045976        1.621402
BFGS:   20 23:42:36     -304.275436        0.829839
      Step     Time          Energy          fmax
BFGS:    0 23:42:36     -302.656431        3.945074
BFGS:    1 23:42:36     -303.005956        2.769708
BFGS:    2 23:42:36     -303.797163        3.165296
BFGS:    3 23:42:36     -303.951818        2.744782
BFGS:    4 23:42:36     -304.241334        2.338553
BFGS:    5 23:42:36     -304.316083        1.093649
BFGS:    6 23:42:37     -304.478121        0.954777
BFGS:    7 23:42:37     -304.577375        1.115849
BFGS:    8 23:42:37     -304.612907        0.765368
BFGS:    9 23:42:37     -304.655756        0.648425
BFGS:   10 23:42:37     -304.671403        0.469195
BFGS:   11 23:42:37     -304.681404        0.151719
BFGS:   12 23:42:37     -304.683270        0.098717
BFGS:   13 23:42:37     -304.684060        0.124042
BFGS:   14 23:42:37     -304.685276        0.133853
BFGS:   15 23:42:37     -304.686571        0.100163
BFGS:   16 23:42:37     -304.687478        0.073852
BFGS:   17 23:42:38     -304.688003        0.076492
BFGS:   18 23:42:38     -304.688467        0.072503
BFGS:   19 23:42:38     -304.689191        0.095183
BFGS:   20 23:42:38     -304.690179        0.093976
      Step     Time          Energy          fmax
BFGS:    0 23:42:38     -301.859289        4.117007
BFGS:    1 23:42:38     -302.238612        3.181510
BFGS:    2 23:42:38     -303.158324        3.289397
BFGS:    3 23:42:38     -303.314709        3.075136
BFGS:    4 23:42:38     -303.619458        2.056125
BFGS:    5 23:42:38     -303.750446        2.749708
BFGS:    6 23:42:39     -303.841946        1.801770
BFGS:    7 23:42:39     -303.986647        1.139092
BFGS:    8 23:42:39     -304.016520        0.676016
BFGS:    9 23:42:39     -304.066287        0.651123
BFGS:   10 23:42:39     -304.131838        0.425185
BFGS:   11 23:42:39     -304.154236        0.380441
BFGS:   12 23:42:39     -304.169061        0.345598
BFGS:   13 23:42:39     -304.179911        0.380299
BFGS:   14 23:42:39     -304.200359        0.464959
BFGS:   15 23:42:39     -304.214937        0.446569
BFGS:   16 23:42:39     -304.224647        0.343117
BFGS:   17 23:42:40     -304.236283        0.445074
BFGS:   18 23:42:40     -304.251849        0.573243
BFGS:   19 23:42:40     -304.269749        0.531286
BFGS:   20 23:42:40     -304.283517        0.284372
      Step     Time          Energy          fmax
BFGS:    0 23:42:40     -301.648955        4.103815
BFGS:    1 23:42:40     -302.023981        2.999761
BFGS:    2 23:42:40     -302.962035        3.476310
BFGS:    3 23:42:40     -303.134155        3.288029
BFGS:    4 23:42:40     -303.480993        2.101431
BFGS:    5 23:42:40     -303.646139        3.598449
BFGS:    6 23:42:40     -303.781026        2.181305
BFGS:    7 23:42:40     -304.013057        1.196772
BFGS:    8 23:42:41     -304.056903        0.933297
BFGS:    9 23:42:41     -304.126594        0.709532
BFGS:   10 23:42:41     -304.214653        1.395266
BFGS:   11 23:42:41     -304.283793        1.486428
BFGS:   12 23:42:41     -304.349740        1.027334
BFGS:   13 23:42:41     -304.386393        1.047101
BFGS:   14 23:42:41     -304.460852        1.742771
BFGS:   15 23:42:41     -304.509005        1.842263
BFGS:   16 23:42:41     -304.553760        1.133422
BFGS:   17 23:42:41     -304.589161        0.385057
BFGS:   18 23:42:41     -304.602433        0.403684
BFGS:   19 23:42:42     -304.621130        0.503127
BFGS:   20 23:42:42     -304.636310        0.475961
      Step     Time          Energy          fmax
BFGS:    0 23:42:42     -302.419303        3.920925
BFGS:    1 23:42:42     -302.794280        2.994180
BFGS:    2 23:42:42     -303.677209        3.050645
BFGS:    3 23:42:42     -303.835652        2.594908
BFGS:    4 23:42:42     -304.074888        1.631832
BFGS:    5 23:42:42     -304.130327        1.006255
BFGS:    6 23:42:42     -304.262522        0.815075
BFGS:    7 23:42:42     -304.297518        0.803544
BFGS:    8 23:42:42     -304.318836        0.522478
BFGS:    9 23:42:42     -304.335364        0.401604
BFGS:   10 23:42:43     -304.344622        0.260635
BFGS:   11 23:42:43     -304.351201        0.182627
BFGS:   12 23:42:43     -304.353112        0.088457
BFGS:   13 23:42:43     -304.353730        0.073940
BFGS:   14 23:42:43     -304.354803        0.088748
BFGS:   15 23:42:43     -304.355499        0.082166
BFGS:   16 23:42:43     -304.355828        0.046658
# 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 23:42:43     -297.051392        4.649295
BFGS:    1 23:42:43     -297.527109        4.823910
BFGS:    2 23:42:43     -298.802914        3.928541
BFGS:    3 23:42:43     -299.252405        3.855203
BFGS:    4 23:42:44     -299.431241        1.833967
BFGS:    5 23:42:44     -299.734693        1.746943
BFGS:    6 23:42:44     -299.903819        1.504643
BFGS:    7 23:42:44     -299.958519        1.096508
BFGS:    8 23:42:44     -300.031245        1.134992
BFGS:    9 23:42:44     -300.275911        1.581359
BFGS:   10 23:42:44     -300.345972        2.041285
BFGS:   11 23:42:44     -300.431318        1.205227
BFGS:   12 23:42:44     -300.508777        0.898856
BFGS:   13 23:42:44     -300.535316        0.762111
BFGS:   14 23:42:44     -300.569161        0.645839
BFGS:   15 23:42:44     -300.587476        0.555388
BFGS:   16 23:42:45     -300.598543        0.400037
BFGS:   17 23:42:45     -300.607879        0.251834
BFGS:   18 23:42:45     -300.614288        0.242005
BFGS:   19 23:42:45     -300.618743        0.172741
BFGS:   20 23:42:45     -300.621073        0.100512
      Step     Time          Energy          fmax
BFGS:    0 23:42:45     -296.376622        4.407511
BFGS:    1 23:42:45     -296.850760        4.666067
BFGS:    2 23:42:45     -298.287250        3.411068
BFGS:    3 23:42:45     -297.924772        9.548877
BFGS:    4 23:42:45     -298.566692        1.930287
BFGS:    5 23:42:45     -298.642942        1.266069
BFGS:    6 23:42:46     -298.735419        1.719889
BFGS:    7 23:42:46     -298.814059        2.016985
BFGS:    8 23:42:46     -299.065690        2.161759
BFGS:    9 23:42:46     -299.255404        2.072063
BFGS:   10 23:42:46     -299.331963        1.857246
BFGS:   11 23:42:46     -299.465996        1.657496
BFGS:   12 23:42:46     -300.164694        1.257277
BFGS:   13 23:42:46     -300.267417        1.665024
BFGS:   14 23:42:46     -300.340862        1.441732
BFGS:   15 23:42:46     -300.448699        0.880820
BFGS:   16 23:42:46     -300.517755        0.612850
BFGS:   17 23:42:46     -300.549304        0.551499
BFGS:   18 23:42:47     -300.566383        0.472478
BFGS:   19 23:42:47     -300.588168        0.290176
BFGS:   20 23:42:47     -300.600300        0.248706
      Step     Time          Energy          fmax
BFGS:    0 23:42:47     -296.763611        4.485944
BFGS:    1 23:42:47     -297.232233        4.664285
BFGS:    2 23:42:47     -298.549985        3.559280
BFGS:    3 23:42:47     -298.609181        6.516034
BFGS:    4 23:42:47     -298.941220        1.960934
BFGS:    5 23:42:47     -299.044689        1.733061
BFGS:    6 23:42:47     -299.420865        1.948717
BFGS:    7 23:42:47     -299.659733        1.836429
BFGS:    8 23:42:48     -299.732799        1.218170
BFGS:    9 23:42:48     -299.842308        0.744156
BFGS:   10 23:42:48     -299.893781        0.880323
BFGS:   11 23:42:48     -299.933352        0.836692
BFGS:   12 23:42:48     -299.967141        0.556880
BFGS:   13 23:42:48     -299.983405        0.412423
BFGS:   14 23:42:48     -299.995787        0.446829
BFGS:   15 23:42:48     -300.009127        0.505083
BFGS:   16 23:42:48     -300.022557        0.437164
BFGS:   17 23:42:48     -300.030051        0.310570
BFGS:   18 23:42:48     -300.037006        0.306874
BFGS:   19 23:42:48     -300.048168        0.446807
BFGS:   20 23:42:49     -300.059706        0.439730
      Step     Time          Energy          fmax
BFGS:    0 23:42:49     -296.109454        4.367826
BFGS:    1 23:42:49     -296.616668        4.702653
BFGS:    2 23:42:49     -298.209002        3.164469
BFGS:    3 23:42:49     -297.176298       14.141911
BFGS:    4 23:42:49     -298.409476        1.883514
BFGS:    5 23:42:49     -298.474233        1.052578
BFGS:    6 23:42:49     -298.512488        0.767477
BFGS:    7 23:42:49     -298.519893        0.553110
BFGS:    8 23:42:49     -298.540565        0.436218
BFGS:    9 23:42:49     -298.546883        0.518880
BFGS:   10 23:42:50     -298.557841        0.623106
BFGS:   11 23:42:50     -298.585450        0.858701
BFGS:   12 23:42:50     -298.658023        1.597425
BFGS:   13 23:42:50     -298.697231        2.533339
BFGS:   14 23:42:50     -298.797835        1.680214
BFGS:   15 23:42:50     -298.978644        1.871571
BFGS:   16 23:42:50     -299.519205        1.927974
BFGS:   17 23:42:50     -299.773017        1.177814
BFGS:   18 23:42:50     -299.806915        0.687498
BFGS:   19 23:42:50     -299.857629        0.605727
BFGS:   20 23:42:50     -299.903063        0.610470
      Step     Time          Energy          fmax
BFGS:    0 23:42:50     -295.948389        4.352155
BFGS:    1 23:42:51     -296.491795        4.748019
BFGS:    2 23:42:51     -298.215402        2.962481
BFGS:    3 23:42:51     -296.553886       18.618919
BFGS:    4 23:42:51     -298.379446        1.840613
BFGS:    5 23:42:51     -298.440335        1.041785
BFGS:    6 23:42:51     -298.475401        0.527524
BFGS:    7 23:42:51     -298.479189        0.224241
BFGS:    8 23:42:51     -298.482897        0.083306
BFGS:    9 23:42:51     -298.484605        0.093226
BFGS:   10 23:42:51     -298.484987        0.053593
BFGS:   11 23:42:51     -298.485049        0.029385
      Step     Time          Energy          fmax
BFGS:    0 23:42:52     -296.815516        4.495821
BFGS:    1 23:42:52     -297.284765        4.669668
BFGS:    2 23:42:52     -298.593820        3.601915
BFGS:    3 23:42:52     -298.719558        6.060372
BFGS:    4 23:42:52     -299.015209        1.960227
BFGS:    5 23:42:52     -299.127882        1.800918
BFGS:    6 23:42:52     -299.533851        1.649140
BFGS:    7 23:42:52     -299.697718        1.474831
BFGS:    8 23:42:52     -299.757183        0.962914
BFGS:    9 23:42:52     -299.832562        0.699194
BFGS:   10 23:42:52     -299.879467        0.796419
BFGS:   11 23:42:52     -299.912406        0.787978
BFGS:   12 23:42:53     -299.942407        0.518319
BFGS:   13 23:42:53     -299.956935        0.396767
BFGS:   14 23:42:53     -299.965534        0.426271
BFGS:   15 23:42:53     -299.979320        0.503520
BFGS:   16 23:42:53     -299.992286        0.475640
BFGS:   17 23:42:53     -300.000664        0.367494
BFGS:   18 23:42:53     -300.010307        0.315388
BFGS:   19 23:42:53     -300.025820        0.562269
BFGS:   20 23:42:53     -300.043495        0.655283
      Step     Time          Energy          fmax
BFGS:    0 23:42:53     -296.472276        4.428548
BFGS:    1 23:42:53     -296.941190        4.668913
BFGS:    2 23:42:54     -298.339755        3.503766
BFGS:    3 23:42:54     -298.158868        8.318538
BFGS:    4 23:42:54     -298.659956        1.956801
BFGS:    5 23:42:54     -298.744209        1.435761
BFGS:    6 23:42:54     -298.913632        2.315400
BFGS:    7 23:42:54     -299.157798        2.921925
BFGS:    8 23:42:54     -299.404144        2.615220
BFGS:    9 23:42:54     -299.460154        1.845905
BFGS:   10 23:42:54     -299.580647        1.789449
BFGS:   11 23:42:54     -299.752309        1.542356
BFGS:   12 23:42:54     -300.046839        1.506786
BFGS:   13 23:42:54     -300.203392        1.343938
BFGS:   14 23:42:55     -300.278239        1.503580
BFGS:   15 23:42:55     -300.364722        1.499307
BFGS:   16 23:42:55     -300.479840        1.260573
BFGS:   17 23:42:55     -300.521953        0.865716
BFGS:   18 23:42:55     -300.549999        0.578415
BFGS:   19 23:42:55     -300.581315        0.350046
BFGS:   20 23:42:55     -300.589350        0.392900
      Step     Time          Energy          fmax
BFGS:    0 23:42:55     -297.116163        4.581182
BFGS:    1 23:42:55     -297.598392        4.728312
BFGS:    2 23:42:55     -298.898316        3.585668
BFGS:    3 23:42:55     -299.088905        5.241702
BFGS:    4 23:42:56     -299.340592        1.748593
BFGS:    5 23:42:56     -299.442206        1.522501
BFGS:    6 23:42:56     -299.573804        2.295562
BFGS:    7 23:42:56     -299.638160        0.893895
BFGS:    8 23:42:56     -299.656227        0.857100
BFGS:    9 23:42:56     -299.718485        0.901086
BFGS:   10 23:42:56     -299.763760        0.966454
BFGS:   11 23:42:56     -299.825243        0.853058
BFGS:   12 23:42:56     -299.856986        0.772406
BFGS:   13 23:42:56     -299.884969        0.853859
BFGS:   14 23:42:56     -299.907653        0.812232
BFGS:   15 23:42:56     -299.942278        0.417349
BFGS:   16 23:42:57     -299.953444        0.368853
BFGS:   17 23:42:57     -299.960798        0.396079
BFGS:   18 23:42:57     -299.973960        0.483839
BFGS:   19 23:42:57     -299.990786        0.642648
BFGS:   20 23:42:57     -300.005295        0.549151
      Step     Time          Energy          fmax
BFGS:    0 23:42:57     -296.176548        4.381583
BFGS:    1 23:42:57     -296.675173        4.696630
BFGS:    2 23:42:57     -298.223611        3.219693
BFGS:    3 23:42:57     -297.368229       12.900797
BFGS:    4 23:42:57     -298.437784        1.886406
BFGS:    5 23:42:57     -298.503763        1.069928
BFGS:    6 23:42:58     -298.546338        0.898061
BFGS:    7 23:42:58     -298.557710        0.735585
BFGS:    8 23:42:58     -298.604534        0.682940
BFGS:    9 23:42:58     -298.616935        0.791756
BFGS:   10 23:42:58     -298.700385        1.529373
BFGS:   11 23:42:58     -298.790647        2.341832
BFGS:   12 23:42:58     -298.880654        2.897234
BFGS:   13 23:42:58     -298.960257        3.377974
BFGS:   14 23:42:58     -299.103303        3.412437
BFGS:   15 23:42:58     -299.674054        2.440351
BFGS:   16 23:42:58     -299.771242        1.485083
BFGS:   17 23:42:58     -299.872202        1.081321
BFGS:   18 23:42:59     -299.941627        1.091072
BFGS:   19 23:42:59     -299.979872        0.776382
BFGS:   20 23:42:59     -300.009360        0.545054
      Step     Time          Energy          fmax
BFGS:    0 23:42:59     -296.184841        4.384152
BFGS:    1 23:42:59     -296.681687        4.695418
BFGS:    2 23:42:59     -298.223723        3.244259
BFGS:    3 23:42:59     -297.416852       12.599189
BFGS:    4 23:42:59     -298.444021        1.895965
BFGS:    5 23:42:59     -298.511078        1.082151
BFGS:    6 23:42:59     -298.555638        0.956925
BFGS:    7 23:42:59     -298.569020        0.820619
BFGS:    8 23:43:00     -298.637581        0.930059
BFGS:    9 23:43:00     -298.659270        1.065137
BFGS:   10 23:43:00     -298.763667        1.982387
BFGS:   11 23:43:00     -298.822486        2.675167
BFGS:   12 23:43:00     -298.910866        2.289608
BFGS:   13 23:43:00     -299.182235        1.898105
BFGS:   14 23:43:00     -299.325723        1.889610
BFGS:   15 23:43:00     -299.435406        3.725263
BFGS:   16 23:43:00     -299.641822        2.092237
BFGS:   17 23:43:00     -299.858365        0.755230
BFGS:   18 23:43:00     -299.899786        0.748293
BFGS:   19 23:43:00     -299.929100        0.735730
BFGS:   20 23:43:01     -299.975419        0.744269
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 23:43:01     -295.286197        1.327034
BFGS:    1 23:43:01     -295.367071        1.207815
BFGS:    2 23:43:01     -295.570693        1.552093
BFGS:    3 23:43:01     -295.614762        0.554446
BFGS:    4 23:43:01     -295.625102        0.522633
BFGS:    5 23:43:01     -295.656469        0.391138
BFGS:    6 23:43:01     -295.661521        0.407437
BFGS:    7 23:43:01     -295.684809        0.498424
BFGS:    8 23:43:01     -295.699993        0.574636
BFGS:    9 23:43:01     -295.725293        0.624787
BFGS:   10 23:43:02     -295.746004        0.867440
BFGS:   11 23:43:02     -295.778990        1.039930
BFGS:   12 23:43:02     -295.814036        0.954649
BFGS:   13 23:43:02     -295.869888        0.558073
BFGS:   14 23:43:02     -295.884440        0.336633
BFGS:   15 23:43:02     -295.896614        0.439663
BFGS:   16 23:43:02     -295.902435        0.420222
BFGS:   17 23:43:02     -295.913666        0.362500
BFGS:   18 23:43:02     -295.921105        0.257826
BFGS:   19 23:43:02     -295.926543        0.132030
BFGS:   20 23:43:02     -295.928986        0.117959
      Step     Time          Energy          fmax
BFGS:    0 23:43:02     -295.221471        1.441379
BFGS:    1 23:43:03     -295.312445        1.307146
BFGS:    2 23:43:03     -295.509153        1.909308
BFGS:    3 23:43:03     -295.571901        0.516060
BFGS:    4 23:43:03     -295.583834        0.560852
BFGS:    5 23:43:03     -295.609468        0.394059
BFGS:    6 23:43:03     -295.616661        0.288170
BFGS:    7 23:43:03     -295.622769        0.340869
BFGS:    8 23:43:03     -295.629933        0.354331
BFGS:    9 23:43:03     -295.638139        0.368730
BFGS:   10 23:43:03     -295.645440        0.290546
BFGS:   11 23:43:03     -295.650501        0.397749
BFGS:   12 23:43:04     -295.658346        0.589636
BFGS:   13 23:43:04     -295.697107        1.162775
BFGS:   14 23:43:04     -295.711647        1.363788
BFGS:   15 23:43:04     -295.722367        1.282961
BFGS:   16 23:43:04     -295.729773        1.266808
BFGS:   17 23:43:04     -295.745960        1.126552
BFGS:   18 23:43:04     -295.763479        1.022982
BFGS:   19 23:43:04     -295.818153        0.467561
BFGS:   20 23:43:04     -295.828184        0.301307
      Step     Time          Energy          fmax
BFGS:    0 23:43:04     -295.098914        1.775773
BFGS:    1 23:43:04     -295.217766        1.598099
BFGS:    2 23:43:04     -295.380239        2.784178
BFGS:    3 23:43:05     -295.498557        0.486246
BFGS:    4 23:43:05     -295.517424        0.604205
BFGS:    5 23:43:05     -295.536634        0.673298
BFGS:    6 23:43:05     -295.555306        0.487810
BFGS:    7 23:43:05     -295.563033        0.201667
BFGS:    8 23:43:05     -295.567616        0.269724
BFGS:    9 23:43:05     -295.573421        0.298065
BFGS:   10 23:43:05     -295.577327        0.228859
BFGS:   11 23:43:05     -295.579661        0.105281
BFGS:   12 23:43:05     -295.580040        0.023513
      Step     Time          Energy          fmax
BFGS:    0 23:43:05     -295.096326        1.787162
BFGS:    1 23:43:06     -295.216065        1.608175
BFGS:    2 23:43:06     -295.377186        2.808072
BFGS:    3 23:43:06     -295.497342        0.494172
BFGS:    4 23:43:06     -295.516417        0.604771
BFGS:    5 23:43:06     -295.535519        0.676900
BFGS:    6 23:43:06     -295.554686        0.494142
BFGS:    7 23:43:06     -295.562611        0.205832
BFGS:    8 23:43:06     -295.567212        0.267522
BFGS:    9 23:43:06     -295.573200        0.298510
BFGS:   10 23:43:06     -295.577111        0.231456
BFGS:   11 23:43:06     -295.579513        0.107832
BFGS:   12 23:43:06     -295.579913        0.024907
      Step     Time          Energy          fmax
BFGS:    0 23:43:07     -295.353901        1.228616
BFGS:    1 23:43:07     -295.427277        1.127108
BFGS:    2 23:43:07     -295.636724        1.334212
BFGS:    3 23:43:07     -295.672070        0.564289
BFGS:    4 23:43:07     -295.682368        0.482189
BFGS:    5 23:43:07     -295.720030        0.506219
BFGS:    6 23:43:07     -295.726999        0.501786
BFGS:    7 23:43:07     -295.806760        0.564090
BFGS:    8 23:43:07     -295.837938        0.913848
BFGS:    9 23:43:07     -295.856680        0.753481
BFGS:   10 23:43:07     -295.912127        0.648359
BFGS:   11 23:43:08     -295.943463        0.380856
BFGS:   12 23:43:08     -295.949311        0.260310
BFGS:   13 23:43:08     -295.954201        0.277014
BFGS:   14 23:43:08     -295.957501        0.274979
BFGS:   15 23:43:08     -295.961733        0.233423
BFGS:   16 23:43:08     -295.965037        0.149186
BFGS:   17 23:43:08     -295.966616        0.066501
BFGS:   18 23:43:08     -295.967177        0.040263
      Step     Time          Energy          fmax
BFGS:    0 23:43:08     -295.634022        0.727971
BFGS:    1 23:43:08     -295.686043        0.696209
BFGS:    2 23:43:08     -295.872485        0.423677
BFGS:    3 23:43:08     -295.888751        0.467174
BFGS:    4 23:43:09     -295.894155        0.457481
BFGS:    5 23:43:09     -295.938260        0.398584
BFGS:    6 23:43:09     -295.942095        0.314373
BFGS:    7 23:43:09     -295.954363        0.216630
BFGS:    8 23:43:09     -295.956382        0.226062
BFGS:    9 23:43:09     -295.958673        0.223762
BFGS:   10 23:43:09     -295.961384        0.191597
BFGS:   11 23:43:09     -295.963935        0.127363
BFGS:   12 23:43:09     -295.965536        0.089234
BFGS:   13 23:43:09     -295.966269        0.092663
BFGS:   14 23:43:09     -295.966755        0.095284
BFGS:   15 23:43:10     -295.967389        0.077602
BFGS:   16 23:43:10     -295.967923        0.042808
      Step     Time          Energy          fmax
BFGS:    0 23:43:10     -295.304994        1.294389
BFGS:    1 23:43:10     -295.383660        1.179861
BFGS:    2 23:43:10     -295.589215        1.470324
BFGS:    3 23:43:10     -295.629526        0.562838
BFGS:    4 23:43:10     -295.639783        0.511250
BFGS:    5 23:43:10     -295.673366        0.439495
BFGS:    6 23:43:10     -295.678768        0.443593
BFGS:    7 23:43:10     -295.723913        0.692778
BFGS:    8 23:43:10     -295.741489        0.596590
BFGS:    9 23:43:10     -295.771399        0.819424
BFGS:   10 23:43:11     -295.792359        0.870423
BFGS:   11 23:43:11     -295.831793        0.702298
BFGS:   12 23:43:11     -295.854576        0.444815
BFGS:   13 23:43:11     -295.869782        0.353065
BFGS:   14 23:43:11     -295.874422        0.356296
BFGS:   15 23:43:11     -295.880771        0.330165
BFGS:   16 23:43:11     -295.893107        0.232387
BFGS:   17 23:43:11     -295.900578        0.229170
BFGS:   18 23:43:11     -295.905180        0.234681
BFGS:   19 23:43:11     -295.908797        0.247875
BFGS:   20 23:43:11     -295.913809        0.250902
      Step     Time          Energy          fmax
BFGS:    0 23:43:12     -295.284966        1.328314
BFGS:    1 23:43:12     -295.365988        1.208753
BFGS:    2 23:43:12     -295.569208        1.557439
BFGS:    3 23:43:12     -295.613568        0.553190
BFGS:    4 23:43:12     -295.623906        0.522749
BFGS:    5 23:43:12     -295.654999        0.386461
BFGS:    6 23:43:12     -295.660006        0.403573
BFGS:    7 23:43:12     -295.682043        0.480642
BFGS:    8 23:43:12     -295.696789        0.564935
BFGS:    9 23:43:12     -295.721382        0.605518
BFGS:   10 23:43:12     -295.741894        0.857070
BFGS:   11 23:43:12     -295.776951        1.063794
BFGS:   12 23:43:13     -295.812270        0.983194
BFGS:   13 23:43:13     -295.867975        0.605312
BFGS:   14 23:43:13     -295.884392        0.466077
BFGS:   15 23:43:13     -295.900719        0.400614
BFGS:   16 23:43:13     -295.906356        0.398360
BFGS:   17 23:43:13     -295.915890        0.374496
BFGS:   18 23:43:13     -295.923757        0.274426
BFGS:   19 23:43:13     -295.928703        0.126188
BFGS:   20 23:43:13     -295.931031        0.104579
      Step     Time          Energy          fmax
BFGS:    0 23:43:14     -295.112995        1.717347
BFGS:    1 23:43:14     -295.227050        1.548172
BFGS:    2 23:43:14     -295.394782        2.663003
BFGS:    3 23:43:14     -295.505141        0.449938
BFGS:    4 23:43:14     -295.522925        0.601047
BFGS:    5 23:43:14     -295.542526        0.654919
BFGS:    6 23:43:14     -295.559008        0.455432
BFGS:    7 23:43:14     -295.565900        0.201914
BFGS:    8 23:43:14     -295.570392        0.277973
BFGS:    9 23:43:14     -295.575460        0.293043
BFGS:   10 23:43:14     -295.579283        0.212617
BFGS:   11 23:43:14     -295.581258        0.091283
BFGS:   12 23:43:15     -295.581555        0.021130
      Step     Time          Energy          fmax
BFGS:    0 23:43:15     -295.220903        1.445801
BFGS:    1 23:43:15     -295.311327        1.310948
BFGS:    2 23:43:15     -295.506793        1.893083
BFGS:    3 23:43:15     -295.568803        0.513205
BFGS:    4 23:43:15     -295.580486        0.558746
BFGS:    5 23:43:15     -295.605599        0.396170
BFGS:    6 23:43:15     -295.612702        0.278176
BFGS:    7 23:43:15     -295.618539        0.332467
BFGS:    8 23:43:15     -295.625248        0.345943
BFGS:    9 23:43:15     -295.632830        0.343884
BFGS:   10 23:43:16     -295.639207        0.262522
BFGS:   11 23:43:16     -295.643272        0.350375
BFGS:   12 23:43:16     -295.649093        0.502373
BFGS:   13 23:43:16     -295.677685        0.973063
BFGS:   14 23:43:16     -295.714982        1.391883
BFGS:   15 23:43:16     -295.831027        0.527622
BFGS:   16 23:43:16     -295.853923        0.492875
BFGS:   17 23:43:16     -295.880221        0.391614
BFGS:   18 23:43:16     -295.902210        0.316445
BFGS:   19 23:43:16     -295.919846        0.207384
BFGS:   20 23:43:16     -295.925662        0.164641

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 23:43:17     -303.891057        0.740005
BFGS:    1 23:43:17     -303.912667        0.430815
BFGS:    2 23:43:17     -303.933251        0.391055
BFGS:    3 23:43:17     -303.939652        0.386666
BFGS:    4 23:43:17     -303.952201        0.267021
BFGS:    5 23:43:17     -303.956959        0.152236
BFGS:    6 23:43:17     -303.958726        0.101046
BFGS:    7 23:43:17     -303.960223        0.089257
BFGS:    8 23:43:17     -303.961978        0.113535
BFGS:    9 23:43:17     -303.963116        0.107637
BFGS:   10 23:43:17     -303.963749        0.074421
BFGS:   11 23:43:17     -303.964218        0.079790
BFGS:   12 23:43:18     -303.964694        0.070758
BFGS:   13 23:43:18     -303.965058        0.055257
BFGS:   14 23:43:18     -303.965244        0.045864
      Step     Time          Energy          fmax
BFGS:    0 23:43:18     -303.905201        0.803118
BFGS:    1 23:43:18     -303.924387        0.471262
BFGS:    2 23:43:18     -303.940205        0.224684
BFGS:    3 23:43:18     -303.944216        0.260537
BFGS:    4 23:43:18     -303.952177        0.230756
BFGS:    5 23:43:18     -303.955965        0.170447
BFGS:    6 23:43:18     -303.957493        0.146062
BFGS:    7 23:43:19     -303.958669        0.138994
BFGS:    8 23:43:19     -303.960622        0.133693
BFGS:    9 23:43:19     -303.962100        0.114824
BFGS:   10 23:43:19     -303.962888        0.094163
BFGS:   11 23:43:19     -303.963485        0.080479
BFGS:   12 23:43:19     -303.964129        0.096292
BFGS:   13 23:43:19     -303.964638        0.084000
BFGS:   14 23:43:19     -303.964956        0.052824
BFGS:   15 23:43:19     -303.965105        0.033950
      Step     Time          Energy          fmax
BFGS:    0 23:43:19     -303.660471        2.379261
BFGS:    1 23:43:19     -303.779886        1.257104
BFGS:    2 23:43:20     -303.846812        0.500685
BFGS:    3 23:43:20     -303.859678        0.409008
BFGS:    4 23:43:20     -303.873707        0.413535
BFGS:    5 23:43:20     -303.883385        0.388668
BFGS:    6 23:43:20     -303.891220        0.294952
BFGS:    7 23:43:20     -303.896725        0.190718
BFGS:    8 23:43:20     -303.900160        0.116156
BFGS:    9 23:43:20     -303.901658        0.124915
BFGS:   10 23:43:20     -303.902584        0.120799
BFGS:   11 23:43:20     -303.903739        0.088044
BFGS:   12 23:43:20     -303.904932        0.100205
BFGS:   13 23:43:20     -303.905839        0.094171
BFGS:   14 23:43:21     -303.906242        0.067295
BFGS:   15 23:43:21     -303.906569        0.069541
BFGS:   16 23:43:21     -303.907060        0.073758
BFGS:   17 23:43:21     -303.907780        0.082930
BFGS:   18 23:43:21     -303.908573        0.114405
BFGS:   19 23:43:21     -303.909274        0.116030
BFGS:   20 23:43:21     -303.909979        0.094963
BFGS:   21 23:43:21     -303.910923        0.132605
BFGS:   22 23:43:21     -303.912414        0.157234
BFGS:   23 23:43:21     -303.914849        0.233178
BFGS:   24 23:43:21     -303.918348        0.288706
BFGS:   25 23:43:22     -303.923738        0.322522
BFGS:   26 23:43:22     -303.932258        0.548806
BFGS:   27 23:43:22     -303.942238        0.539331
BFGS:   28 23:43:22     -303.951830        0.347827
BFGS:   29 23:43:22     -303.952697        0.304035
BFGS:   30 23:43:22     -303.960490        0.122555
BFGS:   31 23:43:22     -303.961490        0.077791
BFGS:   32 23:43:22     -303.962597        0.067940
BFGS:   33 23:43:22     -303.963220        0.075050
BFGS:   34 23:43:22     -303.964036        0.068502
BFGS:   35 23:43:22     -303.964724        0.045639
      Step     Time          Energy          fmax
BFGS:    0 23:43:23     -303.238584        1.721618
BFGS:    1 23:43:23     -303.311901        1.155358
BFGS:    2 23:43:23     -303.378166        0.841718
BFGS:    3 23:43:23     -303.427243        1.013436
BFGS:    4 23:43:23     -303.583036        1.503763
BFGS:    5 23:43:23     -303.616062        1.497317
BFGS:    6 23:43:23     -303.696093        0.837120
BFGS:    7 23:43:23     -303.784822        1.006511
BFGS:    8 23:43:23     -303.852417        1.139384
BFGS:    9 23:43:23     -303.943506        1.015567
BFGS:   10 23:43:23     -304.009621        1.240061
BFGS:   11 23:43:24     -304.056690        1.086744
BFGS:   12 23:43:24     -304.121843        0.721145
BFGS:   13 23:43:24     -304.162999        0.808030
BFGS:   14 23:43:24     -304.194200        0.844174
BFGS:   15 23:43:24     -304.232959        0.863593
BFGS:   16 23:43:24     -304.262097        0.662398
BFGS:   17 23:43:24     -304.283936        0.542931
BFGS:   18 23:43:24     -304.301158        0.383536
BFGS:   19 23:43:24     -304.310074        0.431038
BFGS:   20 23:43:24     -304.323924        0.511685
BFGS:   21 23:43:24     -304.337863        0.568029
BFGS:   22 23:43:24     -304.347136        0.312737
BFGS:   23 23:43:25     -304.350409        0.193391
BFGS:   24 23:43:25     -304.352616        0.124726
BFGS:   25 23:43:25     -304.354371        0.142550
BFGS:   26 23:43:25     -304.355184        0.096856
BFGS:   27 23:43:25     -304.355672        0.063033
BFGS:   28 23:43:25     -304.356202        0.065937
BFGS:   29 23:43:25     -304.356616        0.086784
BFGS:   30 23:43:25     -304.356888        0.057446
BFGS:   31 23:43:25     -304.356993        0.029997
      Step     Time          Energy          fmax
BFGS:    0 23:43:25     -301.874083        1.195949
BFGS:    1 23:43:26     -301.905395        0.783373
BFGS:    2 23:43:26     -301.959759        0.907424
BFGS:    3 23:43:26     -302.029040        1.279967
BFGS:    4 23:43:26     -302.100734        1.194145
BFGS:    5 23:43:26     -302.134262        0.801697
BFGS:    6 23:43:26     -302.162309        0.616651
BFGS:    7 23:43:26     -302.198669        0.654945
BFGS:    8 23:43:26     -302.227230        0.421874
BFGS:    9 23:43:26     -302.238141        0.371012
BFGS:   10 23:43:26     -302.247801        0.339579
BFGS:   11 23:43:26     -302.264207        0.478260
BFGS:   12 23:43:26     -302.283260        0.649119
BFGS:   13 23:43:27     -302.302709        0.764521
BFGS:   14 23:43:27     -302.349611        1.205026
BFGS:   15 23:43:27     -302.408486        1.922209
BFGS:   16 23:43:27     -302.453771        2.879714
BFGS:   17 23:43:27     -302.668534        3.629489
BFGS:   18 23:43:27     -303.006500        3.139868
BFGS:   19 23:43:27     -303.288092        2.196550
BFGS:   20 23:43:27     -303.397768        1.441134
BFGS:   21 23:43:27     -303.489354        1.356643
BFGS:   22 23:43:27     -304.021563        1.778026
BFGS:   23 23:43:27     -304.202182        2.136581
BFGS:   24 23:43:28     -304.295914        1.504559
BFGS:   25 23:43:28     -304.444167        0.975421
BFGS:   26 23:43:28     -304.483151        0.617371
BFGS:   27 23:43:28     -304.506603        0.472684
BFGS:   28 23:43:28     -304.516544        0.252471
BFGS:   29 23:43:28     -304.524923        0.171568
BFGS:   30 23:43:28     -304.528749        0.158866
BFGS:   31 23:43:28     -304.531005        0.146620
BFGS:   32 23:43:28     -304.532658        0.124353
BFGS:   33 23:43:28     -304.534669        0.083207
BFGS:   34 23:43:28     -304.536559        0.078434
BFGS:   35 23:43:28     -304.537870        0.087472
BFGS:   36 23:43:29     -304.538593        0.075961
BFGS:   37 23:43:29     -304.538946        0.052040
BFGS:   38 23:43:29     -304.539195        0.038074
      Step     Time          Energy          fmax
BFGS:    0 23:43:29     -301.947111        0.445738
BFGS:    1 23:43:29     -301.952011        0.271337
BFGS:    2 23:43:29     -301.957215        0.160254
BFGS:    3 23:43:29     -301.958406        0.154100
BFGS:    4 23:43:29     -301.964609        0.295799
BFGS:    5 23:43:29     -301.968990        0.286082
BFGS:    6 23:43:29     -301.972371        0.179238
BFGS:    7 23:43:30     -301.975345        0.204486
BFGS:    8 23:43:30     -301.978506        0.291405
BFGS:    9 23:43:30     -301.987569        0.468480
BFGS:   10 23:43:30     -301.999225        0.561856
BFGS:   11 23:43:30     -302.012571        0.511787
BFGS:   12 23:43:30     -302.030352        0.674860
BFGS:   13 23:43:30     -302.061493        1.441408
BFGS:   14 23:43:30     -302.094668        2.386191
BFGS:   15 23:43:30     -302.140912        3.212148
BFGS:   16 23:43:30     -302.203403        3.753803
BFGS:   17 23:43:30     -302.268862        3.781801
BFGS:   18 23:43:30     -302.359091        2.964242
BFGS:   19 23:43:31     -302.555761        2.822209
BFGS:   20 23:43:31     -302.725448        2.341791
BFGS:   21 23:43:31     -303.192082        1.507439
BFGS:   22 23:43:31     -303.395909        1.393593
BFGS:   23 23:43:31     -303.465050        1.316671
BFGS:   24 23:43:31     -303.547468        1.040416
BFGS:   25 23:43:31     -303.591300        0.802075
BFGS:   26 23:43:31     -303.680375        0.634582
BFGS:   27 23:43:31     -303.696727        0.575820
BFGS:   28 23:43:31     -303.724421        0.576018
BFGS:   29 23:43:31     -303.759737        0.581751
BFGS:   30 23:43:31     -303.791368        0.662154
BFGS:   31 23:43:32     -303.811387        0.693861
BFGS:   32 23:43:32     -303.829693        0.608141
BFGS:   33 23:43:32     -303.850589        0.425612
BFGS:   34 23:43:32     -303.868406        0.431352
BFGS:   35 23:43:32     -303.881690        0.364800
BFGS:   36 23:43:32     -303.892096        0.369075
BFGS:   37 23:43:32     -303.902962        0.304144
BFGS:   38 23:43:32     -303.912014        0.200178
BFGS:   39 23:43:32     -303.917780        0.112707
BFGS:   40 23:43:32     -303.920502        0.111599
BFGS:   41 23:43:32     -303.921893        0.118069
BFGS:   42 23:43:33     -303.922844        0.126470
BFGS:   43 23:43:33     -303.923918        0.135022
BFGS:   44 23:43:33     -303.925841        0.145905
BFGS:   45 23:43:33     -303.928900        0.157247
BFGS:   46 23:43:33     -303.932579        0.184186
BFGS:   47 23:43:33     -303.935770        0.225767
BFGS:   48 23:43:33     -303.939786        0.232402
BFGS:   49 23:43:33     -303.948860        0.256649
BFGS:   50 23:43:33     -303.961344        0.391575
BFGS:   51 23:43:33     -303.973877        0.217129
BFGS:   52 23:43:33     -303.980844        0.159920
BFGS:   53 23:43:33     -303.984019        0.110345
BFGS:   54 23:43:34     -303.985460        0.084567
BFGS:   55 23:43:34     -303.986451        0.080951
BFGS:   56 23:43:34     -303.987910        0.078150
BFGS:   57 23:43:34     -303.989311        0.051975
BFGS:   58 23:43:34     -303.990076        0.046594
      Step     Time          Energy          fmax
BFGS:    0 23:43:34     -301.926262        0.443448
BFGS:    1 23:43:34     -301.931394        0.291044
BFGS:    2 23:43:34     -301.937333        0.177578
BFGS:    3 23:43:34     -301.938872        0.181053
BFGS:    4 23:43:34     -301.948379        0.370615
BFGS:    5 23:43:35     -301.955029        0.365558
BFGS:    6 23:43:35     -301.960312        0.248206
BFGS:    7 23:43:35     -301.965885        0.290989
BFGS:    8 23:43:35     -301.971425        0.396560
BFGS:    9 23:43:35     -301.983604        0.528184
BFGS:   10 23:43:35     -301.994682        0.473744
BFGS:   11 23:43:35     -302.003959        0.306363
BFGS:   12 23:43:35     -302.010996        0.349283
BFGS:   13 23:43:35     -302.031437        0.863575
BFGS:   14 23:43:35     -302.047173        1.895281
BFGS:   15 23:43:35     -302.071430        2.822515
BFGS:   16 23:43:35     -302.123379        3.513547
BFGS:   17 23:43:36     -302.160433        3.912790
BFGS:   18 23:43:36     -302.227167        3.448231
BFGS:   19 23:43:36     -302.220125        2.647653
BFGS:   20 23:43:36     -302.273594        3.132039
BFGS:   21 23:43:36     -302.305512        3.112672
BFGS:   22 23:43:36     -302.389920        2.931536
BFGS:   23 23:43:36     -302.605196        2.496552
BFGS:   24 23:43:36     -302.797716        1.863942
BFGS:   25 23:43:36     -302.905947        1.705253
BFGS:   26 23:43:36     -303.055045        1.673747
BFGS:   27 23:43:36     -303.269634        1.576309
BFGS:   28 23:43:37     -303.335853        1.502301
BFGS:   29 23:43:37     -303.417003        1.246875
BFGS:   30 23:43:37     -303.453114        1.025932
BFGS:   31 23:43:37     -303.516605        1.015575
BFGS:   32 23:43:37     -303.596458        1.222640
BFGS:   33 23:43:37     -303.619756        1.366833
BFGS:   34 23:43:37     -303.654887        1.390821
BFGS:   35 23:43:37     -303.698818        1.351220
BFGS:   36 23:43:37     -303.729609        1.231629
BFGS:   37 23:43:37     -303.757953        1.123075
BFGS:   38 23:43:37     -303.780666        1.009739
BFGS:   39 23:43:38     -303.794277        0.891201
BFGS:   40 23:43:38     -303.801144        0.843265
BFGS:   41 23:43:38     -303.807277        0.835751
BFGS:   42 23:43:38     -303.813172        0.839390
BFGS:   43 23:43:38     -303.817712        0.837518
BFGS:   44 23:43:38     -303.820537        0.831283
BFGS:   45 23:43:38     -303.823117        0.827973
BFGS:   46 23:43:38     -303.826529        0.830394
BFGS:   47 23:43:38     -303.829458        0.836961
BFGS:   48 23:43:38     -303.831404        0.842559
BFGS:   49 23:43:39     -303.833086        0.843159
BFGS:   50 23:43:39     -303.835425        0.835809
BFGS:   51 23:43:39     -303.838069        0.814945
BFGS:   52 23:43:39     -303.839996        0.782130
BFGS:   53 23:43:39     -303.840973        0.754215
BFGS:   54 23:43:39     -303.841596        0.735969
BFGS:   55 23:43:39     -303.842264        0.719189
BFGS:   56 23:43:39     -303.842955        0.703772
BFGS:   57 23:43:39     -303.843461        0.694849
BFGS:   58 23:43:39     -303.843759        0.691534
BFGS:   59 23:43:39     -303.844021        0.688584
BFGS:   60 23:43:40     -303.844337        0.683609
BFGS:   61 23:43:40     -303.844633        0.678210
BFGS:   62 23:43:40     -303.844828        0.675846
BFGS:   63 23:43:40     -303.844940        0.676332
BFGS:   64 23:43:40     -303.845049        0.678487
BFGS:   65 23:43:40     -303.845185        0.682934
BFGS:   66 23:43:40     -303.845328        0.689414
BFGS:   67 23:43:40     -303.845418        0.694751
BFGS:   68 23:43:40     -303.845469        0.696907
BFGS:   69 23:43:40     -303.845516        0.697425
BFGS:   70 23:43:40     -303.845578        0.696796
BFGS:   71 23:43:40     -303.845653        0.695016
BFGS:   72 23:43:41     -303.845704        0.693202
BFGS:   73 23:43:41     -303.845731        0.692326
BFGS:   74 23:43:41     -303.845745        0.691813
BFGS:   75 23:43:41     -303.845762        0.691161
BFGS:   76 23:43:41     -303.845787        0.690208
BFGS:   77 23:43:41     -303.845803        0.689185
BFGS:   78 23:43:41     -303.845816        0.688656
BFGS:   79 23:43:41     -303.845821        0.688478
BFGS:   80 23:43:41     -303.845827        0.688310
BFGS:   81 23:43:41     -303.845839        0.688139
BFGS:   82 23:43:41     -303.845847        0.688017
BFGS:   83 23:43:42     -303.845854        0.687952
BFGS:   84 23:43:42     -303.845857        0.687955
BFGS:   85 23:43:42     -303.845861        0.688013
BFGS:   86 23:43:42     -303.845865        0.688116
BFGS:   87 23:43:42     -303.845873        0.688272
BFGS:   88 23:43:42     -303.845884        0.688470
BFGS:   89 23:43:42     -303.845893        0.688574
BFGS:   90 23:43:42     -303.845895        0.688562
BFGS:   91 23:43:42     -303.845904        0.688467
BFGS:   92 23:43:42     -303.845916        0.688388
BFGS:   93 23:43:42     -303.845943        0.688204
BFGS:   94 23:43:42     -303.845970        0.688123
BFGS:   95 23:43:43     -303.845998        0.688031
BFGS:   96 23:43:43     -303.846027        0.687885
BFGS:   97 23:43:43     -303.846076        0.687605
BFGS:   98 23:43:43     -303.846185        0.687166
BFGS:   99 23:43:43     -303.846398        0.687695
BFGS:  100 23:43:43     -303.846710        0.691538
BFGS:  101 23:43:43     -303.847089        0.694308
BFGS:  102 23:43:43     -303.847451        0.693399
BFGS:  103 23:43:43     -303.847699        0.704443
BFGS:  104 23:43:43     -303.848076        0.704380
BFGS:  105 23:43:43     -303.848424        0.723410
BFGS:  106 23:43:44     -303.848680        0.717420
BFGS:  107 23:43:44     -303.848739        0.720199
BFGS:  108 23:43:44     -303.848764        0.721232
BFGS:  109 23:43:44     -303.848819        0.727584
BFGS:  110 23:43:44     -303.848885        0.739651
BFGS:  111 23:43:44     -303.848925        0.752274
BFGS:  112 23:43:44     -303.848945        0.758450
BFGS:  113 23:43:44     -303.848955        0.761123
BFGS:  114 23:43:44     -303.848969        0.763795
BFGS:  115 23:43:44     -303.848982        0.766003
BFGS:  116 23:43:44     -303.848986        0.766887
BFGS:  117 23:43:44     -303.848989        0.766905
BFGS:  118 23:43:45     -303.848989        0.766903
BFGS:  119 23:43:45     -303.848992        0.767076
BFGS:  120 23:43:45     -303.848993        0.767429
BFGS:  121 23:43:45     -303.848993        0.767952
BFGS:  122 23:43:45     -303.848994        0.768187
BFGS:  123 23:43:45     -303.848991        0.768387
BFGS:  124 23:43:45     -303.848993        0.768505
BFGS:  125 23:43:45     -303.848993        0.768795
BFGS:  126 23:43:45     -303.848993        0.769118
BFGS:  127 23:43:45     -303.848995        0.769247
BFGS:  128 23:43:45     -303.848993        0.769327
BFGS:  129 23:43:46     -303.848993        0.769331
BFGS:  130 23:43:46     -303.848995        0.769304
BFGS:  131 23:43:46     -303.848994        0.769320
BFGS:  132 23:43:46     -303.848992        0.769296
BFGS:  133 23:43:46     -303.848997        0.769259
BFGS:  134 23:43:46     -303.848994        0.769251
BFGS:  135 23:43:46     -303.848995        0.769208
BFGS:  136 23:43:46     -303.848993        0.769162
BFGS:  137 23:43:46     -303.848993        0.769120
BFGS:  138 23:43:46     -303.848996        0.769098
BFGS:  139 23:43:46     -303.848994        0.769081
BFGS:  140 23:43:46     -303.848995        0.769069
BFGS:  141 23:43:47     -303.848993        0.769170
BFGS:  142 23:43:47     -303.848995        0.769136
BFGS:  143 23:43:47     -303.848992        0.769117
BFGS:  144 23:43:47     -303.848995        0.769112
BFGS:  145 23:43:47     -303.848995        0.769068
BFGS:  146 23:43:47     -303.848994        0.769074
BFGS:  147 23:43:47     -303.848995        0.769104
BFGS:  148 23:43:47     -303.848996        0.769108
BFGS:  149 23:43:47     -303.848996        0.769089
BFGS:  150 23:43:47     -303.848993        0.769091
BFGS:  151 23:43:47     -303.848993        0.769111
BFGS:  152 23:43:48     -303.848992        0.769101
BFGS:  153 23:43:48     -303.848994        0.769069
BFGS:  154 23:43:48     -303.848994        0.769072
BFGS:  155 23:43:48     -303.848996        0.769113
BFGS:  156 23:43:48     -303.848995        0.769099
BFGS:  157 23:43:48     -303.848994        0.769106
BFGS:  158 23:43:48     -303.848993        0.769041
BFGS:  159 23:43:48     -303.848993        0.769072
BFGS:  160 23:43:48     -303.848993        0.769073
BFGS:  161 23:43:48     -303.848992        0.769134
BFGS:  162 23:43:48     -303.848995        0.769110
BFGS:  163 23:43:48     -303.848993        0.769077
BFGS:  164 23:43:49     -303.848994        0.769083
BFGS:  165 23:43:49     -303.848995        0.769079
BFGS:  166 23:43:49     -303.848995        0.769080
BFGS:  167 23:43:49     -303.848995        0.769163
BFGS:  168 23:43:49     -303.848995        0.769093
BFGS:  169 23:43:49     -303.848995        0.769086
BFGS:  170 23:43:49     -303.848996        0.769078
BFGS:  171 23:43:49     -303.848997        0.769078
BFGS:  172 23:43:49     -303.848995        0.769153
BFGS:  173 23:43:49     -303.848994        0.769092
BFGS:  174 23:43:49     -303.848994        0.769082
BFGS:  175 23:43:50     -303.848996        0.769088
BFGS:  176 23:43:50     -303.848995        0.769081
BFGS:  177 23:43:50     -303.848996        0.769083
BFGS:  178 23:43:50     -303.848995        0.769083
BFGS:  179 23:43:50     -303.848993        0.769089
BFGS:  180 23:43:50     -303.848996        0.769087
BFGS:  181 23:43:50     -303.848993        0.769100
BFGS:  182 23:43:50     -303.848995        0.769082
BFGS:  183 23:43:50     -303.848995        0.769097
BFGS:  184 23:43:50     -303.848997        0.769089
BFGS:  185 23:43:50     -303.848995        0.769090
BFGS:  186 23:43:50     -303.848996        0.769078
BFGS:  187 23:43:51     -303.848994        0.769110
BFGS:  188 23:43:51     -303.848996        0.769078
BFGS:  189 23:43:51     -303.848995        0.769085
BFGS:  190 23:43:51     -303.848996        0.769087
BFGS:  191 23:43:51     -303.848996        0.769089
BFGS:  192 23:43:51     -303.848996        0.769079
BFGS:  193 23:43:51     -303.848995        0.769095
BFGS:  194 23:43:51     -303.848995        0.769087
BFGS:  195 23:43:51     -303.848994        0.769084
BFGS:  196 23:43:51     -303.848995        0.769082
BFGS:  197 23:43:51     -303.848995        0.769092
BFGS:  198 23:43:52     -303.848993        0.769086
BFGS:  199 23:43:52     -303.848997        0.769091
BFGS:  200 23:43:52     -303.848996        0.769086
/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 23:44:05     -301.973958        4.156366
BFGS:    1 23:44:06     -302.261704        3.314306
BFGS:    2 23:44:07     -302.809319        4.993355
BFGS:    3 23:44:08     -302.901813        1.642498
BFGS:    4 23:44:09     -303.039913        0.871297
BFGS:    5 23:44:09     -303.070942        0.738961
BFGS:    6 23:44:10     -303.099642        0.695118
BFGS:    7 23:44:11     -303.115601        0.832090
BFGS:    8 23:44:12     -303.137756        0.772722
BFGS:    9 23:44:13     -303.164235        0.865847
BFGS:   10 23:44:13     -303.201896        0.884171
BFGS:   11 23:44:14     -303.274631        1.252673
BFGS:   12 23:44:15     -303.342032        1.587253
BFGS:   13 23:44:16     -303.340811        1.190889
BFGS:   14 23:44:16     -303.354021        0.842623
BFGS:   15 23:44:17     -303.365044        0.667424
BFGS:   16 23:44:18     -303.379656        1.240728
BFGS:   17 23:44:19     -303.379493        0.859747
BFGS:   18 23:44:20     -303.395089        0.598250
BFGS:   19 23:44:20     -303.432831        0.565477
BFGS:   20 23:44:21     -303.454904        0.610938

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_3558/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/4006bd4784ad4a4a11a223eafb013131a4dfbb9320ed694d468626b89a826ccb.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")