def wobble_force(self, rho_in, times, phi_0=0): # wobble hamiltonian, time independent parts H1 = -1j / 2 * self.ad * (self.Omega_R_up_1 * self.eta_1 * self.uu_id + self.Omega_R_up_2 * self.eta_2 * self.id_uu + self.Omega_R_dn_1 * self.eta_1 * self.dd_id + self.Omega_R_dn_2 * self.eta_2 * self.id_dd) H2 = 1j / 2 * self.a * (self.Omega_R_up_1 * self.eta_1 * self.uu_id + self.Omega_R_up_2 * self.eta_2 * self.id_uu + self.Omega_R_dn_1 * self.eta_1 * self.dd_id + self.Omega_R_dn_2 * self.eta_2 * self.id_dd) # wobble hamiltonian, time dependent parts def H1_coeff(t, args): return exp(-1j * (self.delta_g * t + phi_0)) def H2_coeff(t, args): return exp(1j * (self.delta_g * t + phi_0)) # combine H_wobble = [[H1, H1_coeff], [H2, H2_coeff]] # decay operators c_ops_wobble = [] if self.n_dot is not 0: c_ops_wobble.append(sqrt(self.n_dot) * self.a) c_ops_wobble.append(sqrt(self.n_dot) * self.ad) if self.tau_mot is not 0: c_ops_wobble.append(sqrt(2 / self.tau_mot) * self.ad * self.a) if self.gamma_el is not 0: c_ops_wobble.append( sqrt(self.gamma_el / 4) * (tensor(self.sz, qeye(2), qeye(self.nHO)))) c_ops_wobble.append( sqrt(self.gamma_el / 4) * (tensor(qeye(2), self.sz, qeye(self.nHO)))) if self.gamma_ram is not 0: c_ops_wobble.append( sqrt(self.gamma_ram) * tensor(sigmap(), qeye(2), qeye(self.nHO))) c_ops_wobble.append( sqrt(self.gamma_ram) * tensor(qeye(2), sigmap(), qeye(self.nHO))) c_ops_wobble.append( sqrt(self.gamma_ram) * tensor(sigmam(), qeye(2), qeye(self.nHO))) c_ops_wobble.append( sqrt(self.gamma_ram) * tensor(qeye(2), sigmam(), qeye(self.nHO))) if self.tau_spin is not 0: c_ops_wobble.append( sqrt(1 / self.tau_spin / 2) * tensor(self.sz, qeye(2), qeye(self.nHO))) c_ops_wobble.append( sqrt(1 / self.tau_spin / 2) * tensor(qeye(2), self.sz, qeye(self.nHO))) # integrate Hamiltonian options = Options() options.nsteps = 50000 after_wobble = mesolve(H_wobble, rho_in, times, c_ops_wobble, [], options=options) return after_wobble
# -*- coding: utf-8 -*- """ Created on Sun Oct 17 22:32:38 2021 Copyright 2021 Analabha Roy ([email protected]): Released under the MIT license @ https://opensource.org/licenses/MIT """ from scipy.special import jn_zeros import numpy as np import matplotlib.pyplot as plt from qutip import destroy, floquet_modes from qutip.parallel import parallel_map from qutip.solver import Options import qutip.settings as qset options = Options() options.nsteps = 1e4 plt.rcParams.update({ "figure.figsize": (10, 10), "text.usetex": True, "font.family": "sans-serif", "font.size": 22, "font.sans-serif": ["Helvetica"] }) # Define paramters N = 30 # number of basis states to consider a = destroy(N) time_period = 0.2 h0 = 0.1 # Check these!!! q = (a.dag() + a) / N