OrbitalRotation¶
- class OrbitalRotation(rotation_unitary)¶
Bases:
FermionicGateImplements an orbital rotation.
Given an \(n \times n\) unitary matrix \(U\) (
rotation_unitary), this gate implements the single-particle basis change that maps the creation operators as\[a^\dagger_i \mapsto \sum_j U_{ji} a^\dagger_j,\]which is equivalent to applying the many-body unitary
\[\exp\left(\sum_{ij} \log(U)_{ij} \, a^\dagger_i a_j\right).\]The number of fermionic modes the gate acts on is the dimension \(n\) of
rotation_unitary.Initializing an instance of this gate can be done with the arguments listed below.
- Parameters:
rotation_unitary (np.ndarray) – the \(n \times n\) unitary matrix \(U\) defining the orbital rotation via \(a^\dagger_i \mapsto \sum_j U_{ji} a^\dagger_j\). It must be square and unitary; this is the caller’s responsibility and is not verified.
Attributes
- rotation_unitary¶
The unitary matrix representing the orbital rotation coefficients.
Methods
- classmethod from_t1_amplitudes(t1)¶
Constructs an orbital rotation from \(t_1\) (singles) amplitudes.
The rotation is the unitary \(\exp(t_1 - t_1^\dagger)\), where the \(n_\text{occ} \times n_\text{virt}\) amplitude matrix \(t_1\) is embedded into the anti-Hermitian generator over all \(n = n_\text{occ} + n_\text{virt}\) orbitals
\[G = \begin{pmatrix} 0 & -t_1^* \\ t_1^\top & 0 \end{pmatrix},\]with the occupied orbitals ordered before the virtual ones. This is the single-excitation orbital rotation entering the (L)UCJ ansatz when it is initialized from coupled-cluster amplitudes; see
UCJ.- Parameters:
t1 (ndarray) – the \(t_1\) amplitudes of shape
(nocc, nvrt), wherenoccis the number of occupied orbitals andnvrtis the number of virtual orbitals.- Returns:
An
OrbitalRotationacting on \(n = n_\text{occ} + n_\text{virt}\) modes, whoserotation_unitaryis \(\exp(t_1 - t_1^\dagger)\).- Return type: