psi4.driver.frequency(name, **kwargs)[source]

Function to compute harmonic vibrational frequencies.


frequencies(), freq()


float – Total electronic energy in Hartrees.


(float, Wavefunction) – energy and wavefunction when return_wfn specified.

  • name (str) –

    'scf' || 'mp2' || 'ci5' || etc.

    First argument, usually unlabeled. Indicates the computational method to be applied to the system.

  • molecule (molecule) –

    h2o || etc.

    The target molecule, if not the last molecule defined.

  • return_wfn (boolean) –

    'on' || \(\Rightarrow\) 'off' \(\Leftarrow\)

    Indicate to additionally return the Wavefunction calculation result as the second element (after float energy) of a tuple. Arrays of frequencies and the Hessian can be accessed through the wavefunction.

  • func (function) –

    \(\Rightarrow\) gradient \(\Leftarrow\) || energy || cbs

    Indicates the type of calculation to be performed on the molecule. The default dertype accesses 'gradient' or 'energy', while 'cbs' performs a multistage finite difference calculation. If a nested series of python functions is intended (see Function Intercalls), use keyword freq_func instead of func.

  • dertype (dertype) –

    \(\Rightarrow\) 'hessian' \(\Leftarrow\) || 'gradient' || 'energy'

    Indicates whether analytic (if available- they’re not), finite difference of gradients (if available) or finite difference of energies is to be performed.

  • irrep (int or str) –

    \(\Rightarrow\) -1 \(\Leftarrow\) || 1 || 'b2' || 'App' || etc.

    Indicates which symmetry block (Cotton ordering) of vibrational frequencies to be computed. 1, '1', or 'a1' represents \(a_1\), requesting only the totally symmetric modes. -1 indicates a full frequency calculation.


Analytic hessians are only available for RHF and UHF. For all other methods, Frequencies will proceed through finite differences according to availability of gradients or energies.


calls method


Hartree–Fock (HF) or LSDA density functional theory (DFT) [manual] [details]


>>> # [1] Frequency calculation for all modes through highest available derivatives
>>> frequency('ccsd')
>>> # [2] Frequency calculation for b2 modes through finite difference of gradients
>>> #     printing lowest mode frequency to screen and Hessian to output
>>> E, wfn = frequencies('scf', dertype=1, irrep=4, return_wfn=True)
>>> print wfn.frequencies().get(0, 0)
>>> wfn.hessian().print_out()
>>> # [3] Frequency calculation at default conditions and Hessian reuse at STP
>>> E, wfn = freq('mp2', return_wfn=True)
>>> set t 273.15
>>> set p 100000
>>> thermo(wfn, wfn.frequencies())
>>> # [4] Opt+Freq, skipping the gradient recalc at the start of the Hessian
>>> e, wfn = optimize('hf', return_wfn=True)
>>> frequencies('hf', ref_gradient=wfn.gradient())