qml.qchem.christiansen_bosonic¶
- christiansen_bosonic(one, two=None, three=None, ordered=True)[source]¶
Generates a Christiansen bosonic vibrational Hamiltonian.
The Christiansen vibrational Hamiltonian is defined based on Eqs. D4-D7 of arXiv:2504.10602 as:
\[H = \sum_{i}^M \sum_{k_i, l_i}^{N_i} C_{k_i, l_i}^{(i)} b_{k_i}^{\dagger} b_{l_i} + \sum_{i<j}^{M} \sum_{k_i,l_i}^{N_i} \sum_{k_j,l_j}^{N_j} C_{k_i k_j, l_i l_j}^{(i,j)} b_{k_i}^{\dagger} b_{k_j}^{\dagger} b_{l_i} b_{l_j},\]where \(b^{\dagger}\) and \(b\) are the bosonic creation and annihilation operators, \(M\) represents the number of normal modes and \(N\) is the number of modals. The coefficients \(C\) represent the one-mode and two-mode integrals defined as
\[C_{k_i, l_i}^{(i)} = \int \phi_i^{k_i}(Q_i) \left( T(Q_i) + V_1^{(i)}(Q_i) \right) \phi_i^{h_i}(Q_i),\]and
\[C_{k_i, k_j, l_i, l_j}^{(i,j)} = \int \int \phi_i^{k_i}(Q_i) \phi_j^{k_j}(Q_j) V_2^{(i,j)}(Q_i, Q_j) \phi_i^{l_i}(Q_i) \phi_j^{l_j}(Q_j) \; \text{d} Q_i \text{d} Q_j,\]where \(\phi\) represents a modal, \(Q\) represents a normal coordinate, \(T\) represents the kinetic energy operator and \(V\) represents the potential energy operator. Similarly, the three-mode integrals can be obtained following Eq. D7 of arXiv:2504.10602.
- Parameters:
one (TensorLike[float]) – one-body integrals with shape
(m, n, n)
wherem
andn
are the number of modes and the maximum number of bosonic states per mode, repectivelytwo (TensorLike[float]) – two-body integrals with shape
(m, m, n, n, n, n)
wherem
andn
are the number of modes and the maximum number of bosonic states per mode, repectively. Default isNone
which means that the two-body terms will not be included in the Hamiltonian.three (TensorLike[float]) – three-body integrals with shape
(m, m, m, n, n, n, n, n, n)
wherem
andn
are the number of modes and the maximum number of bosonic states per mode, repectively. Default isNone
which means that the two-body terms will not be included in the Hamiltonian.cutoff (float) – tolerance for discarding the negligible coefficients
ordered (bool) – indicates if integral matrix elements are already ordered. Default is
True
.
- Returns:
the constructed bosonic operator
- Return type:
pennylane.bose.BoseSentence
Example
>>> symbols = ['H', 'F'] >>> geometry = np.array([[0.0, 0.0, -0.40277116], [0.0, 0.0, 1.40277116]]) >>> mol = qml.qchem.Molecule(symbols, geometry) >>> pes = qml.qchem.vibrational_pes(mol, optimize=False) >>> integrals = qml.qchem.vibrational.christiansen_integrals(pes, n_states = 4) >>> print(qml.qchem.christiansen_bosonic(integrals[0])) 0.010354801267111937 * b⁺(0) b(0) + 0.0019394049410426685 * b⁺(0) b(1) + 0.00046435758469677135 * b⁺(0) b(2) + 0.001638099727072391 * b⁺(0) b(3) + 0.0019394049410426685 * b⁺(1) b(0) + 0.03139978085503162 * b⁺(1) b(1) + 0.005580004725710029 * b⁺(1) b(2) + 0.0013758584515161654 * b⁺(1) b(3) + 0.00046435758469677135 * b⁺(2) b(0) + 0.005580004725710029 * b⁺(2) b(1) + 0.05314478483410301 * b⁺(2) b(2) + 0.010479092552439511 * b⁺(2) b(3) + 0.001638099727072391 * b⁺(3) b(0) + 0.0013758584515161654 * b⁺(3) b(1) + 0.010479092552439511 * b⁺(3) b(2) + 0.07565063279464881 * b⁺(3) b(3)