OrcaHess

In addition to hess, geom, and atom_syms as required by the SuperOpanHess specification, ORCA HESS files expose the following attributes:

  • atom_masses – Atom masses as reported in the geometry block, in \(\mathrm u\)
  • dipders – Dipole derivatives in \(\mathrm{D_a\over B}\) atomic units, where the element in the \(i^\mathrm{\,th}\) row and \(j^\mathrm{\,th}\) column is the derivative of the \(j\)-component of the dipole moment with respect to the \(i^\mathrm{\,th}\) coordinate of the geometry
  • energy – Electronic energy in \(\mathrm{E_h}\) (sometimes stored spuriously as zero by ORCA)
  • freqs – Vibrational frequencies in wavenumbers \(\left(\mathrm{cyc\over cm}\right)\); the six (or five, for linear systems) identically-zero frequencies are always at the start of the list
  • hess_path – Full path and filename of the imported HESS file
  • in_str – Complete contents of the imported HESS file
  • ir_comps\(x\)-, \(y\)-, and \(z\)-components in \(\left(\mathrm{km\over mol}\right)^{1\over 2}\) of the transition dipole for each normal mode, where row \(i\) of this matrix matches column \(i\) of modes
  • ir_mags – Squared magnitudes of the transition dipoles \(\left(\mathrm{T}^2\right)\) in \(\mathrm{km\over mol}\), where element \(i\) of this array matches column \(i\) of modes
  • joblist – Completion status for the various displacements of a numerical Hessian computation, where the entry in the \(i^\mathrm{\,th}\) row and \(j^\mathrm{\,th}\) column indicates whether the displacement of the \(i^\mathrm{\,th}\) atom along the \(j\)-coordinate has been completed (\(1\)) or not (\(0\))
  • modes – Matrix of normal modes as column vectors, where the full modes matrix has been rotation- and translation-purified and mass-weighted, and each mode has been separately normalized
  • mwh_eigvals – 1-D array of the eigenvalues of the mass-weighted Hessian, where element \(i\) corresponds to column \(i\) of both modes and mwh_eigvecs
  • mwh_eigvecs – 2-D array of the eigenvectors of the mass-weighted Hessian, where column \(i\) corresponds to element \(i\) of mwh_eigvals and column \(i\) of modes
  • num_ats – Number of atoms in the geometry
  • polders – Derivatives of the elements of the polarizability matrix in units of \(\mathrm{B}^2~\left(=\mathrm{B^3\over B}\right)\), where the \(i^\mathrm{\,th}\) row contains the derivatives taken with respect to the \(i^\mathrm{\,th}\) coordinate of the geometry, and where in each row the matrix element derivatives are presented in the in the order of \(xx\), \(yy\), \(zz\), \(xy\), \(xz\), \(yz\)
  • raman_acts – Vector of Raman activities in units of \(\mathrm{\mathring{A}^4 \over u}\)
  • raman_depols – Vector of Raman depolarization ratios
  • temp – “Actual temperature” reported in the HESS file (sometimes stored as a spurious zero value instead of as the actual value used)

Note that not all HESS files contain all of the above data; where data is absent, in general the respective attribute(s) will be stored as None. In particular:

  • mwh_eigvals and mwh_eigvecs are generally absent unless a HESS file is used as input for a mode trajectory run (MTR)
  • polders, raman_acts, and raman_depols will generally only be present if a Raman calculation is requested
  • An exception to this general rule occurs in the case that a numerical Hessian is requested but the dipole moment calculation is disabled (%elprop Dipole False end), where the values of dipders, ir_comps, and ir_mags will be set to zero arrays of the appropriate size, instead of None

For certain data which are expected to reside in all HESS files (those annotated as (required) in the instance variables list for OrcaHess), a HessError will be raised if any are absent.

The public class OrcaHess.Pat contains re.compile() patterns used during file import. Their usefulness thus may be limited.

Import a HESS file by passing its full path and name to the OrcaHess constructor via the path keyword argument:

h = opan.hess.OrcaHess(path='h2o.hess')

The contents of the file are accessible as simple attributes:

>>> h.hess[0:6,0:6]
array([[  5.48742000e-01,  -1.01850000e-01,  -1.00000000e-06,
         -5.00222000e-01,   2.25860000e-02,   1.00000000e-06],
       [ -1.01817000e-01,   5.48777000e-01,  -2.00000000e-06,
          7.92730000e-02,  -4.85500000e-02,  -0.00000000e+00],
       [ -1.28000000e-04,   1.03000000e-04,   1.35300000e-03,
          1.49000000e-04,   2.50000000e-05,  -6.76000000e-04],
       [ -5.00624000e-01,   7.90960000e-02,   0.00000000e+00,
          5.09553000e-01,  -7.24600000e-02,  -0.00000000e+00],
       [  2.27460000e-02,  -4.84520000e-02,   1.00000000e-06,
         -7.27740000e-02,   5.77420000e-02,  -1.00000000e-06],
       [ -9.50000000e-05,  -1.99000000e-04,  -7.27000000e-04,
          9.00000000e-06,   6.10000000e-05,   5.10000000e-04]])
>>> h.geom
array([-0.088833, -0.088832,  0.      ,  1.721059, -0.31111 ,  0.      ,
       -0.311106,  1.721053,  0.      ])
>>> h.atom_syms
['O', 'H', 'H']
>>> h.num_ats
3
>>> h.freqs
array([    0.      ,     0.      ,     0.      ,     0.      ,
           0.      ,     0.      ,  1610.279974,  3761.722714,  3848.311829])

Again, if data is not available it will be stored as None:

>>> h.polders is None
True