def run_hse_prep_calculation(dim=2, submit=True): """ Submits a quick static calculation to calculate the IBZKPT file using a smaller number of k-points (200/atom instead of 1000/atom). The other outputs from this calculation are essentially useless. Args: dim (int): 2 for relaxing a 2D material, 3 for a 3D material. submit (bool): Whether or not to submit the job. """ if not os.path.isdir('hse_prep'): os.mkdir('hse_prep') os.chdir('hse_prep') os.system('cp ../CONTCAR ./POSCAR') if os.path.isfile('../POTCAR'): os.system('cp POTCAR .') relax(dim=2, submit=False) incar_dict = Incar.from_file('INCAR').as_dict() incar_dict.update({'NSW': 0, 'NELM': 1, 'LWAVE': False, 'LCHARG': False, 'LAECHG': False}) Incar.from_dict(incar_dict).write_file('INCAR') Kpoints.automatic_density( Structure.from_file('POSCAR'), 200 ).write_file('KPOINTS') if dim == 2: kpts_lines = open('KPOINTS').readlines() with open('KPOINTS', 'w') as kpts: for line in kpts_lines[:3]: kpts.write(line) kpts.write(kpts_lines[3].split()[0] + ' ' + kpts_lines[3].split()[1] + ' 1') if QUEUE == 'pbs': write_pbs_runjob('{}_prep'.format( os.getcwd().split('/')[-2]), 1, 16, '800mb', '6:00:00', VASP) submission_command = 'qsub runjob' elif QUEUE == 'slurm': write_slurm_runjob('{}_prep'.format( os.getcwd().split('/')[-2]), 16, '800mb', '6:00:00', VASP) submission_command = 'sbatch runjob' if submit: os.system(submission_command) os.chdir('../')
INTERVAL = 360 # Seconds between convergence checks directories = [ dir for dir in os.listdir(os.getcwd()) if os.path.isdir(dir) and dir not in ['all_competitors'] ] if __name__ == '__main__': competing_species = get_competing_species(directories) relax_competing_species(competing_species) for directory in directories: os.chdir(directory) relax() os.chdir('../') loop = True while loop: print('>> Checking convergence') finished_2d, finished_3d = [], [] for directory in directories: if is_converged(directory): finished_2d.append(directory) for directory in competing_species: if is_converged('all_competitors/{}'.format(directory[0])): finished_3d.append(directory[0]) if len(finished_2d + finished_3d) == len(directories +
plot_hull_distances) INTERVAL = 360 # Seconds between convergence checks directories = [dir for dir in os.listdir(os.getcwd()) if os.path.isdir(dir) and dir not in ['all_competitors']] if __name__ == '__main__': competing_species = get_competing_species(directories) relax_competing_species(competing_species) for directory in directories: os.chdir(directory) relax() os.chdir('../') loop = True while loop: print('>> Checking convergence') finished_2d, finished_3d = [], [] for directory in directories: if is_converged(directory): finished_2d.append(directory) for directory in competing_species: if is_converged('all_competitors/{}'.format(directory[0])): finished_3d.append(directory[0]) if len(finished_2d + finished_3d) == len(