コード例 #1
0
ファイル: test_classes.py プロジェクト: anhhv/HTGW
 def test_GWspect_test(self):
     """
     Testing warnings and errors of gwspecs
     """
     spec = GWSpecs()
     spec.test()
     self.assertEqual(len(spec.warnings), 0)
     self.assertEqual(len(spec.errors), 0)
コード例 #2
0
ファイル: test_classes.py プロジェクト: anhhv/HTGW
 def setUp(self):
     """
     Testing GWVaspInputSetTests setUp
     """
     self.structure = structure
     self.spec = GWSpecs()
     self.spec.data['code'] = 'VASP'
     self.spec.update_code_interface()
コード例 #3
0
ファイル: test_vasp_tasks.py プロジェクト: setten/HTGW
 def test_VaspSingle(self):
     spec = GWSpecs()
     spec.data['code'] = 'VASP'
     work = SingleVaspGWWork(structure=structure, spec=spec, job='prep')
     work.create_input()
     print(os.listdir('.'))
     for f in ['INCAR', 'POTCAR', 'POSCAR', 'KPOINTS', 'INCAR.DIAG']:
         self.assertIn(f, os.listdir(path=s_name(structure)))
     work.create_job_script(add_to_collection=False)
     self.assertIn('job', os.listdir(path=s_name(structure)))
     work.create_job_script(mode='slurm', add_to_collection=False)
     self.assertIn('job', os.listdir(path=s_name(structure)))
コード例 #4
0
ファイル: test_classes.py プロジェクト: anhhv/HTGW
class GWVaspInputSetTests(AbipyTest):

    def setUp(self):
        """
        Testing GWVaspInputSetTests setUp
        """
        self.structure = structure
        self.spec = GWSpecs()
        self.spec.data['code'] = 'VASP'
        self.spec.update_code_interface()

    def test_GWscDFTPrepVaspInputSet(self):
        """
        Testing GWVaspInputSetTests GWscDFTPrepVaspInputSet
        """
        print(type(self.structure))
        inpset = GWscDFTPrepVaspInputSet(structure=self.structure, spec=self.spec)
        self.assertIsInstance(inpset, GWscDFTPrepVaspInputSet)
        self.assertEqual(inpset.convs, {})

#    @unittest.skipIf(POTCAR_DIR is None, "POTCAR dir is None")
    def test_GWDFTDiagVaspInputSet(self):
        """
        Testing GWVaspInputSetTests GWDFTDiagVaspInputSet
        """
        self.maxDiff = None
        inpset = GWDFTDiagVaspInputSet(structure=self.structure, spec=self.spec)
        self.assertIsInstance(inpset, GWDFTDiagVaspInputSet)
        self.assertEqual(inpset.convs,
                         {u'NBANDS': {u'test_range': (10, 20, 30, 40, 50, 60, 70), u'control': u'gap',
                                      u'method': u'set_nbands'}})

        self.assertDictEqual(inpset.incar, {u'ALGO': u'Exact', u'EDIFF': 1e-10, u'IBRION': -1, u'ICHARG': 1,
                                            u'ISMEAR': -5, u'ISPIN': 1, u'LOPTICS': True, u'LORBIT': 11,
                                            u'LREAL': u'Auto', u'LWAVE': True, u'MAGMOM': [0.6, 0.6],
                                            u'NBANDS': 240, u'NELM': 1, u'NPAR': 40,
                                            u'PREC': u'Medium', u'SIGMA': 0.01})

#    @unittest.skipIf(POTCAR_DIR is None, "POTCAR dir is None")
    def test_GWG0W0VaspInputSet(self):
        """
        Testing GWVaspInputSetTests GWG0W0VaspInputSet
        """
        inpset = GWG0W0VaspInputSet(structure=self.structure, spec=self.spec)
        self.assertIsInstance(inpset, GWG0W0VaspInputSet)
        self.assertEqual(inpset.convs, {u'ENCUTGW': {u'test_range': (200, 400, 600, 800), u'control': u'gap', u'method': u'incar_settings'}})

    def test_SingleVaspGWWork(self):
        """
        Testing GWVaspInputSetTests SingleVaspGWWork
        """
        work = SingleVaspGWWork(structure=self.structure, spec=self.spec, job='prep')
        self.assertIsInstance(work, SingleVaspGWWork)
コード例 #5
0
ファイル: test_vasp_tasks.py プロジェクト: setten/HTGW
    def test_VaspGWTasks(self):
        """
        testing the vasp GW task
        """
        spec = GWSpecs()
        struct = add_gg_gap(structure)
        structure_dict = struct.as_dict()
        band_structure_dict = {
            'vbm_l': structure.vbm_l,
            'cbm_l': structure.cbm_l,
            'vbm_a': structure.vbm[0],
            'vbm_b': structure.vbm[1],
            'vbm_c': structure.vbm[2],
            'cbm_a': structure.cbm[0],
            'cbm_b': structure.cbm[1],
            'cbm_c': structure.cbm[2]
        }

        parameters = {
            'structure': structure_dict,
            'band_structure': band_structure_dict,
            'job': 'prep',
            'spec': spec,
            'option': None
        }
        task = VaspGWTask(parameters=parameters)
        self.assertEqual(task.get_launch_dir(), 'Si')
        self.assertEqual(task.get_prep_dir(), 'Si')
        self.assertIsNone(task.option)
        self.assertEqual(task.job, 'prep')
        task = VaspGWInputTask(parameters=parameters)
        fwa = task.run_task({})
        task = VaspGWExecuteTask(parameters=parameters)
