def run_task(self, fw_spec): #workdir=fw_spec['workdir'] vasp_cmd = fw_spec['vasp_cmd'] #with cd(workdir): incar = Incar.from_file('INCAR') kpoints = Kpoints.from_file('KPOINTS') poscar = Poscar.from_file('POSCAR') potcar = Potcar.from_file('POTCAR') try: out = Outcar(work_dir + '/OUTCAR') if len(out.run_stats) != 7: raise VaspDoneError() except: try: contcar = Structure.from_file('CONTCAR') os.rename('CONTCAR', 'POSCAR') except: pass job = VaspJob(vasp_cmd) handlers=[VaspErrorHandler(),UnconvergedErrorHandler(),FrozenJobErrorHandler(),\ NonConvergingErrorHandler(nionic_steps=2, change_algo=True),MeshSymmetryErrorHandler()] c = Custodian(handlers, [job], max_errors=10) c.run() else: print 'Vasp job was already done well. No need to rerun!'
def run_task(self, fw_spec): from pymongo import MongoClient clt = MongoClient('marilyn.pcpm.ucl.ac.be', 27017) db = clt.results_GY db.authenticate('gyu', 'pulco') hse_gap = db.HSE_gaps_ICSD pbe_bs = fw_spec['pbe_bs'] job_info_array = fw_spec['_job_info'] prev_job_info = job_info_array[-1] result = {} icsd_id = fw_spec['icsd_id'] xml = Vasprun(prev_job_info['launch_dir'] + '/vasprun.xml') ks = Kpoints.from_file(prev_job_info['launch_dir'] + '/KPOINTS') is_converged = xml.converged bs = xml.get_band_structure() formula = xml.final_structure.composition.reduced_formula material = { 'icsd_id': icsd_id, 'formula': formula, 'is_spin_polarized': bs.is_spin_polarized } input = {} incar = xml.incar.as_dict() potcar = xml.potcar_spec crystal = xml.final_structure.as_dict() kpoints = ks.as_dict() input['incar'] = incar input['potcar'] = potcar input['crystal'] = crystal input['kpoints'] = kpoints gap_info = {} ######### HSE ##################### gap_info['HSE'] = {} gap_info['HSE']['gap'] = bs.get_band_gap()['energy'] cbm = {} cbm['energy'] = bs.get_cbm()['energy'] cbm_kpoint = {} cbm_kpoint['coordinate'] = list(bs.get_cbm()['kpoint']._fcoords) cbm_kpoint['label'] = bs.get_cbm()['kpoint'].label cbm['kpoint'] = cbm_kpoint vbm = {} vbm['energy'] = bs.get_vbm()['energy'] vbm_kpoint = {} vbm_kpoint['coordiante'] = list(bs.get_vbm()['kpoint']._fcoords) vbm_kpoint['label'] = bs.get_vbm()['kpoint'].label vbm['kpoint'] = vbm_kpoint gap_info['HSE']['cbm'] = cbm gap_info['HSE']['vbm'] = vbm ########### PBE from ICSD############ gap_info['PBE_icsd'] = {} gap_info['PBE_icsd']['gap'] = pbe_bs.get_band_gap()['energy'] pbe_cbm = {} pbe_cbm['energy'] = pbe_bs.get_cbm()['energy'] pbe_cbm_kpoint = {} pbe_cbm_kpoint['coordinate'] = list( pbe_bs.get_cbm()['kpoint']._fcoords) pbe_cbm_kpoint['label'] = pbe_bs.get_cbm()['kpoint'].label pbe_cbm['kpoint'] = pbe_cbm_kpoint pbe_vbm = {} pbe_vbm['energy'] = pbe_bs.get_vbm()['energy'] pbe_vbm_kpoint = {} pbe_vbm_kpoint['coordiante'] = list( pbe_bs.get_vbm()['kpoint']._fcoords) pbe_vbm_kpoint['label'] = pbe_bs.get_vbm()['kpoint'].label pbe_vbm['kpoint'] = pbe_vbm_kpoint gap_info['PBE_icsd']['cbm'] = pbe_cbm gap_info['PBE_icsd']['vbm'] = pbe_vbm ############################################################################# result['material'] = material result['input'] = input result['gap_info'] = gap_info result['is_converged'] = is_converged ################################################################################## hse_gap.insert(result)