Overview
This module provides two Prefect tasks for NEB calculations:| Task | Function | Use when |
|---|---|---|
| NEB from images | run | You already have a list of interpolated or partially relaxed images |
| NEB from endpoints | run_from_endpoints | You have only start and end structures; the task handles interpolation and optional endpoint relaxation |
TASK_SOURCE + INPUTS cache policy.
run — NEB from images
Function signature
Parameters
Ordered list of
Atoms objects representing the NEB images (including the two endpoint images). Each image is copied internally; the originals are not mutated.Calculator attached to every image via
allow_shared_calculator=True.NEB optimizer class or string name.
"BFGSLineSearch" is not supported for NEB. Accepted strings:
"MDMin", "FIRE", "FIRE2", "LBFGS", "LBFGSLineSearch",
"BFGS", "QuasiNewton", "GPMin", "CellAwareBFGS", "ODE12r".Extra keyword arguments forwarded to the optimizer constructor.
Convergence criteria passed to
optimizer.run(). When None, the ASE optimizer default is used (no step limit). Typical key: fmax (eV/Å).Initial path interpolation method applied before optimization:
| Value | Description |
|---|---|
"linear" | Linear interpolation of Cartesian coordinates between endpoints |
"idpp" | Image Dependent Pair Potential — produces smoother initial paths and typically converges faster |
Enable the climbing-image variant of NEB (CI-NEB). When
True, the highest-energy image climbs toward the true saddle point, giving a more accurate barrier estimate.Path for writing NEB optimization trajectory. Passed directly to the optimizer constructor.
run_from_endpoints — NEB from endpoints
Function signature
Parameters
Initial state (reactant) structure.
Final state (product) structure.
Total number of images in the NEB path, including the two endpoint images.
Calculator used for endpoint relaxations and the NEB optimization.
Optimizer used for both endpoint relaxations and the NEB run. See
run for accepted string values.Extra keyword arguments forwarded to the optimizer constructor.
Convergence criteria passed to
optimizer.run().When
True, both start and end are individually relaxed with OPT before the NEB path is constructed. Recommended to ensure the endpoints sit at true local minima.Interpolation method for generating intermediate images. See
run for options.Enable climbing-image NEB.
Path for writing NEB optimization trajectory.
When
True, results from the endpoint OPT sub-tasks and the inner NEB run are cached and persisted. When False, sub-tasks always recompute.Differences between run and run_from_endpoints
run | run_from_endpoints | |
|---|---|---|
| Input | Pre-built image list | Start + end Atoms only |
| Endpoint relaxation | Your responsibility | Automatic (controllable via relax_end_points) |
| Path construction | You provide images | Uses pymatgen Structure.interpolate with autosort_tol=0.5 |
| Sub-task caching | N/A | Controlled by cache_subtasks |
| Default optimizer | "MDMin" | "BFGS" |
Return value
Both functions return the same structure:Energy barriers returned by
NEBTools.get_barrier(): (forward_barrier_eV, reverse_barrier_eV).The fully optimized NEB images in path order.
Spline fit object from
ase.utils.forcecurve.fit_images, useful for plotting the energy profile.If the initial relaxation of endpoints fails,
run_from_endpoints returns a Prefect State object instead of a dict.Examples
- NEB from images
- NEB from endpoints