def rename_canonical_dirs(): """ Rename canonical dirs just below top level directory. """ canonical_dirs = glob.glob('{}*'.format(or_x)) canonical_dirs = filter(os.path.isdir, canonical_dirs) for canonical_dir in canonical_dirs: #update top level canonical dir name to new convention with open(canonical_dir + '/gb.json') as f: gb_json = json.load(f) old_canonical_name = gb_json['gbid'] new_canonical_name = canonical_name_from_gb_json(gb_json) print canonical_name_from_gb_json(gb_json) shutil.move(canonical_dir, new_canonical_name) with pushd(new_canonical_name) as ctx1: shutil.move(old_canonical_name + '.png', new_canonical_name + '.png') shutil.move(old_canonical_name + '.xyz', new_canonical_name + '.xyz') shutil.move('csl_' + old_canonical_name + '.svg', 'csl_' + new_canonical_name + '.svg') with open('gb.json') as f: gb_json = json.load(f) old_gbid = gb_json['gbid'] gb_json['old_gbid'] = old_gbid gb_json['gbid'] = new_canonical_name
def gen_forceconstants(species, index, cart, displacement=0.1, hour=5, np=48, template_dir='templates'): """ generate directory and POSCAR perturbation Args: species(str): Name of perturbed atom. """ target_dir = "{spec}_{index}_{cart}_disp".format(spec=species, index=index, cart=cart[1]) dir_util.copy_tree(template_dir, target_dir) with pushd(target_dir) as ctx0: #Fix the pbs string with open('vasp.sh', 'r') as f: pbs_str = f.read() pbs_str = pbs_str.format(hour=hour, index=index, np=np, species=species) with open('vasp.sh', 'w') as f: print >> f, pbs_str ats = vasp.read_vasp('POSCAR') print "before pert", ats[index].position[:] ats[index].position[cart[0]] += displacement print "after pert", ats[index].position[:] vasp.write_vasp("POSCAR", ats)
def gen_multiple_images(): at_images = io.read("restart_images.xyz", index=":") print "{} images in file".format(len(at_images)) for image_num, atoms in enumerate(at_images): #Create separate directory for each image along path try: os.mkdir("image_{}".format(image_num)) except OSError: print "dir {} already exists".format(image_num) with pushd("image_{}".format(image_num)) as ctx1: shutil.copy("../ctrl.dat", "./ctrl.dat") atoms_to_site(atoms)
def pull_forces(species, index, cart): """ pull forces from OUTCAR and save to file. """ target_dir = "{spec}_{index}_{cart}_disp".format(spec=species, index=index, cart=cart) with pushd(target_dir) as ctx0: print os.getcwd() ats = vasp.read_vasp_out() forces = ats.get_forces() np.save("col_vec", forces) ats.write("{}.xyz".format(target_dir))
np.savetxt(prefix + "_fit.txt", np.array([Sfit, Efit])) np.savetxt(prefix + "_lines.txt", np.vstack(lines)) fig.savefig(prefix + "_barrier.eps") if __name__ == '__main__': prefix = sys.argv[1] job_dirs = glob.glob("{prefix}*".format(prefix=prefix)) job_dirs = filter(os.path.isdir, job_dirs) func = lambda x: int(x.split("_")[1]) job_dirs.sort(key=func) images = [] print "Removing old neb path" if os.path.isfile("neb_path.xyz"): os.remove("neb_path.xyz") for job in job_dirs: print "pulling ", job with pushd(job) as ctx0: try: ats = io.read('OUTCAR', index='-1') ats.arrays['forces'] = ats.get_forces() except StopIteration: print "Could not pull OUTCAR for:", job else: images.append(ats) for image in images: write_xyz("neb_path.xyz", image, append=True) calc_neb_barriers(prefix, images)
sub_file) if __name__ == '__main__': #or_axes = ['001', '110', '111'] #1 #ENTER ORIENTATION AXIS LEVEL AND RENAME CANONICAL DIRS. #for or_x in or_axes: # with pushd(or_x) as ctx0: # rename_canonical_dirs() #2 #Correct SubGrainBoundary Directories: or_axes = ['0_0_1', '1_1_0', '1_1_1'] pot_dirs = ['POTBH', 'EAM_Dud', 'EAM_Men', 'EAM_Mish', 'EAM_Ack'] for or_x in or_axes: with pushd(or_x) as ctx0: canonical_dirs = glob.glob('{}*'.format(or_x)) canonical_dirs = filter(os.path.isdir, canonical_dirs) for canonical_dir in canonical_dirs: with pushd(canonical_dir) as ctx1: print canonical_dir with open('gb.json', 'r') as f: gb_dict = json.load(f) #use old canonical name: #old_gbid = gb_dict['old_gbid'] old_gbid = gb_dict['gbid'] new_canonical_name = canonical_name_from_gb_json(gb_dict) for pot in pot_dirs: if os.path.isdir(pot): with pushd(pot) as ctx2: recursive_rename('./',