Ejemplo n.º 1
0
    def test_to_from_json_str(self):

        ob_atom_00 = ob_atom.OBAtom()
        ob_atom_01 = ob_atom.OBAtom().from_json_str(ob_atom_00.to_json_str())

        self.assertEqual(ob_atom_00.to_json_str(),
                         ob_atom_01.to_json_str())        
Ejemplo n.º 2
0
    def test_two_fields(self):
        """ Test building multiple fields.

        Notes:
            - Test for bug in #159, where multiple fields coupling the same
                levels isn't working.
        """

        json_path_0 = os.path.join(JSON_DIR, "field-square-0.json")
        json_path_1 = os.path.join(JSON_DIR, "field-square-1.json")
        f_0 = field.Field.from_json(json_path_0)
        f_1 = field.Field.from_json(json_path_1)
        f_dict_0 = f_0.get_json_dict()
        f_dict_1 = f_1.get_json_dict()

        oba = ob_atom.OBAtom(num_states=2)
        oba.build_fields(field_dicts=[f_dict_0, f_dict_1])
        print(oba.fields[0])
        print(oba.fields[1])

        self.assertEqual(oba.fields[0].rabi_freq_t_func.__name__, 'square_0')
        self.assertEqual(oba.fields[1].rabi_freq_t_func.__name__, 'square_1')
        self.assertDictEqual(
            oba.get_field_args(), {
                "ampl_0": 2.5,
                "on_0": 0.2,
                "off_0": 0.3,
                "ampl_1": 2.5,
                "on_1": 0.6,
                "off_1": 0.7
            })
Ejemplo n.º 3
0
    def test_to_from_json_str_02(self):

        ob_atom_03 = ob_atom.OBAtom().from_json_str(
            self.ob_atom_02.to_json_str())

        self.maxDiff = None
        self.assertEqual(self.ob_atom_02.to_json_str(),
                         ob_atom_03.to_json_str())
Ejemplo n.º 4
0
    def test_default(self):

        ob_atom_00 = ob_atom.OBAtom()

        with self.assertRaises(IndexError) as context:
            ob_atom_00.get_field_sum_coherence(0)

        self.assertTrue("list index out of range" in str(context.exception))
Ejemplo n.º 5
0
    def test_init_default(self):
        """  Test Default Initialise """

        ob_atom_00 = ob_atom.OBAtom()

        self.assertEqual(ob_atom_00.num_states, 1)
        self.assertEqual(ob_atom_00.energies, [])
        self.assertEqual(ob_atom_00.decays, [])
        self.assertEqual(ob_atom_00.fields, [])
Ejemplo n.º 6
0
    def test_two_level_no_detuning(self):

        f_dict = {'coupled_levels': [[0, 1]]}
        oba = ob_atom.OBAtom(num_states=2, fields=[f_dict])

        H_Delta_test = qu.Qobj(np.zeros([oba.num_states, oba.num_states]))

        np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(),
                                             H_Delta_test.data.toarray())
Ejemplo n.º 7
0
    def test_single_field_multiple_upper_levels(self):

        DETUNING = 10
        f_dict = {'coupled_levels': [[0, 2], [1, 2]], 'detuning': DETUNING}
        oba = ob_atom.OBAtom(num_states=3, fields=[f_dict])

        H_Delta_test = -2 * np.pi * DETUNING * oba.sigma(2, 2)

        np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(),
                                             H_Delta_test.data.toarray())
Ejemplo n.º 8
0
    def test_two_level_detuning(self):

        DETUNING = 10
        f_dict = {'coupled_levels': [[0, 1]], 'detuning': DETUNING}
        oba = ob_atom.OBAtom(num_states=2, fields=[f_dict])

        H_Delta_test = qu.Qobj([[0., 0.], [0., -2 * np.pi * DETUNING]])

        np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(),
                                             H_Delta_test.data.toarray())
Ejemplo n.º 9
0
    def test_to_from_json(self):

        filepath = os.path.join(JSON_DIR, "test_ob_atom_02.json")

        self.ob_atom_02.to_json(filepath)

        ob_atom_03 = ob_atom.OBAtom().from_json(filepath)
        os.remove(filepath)

        self.maxDiff = None
        self.assertEqual(self.ob_atom_02.to_json_str(),
                         ob_atom_03.to_json_str())
Ejemplo n.º 10
0
    def test_one_field(self):
        json_path = os.path.join(JSON_DIR, "field-square-0.json")
        f = field.Field.from_json(json_path)
        f_dict = f.get_json_dict()

        oba = ob_atom.OBAtom(num_states=2)
        oba.build_fields(field_dicts=[f_dict])

        self.assertEqual(oba.fields[0].rabi_freq_t_func.__name__, 'square_0')
        self.assertDictEqual(oba.get_field_args(), {
            "ampl_0": 2.5,
            "on_0": 0.2,
            "off_0": 0.3
        })
Ejemplo n.º 11
0
    def test_from_json_file_02(self):

        json_path = os.path.join(JSON_DIR, "ob_atom_02.json")

        oba = ob_atom.OBAtom().from_json(json_path)
Ejemplo n.º 12
0
 def test_trace_not_unity(self):
     with self.assertRaises(ValueError):
         ob_atom.OBAtom(num_states=2, initial_state=[2., 0.])
     with self.assertRaises(ValueError):
         ob_atom.OBAtom(num_states=2, initial_state=[2., 2.])
Ejemplo n.º 13
0
 def test_wrong_length(self):
     with self.assertRaises(ValueError):
         ob_atom.OBAtom(num_states=2, initial_state=[1.])
     with self.assertRaises(ValueError):
         ob_atom.OBAtom(num_states=2, initial_state=[1., 0., 0.])
Ejemplo n.º 14
0
 def test_set_initial_state(self):
     oba = ob_atom.OBAtom(num_states=2, initial_state=[1., 0.])
     self.assertEqual(oba.initial_state, oba.sigma(0, 0))
     oba = ob_atom.OBAtom(num_states=2, initial_state=[0., 1.])
     self.assertEqual(oba.initial_state, oba.sigma(1, 1))
Ejemplo n.º 15
0
 def test_default_initial_state(self):
     oba = ob_atom.OBAtom(num_states=2)
     self.assertEqual(oba.initial_state, oba.sigma(0, 0))
Ejemplo n.º 16
0
    def build_atom(self, atom_dict):

        self.atom = ob_atom.OBAtom(**atom_dict)
        return self.atom