Hessian and Frequencies¶
Hessian workflows use [input] runtype=hess and are controlled by [hess].
OpenQP supports native analytical Hessians for supported HF/DFT ground-state
cases and numerical Hessians for broader workflows.
Frequency, IR, Raman, and thermochemistry analysis are built from Hessian data when the selected workflow produces the required derivatives.
The generated .hess.json and .freq.molden files contain portable normal
modes and, for supported bases, the SCF molecular orbitals needed to view MO
surfaces and vibrational animation together. See
Orbital and Vibrational Output.
In Python scripts, start from a compact HF, DFT, or MRSF-TDDFT theory setup and
then select the Hessian workflow with job.workflow.hessian(...).
Analytical HF/DFT Hessian¶
.oqp:
dft/bhhlyp/6-31g*
hess(S0,type=analytical,clean=true)
geom="h2o.xyz"
Python:
from oqp.openqp import OpenQP
job = OpenQP("h2o_dft_hess", silent=1)
job.molecule(geometry="water", charge=0, multiplicity=1)
job.theory.dft(functional="bhhlyp", basis="6-31g*")
job.workflow.hessian(type="analytical", state=0, clean=True)
mol = job.run()
hessian = mol.get_hess()
Legacy .inp:
[input]
runtype=hess
method=hf
functional=bhhlyp
basis=6-31g*
[scf]
type=rhf
multiplicity=1
[hess]
type=analytical
state=0
clean=True
Runnable .oqp:
examples/HESS/H2O_RHF-DFT_ANA_HESS.oqp.
The same-stem .inp file is retained for legacy use.
Numerical HF/DFT Hessian¶
Omit type=analytical to use the numerical finite-difference path.
.oqp:
dft/bhhlyp/6-31g*
hess(S0,clean=true)
geom="h2o.xyz"
Python:
from oqp.openqp import OpenQP
job = OpenQP("h2o_dft_num_hess", silent=1)
job.molecule(geometry="water", charge=0, multiplicity=1)
job.theory.dft(functional="bhhlyp", basis="6-31g*")
job.workflow.hessian(state=0, clean=True)
mol = job.run()
Legacy .inp:
[input]
runtype=hess
method=hf
functional=bhhlyp
basis=6-31g*
[scf]
type=rhf
multiplicity=1
[hess]
state=0
clean=True
For a symmetric molecule, symmetry_unique=True can reduce the numerical
finite-difference work to one displaced atom per symmetry-equivalent atom
orbit. It is an opt-in feature and falls back to the full displacement set
with an explanatory note whenever the current geometry or tolerance does not
support a complete symmetry reconstruction.
Runnable .oqp:
examples/HESS/H2O_RHF-DFT_NUM_HESS.oqp.
The same-stem .inp file is retained for legacy use.
Numerical MRSF-TDDFT Hessian¶
MRSF-TDDFT Hessians use the numerical path in the documented examples. The
MRSF state numbering follows the MRSF target-state list; state=1 is the
lowest MRSF target state, which can be the multiconfigurational ground state.
.oqp:
mrsf(nstate=2)/bhhlyp/6-31g*
hess(S0,clean=true)
geom="h2o.xyz"
Python:
from oqp.openqp import OpenQP
job = OpenQP("h2o_mrsf_hess", silent=1)
job.molecule(geometry="water", charge=0)
job.theory.mrsf(functional="bhhlyp", basis="6-31g*", nstate=2)
job.workflow.hessian(state=1, clean=True)
mol = job.run()
Legacy .inp:
[input]
runtype=hess
method=tdhf
functional=bhhlyp
basis=6-31g*
[scf]
type=rohf
multiplicity=3
[tdhf]
type=mrsf
nstate=2
[hess]
state=1
clean=True
Runnable .oqp:
examples/HESS/H2O_BHHLYP-MRSFTDDFT_NUM_HESS.oqp.
The same-stem .inp file is retained for legacy use.
Notes¶
- HF/DFT ground-state Hessians use
state=0. - TDHF/TDDFT Hessian target states use positive excited-state indices.
- SF-TDDFT and MRSF-TDDFT use spin-flip/MRSF target-state ordering, where
state
1is the lowest target state. [hess] restart=Truecan continue a numerical Hessian workflow where the corresponding temporary files are available.[hess] read=Trueaccepts only a current versioned.hess.jsonwhose electronic-model configuration, state, atoms, geometry, and isotopic masses match the present job. Referenced file contents and the OpenQP binary are not content-fingerprinted, so regenerate the sidecar after changing either one. Unsigned legacy sidecars must be regenerated withread=False.[hess] clean=Trueremoves temporary Hessian files where supported.