Worked Example

Initialization

from scm.plams import *

# this line is not required in AMS2025+
init()
PLAMS working folder: /path/plams/examples/NumHess/plams_workdir

Define molecule

Normally you would read the molecule from an xyz file

# mol = Molecule('methanol.xyz')


mol = AMSJob.from_input(
    """
System
  Atoms
    C       0.000000000000       0.138569980000       0.355570700000
    O       0.000000000000       0.187935770000      -1.074466460000
    H       0.882876920000      -0.383123830000       0.697839450000
    H      -0.882876940000      -0.383123830000       0.697839450000
    H       0.000000000000       1.145042790000       0.750208830000
  End
End
"""
).molecule[""]

Setup and run job

Here we use the fast DFTB engine, for ADF it is recommended to disable symmetry

s = Settings()
s.input.ams.task = "SinglePoint"
s.input.ams.Properties.Gradients = "Yes"
# s.input.adf.basis.type = 'DZP'
# s.input.adf.symmetry = 'NOSYM'
# s.input.adf.xc.gga = 'PW91'
s.input.DFTB.Model = "GFN1-xTB"
s.runscript.nproc = 1

j = NumHessJob(name="test", molecule=mol, settings=s, jobtype=AMSJob, gradient=lambda x: x.get_gradients().reshape(-1))
r = j.run(jobrunner=JobRunner(parallel=True, maxjobs=8))
[06.03|13:55:22] JOB test STARTED
[06.03|13:55:22] JOB test RUNNING
[06.03|13:55:22] JOB test/1_0_-1 STARTED
[06.03|13:55:22] JOB test/1_0_1 STARTED