qml.qchem.taylor_coeffs¶
- taylor_coeffs(pes, max_deg=4, min_deg=3)[source]¶
Compute fitted coefficients for Taylor vibrational Hamiltonian.
The coefficients are defined following Eq. 5 of arXiv:1703.09313 as:
\[\Phi_{ijk} = \frac{k_{ijk}}{\sqrt{\omega_i \omega_j \omega_k}} \quad \text{and} \quad \Phi_{ijkl} = \frac{k_{ijkl}}{\sqrt{\omega_i \omega_j \omega_k \omega_l}},\]where \(\Phi_{ijk}\) and \(\Phi_{ijkl}\) are the third- and fourth-order reduced force constants, respectively, defined in terms of the third- and fourth-order partial derivatives of the potential energy surface data.
- Parameters
pes (VibrationalPES) – object containing the vibrational potential energy surface data
max_deg (int) – maximum degree of Taylor form polynomial
min_deg (int) – minimum degree of Taylor form polynomial
- Returns
the coefficients of the one-body, two-body and three-body terms
- Return type
tuple(TensorLike[float])
Example
>>> pes_onemode = np.array([[0.309, 0.115, 0.038, 0.008, 0.000, 0.006, 0.020, 0.041, 0.070]]) >>> pes_twomode = np.zeros((1, 1, 9, 9)) >>> dipole_onemode = np.zeros((1, 9, 3)) >>> gauss_weights = np.array([3.96e-05, 4.94e-03, 8.85e-02, ... 4.33e-01, 7.20e-01, 4.33e-01, ... 8.85e-02, 4.94e-03, 3.96e-05]) >>> grid = np.array([-3.19, -2.27, -1.47, -0.72, 0.0, 0.72, 1.47, 2.27, 3.19]) >>> pes_object = qml.qchem.VibrationalPES( ... freqs=np.array([0.025]), ... grid=grid, ... uloc=np.array([[1.0]]), ... gauss_weights=gauss_weights, ... pes_data=[pes_onemode, pes_twomode], ... dipole_data=[dipole_onemode], ... localized=True, ... dipole_level=1, ... ) >>> one, two = qml.qchem.taylor_coeffs(pes_object, 4, 2) >>> print(one) [[-0.00088528 -0.00361425 0.00068143]]
code/api/pennylane.qchem.taylor_coeffs
Download Python script
Download Notebook
View on GitHub