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 geometryenergy– 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 listhess_path– Full path and filename of the imported HESS filein_str– Complete contents of the imported HESS fileir_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\) ofmodesir_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\) ofmodesjoblist– 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 normalizedmwh_eigvals– 1-D array of the eigenvalues of the mass-weighted Hessian, where element \(i\) corresponds to column \(i\) of bothmodesandmwh_eigvecsmwh_eigvecs– 2-D array of the eigenvectors of the mass-weighted Hessian, where column \(i\) corresponds to element \(i\) ofmwh_eigvalsand column \(i\) ofmodesnum_ats– Number of atoms in the geometrypolders– 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 ratiostemp– “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_eigvalsandmwh_eigvecsare generally absent unless a HESS file is used as input for a mode trajectory run (MTR)polders,raman_acts, andraman_depolswill 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 ofdipders,ir_comps, andir_magswill be set to zero arrays of the appropriate size, instead ofNone
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