예제 #1
0
    def test_two_shells(self):
        conf_pars = ConfigParameters(_rpath + 'parse_shells_4.cfg')
        conf_pars.parse_shells()
        res = conf_pars.shells
        expected = [{
            'user_index': 1,
            'lshell': 2,
            'ion_list': np.array([4, 5, 6, 7])
        }, {
            'user_index':
            2,
            'lshell':
            1,
            'ion_list':
            np.array([0, 1, 2, 3]),
            'tmatrix':
            np.array([[0., 1., 0.], [1., 0., 0.], [0., 0., 1.]])
        }]
        # ...lousy way to test equality of two dictionaries containing numpy arrays
        self.assertEqual(len(res), len(expected))

        arr = res[0].pop('ion_list')
        arr_exp = expected[0].pop('ion_list')
        self.assertEqual(arr, arr_exp)

        arr = res[1].pop('ion_list')
        arr_exp = expected[1].pop('ion_list')
        self.assertEqual(arr, arr_exp)

        arr = res[1].pop('tmatrix')
        arr_exp = expected[1].pop('tmatrix')
        self.assertEqual(arr, arr_exp)

        self.assertListEqual(res, expected)
 def test_example(self):
     conf_pars = ConfigParameters(_rpath + 'example.cfg')
     conf_pars.parse_general()
     res = conf_pars.general
     expected = {
         'basename': 'test_base',
         'efermi': 0.1,
         'dosmesh': {
             'n_points': 101,
             'emin': -8.0,
             'emax': 4.0
         }
     }
     self.assertDictEqual(res, expected)
예제 #3
0
 def test_example(self):
     conf_pars = ConfigParameters(_rpath + 'example.cfg')
     conf_pars.parse_groups()
     res = conf_pars.groups
     expected = [{
         'index': 1,
         'shells': [1, 2],
         'ewindow': (-7.6, 3.0),
         'normalize': True,
         'normion': True
     }, {
         'index': 2,
         'shells': [3],
         'ewindow': (-1.6, 2.0),
         'normalize': True,
         'normion': True
     }]
     self.assertListEqual(res, expected)
예제 #4
0
    def setUp(self):
        conf_file = _rpath + 'simple.cfg'
        self.pars = ConfigParameters(conf_file)
        self.pars.parse_input()
        vasp_data = VaspData(_rpath + 'simple/')
        self.el_struct = ElectronicStructure(vasp_data)

        efermi = self.el_struct.efermi
        self.eigvals = self.el_struct.eigvals - efermi
        struct = self.el_struct.structure
        kmesh = self.el_struct.kmesh

        self.proj_sh = ProjectorShell(self.pars.shells[0],
                                      vasp_data.plocar.plo,
                                      vasp_data.plocar.proj_params, kmesh,
                                      struct, 0)
        self.proj_gr = ProjectorGroup(self.pars.groups[0], [self.proj_sh],
                                      self.eigvals)
    def setUp(self):
        """
        """
        conf_file = _rpath + 'example.cfg'
        self.pars = ConfigParameters(conf_file)
        self.pars.parse_input()
        vasp_data = VaspData(_rpath + 'one_site/')
        self.el_struct = ElectronicStructure(vasp_data)

#        efermi = vasp_data.doscar.efermi
#        eigvals = vasp_data.eigenval.eigs - efermi
        efermi = self.el_struct.efermi
        eigvals = self.el_struct.eigvals - efermi
        emin, emax = self.pars.groups[0]['ewindow']
        struct = self.el_struct.structure
        kmesh = self.el_struct.kmesh

        self.proj_sh = ProjectorShell(self.pars.shells[0], vasp_data.plocar.plo, vasp_data.plocar.proj_params, kmesh, struct, 0)
        self.proj_gr = ProjectorGroup(self.pars.groups[0], [self.proj_sh], eigvals)
예제 #6
0
    def test_example_no_groups(self):
        conf_pars = ConfigParameters(_rpath + 'example_nogroup.cfg')
        conf_pars.parse_input()
        #        with open('parse_input.output.test', 'wt') as f:
        #            f.write("Shells:\n")
        #            f.write(conf_pars.shells.__repr__() + '\n\n')
        #            f.write("Groups:\n")
        #            f.write(conf_pars.groups.__repr__() + '\n')
        res = "Shells:\n"
        res += conf_pars.shells.__repr__() + '\n\n'
        res += "Groups:\n"
        res += conf_pars.groups.__repr__()

        expected = r"""Shells:
[{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}]

Groups:
[{'normalize': True, 'index': '1', 'ewindow': (-7.6, 3.0), 'shells': [0], 'normion': True}]"""

        self.assertEqual(res, expected)
