コード例 #1
0
ファイル: delay_cc.py プロジェクト: mbhatt1/QNET
    def _toSLH(self):

        # These numerically optimal solutions were obtained as outlined in
        # my blog post on the Mabuchi-Lab internal blog
        # email me ([email protected])for details.
        if self.N == 1:
            kappa0 = 9.28874141848 / self.tau
            kappas = np_array([7.35562929]) / self.tau
            Deltas = np_array([3.50876192]) / self.tau
        elif self.N == 3:
            kappa0 = 14.5869543803 / self.tau
            kappas = np_array([ 13.40782559, 9.29869721]) / self.tau
            Deltas = np_array([3.48532283, 7.14204585]) / self.tau
        elif self.N == 5:
            kappa0 = 19.8871474779 / self.tau
            kappas = np_array([19.03316217, 10.74270752, 16.28055664]) / self.tau
            Deltas = np_array([3.47857213, 10.84138821, 7.03434809]) / self.tau
        else:
            raise NotImplementedError("The number of cavities to realize the delay must be one of 1,3 or 5.")

        h0 = make_namespace_string(self.name, 'C0')
        hp =  [make_namespace_string(self.name, "C{:d}p".format(n+1)) for n in range((self.N-1)/2)]
        hm =  [make_namespace_string(self.name, "C{:d}m".format(n+1)) for n in range((self.N-1)/2)]


        S = Matrix([1.])
        slh0 = SLH(S, Matrix([[sqrt(kappa0) * Destroy(h0)]]), ZeroOperator)
        slhp = [SLH(S, Matrix([[sqrt(kj) * Destroy(hj)]]), Dj * Create(hj) * Destroy(hj)) for (kj, Dj, hj) in zip(kappas, Deltas, hp)]
        slhm = [SLH(S, Matrix([[sqrt(kj) * Destroy(hj)]]), -Dj * Create(hj) * Destroy(hj)) for (kj, Dj, hj) in zip(kappas, Deltas, hm)]

        return freduce(lambda a, b: a << b, slhp + slhm, slh0)
コード例 #2
0
ファイル: latch_cc.py プロジェクト: mbhatt1/QNET
 def C2(self):
     return ThreePortKerrCavity(make_namespace_string(self.name, 'C2'),
                                kappa_2=self.kappa_2,
                                chi=self.chi,
                                kappa_1=self.kappa_1,
                                kappa_3=self.kappa_3,
                                Delta=self.Delta)
コード例 #3
0
    def tls_space(self):
        """
        The two-level-atom's Hilbert space.

        :type: :py:class:`qnet.algebra.hilbert_space_algebra.LocalSpace`
        """
        return local_space("a", make_namespace_string(self.namespace, self.name), basis = ('h', 'g'))
コード例 #4
0
    def fock_space(self):
        """
        The cavity mode's Hilbert space.

        :type: :py:class:`qnet.algebra.hilbert_space_algebra.LocalSpace`
        """
        return local_space("f", make_namespace_string(self.namespace, self.name), dimension = self.FOCK_DIM)
コード例 #5
0
    def tls_space(self):
        """
        The two-level-atom's Hilbert space.

        :type: :py:class:`qnet.algebra.hilbert_space_algebra.LocalSpace`
        """
        return local_space("a", make_namespace_string(self.namespace, self.name), basis = ('h', 'g'))
コード例 #6
0
    def fock_space(self):
        """
        The cavity mode's Hilbert space.

        :type: :py:class:`qnet.algebra.hilbert_space_algebra.LocalSpace`
        """
        return local_space("f", make_namespace_string(self.namespace, self.name), dimension = self.FOCK_DIM)
コード例 #7
0
ファイル: open_lossy_cc.py プロジェクト: mbhatt1/QNET
 def LSS_ci_ls(self):
     return Beamsplitter(make_namespace_string(self.name, 'LSS_ci_ls'),
                         theta=self.theta_LS0)
コード例 #8
0
ファイル: open_lossy_cc.py プロジェクト: mbhatt1/QNET
 def KC(self):
     return KerrCavity(make_namespace_string(self.name, 'KC'),
                       kappa_2=self.kappa,
                       chi=self.chi,
                       kappa_1=self.kappa,
                       Delta=self.Delta)
コード例 #9
0
ファイル: open_lossy_cc.py プロジェクト: mbhatt1/QNET
 def BS(self):
     return Beamsplitter(make_namespace_string(self.name, 'BS'),
                         theta=self.theta)
コード例 #10
0
ファイル: pseudo_nand_cc.py プロジェクト: mbhatt1/QNET
 def W_beta(self):
     return Displace(make_namespace_string(self.name, 'W_beta'), alpha = self.beta)
コード例 #11
0
ファイル: pseudo_nand_cc.py プロジェクト: mbhatt1/QNET
 def P(self):
     return Phase(make_namespace_string(self.name, 'P'), phi = self.phi)
コード例 #12
0
ファイル: mach_zehnder_cc.py プロジェクト: mabuchilab/QNET
 def B2(self):
     return Beamsplitter(make_namespace_string(self.name, "B2"))
コード例 #13
0
 def Phase2(self):
     return Phase(make_namespace_string(self.name, 'Phase2'), phi = self.phip)
コード例 #14
0
 def B3(self):
     return Beamsplitter(make_namespace_string(self.name, 'B3'))
コード例 #15
0
 def NAND2(self):
     return PseudoNAND(make_namespace_string(self.name, 'NAND2'))
コード例 #16
0
ファイル: open_lossy_cc.py プロジェクト: mabuchilab/QNET
 def LSS_ci_ls(self):
     return Beamsplitter(make_namespace_string(self.name, 'LSS_ci_ls'), theta = self.theta_LS0)
コード例 #17
0
 def W(self):
     return Displace(make_namespace_string(self.name, 'W'),
                     alpha=self.alpha)
コード例 #18
0
ファイル: mach_zehnder_cc.py プロジェクト: mabuchilab/QNET
 def P(self):
     return Phase(make_namespace_string(self.name, "P"), phi=self.phi)
コード例 #19
0
 def B2(self):
     return Beamsplitter(make_namespace_string(self.name, 'B2'), theta = self.theta)
コード例 #20
0
ファイル: pseudo_nand_cc.py プロジェクト: mbhatt1/QNET
 def BS1(self):
     return Beamsplitter(make_namespace_string(self.name, 'BS1'))
コード例 #21
0
 def C(self):
     return ThreePortKerrCavity(make_namespace_string(self.name, 'C'), kappa_2 = self.kappa_2, chi = self.chi, kappa_1 = self.kappa_1, kappa_3 = self.kappa_3, Delta = self.Delta)
コード例 #22
0
ファイル: pseudo_nand_cc.py プロジェクト: mabuchilab/QNET
 def K(self):
     return KerrCavity(make_namespace_string(self.name, 'K'), kappa_2 = self.kappa, chi = self.chi, kappa_1 = self.kappa, Delta = self.Delta)
コード例 #23
0
 def W(self):
     return Displace(make_namespace_string(self.name, 'W'), alpha = self.alpha)
コード例 #24
0
ファイル: pseudo_nand_latch_cc.py プロジェクト: mbhatt1/QNET
 def NAND2(self):
     return PseudoNAND(make_namespace_string(self.name, 'NAND2'))