コード例 #1
0
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
コード例 #2
0
ファイル: phonon_tools.py プロジェクト: obaica/imeall
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: phonon_tools.py プロジェクト: obaica/imeall
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))
コード例 #5
0
ファイル: pull_dft_neb.py プロジェクト: obaica/imeall
    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)
コード例 #6
0
                    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('./',