def check(self): incar = Incar.from_file("INCAR") is_npt = incar.get("MDALGO") == 3 if not is_npt: return False outcar = Outcar("OUTCAR") patterns = {"MDALGO": "MDALGO\s+=\s+([\d]+)"} outcar.read_pattern(patterns=patterns) if outcar.data["MDALGO"] == [['3']]: return False else: return True
def check(self): """ Check for error. """ incar = Incar.from_file("INCAR") is_npt = incar.get("MDALGO") == 3 if not is_npt: return False outcar = Outcar("OUTCAR") patterns = {"MDALGO": r"MDALGO\s+=\s+([\d]+)"} outcar.read_pattern(patterns=patterns) if outcar.data["MDALGO"] == [["3"]]: return False return True
def check(self): if self.wall_time: run_time = datetime.datetime.now() - self.start_time total_secs = run_time.total_seconds() outcar = Outcar("OUTCAR") if not self.electronic_step_stop: # Determine max time per ionic step. outcar.read_pattern({"timings": "LOOP\+.+real time(.+)"}, postprocess=float) time_per_step = np.max(outcar.data.get('timings')) or 0 else: # Determine max time per electronic step. outcar.read_pattern({"timings": "LOOP:.+real time(.+)"}, postprocess=float) time_per_step = np.max(outcar.data['timings']) or 0 # If the remaining time is less than average time for 3 # steps or buffer_time. time_left = self.wall_time - total_secs if time_left < max(time_per_step * 3, self.buffer_time): return True return False