Ejemplo n.º 1
0
 def test_finite_freq_F3_srl(self):
     Gamma_L = 1.; Gamma_R = 0.5
     freq1 = np.linspace(-10,10,50)
     freq2 = np.linspace(-10,10,50)
     expected_F3 = utils.skewness_srl(freq1, freq2, Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     npt.assert_allclose(expected_F3, srl_solver.third_order_fano_factor(freq1, freq2))
Ejemplo n.º 2
0
 def test_cache_is_stale_after_refresh(self):
     srl_solver = utils.setup_srl_solver_from_hilbert_space(1., 1.)
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale) # check __cache_is_stale is True on initialization
     
     # cache should not be stale after refresh
     srl_solver.refresh_cache()
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
Ejemplo n.º 3
0
 def test_mean_srl(self):
     '''Test of mean calculation for SRL model.'''
     Gamma_L = 1.
     Gamma_R = 0.5
     expected_mean = utils.mean_srl(Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(
         Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_mean, srl_solver.mean())
Ejemplo n.º 4
0
    def test_cache_is_stale_after_refresh(self):
        srl_solver = utils.setup_srl_solver_from_hilbert_space(1., 1.)
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale
                        )  # check __cache_is_stale is True on initialization

        # cache should not be stale after refresh
        srl_solver.refresh_cache()
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
Ejemplo n.º 5
0
 def test_from_hilbert_space_constructor(self):
     '''Test secondary 'constructor' initializes main attributes properly.'''
     Gamma_L = 1.; Gamma_R = 1.
     solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     npt.assert_allclose(solver.L, utils.reduced_srl_liouvillian(Gamma_L, Gamma_R))
     npt.assert_allclose(solver.jump_op, np.array([[0,1],[0,0]]))
     npt.assert_allclose(solver.pops, np.array([1,1]))
     self.assertTrue(solver.from_hilbert_space)
Ejemplo n.º 6
0
 def test_zero_freq_F2_srl(self):
     '''Functionality test for second order Fano factor of SRL model with single frequency.'''
     Gamma_R = 0.5
     Gamma_L = 1.
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(
         Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_F2,
                            srl_solver.second_order_fano_factor(0))
Ejemplo n.º 7
0
 def test_finite_freq_F2_srl(self):
     '''Functionality test for second order Fano factor using SRL model with an array of frequencies.'''
     Gamma_R = 0.5; Gamma_L = 1.
     freq = np.linspace(0,10,100)
     srl_liouvillian = utils.reduced_srl_liouvillian(Gamma_L, Gamma_R)
     srl_jump_op = np.array([[0, Gamma_R],[0, 0]])
     expected_F2 = utils.finite_freq_F2(freq, srl_liouvillian, srl_jump_op)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     npt.assert_allclose(expected_F2, srl_solver.second_order_fano_factor(freq))
Ejemplo n.º 8
0
 def test_generate_cumulant_srl(self):
     Gamma_R = 0.5; Gamma_L = 1.
     expected_mean = utils.mean_srl(Gamma_L, Gamma_R)
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     expected_F3 = utils.skewness_srl(0, 0, Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_mean, srl_solver.generate_cumulant(1)[0][0])
     self.assertAlmostEqual(expected_F2, srl_solver.generate_cumulant(2)[0][1])
     self.assertAlmostEqual(expected_F3, srl_solver.generate_cumulant(3)[0][2])
Ejemplo n.º 9
0
 def test_from_hilbert_space_constructor(self):
     '''Test secondary 'constructor' initializes main attributes properly.'''
     Gamma_L = 1.
     Gamma_R = 1.
     solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     npt.assert_allclose(solver.L,
                         utils.reduced_srl_liouvillian(Gamma_L, Gamma_R))
     npt.assert_allclose(solver.jump_op, np.array([[0, 1], [0, 0]]))
     npt.assert_allclose(solver.pops, np.array([1, 1]))
     self.assertTrue(solver.from_hilbert_space)
Ejemplo n.º 10
0
 def test_finite_freq_F3_srl(self):
     Gamma_L = 1.
     Gamma_R = 0.5
     freq1 = np.linspace(-10, 10, 50)
     freq2 = np.linspace(-10, 10, 50)
     expected_F3 = utils.skewness_srl(freq1, freq2, Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(
         Gamma_L, Gamma_R)
     npt.assert_allclose(expected_F3,
                         srl_solver.third_order_fano_factor(freq1, freq2))
Ejemplo n.º 11
0
 def test_cache_refresh_D_rates(self):
     '''Functionality test for refresh cache behaviour.'''
     Gamma_L = 1.
     Gamma_R = 1.
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_F2, srl_solver.second_order_fano_factor(0))
     
     Gamma_R = 0.5
     srl_solver.D_rates = np.array([Gamma_R, Gamma_L])
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_F2, srl_solver.second_order_fano_factor(0))
Ejemplo n.º 12
0
 def test_finite_freq_F2_srl(self):
     '''Functionality test for second order Fano factor using SRL model with an array of frequencies.'''
     Gamma_R = 0.5
     Gamma_L = 1.
     freq = np.linspace(0, 10, 100)
     srl_liouvillian = utils.reduced_srl_liouvillian(Gamma_L, Gamma_R)
     srl_jump_op = np.array([[0, Gamma_R], [0, 0]])
     expected_F2 = utils.finite_freq_F2(freq, srl_liouvillian, srl_jump_op)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(
         Gamma_L, Gamma_R)
     npt.assert_allclose(expected_F2,
                         srl_solver.second_order_fano_factor(freq))
