qml.qchem.localize_normal_modes¶
- localize_normal_modes(freqs, vecs, bins=[2600])[source]¶
Localizes vibrational normal modes.
The normal modes are localized by separating frequencies into specified ranges following the procedure described in J. Chem. Phys. 141, 104105 (2014).
- Parameters
freqs (list[float]) – normal mode frequencies in
cm^-1
vecs (TensorLike[float]) – displacement vectors for normal modes
bins (list[float]) – List of upper bound frequencies in
cm^-1
for creating separation bins . Default is[2600]
which means having one bin for all frequencies between0
and2600 cm^-1
.
- Returns
- A tuple containing the following:
list[float] : localized frequencies
TensorLike[float] : localized displacement vectors
TensorLike[float] : localization matrix describing the relationship between original and localized modes.
- Return type
tuple
Example
>>> freqs = np.array([1326.66001461, 2297.26736859, 2299.65032901]) >>> vectors = np.array([[[ 5.71518696e-18, -4.55642350e-01, 5.20920552e-01], ... [ 1.13167924e-17, 4.55642350e-01, 5.20920552e-01], ... [-1.23163569e-17, 5.09494945e-12, -3.27565762e-02]], ... [[-4.53008817e-17, 4.90364125e-01, 4.90363894e-01], ... [-1.98591028e-16, 4.90361513e-01, -4.90361744e-01], ... [-2.78235498e-18, -3.08350419e-02, -6.75886679e-08]], ... [[ 5.75393451e-17, 5.37047963e-01, 4.41957355e-01], ... [ 6.53049347e-17, -5.37050348e-01, 4.41959740e-01], ... [-5.49709883e-17, 7.49851221e-08, -2.77912798e-02]]]) >>> freqs_loc, vecs_loc, uloc = qml.qchem.localize_normal_modes(freqs, vectors) >>> freqs_loc array([1332.62008773, 2296.73455892, 2296.7346082 ])