def run(self): """ Setup input files, run a vasp relaxation, and report results """ # construct the Relax object relaxation = vasp.Relax(self.calcdir, self.run_settings()) # check the current status (status, task) = relaxation.status() if status == "complete": print "Status:", status sys.stdout.flush() # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() # write results to output.VASP self.report() return elif status == "not_converging": print "Status:", status print "Returning" sys.stdout.flush() return elif status == "incomplete": if task == "setup": self.setup() (status, task) = relaxation.run() else: raise vaspwrapper.VaspWrapperError("unexpected relaxation status: '" + status + "' and task: '" + task + "'") sys.stdout.flush() # once the run is done, update database records accordingly if status == "not_converging": # mark error if self.auto: try: pbs.error_job("Not converging") except (pbs.PBSError, pbs.JobDBError) as e: print str(e) sys.stdout.flush() print "Not Converging!" sys.stdout.flush() # print a local settings file, so that the run_limit can be extended if the # convergence problems are fixed try: os.makedirs(os.path.join(self.configdir, "settings", self.casm_settings["curr_calctype"])) except: pass settingsfile = os.path.join(self.configdir, "settings", self.casm_settings["curr_calctype"], "relax.json") vaspwrapper.write_settings(self.settings, settingsfile) print "Writing:", settingsfile print "Edit the 'run_limit' property if you wish to continue." sys.stdout.flush() return elif status == "complete": # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() # write results to output.VASP self.report() else: raise vaspwrapper.VaspWrapperError("vasp relaxation complete with unexpected status: '" + status + "' and task: '" + task + "'") sys.stdout.flush()
def run(self): """ Setup input files, run a vasp convergence, and report results """ # construct the Relax object convergence = vasp.Converge(self.calcdir, self.run_settings(), convtype=self.convtype) # check the current status (status, task) = convergence.status() if status == "complete": print "Status:", status sys.stdout.flush() # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() ###<HERE>### # write results to output.VASP self.report() return elif status == "not_converging": print "Status:", status print "Returning" sys.stdout.flush() return elif status == "incomplete": if task == "setup": self.setup() (status, task) = relaxation.run() else: raise vaspwrapper.VaspWrapperError("unexpected relaxation status: '" + status + "' and task: '" + task + "'") sys.stdout.flush() # once the run is done, update database records accordingly if status == "not_converging": # mark error if self.auto: try: pbs.error_job("Not converging") except (pbs.PBSError, pbs.JobDBError) as e: print str(e) sys.stdout.flush() print "Not Converging!" sys.stdout.flush() # print a local settings file, so that the run_limit can be extended if the # convergence problems are fixed try: os.makedirs(os.path.join(self.configdir, "settings", self.casm_settings["curr_calctype"])) except: pass settingsfile = os.path.join(self.configdir, "settings", self.casm_settings["curr_calctype"], "relax.json") vaspwrapper.write_settings(self.settings, settingsfile) print "Writing:", settingsfile print "Edit the 'run_limit' property if you wish to continue." sys.stdout.flush() return elif status == "complete": # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() # write results to output.VASP self.report() else: raise vaspwrapper.VaspWrapperError("vasp relaxation complete with unexpected status: '" + status + "' and task: '" + task + "'") sys.stdout.flush()
def run(self): """ Setup input files, run a vasp relaxation, and report results """ # construct the Relax object relaxation = vasp.Relax(self.calcdir, self.run_settings()) # check the current status (status, task) = relaxation.status() if status == "complete": print "Status:", status sys.stdout.flush() # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() # write results to properties.calc.json self.finalize() return elif status == "not_converging": print "Status:", status self.report_status("failed","run_limit") print "Returning" sys.stdout.flush() return elif status == "incomplete": if task == "setup": self.setup() self.report_status("started") (status, task) = relaxation.run() else: self.report_status("failed","unknown") raise vaspwrapper.VaspWrapperError("unexpected relaxation status: '" + status + "' and task: '" + task + "'") sys.stdout.flush() # once the run is done, update database records accordingly if status == "not_converging": # mark error if self.auto: try: pbs.error_job("Not converging") except (pbs.PBSError, pbs.JobDBError) as e: print str(e) sys.stdout.flush() print "Not Converging!" sys.stdout.flush() self.report_status("failed","run_limit") # print a local settings file, so that the run_limit can be extended if the # convergence problems are fixed config_set_dir = self.casm_directories.configuration_calc_settings_dir(self.configname, self.clex) try: os.makedirs(config_set_dir) except: pass settingsfile = os.path.join(config_set_dir, "relax.json") vaspwrapper.write_settings(self.settings, settingsfile) print "Writing:", settingsfile print "Edit the 'run_limit' property if you wish to continue." sys.stdout.flush() return elif status == "complete": # mark job as complete in db if self.auto: try: pbs.complete_job() except (pbs.PBSError, pbs.JobDBError, pbs.EligibilityError) as e: print str(e) sys.stdout.flush() # write results to properties.calc.json self.finalize() else: self.report_status("failed","unknown") raise vaspwrapper.VaspWrapperError("vasp relaxation complete with unexpected status: '" + status + "' and task: '" + task + "'") sys.stdout.flush()