Path: blob/main/chemistry-simulations/aux_files/krylov/qchem/operator_pool.py
583 views
from cudaq import spin1from aux_files.krylov.qchem.uccsd import uccsd_get_excitation_list, add_single_excitation, add_double_excitation2import numpy as np345def get_uccsd_pool(nelectrons, n_qubits, spin=0):67singles_alpha, singles_beta, doubles_mixed, doubles_alpha, doubles_beta = \8uccsd_get_excitation_list(nelectrons, n_qubits, spin)910n_alpha_singles = len(singles_alpha)11n_beta_singles = len(singles_beta)12n_mixed_doubles = len(doubles_mixed)13n_alpha_doubles = len(doubles_alpha)14n_beta_doubles = len(doubles_beta)1516pool_op = []1718for i in range(n_alpha_singles):19p_alpha_occ, q_alpha_virt = singles_alpha[i]20add_single_excitation(pool_op, p_alpha_occ, q_alpha_virt)2122for i in range(n_beta_singles):23p_beta_occ, q_beta_virt = singles_beta[i]24add_single_excitation(pool_op, p_beta_occ, q_beta_virt)2526for i in range(n_mixed_doubles):27p_alpha_occ, q_beta_occ, r_beta_virt, s_alpha_virt = doubles_mixed[i]28add_double_excitation(pool_op, p_alpha_occ, q_beta_occ, r_beta_virt,29s_alpha_virt)3031for i in range(n_alpha_doubles):32p_alpha_occ, q_alpha_occ, r_alpha_virt, s_alpha_virt = doubles_alpha[i]33add_double_excitation(pool_op, p_alpha_occ, q_alpha_occ, r_alpha_virt,34s_alpha_virt)3536for i in range(n_beta_doubles):37p_beta_occ, q_beta_occ, r_beta_virt, s_beta_virt = doubles_beta[i]3839add_double_excitation(pool_op, p_beta_occ, q_beta_occ, r_beta_virt,40s_beta_virt)4142sign_pool = []43mod_pool = []44for i in range(len(pool_op)):45op_i = pool_op[i]4647temp_op = []48temp_coef = []4950for term in op_i:51temp_coef.append(term.evaluate_coefficient())52temp_op.append(term.get_pauli_word(n_qubits))535455mod_pool.append(temp_op)56sign_pool.append(temp_coef)5758return pool_op, mod_pool, sign_pool596061