Ejemplo n.º 13
0
 def test_generate_cumulant_srl(self):
     Gamma_R = 0.5
     Gamma_L = 1.
     expected_mean = utils.mean_srl(Gamma_L, Gamma_R)
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     expected_F3 = utils.skewness_srl(0, 0, Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(
         Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_mean,
                            srl_solver.generate_cumulant(1)[0][0])
     self.assertAlmostEqual(expected_F2,
                            srl_solver.generate_cumulant(2)[0][1])
     self.assertAlmostEqual(expected_F3,
                            srl_solver.generate_cumulant(3)[0][2])
Ejemplo n.º 14
0
    def test_cache_refresh_D_rates(self):
        '''Functionality test for refresh cache behaviour.'''
        Gamma_L = 1.
        Gamma_R = 1.
        srl_solver = utils.setup_srl_solver_from_hilbert_space(
            Gamma_L, Gamma_R)
        expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
        self.assertAlmostEqual(expected_F2,
                               srl_solver.second_order_fano_factor(0))

        Gamma_R = 0.5
        srl_solver.D_rates = np.array([Gamma_R, Gamma_L])
        expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
        self.assertAlmostEqual(expected_F2,
                               srl_solver.second_order_fano_factor(0))
Ejemplo n.º 15
0
    def test_setattr_from_hilbert_space(self):
        '''Testing overidden __setattr__ function in FCSSolver which changes __cache_is_stale flag.'''
        srl_solver = utils.setup_srl_solver_from_hilbert_space(1., 1.)
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale
                        )  # check __cache_is_stale is True on initialization

        # change of variable in srl_solver.__watch_variables should trigger stale cache
        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.H = np.array([[1., 0], [0, 1.]])
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale)

        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.D_ops = [
            np.array([[0, 1], [0, 0]]),
            np.array([[0, 0], [1, 0]])
        ]
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale)

        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.D_rates = [2., 2.]
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale)

        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.jump_idx = np.array([0, 1])
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale)

        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.reduce_dim = True
        self.assertTrue(srl_solver._FCSSolver__cache_is_stale)

        # variables not in srl_solver.__watch_variables shouldn't trigger stale cache
        srl_solver._FCSSolver__cache_is_stale = False
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
        srl_solver.sys_dim = 8
        self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
Ejemplo n.º 16
0
 def test_setattr_from_hilbert_space(self):
     '''Testing overidden __setattr__ function in FCSSolver which changes __cache_is_stale flag.'''
     srl_solver = utils.setup_srl_solver_from_hilbert_space(1., 1.)
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale) # check __cache_is_stale is True on initialization
     
     # change of variable in srl_solver.__watch_variables should trigger stale cache
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.H = np.array([[1.,0],[0,1.]])
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale)
     
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.D_ops = [np.array([[0,1],[0,0]]), np.array([[0,0],[1,0]])]
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale)
     
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.D_rates = [2., 2.]
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale)
     
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.jump_idx = np.array([0, 1])
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale)
     
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.reduce_dim = True
     self.assertTrue(srl_solver._FCSSolver__cache_is_stale)
     
     # variables not in srl_solver.__watch_variables shouldn't trigger stale cache
     srl_solver._FCSSolver__cache_is_stale = False
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
     srl_solver.sys_dim = 8
     self.assertFalse(srl_solver._FCSSolver__cache_is_stale)
Ejemplo n.º 17
0
 def test_zero_freq_F2_srl(self):
     '''Functionality test for second order Fano factor of SRL model with single frequency.'''
     Gamma_R = 0.5; Gamma_L = 1.
     expected_F2 = utils.zero_freq_F2_srl(Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_F2, srl_solver.second_order_fano_factor(0))
Ejemplo n.º 18
0
 def test_mean_srl(self):
     '''Test of mean calculation for SRL model.'''
     Gamma_L = 1.; Gamma_R = 0.5
     expected_mean = utils.mean_srl(Gamma_L, Gamma_R)
     srl_solver = utils.setup_srl_solver_from_hilbert_space(Gamma_L, Gamma_R)
     self.assertAlmostEqual(expected_mean, srl_solver.mean())