|View source on GitHub|
Create a fermionic operator that is the generator of uccsd.
openfermion.circuits.uccsd_generator( single_amplitudes, double_amplitudes, anti_hermitian=True )
This a the most straight-forward method to generate UCCSD operators, however it is slightly inefficient. In particular, it parameterizes all possible excitations, so it represents a generalized unitary coupled cluster ansatz, but also does not explicitly enforce the uniqueness in parametrization, so it is redundant. For example there will be a linear dependency in the ansatz of single_amplitudes[i,j] and single_amplitudes[j,i].
|single_amplitudes(list or ndarray): list of lists with each sublist storing a list of indices followed by single excitation amplitudes i.e. [[[i,j],t_ij], ...] OR [NxN] array storing single excitation amplitudes corresponding to t[i,j] * (a_i^\dagger a_j - H.C.) double_amplitudes(list or ndarray): list of lists with each sublist storing a list of indices followed by double excitation amplitudes i.e. [[[i,j,k,l],t_ijkl], ...] OR [NxNxNxN] array storing double excitation amplitudes corresponding to t[i,j,k,l] * (a_i^\dagger a_j a_k^\dagger a_l - H.C.) anti_hermitian(Bool): Flag to generate only normal CCSD operator rather than unitary variant, primarily for testing|
|uccsd_generator(FermionOperator): Anti-hermitian fermion operator that is the generator for the uccsd wavefunction.|