Esempio n. 1
0
    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
Esempio n. 2
0
# -*- 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