Пример #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)
Пример #2
0
    def test_two_shells_with_corr_false(self):
        conf_pars = ConfigParameters(_rpath + 'parse_shells_5.cfg')
        conf_pars.parse_shells()
        res = conf_pars.shells
        expected = [{
            'user_index': 1,
            'lshell': 2,
            'ions': {
                'nion': 4,
                'ion_list': [[4], [5], [6], [7]]
            },
            'corr': True,
            'ion_sort': None
        }, {
            'user_index': 2,
            'lshell': 1,
            'ions': {
                'nion': 4,
                'ion_list': [[0], [1], [2], [3]]
            },
            'corr': False,
            'ion_sort': None
        }]
        self.assertEqual(len(res), len(expected))

        arr = res[0].pop('ions')
        arr_exp = expected[0].pop('ions')
        self.assertDictEqual(arr, arr_exp)

        arr = res[1].pop('ions')
        arr_exp = expected[1].pop('ions')
        self.assertDictEqual(arr, arr_exp)

        self.assertListEqual(res, expected)
Пример #3
0
    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)
Пример #4
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)
Пример #5
0
    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 = 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)
Пример #6
0
 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)
Пример #7
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,
            'ions': {
                'nion': 4,
                'ion_list': [[4], [5], [6], [7]]
            },
            'corr': True,
            'ion_sort': None
        }, {
            'user_index':
            2,
            'lshell':
            1,
            'ions': {
                'nion': 4,
                'ion_list': [[0], [1], [2], [3]]
            },
            'tmatrix':
            np.array([[0., 1., 0.], [1., 0., 0.], [0., 0., 1.]]),
            'corr':
            True,
            'ion_sort':
            None
        }]
        # ...lousy way to test equality of two dictionaries containing numpy arrays
        self.assertEqual(len(res), len(expected))

        arr = res[0].pop('ions')
        arr_exp = expected[0].pop('ions')
        self.assertDictEqual(arr, arr_exp)

        arr = res[1].pop('ions')
        arr_exp = expected[1].pop('ions')
        self.assertDictEqual(arr, arr_exp)

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

        self.assertListEqual(res, expected)
Пример #8
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__()
        res = res.replace(" ","") # Remove spaces for comparison

        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)
Пример #9
0
    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)
Пример #10
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__()
        res = res.replace(" ", "")  # Remove spaces for comparison

        expected = r"""Shells:
[{'ions':{'nion':4,'ion_list':[[4],[5],[6],[7]]},'user_index':1,'lshell':2},{'tmatrix':array([[0.,1.,0.],
[1.,0.,0.],
[0.,0.,1.]]),'ions':{'nion':4,'ion_list':[[0],[1],[2],[3]]},'user_index':2,'lshell':1},{'ions':{'nion':4,'ion_list':[[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)
Пример #11
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()
Пример #12
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()
Пример #13
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()
Пример #14
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()
 def setUp(self):
     """
     """
     # Dummy ConfigParameters object
     self.cpars = ConfigParameters(_rpath + 'test1.cfg')
Пример #16
0
 def test_gr_required(self):
     conf_pars = ConfigParameters(_rpath + 'parse_groups_1.cfg')
     err_mess = "Required parameter"
     with self.assertRaisesRegex(Exception, err_mess):
         conf_pars.parse_groups()
Пример #17
0
 def test_sh_required(self):
     conf_pars = ConfigParameters(_rpath + 'parse_shells_3.cfg')
     err_mess = "Required parameter"
     with self.assertRaisesRegexp(Exception, err_mess):
         conf_pars.parse_shells()
Пример #18
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()
Пример #19
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()