def evolve_in_real_time(logfile, qc, t, c): # definizione di U3 --- https://qiskit-staging.mybluemix.net/documentation/terra/summary_of_quantum_operations.html H, U = get_matrices(t, c) two_qubit_cnot_decompose = TwoQubitBasisDecomposer(CnotGate()) C = two_qubit_cnot_decompose.__call__(U) i, j = 0, 1 parameter_string = [] for g in C: instruction, q1, q2 = g if (instruction.name == 'u3'): t1, t2, t3 = instruction.params for x in [t1, t2, t3]: parameter_string.append(round(x, 4)) if (q1[0].index == 0): idx = i else: idx = j qc.u3(t1, t2, t3, idx) if (instruction.name == 'cx'): if (q1[0].index == 0): idx_ctrl = i idx_targ = j else: idx_ctrl = j idx_targ = i qc.cx(idx_ctrl, idx_targ) logfile.write("time = %f \n" % (t)) #logfile.write("circuit: \n"+str(qc.draw())+"\n") ##logfile.write(qc.draw()) return qc
def evolve_dimer(self,qc,i,j,dt): # c=self.B H,U = get_matrices(dt,c) two_qubit_cnot_decompose = TwoQubitBasisDecomposer(CnotGate()) C = two_qubit_cnot_decompose.__call__(U) parameter_string = [] for g in C: instruction,q1,q2 = g if(instruction.name=='u3'): t1,t2,t3 = instruction.params for x in [t1,t2,t3]: parameter_string.append(round(x,4)) if(q1[0].index==0): idx = i else: idx = j qc.u3(t1,t2,t3,idx) if(instruction.name=='cx'): if(q1[0].index==0): idx_ctrl = i; idx_targ = j else: idx_ctrl = j; idx_targ = i qc.cx(idx_ctrl,idx_targ) return qc