qml.qchem.vscf_rotations¶
- vscf_rotations(h_integrals, modals=None, cutoff=None, cutoff_ratio=1e-06)[source]¶
Generates the vibrational self-consistent field rotation matrices.
This functions generates the matrices \(U\) for each vibrational mode that transforms the primitive harmonic oscillator (HO) basis states (\(|\phi_j^{\text{HO}}\rangle\)) into the optimized vibrational self-consistent field (VSCF) states (\(|\psi_i^{\text{VSCF}}\rangle\)).
The relationship is defined as:
\[|\psi_i^{\text{VSCF}}\rangle = \sum_{j} U_{ji} |\phi_j^{\text{HO}}\rangle,\]where \(j\) runs over the number of bosonic states per mode and \(i\) denotes the index of the specific VSCF state.
- Parameters:
h_integrals (list[TensorLike[float]]) – list of n-mode expansion of Hamiltonian integrals
modals (list[int]) – list containing the maximum number of modals to consider for each vibrational mode. Default value is the maximum number of modals.
cutoff (float) – threshold value for including matrix elements into operator
cutoff_ratio (float) – ratio for discarding elements with respect to biggest element in the integrals. Default value is
1e-6.
- Returns:
list of rotation matrices for all vibrational modes
- Return type:
list(TensorLike[float])
Example
>>> symbols, charge = ['H', 'H'], 0 >>> geometry = np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 1.0]]) >>> mol = qml.qchem.Molecule(symbols, geometry, charge=charge) >>> pes = qml.qchem.vibrational_pes( ... mol, n_points=3, backend='cf_threadpool', cubic=True ... ) >>> h_integrals = qml.qchem.christiansen_integrals( ... pes, n_states=4, cubic=False, backend="cf_threadpool" ... ) >>> mode_rots = qml.qchem.vscf_rotations(h_integrals) >>> print(mode_rots[0]) [[ 0.98366824 0.17314139 -0.01438041 -0.04703255] [ 0.16168107 -0.74327452 -0.0123072 0.64903833] [ 0.00608058 -0.17368421 -0.9602084 -0.21862444] [ 0.07886101 -0.62241373 0.27864235 -0.72714547]]