quri_parts.chem.utils.excitations module#

SingleExcitation#

Alias of tuple[int, int] which represents the set of orbital indices involved in excitation. The first element is the index of an occupied orbital and the second element is the index of an unoccupied index.

DoubleExcitation#

Alias of tuple[int, int, int, int] which represents the set of orbital indices involved in excitation. The first and second element is the indices of occupied orbitals and the third and fourth element is the indices of unoccupied orbitals.

excitations(n_spin_orbitals, n_fermions, delta_sz=0)#

Returns the list of excitation indices for n_spin_orbitals and n_fermions with delta_sz as a tuple of SingleExcitation and DoubleExcitation.

Parameters:
  • n_spin_orbitals (int) –

  • n_fermions (int) –

  • delta_sz (float) –

Return type:

tuple[Sequence[chem.utils.excitations.SingleExcitation], Sequence[chem.utils.excitations.DoubleExcitation]]

to_spin_symmetric_order(double_excitation)#

Convert ΔSz=0 double excitation operators to make the indices of the ladder operators consistent with that of the following equation:

\[\begin{split}\begin{align} T &= T_1+T_2 \\ &= \sum_{I, A} \left( t_{I\uparrow}^{A\uparrow} c_{A \uparrow}^{\dagger}c_{I\uparrow} + t_{I\downarrow}^{A\downarrow} c_{A \downarrow}^{\dagger}c_{I\downarrow} \right) \\ &\quad + \left[ \sum_{I, J, A, B} t_{I\uparrow J\downarrow}^{A\uparrow B\downarrow} c_{A\uparrow}^{\dagger} c_{B\downarrow}^{\dagger} c_{J\downarrow}c_{I\uparrow} + \sum_{I<J, A<B} \left( t_{I\uparrow J\uparrow}^{A\uparrow B\uparrow} c_{A\uparrow}^{\dagger} c_{B\uparrow}^{\dagger} c_{J\uparrow}c_{I\uparrow} + t_{I\downarrow J\downarrow}^{A\downarrow B\downarrow} c_{A\downarrow}^{\dagger} c_{B\downarrow}^{\dagger} c_{J\downarrow}c_{I\downarrow} \right)\right] \end{align}\end{split}\]
Ref:

Abhinav Anand et al., A Quantum Computing View on Unitary Coupled Cluster Theory, https://arxiv.org/abs/2109.15176

Parameters:

double_excitation (chem.utils.excitations.DoubleExcitation) –

Return type:

chem.utils.excitations.DoubleExcitation

add_single_excitation_circuit(circuit, excitation_indices, param_fn)#

Add a particle-conserving single excitation circuit to the given circuit implemented as a Givens rotation \(G(\theta)\)

\[\begin{split}\begin{align} G(\theta)|01\rangle &= \cos(\theta /2)|01\rangle + \sin(\theta /2)|10 \rangle \\ G(\theta)|10\rangle &= \cos(\theta /2)|10\rangle - \sin(\theta /2)|01 \rangle \\ \end{align}\end{split}\]

applied to the excitation_indices.

Parameters:
Return type:

LinearMappedUnboundParametricQuantumCircuit

add_double_excitation_circuit(circuit, excitation_indices, param_fn)#

Add a particle-conserving double excitation circuit to the given circuit implemented as a extended Givens rotation \(G^2(\theta)\) which acts on the space of 4 qubits and performs the \(U(2)\) rotation on the subspace spanned by two states, e.g. \(|0011\rangle\) and \(|1100\rangle\)

\[\begin{split}\begin{align} G^2(\theta)|0011\rangle &= \cos(\theta /2)|0011\rangle + \sin(\theta /2) |1100\rangle \\ G^2(\theta)|1100\rangle &= \cos(\theta /2)|1100\rangle - \sin(\theta /2) |0011\rangle \\ \end{align}\end{split}\]

applied to the excitation_indices.

Parameters:
Return type:

LinearMappedUnboundParametricQuantumCircuit