예제 #7
0
    def test_example(self):
        conf_pars = ConfigParameters(_rpath + 'example.cfg')
        conf_pars.parse_input()
        #        with open('parse_input.output.test', 'wt') as f:
        #            f.write("Shells:\n")
        #            f.write(conf_pars.shells.__repr__() + '\n\n')
        #            f.write("Groups:\n")
        #            f.write(conf_pars.groups.__repr__() + '\n')
        res = "Shells:\n"
        res += conf_pars.shells.__repr__() + '\n\n'
        res += "Groups:\n"
        res += conf_pars.groups.__repr__()

        expected = r"""Shells:
[{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}, {'tmatrix': array([[ 0.,  1.,  0.],
       [ 1.,  0.,  0.],
       [ 0.,  0.,  1.]]), 'ion_list': array([0, 1, 2, 3]), 'user_index': 2, 'lshell': 1}, {'ion_list': array([0, 1, 2, 3]), 'user_index': 3, 'lshell': 3}]

Groups:
[{'normalize': True, 'index': 1, 'ewindow': (-7.6, 3.0), 'normion': True, 'shells': [0, 1]}, {'normalize': True, 'index': 2, 'ewindow': (-1.6, 2.0), 'normion': True, 'shells': [2]}]"""

        self.assertEqual(res, expected)
    def test_normion_true(self):
        conf_file = _rpath + 'block_matrix.cfg'
        self.pars = ConfigParameters(conf_file)
        self.pars.parse_input()

        shells = []
        for sh_par in self.pars.shells:
            shells.append(ProjectorShell(sh_par, self.mock_plo, self.mock_proj_params, self.mock_kmesh, self.mock_struct, 0))

        proj_gr = ProjectorGroup(self.pars.groups[0], shells, self.mock_eigvals)

        proj_gr.normion = True
        block_maps, ndim = proj_gr.get_block_matrix_map()

        ndim_exp = 5
        block_maps_exp = [[{'bmat_range': (0, 5), 'shell_ion': (0, 0)}],
                          [{'bmat_range': (0, 5), 'shell_ion': (0, 1)}],
                          [{'bmat_range': (0, 3), 'shell_ion': (1, 0)}],
                          [{'bmat_range': (0, 3), 'shell_ion': (1, 1)}]]

        self.assertEqual(ndim, ndim_exp)
        self.assertEqual(block_maps, block_maps_exp)
예제 #9
0
 def test_gr_required(self):
     conf_pars = ConfigParameters(_rpath + 'parse_groups_1.cfg')
     err_mess = "Required parameter"
     with self.assertRaisesRegexp(Exception, err_mess):
         conf_pars.parse_groups()
예제 #10
0
 def test_bad_indices(self):
     conf_pars = ConfigParameters(_rpath + 'parse_shells_2.cfg')
     err_mess = "Failed to extract shell indices"
     with self.assertRaisesRegexp(ValueError, err_mess):
         conf_pars.parse_shells()
예제 #11
0
 def test_no_shell(self):
     conf_pars = ConfigParameters(_rpath + 'parse_shells_1.cfg')
     err_mess = "No projected shells"
     with self.assertRaisesRegexp(AssertionError, err_mess):
         conf_pars.parse_shells()
예제 #12
0
 def test_shell_outside_groups(self):
     conf_pars = ConfigParameters(_rpath + 'input_test_4.cfg')
     err_mess = "Some shells are not inside"
     with self.assertRaisesRegexp(AssertionError, err_mess):
         conf_pars.parse_input()
예제 #13
0
 def test_no_shell(self):
     conf_pars = ConfigParameters(_rpath + 'input_test_3.cfg')
     err_mess = "Shell 3 referenced in"
     with self.assertRaisesRegexp(Exception, err_mess):
         conf_pars.parse_input()
예제 #14
0
 def test_gr_required(self):
     conf_pars = ConfigParameters(_rpath + 'input_test_2.cfg')
     err_mess = "One \[Shell\] section is"
     with self.assertRaisesRegexp(KeyError, err_mess):
         conf_pars.parse_input()
예제 #15
0
 def test_no_group(self):
     conf_pars = ConfigParameters(_rpath + 'input_test_1.cfg')
     err_mess = "At least one group"
     with self.assertRaisesRegexp(AssertionError, err_mess):
         conf_pars.parse_input()
예제 #16
0
 def setUp(self):
     """
     """
     # Dummy ConfigParameters object
     self.cpars = ConfigParameters(_rpath + 'test1.cfg')