The local unitary cluster Jastrow (LUCJ) ansatz¶
This page explains the local unitary cluster Jastrow (LUCJ) ansatz, which was originally introduced in this paper. For a guide on simulating the LUCJ ansatz using ffsim, see How to simulate the local unitary cluster Jastrow (LUCJ) ansatz.
The general unitary cluster Jastrow (UCJ) ansatz¶
The LUCJ ansatz is a specialized form of the general unitary cluster Jastrow (UCJ) ansatz, which has the form
where
In ffsim, the UCJ ansatz is represented using classes that store the diagonal Coulomb matrices and orbital rotations as Numpy arrays. To facilitate variational optimization of the ansatzes, these classes implement methods for conversion to and from a vector of real-valued parameters. The parameter vector stores the entries of the UCJ matrices in a non-redundant way (for the orbital rotations, the parameter vector actually stores the entries of their logarithm).
Spin-balanced and spin-unbalanced ansatzes¶
ffsim implements two variants of the UCJ ansatz, a “spin-balanced” ansatz, which is appropriate to apply to a closed-shell reference state, and a “spin-unbalanced” ansatz, which is appropriate to apply to an open-shell initial reference state.
In the spin-balanced ansatz,
In the spin-unbalanced ansatz,
The local UCJ (LUCJ) ansatz¶
Implementing the
As an example, consider a square lattice qubit topology. We can place the
With this setup, orbitals with the same spin are connected with a line topology, while orbitals with different spins are connected when they share the same spatial orbital. This yields the following index constraints on the
In other words, if the