def rabi_coupling(self): order = self.sideband_order eta = self.eta n = self.n #lists of the generalized laguere polynomails of the corresponding order evaluated at eta**2 L = np.array([laguer(i, order, eta**2) for i in n]) if self.sideband_order == 0: omega = L * np.exp(-1. / 2 * eta**2) elif self.sideband_order == 1: omega = L * np.exp(-1. / 2 * eta**2) * eta**(1) * (1 / (n + 1.))**0.5 elif self.sideband_order == 2: omega = L * np.exp(-1. / 2 * eta**2) * eta**(2) * (1 / ((n + 1.) * (n + 2)))**0.5 elif self.sideband_order == 3: omega = L * np.exp(-1. / 2 * eta**2) * eta**(3) * (1 / ((n + 1.) * (n + 2) * (n + 3)))**0.5 elif self.sideband_order == 4: omega = np.exp(-1. / 2 * eta**2) * eta**(4) * (1 / ((n + 1.) * (n + 2) * (n + 3) * (n + 4)))**0.5 else: raise NotImplementedError("Can't do that high of sideband order") omega = np.abs(omega) return omega
def omegaeff(self,omega0,sideband_order,n):#diverges for n -> infinity sideband_order=np.abs(sideband_order) x=1. for k in np.linspace(1,sideband_order,sideband_order): x=x*(n+k) result = self.eta**sideband_order*omega0/2.*np.exp(-self.eta**2./2.)*laguer(n,sideband_order,self.eta**2.)/np.sqrt(x) return result
def effective_rabi_coupling(self,n): eta = self.eta sideband=np.abs(self.sideband_order) x=1 for k in np.linspace(1,sideband,sideband): x=x*(n+k) result = (eta**sideband)*np.exp(-.5*eta**2.)*laguer(n,sideband,eta**2.)/np.sqrt(x) return result
def omegaeff(self, omega0, sideband_order, n): #diverges for n -> infinity sideband_order = np.abs(sideband_order) x = 1. for k in np.linspace(1, sideband_order, sideband_order): x = x * (n + k) result = self.eta**sideband_order * omega0 / 2. * np.exp( -self.eta**2. / 2.) * laguer(n, sideband_order, self.eta** 2.) / np.sqrt(x) return result
def effective_rabi_coupling(self, n): eta = self.eta sideband = np.abs(self.sideband_order) x = 1 for k in np.linspace(1, sideband, sideband): x = x * (n + k) result = (eta**sideband) * np.exp(-.5 * eta**2.) * laguer( n, sideband, eta**2.) / np.sqrt(x) return result
def omegaeff(self,n):#diverges for n -> infinity sideband=self.p.sideband eta=self.p.eta omega=self.p.omega x=1. for k in np.linspace(1,sideband,sideband): x=x*(n+k) result = eta**sideband*omega/2.*np.exp(-eta**2./2.)*laguer(n,sideband,eta**2.)/np.sqrt(x) return result
def rabi_coupling(self): eta = self.eta n = self.n sideband=np.abs(self.sideband_order) x=1 for k in np.linspace(1,sideband,sideband): x=x*(n+k) result = eta**sideband/2.*np.exp(-eta**2./2.)*laguer(n,sideband,eta**2.)/np.sqrt(x) return result
def omegaeff(self, n): #diverges for n -> infinity sideband = self.p.sideband eta = self.p.eta omega = self.p.omega x = 1 for k in np.linspace(1, sideband, sideband): x = x * (n + k) result = eta**sideband * omega / 2. * np.exp(-eta**2. / 2.) * laguer( n, sideband, eta**2.) / np.sqrt(x) return result
def rabi_coupling(self): order = self.sideband_order eta = self.eta n = self.n #lists of the generalized laguere polynomails of the corresponding order evaluated at eta**2 L = np.array([laguer(i, order, eta**2) for i in n]) if self.sideband_order == 0: omega = L * np.exp(-1./2*eta**2) elif self.sideband_order == 1: omega = L* np.exp(-1./2*eta**2)*eta**(1)*(1/(n+1.))**0.5 elif self.sideband_order == 2: omega = L* np.exp(-1./2*eta**2)*eta**(2)*(1/((n+1.)*(n+2)))**0.5 elif self.sideband_order == 3: omega = L* np.exp(-1./2*eta**2)*eta**(3)*(1/((n+1.)*(n+2)*(n+3)))**0.5 elif self.sideband_order == 4: omega = np.exp(-1./2*eta**2)*eta**(4)*(1/((n+1.)*(n+2)*(n+3)*(n+4)))**0.5 else: raise NotImplementedError("Can't do that high of sideband order") omega = np.abs(omega) return omega