Skip to content

SF-TDDFT

Source access and public downloads

Repository paths identify files in the licensed engine source; they are not public downloads. For freely downloadable .oqp inputs and results, see Worked Examples.

Spin-flip TDDFT uses a high-spin open-shell reference and tdhf.type=sf. It is useful for accessing low-spin target states from a high-spin reference. MRSF-TDDFT is the recommended OpenQP route when the mixed-reference correction is needed to reduce spin contamination and to describe multiconfigurational ground-state surfaces.

In Python scripts, SF-TDDFT is a theory choice. Select the calculation type separately with job.workflow.* only when you need a non-energy workflow.

.oqp uses response roots

The spin character of an SF root is not known before diagonalization. State-specific .oqp input must therefore use root=N, for example:

sf(nstate=3)/bhhlyp/6-31g* grad(root=1)
geom="h2o.xyz"

Do not write an S/T label or omit the root on an SF state-specific driver.

Energy

.oqp:

sf(nstate=3)/bhhlyp/6-31g*
geom="h2o.xyz"

Python:

from oqp.openqp import OpenQP

job = OpenQP("h2o_sf", silent=1)
job.molecule(geometry="water", charge=0)
job.theory.sf_tddft(functional="bhhlyp", basis="6-31g*", nstate=3)

mol = job.run()
print("SF-TDDFT energies:", mol.get_td_energies())

Canonical .oqp input:

sf(nstate=3)/bhhlyp/6-31g*
geom="molecule.xyz"

Runnable .oqp: examples/SF-TDDFT/H2O_BHHLYP-SFTDDFT_ENERGY.oqp.

Gradient

In SF-TDDFT, root 1 means the lowest spin-flip target state, not the first ordinary TDDFT excited state.

.oqp:

sf/bhhlyp/6-31g* grad(root=3)
geom="h2o.xyz"

Python:

from oqp.openqp import OpenQP

job = OpenQP("h2o_sf_grad", silent=1)
job.molecule(geometry="water", charge=0)
job.theory.sf_tddft(functional="bhhlyp", basis="6-31g*", nstate=3)
job.workflow.gradient(state=3)

mol = job.run()
gradient = mol.get_grad()

Canonical .oqp input:

sf/bhhlyp/6-31g* grad(root=3)
geom="molecule.xyz"

Runnable .oqp: examples/SF-TDDFT/H2O_BHHLYP-SFTDDFT_GRADIENT.oqp.

Notes

  • SF-TDDFT accepts an ROHF or a UHF high-spin reference (scf.type=rohf or type=uhf). With UHF, the spin-flip holes are the alpha-occupied orbitals and the particles are the beta-virtual orbitals of the unrestricted reference. The UHF path provides energies and analytic gradients, including the gradient-driven optimize, meci and tci workflows. MECP is rejected for SF-TDDFT with either reference: the SF kernels do not depend on tdhf.multiplicity, so the two crossing surfaces would be identical; use MRSF or UMRSF for MECP. Numerical Hessians (runtype=hess, type=numerical) still require the ROHF reference. The UHF gradient also rejects range-separated (CAM/LRC) functionals. Nonadiabatic couplings, NAMD and SOC are not SF-TDDFT workflows with either reference; they require the MRSF response model (tdhf.type=mrsf), see MRSF-TDDFT.
  • Select the UHF reference through the Python API with job.theory.sf_tddft(..., reference="uhf") in Python. Concise .oqp routes such as sf/... always use the ROHF reference, because scf.type is route-selected there and the route takes no reference option.
  • Make sure the UHF reference is the lowest triplet. A UHF energy above the ROHF energy proves the solution is not the lowest one. A UHF energy below ROHF does not prove the opposite, because a metastable UHF solution can also lie below ROHF. Confirm by comparing several guesses, for example guess.type=sap and type=minao, or with a wavefunction stability analysis. For the water example, the Huckel, modified Huckel and auto guesses converge to higher triplets in 6-31G* and cc-pVDZ. The core-Hamiltonian guess does so in cc-pVDZ. guess.type=sap reaches the lowest UHF solution in both bases; see the Python API for a separately qualified unrestricted reference.
  • The internal tdhf.nstate must include the highest spin-flip state requested by a gradient or follow-up workflow; .oqp input widens the root count from root=N automatically.
  • For the mixed-reference correction and OpenQP's main multistate workflow, use MRSF-TDDFT.

Scientific references

Spin-flip theory.