Skip to content

Geometry Optimization

The default optimizer backend is the native OpenQP optimizer:

[optimize]
lib=oqp

The native backend uses redundant internal coordinates, DLC/TRIC-style coordinate handling, and restricted-step RFO/P-RFO style steps. It supports minima, transition states, MECI/MECP/TCI, NEB, IRC, and MEP workflows where the corresponding run type is implemented.

Input style:

[input]
runtype=optimize
method=hf
functional=bhhlyp
basis=6-31g*

[scf]
type=rhf
multiplicity=1

[optimize]
lib=oqp
istate=0
maxit=10

[oqp]
coordsys=tric
trust=0.2

Python style:

from oqp.openqp import OpenQP

job = OpenQP("h2o_opt", silent=1)
job.molecule(geometry="water", charge=0, multiplicity=1)
job.theory.dft(functional="bhhlyp", basis="6-31g*")
job.workflow.optimize(
    lib="oqp",
    istate=0,
    maxit=10,
    coordsys="tric",
    trust=0.2,
)

mol = job.run()

Runnable input: examples/OPT/H2O_RHF-DFT_OPTIMIZE_OQP.inp.

geomeTRIC Backend

Use geomeTRIC when you need a workflow or constraint style that is best handled by that external optimizer:

[optimize]
lib=geometric

[geometric]
coordsys=tric
trust=0.1
constraints_file=my.constraints

Python style uses job.workflow.optimize(...) for the optimizer selection and routes the backend options to geomeTRIC:

job.workflow.optimize(
    lib="geometric",
    coordsys="tric",
    trust=0.1,
    constraints_file="my.constraints",
)

Runnable geomeTRIC inputs are available in examples/OPT, including H2O_RHF-DFT_OPTIMIZE_GEOMETRIC.inp.

Crossing Points

MECI and related workflows select the state pair or triplet in [optimize]:

Input style:

[input]
runtype=meci
method=tdhf
functional=bhhlyp

[tdhf]
type=mrsf
nstate=5

[optimize]
lib=oqp
istate=1
jstate=2

Python style:

from oqp.openqp import OpenQP

job = OpenQP("meci_mrsf", silent=1)
job.molecule("reactant.xyz", charge=0)
job.theory.mrsf(functional="bhhlyp", basis="6-31g*", nstate=5)
job.workflow.meci(lib="oqp", istate=1, jstate=2)

mol = job.run()

Runnable inputs are available in examples/OPT.