def mw_pulse(self, freq, phase, rabi_f, t_start, t_stop, sigma_Gauss=None, RWA=True): self.H_mw_qubit_1 = np.array( list( qt.basis(6, 0) * qt.basis(6, 2).dag() + qt.basis(6, 1) * qt.basis(6, 3).dag()))[:, 0] self.H_mw_qubit_2 = np.array( list( qt.basis(6, 0) * qt.basis(6, 1).dag() + qt.basis(6, 2) * qt.basis(6, 3).dag()))[:, 0] if RWA == True: if sigma_Gauss == None: # Note RWA self.solver_obj.add_H1_MW_RF_RWA(self.H_mw_qubit_1, rabi_f * (np.pi), phase, freq - self.f_qubit1, t_start, t_stop) self.solver_obj.add_H1_MW_RF_RWA(self.H_mw_qubit_2, rabi_f * (np.pi), phase, freq - self.f_qubit2, t_start, t_stop) # if you want not to do the RWA, DO: (not if you frequency is high, you will need a lot of simulation points!) # self.solver_obj.add_H1_MW_RF_RWA(self.H_mw_qubit_1, rabi_f/(2*np.pi), -phase, -freq-self.f_qubit1, t_start, t_stop) # self.solver_obj.add_H1_MW_RF_RWA(self.H_mw_qubit_2, rabi_f/(2*np.pi), -phase, -freq-self.f_qubit2, t_start, t_stop) else: # Add microwave oject, where the gaussian is defined. mw_obj_1 = ME.microwave_RWA() mw_obj_1.init(rabi_f * (np.pi), phase, freq - self.f_qubit1, t_start, t_stop) mw_obj_1.add_gauss_mod(sigma_Gauss) mw_obj_2 = ME.microwave_RWA() mw_obj_2.init(rabi_f * (np.pi), phase, freq - self.f_qubit2, t_start, t_stop) mw_obj_2.add_gauss_mod(sigma_Gauss) self.solver_obj.add_H1_MW_RF_obj(self.H_mw_qubit_1, mw_obj_1) self.solver_obj.add_H1_MW_RF_obj(self.H_mw_qubit_2, mw_obj_2) else: MW_obj_1 = ME.microwave_pulse() MW_obj_1.init_normal(rabi_f * np.pi, phase, freq - self.f_qubit1, t_start, t_stop, self.H_mw_qubit_1 + self.H_mw_qubit_1.T) self.solver_obj.add_H1_MW_RF_obj(MW_obj_1) MW_obj_2 = ME.microwave_pulse() MW_obj_2.init_normal(rabi_f * np.pi, phase, freq - self.f_qubit2, t_start, t_stop, self.H_mw_qubit_2 + self.H_mw_qubit_2.T) self.solver_obj.add_H1_MW_RF_obj(MW_obj_2)
def mw_pulse(self, freq, phase, rabi_f, t_start, t_stop): self.H_mw_qubit_1 = np.array( list( qt.basis(4, 0) * qt.basis(4, 2).dag() + qt.basis(4, 1) * qt.basis(4, 3).dag()))[:, 0] self.H_mw_qubit_2 = np.array( list( qt.basis(4, 0) * qt.basis(4, 1).dag() + qt.basis(4, 2) * qt.basis(4, 3).dag()))[:, 0] MW_obj_1 = ME.microwave_pulse() MW_obj_1.init_normal(rabi_f * np.pi, phase, freq, t_start, t_stop, self.H_mw_qubit_1 + self.H_mw_qubit_1.T) self.solver_obj.add_H1_MW_RF_obj(MW_obj_1) MW_obj_2 = ME.microwave_pulse() MW_obj_2.init_normal(rabi_f * np.pi, phase, freq, t_start, t_stop, self.H_mw_qubit_2 + self.H_mw_qubit_2.T) self.solver_obj.add_H1_MW_RF_obj(MW_obj_2)
def RF_exchange(self, rabi, freq, t_start, t_stop, phase): MW_obj_1 = ME.microwave_pulse() MW_obj_1.init_normal(rabi * 2 * np.pi, phase, freq, t_start, t_stop, self.J) self.solver_obj.add_H1_MW_RF_obj(MW_obj_1)