UCCSD

class UCCSD(num_orbitals, num_particles, reps=1, active_occupied=None, active_unoccupied=None, initial_state=None, qubit_mapping='parity', two_qubit_reduction=True, num_time_slices=1, shallow_circuit_concat=True, z2_symmetries=None, method_singles='both', method_doubles='ucc', excitation_type='sd', same_spin_doubles=True, skip_commute_test=False)[source]

This trial wavefunction is a Unitary Coupled-Cluster Single and Double excitations variational form. For more information, see https://arxiv.org/abs/1805.04340 And for the singlet q-UCCD (full) and pair q-UCCD) see: https://arxiv.org/abs/1911.10864

Constructor.

Parameters
  • num_orbitals (int) – number of spin orbitals, has a min. value of 1.

  • num_particles (Union[List[int], int]) – number of particles, if it is a list, the first number is alpha and the second number if beta.

  • reps (int) – number of repetitions of basic module, has a min. value of 1.

  • active_occupied (Optional[List[int]]) – list of occupied orbitals to consider as active space.

  • active_unoccupied (Optional[List[int]]) – list of unoccupied orbitals to consider as active space.

  • initial_state (Optional[InitialState]) – An initial state object.

  • qubit_mapping (str) – qubit mapping type.

  • two_qubit_reduction (bool) – two qubit reduction is applied or not.

  • num_time_slices (int) – parameters for dynamics, has a min. value of 1.

  • shallow_circuit_concat (bool) – indicate whether to use shallow (cheap) mode for circuit concatenation.

  • z2_symmetries (Optional[Z2Symmetries]) – represent the Z2 symmetries, including symmetries, sq_paulis, sq_list, tapering_values, and cliffords.

  • method_singles (str) – specify the single excitation considered. ‘alpha’, ‘beta’, ‘both’ only alpha or beta spin-orbital single excitations or both (all of them).

  • method_doubles (str) – specify the single excitation considered. ‘ucc’ (conventional ucc), succ (singlet ucc), succ_full (singlet ucc full), pucc (pair ucc).

  • excitation_type (str) – specify the excitation type ‘sd’, ‘s’, ‘d’ respectively for single and double, only single, only double excitations.

  • same_spin_doubles (bool) – enable double excitations of the same spin.

  • skip_commute_test (bool) –

    when tapering excitation operators we test and exclude any that do

    not commute with symmetries. This test can be skipped to include all tapered excitation operators whether they commute or not.

    Raises:

    ValueError: Num particles list is not 2 entries

Attributes

UCCSD.double_excitations

Getter of double excitation list :returns: double excitation list :rtype: list[list[int]]

UCCSD.excitation_pool

Getter of full list of available excitations (called the pool) :returns: excitation pool :rtype: list[WeightedPauliOperator]

UCCSD.num_parameters

Number of parameters of the variational form.

UCCSD.num_qubits

Number of qubits of the variational form.

UCCSD.parameter_bounds

Parameter bounds.

UCCSD.preferred_init_points

Getter of preferred initial points based on the given initial state.

UCCSD.setting

UCCSD.single_excitations

Getter of single excitation list :returns: single excitation list :rtype: list[list[int]]

UCCSD.support_parameterized_circuit

Whether or not the sub-class support parameterized circuit.

Methods

UCCSD.compute_excitation_lists(…[, …])

Computes single and double excitation lists.

UCCSD.compute_excitation_lists_singlet(…)

Outputs the list of lists of grouped excitation.

UCCSD.construct_circuit(parameters[, q])

Construct the variational form, given its parameters.

UCCSD.get_entangler_map(map_type, num_qubits)

returns entangler map

UCCSD.group_excitations(list_de, num_orbitals)

Groups the excitations and gives out the remaining ones in the list_de_temp list because those excitations are controlled by the same parameter in full singlet UCCSD unlike in usual UCCSD where every excitation has its own parameter.

UCCSD.group_excitations_if_same_ao(list_de, …)

Define that, given list of double excitations list_de and number of spin-orbitals num_orbitals, which excitations involve the same spatial orbitals for full singlet UCCSD.

UCCSD.manage_hopping_operators()

Triggers the adaptive behavior of this UCCSD instance.

UCCSD.order_labels_for_hopping_ops(…)

Orders the hopping operators according to the grouped excitations for the full singlet UCCSD.

UCCSD.pop_hopping_operator()

Pops the hopping operator that was added last.

UCCSD.push_hopping_operator(excitation)

Pushes a new hopping operator.

UCCSD.same_ao_double_excitation_block_spin(…)

Regroups the excitations that involve same spatial orbitals for example, with labeling.

UCCSD.validate_entangler_map(entangler_map, …)

validate entangler map