Dihedral Scan
Perform a relaxed 1D dihedral angle scan covering the full 360° range. At each step the dihedral is constrained to a target value while the remaining internal degrees of freedom are relaxed via geometry optimisation.
The scan starts from the current dihedral value of the input geometry and walks in steps until a full 360° range has been covered. Each step begins from the optimised geometry of the previous step, ensuring a continuous walk across the potential energy surface.
This is useful for exploring rotational energy barriers and identifying stable rotamers.
from atomiverse import Atoms, DihedralScan
from atomiverse.levels import GFN2_XTB
atoms = Atoms.from_smiles("CCCO")
job = DihedralScan(
atoms=atoms,
charge=0,
multiplicity=1,
level_of_theory=GFN2_XTB,
dihedral_indices=[0, 1, 2, 3],
step_size=10.0,
)
job.submit()
result = job.require_result()
print(f"{len(result.energies)} scan steps")
print(f"Energy range: {min(result.energies):.6f} … {max(result.energies):.6f} Ha")
Inputs
atoms is the starting molecular geometry. The scan begins from its current dihedral value.
charge and multiplicity describe the total charge and spin multiplicity.
level_of_theory selects the method used for constrained geometry optimisations.
dihedral_indices specifies the four atom indices (0-based) that define the dihedral angle to be scanned.
step_size is the angular step size in degrees. Defaults to 10°. The total number of steps is ceil(360 / step_size).
Results
result.atoms contains the optimised geometries at each scan step, ordered from the initial dihedral to initial + 360°.
result.energies is a parallel list of absolute energies in Hartree.
Compute Resources
CPU cores and memory are determined automatically based on the molecule size and level of theory. The walltime estimate accounts for a constrained geometry optimisation at every scan step.