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)
def setUp(self): """ Testing GWVaspInputSetTests setUp """ self.structure = structure self.spec = GWSpecs() self.spec.data['code'] = 'VASP' self.spec.update_code_interface()
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)))
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)
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)
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')
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)
def test_fw_vasp(self): fireworksflow = VaspGWFWWorkFlow() spec = GWSpecs()