Custom Ansatz
- slowquant.qiskit_interface.custom_ansatz.SDSfUCC(num_orbs: int, num_elec: tuple[int, int], mapper: FermionicMapper, ansatz_options: dict[str, Any]) tuple[QuantumCircuit, dict[str, int]]
Create SDS ordered factorized UCC.
The operator ordering of this implementation is,
\[\boldsymbol{U}\left|\text{CSF}\right> = \prod_{ijab}\exp\left(\theta_{jb}\left(\hat{T}_{jb}-\hat{T}_{jb}^\dagger\right)\right) \exp\left(\theta_{ijab}\left(\hat{T}_{ijab}-\hat{T}_{ijab}^\dagger\right)\right) \exp\left(\theta_{ia}\left(\hat{T}_{ia}-\hat{T}_{ia}^\dagger\right)\right)\left|\text{CSF}\right>\]10.1063/1.5133059, Eq. 25, Eq. 35 (SDS)
10.1103/PhysRevA.102.062612 (efficient circuits for JW)
10.1021/acs.jctc.8b01004 (k-UpCCGSD)
- Ansatz Options:
n_layers [int]: Number of layers.
D [bool]: Add double excitations.
pD [bool]: Add pair double excitations.
GpD [bool]: Add generalized pair double excitations.
- Parameters:
num_orbs – Number of spatial orbitals.
num_elec – Number of alpha and beta electrons.
mapper – Fermioinc to qubit mapper.
ansatz_options – Ansatz options.
- Returns:
SDS ordered fUCC ansatz circuit and R parameters needed for gradients.
- slowquant.qiskit_interface.custom_ansatz.fUCC(num_orbs: int, num_elec: tuple[int, int], mapper: FermionicMapper, ansatz_options: dict[str, Any]) tuple[QuantumCircuit, dict[str, int]]
Create factorized UCC ansatz.
10.1103/PhysRevA.102.062612 (efficient circuits for JW)
10.1021/acs.jctc.8b01004 (k-UpCCGSD)
- Ansatz Options:
n_layers [int]: Number of layers.
S [bool]: Add single excitations.
SAS [bool]: Add spin-adapted single excitations.
SAGS [bool]: Add generalized spin-adapted single excitations.
D [bool]: Add double excitations.
pD [bool]: Add pair double excitations.
GpD [bool]: Add generalized pair double excitations.
- Parameters:
num_orbs – Number of spatial orbitals.
num_elec – Number of alpha and beta electrons.
mapper – Fermioinc to qubit mapper.
ansatz_options – Ansatz options.
- Returns:
Factorized UCC ansatz circuit and R parameters needed for gradients.
- slowquant.qiskit_interface.custom_ansatz.tUPS(num_orbs: int, num_elec: tuple[int, int], mapper: FermionicMapper, ansatz_options: dict[str, Any]) tuple[QuantumCircuit, dict[str, int]]
Create tUPS ansatz.
10.1103/PhysRevResearch.6.023300 (tUPS)
10.1088/1367-2630/ac2cb3 (QNP)
- Ansatz Options:
n_layers [int]: Number of layers.
do_pp [bool]: Do perfect pairing. (default: False)
do_qnp [bool]: Do QNP tiling. (default: False)
skip_last_singles [bool]: Skip last layer of singles operators. (default: False)
- Parameters:
num_orbs – Number of spatial orbitals.
num_elec – Number of alpha and beta electrons.
mapper – Fermionic to qubit mapper.
ansatz_options – Ansatz options.
- Returns:
tUPS ansatz circuit and R parameters needed for gradients.