h_pqrs = molecule.two_body_integrals Enuc = molecule.nuclear_repulsion fci_energy = molecule.fci_energy print(fci_energy) # OpenFermion Hamiltonian molecular_hamiltonian = molecule.get_molecular_hamiltonian() fermion_hamiltonian = get_fermion_operator(molecular_hamiltonian) qubit_hamiltonian = jordan_wigner(fermion_hamiltonian) qubit_hamiltonian.compress() #print('The Jordan-Wigner Hamiltonian in canonical basis follows:\n{}'.format(qubit_hamiltonian)) circuit_list = qubit_hamiltonian #h_pq, h_pqrs = molecular2sec_quant(h_pq,h_pqrs) Model = SecondQuantizedHamiltonian(2, 4, h_pq, h_pqrs, nuclear_repulsion=Enuc, add_spin=True, anti_symmetric=False) #Model.get_circuit() circuit_list2 = Model.circuit_list('vqe') print('OepnFerm') for i in circuit_list: print(i) print('New') for i in circuit_list2: print(i)
from quantum_circuit import QuantumCircuit, SecondQuantizedHamiltonian, PairingHamiltonian, CircuitList, PauliString, X l = 4 # number of spin orbitals / number of qubits n = 2 # Number of occupied spin orbitals Rs = [0.4, 0.74, 1.0, 1.6, 2.2, 2.8] fci = np.zeros_like(Rs) hf = np.zeros_like(Rs) vqe_factors = np.zeros_like(Rs) for i, R in enumerate(Rs): h, v, Enuc, E = get_h2_matrix(R) fci[i] = E['fci'] hf[i] = E['hf'] h2 = SecondQuantizedHamiltonian(n, l, h, v, nuclear_repulsion=Enuc, add_spin=True) for p in h2.circuit_list('vqe'): if len(p) == 0: print('factor:', p.factor) vqe_factors[i] = p.factor np.save('fci.npy', fci) np.save('hf.npy', hf) np.save('vqe_factors.npy', vqe_factors)