コード例 #6
0
ファイル: test_classes.py プロジェクト: anhhv/HTGW
    def test_GWConvergenceData(self):
        """
        Testing the class GWConvergenceData
        """
        spec = GWSpecs()
        self.assertIsInstance(structure, Structure)
        structure.item = 'mp-149'
        conv_data = GWConvergenceData(spec=spec, structure=structure)
        self.assertIsInstance(conv_data, GWConvergenceData)
        self.assertEqual(conv_data.name, 'Si_mp-149')
        self.assertEqual(conv_data.conv_res, {u'control': {}, u'derivatives': {}, u'values': {}})
        test_file = tempfile.mktemp()
        full_res = {u"grid": 0, u"all_done": True}
        f_name = conv_data.name+'.full_res'
        with open(f_name, 'w') as f:
            json.dump(obj=full_res, fp=f)
        conv_data.read_full_res_from_file()
        os.remove(f_name)
        self.assertEqual(conv_data.full_res, {'all_done': True, 'grid': 0})
        conv_res = {'control': {'ecuteps': True, 'nbands': True, 'ecut': True},
                    'values': {'ecuteps': 101.98825, 'nbands': 30.0, 'ecut': 12.0, 'gap': 3.13196},
                    'derivatives': {'ecuteps': 0.00023077744572658418, 'nbands': -0.0013567555555555532, 'ecut': 0.16666666666665808}}
        with open(test_file, 'w') as f:
            json.dump(obj=conv_res, fp=f)
        conv_data.read_conv_res_from_file(test_file)
        self.assertEqual(conv_data.conv_res['values']['nbands'], 30)
        self.assertEqual(conv_data.conv_res['derivatives']['ecuteps'], 0.00023077744572658418)
        conv_res = copy.deepcopy(conv_data.conv_res)
        self.assertEqual(conv_data.data, {})
        data_names = ['nbands', 'ecuteps',  'gwgap']
        data_list = [[30.00000, 101.98825, 3.13196], [30.00000, 203.97650, 3.14811], [30.00000, 326.36240, 3.14876],
                     [30.00000, 428.35065, 3.14880], [30.00000, 530.33890, 3.14881], [60.00000, 101.98825, 3.10808],
                     [60.00000, 203.97650, 3.13435], [60.00000, 326.36240, 3.13522], [60.00000, 428.35065, 3.13531],
                     [60.00000, 530.33890, 3.13532], [120.00000, 101.98825, 3.12039], [120.00000, 203.97650, 3.15994],
                     [120.00000, 326.36240, 3.16167], [120.00000, 428.35065, 3.16182], [120.00000, 530.33890, 3.16183],
                     [180.00000, 101.98825, 3.12198], [180.00000, 203.97650, 3.16845], [180.00000, 326.36240, 3.17183],
                     [180.00000, 428.35065, 3.17203], [180.00000, 530.33890, 3.17205]]
        for i, d in enumerate(data_list):
            conv_data.data[i] = dict(zip(data_names, d))
        data_names = ['ecut', 'full_width']
        data_list = [[10, 99], [12, 101], [13, 101], [14, 101]]
        ii = len(conv_data.data) + 1
        for i, d in enumerate(data_list):
            conv_data.data[i+ii] = dict(zip(data_names, d))

        # self.assertEqual(conv_data.data[0]['gwgap'], 3.13196)
        # conv_data.conv_res = {u'control': {}, u'derivatives': {}, u'values': {}}
        conv_data.find_conv_pars(tol=-0.1, silent=True)
        conv_data.find_conv_pars_scf('ecut', 'full_width', tol=-0.1, silent=True)
        conv_data.print_conv_res()
        print('********* here')
        print(conv_data.conv_res)
        self.assertEqual(conv_data.conv_res['control'], conv_res['control'])
        self.assertEqual(conv_data.conv_res['derivatives'], conv_res['derivatives'])
        # self.assertEqual(conv_data.conv_res['values'], conv_res['values'])
        for k in conv_data.conv_res['values']:
            self.assert_almost_equal(conv_data.conv_res["values"][k], conv_res['values'][k], decimal=4)

        # Remove artifact
        os.remove(conv_data.name +'.conv_res')
コード例 #7
0
ファイル: test_classes.py プロジェクト: anhhv/HTGW
 def test_GWspect(self):
     """
     Testing the class GWSpecs()
     """
     spec = GWSpecs()
     self.assertEqual(len(spec.as_dict()), 10)
     self.assertIsInstance(spec, GWSpecs)
     self.assertEqual(spec.get_code(), 'ABINIT')
     self.assertIsInstance(spec.code_interface, AbinitInterface)
     spec.data['code'] = 'VASP'
     spec.update_code_interface()
     self.assertEqual(spec.get_code(), 'VASP')
     self.assertIsInstance(spec.code_interface, VaspInterface)
コード例 #8
0
ファイル: test_vasp_tasks.py プロジェクト: setten/HTGW
 def test_fw_vasp(self):
     fireworksflow = VaspGWFWWorkFlow()
     spec = GWSpecs()