Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 1.52 KB

README.md

File metadata and controls

44 lines (33 loc) · 1.52 KB

Sella

Sella is a utility for finding first order saddle points

An example script

#!/usr/bin/env python3

from ase.build import fcc111, add_adsorbate
from ase.calculators.emt import EMT

from sella import MinModeAtoms, optimize

# Set up your system as an ASE atoms object
slab = fcc111('Cu', (5, 5, 6), vacuum=7.5)
add_adsorbate(slab, 'Cu', 2.0, 'bridge')

# Define any constraints. Here we fix all atoms in the bottom half
# of the slab.
fix = [atom.index for atom in slab if atom.position[2] < slab.cell[2, 2] / 2.]

# Set up your calculator
calc = EMT()

# Create a Sella MinMode object
myminmode = MinModeAtoms(slab,  # Your Atoms object
                         calc,  # Your calculator
                         constraints=dict(fix=fix),  # Your constraints
                         trajectory='test_emt.traj',  # Optional trajectory
                         )

x1 = optimize(myminmode,    # Your MinMode object
              maxiter=500,  # Maximum number of force evaluations
              ftol=1e-3,    # Norm of the force vector, convergence threshold
              r_trust=0.1,  # Initial trust radius (Angstrom)
              order=1,      # Order of saddle point to find (set to 0 for minimization)
              dxL=1e-4,     # Finite difference displacement magnitude (Angstrom)
              maxres=0.1,   # Maximum residual for eigensolver convergence (should be <= 1)
              )

Additional documentation forthcoming. All interfaces likely to change.

If you are using Sella or you wish to use Sella, let me know!