def get_incar_tag(key, jobdir=None): """Opens INCAR in 'jobdir' and returns 'key' value.""" if jobdir is None: jobdir = os.getcwd() tincar = incar.Incar(os.path.join(jobdir,"INCAR")) for k in tincar.tags: if key.lower() == k.lower(): return tincar.tags[k] return None
def write_vasp_input(dirpath, incarfile, prim_kpointsfile, prim_poscarfile, super_poscarfile, speciesfile, sort=True, extra_input_files=[], strict_kpoints=False): """ Write VASP input files in directory 'dirpath' """ print "Setting up VASP input files:", dirpath # read prim and prim kpoints print " Reading KPOINTS:", prim_kpointsfile prim_kpoints = kpoints.Kpoints(prim_kpointsfile) if prim_poscarfile != None: print " Reading KPOINTS reference POSCAR:", prim_poscarfile prim = poscar.Poscar(prim_poscarfile) else: prim = None # read species, super poscar, incar, and generate super kpoints print " Reading SPECIES:", speciesfile species_settings = species.species_settings(speciesfile) print " Reading supercell POS:", super_poscarfile super = poscar.Poscar(super_poscarfile, species_settings) print " Reading INCAR:", incarfile super_incar = incar.Incar(incarfile, species_settings, super, sort) print " Generating supercell KPOINTS" if strict_kpoints: super_kpoints = prim_kpoints else: super_kpoints = prim_kpoints.super_kpoints(prim, super) # write main input files print " Writing supercell POSCAR:", os.path.join(dirpath, 'POSCAR') super.write(os.path.join(dirpath, 'POSCAR'), sort) print " Writing INCAR:", os.path.join(dirpath, 'INCAR') super_incar.write(os.path.join(dirpath, 'INCAR')) print " Writing supercell KPOINTS:", os.path.join(dirpath, 'KPOINTS') super_kpoints.write(os.path.join(dirpath, 'KPOINTS')) print " Writing POTCAR:", os.path.join(dirpath, 'POTCAR') write_potcar(os.path.join(dirpath, 'POTCAR'), super, species_settings, sort) # copy extra input files if len(extra_input_files): print " Copying extra input files", for s in extra_input_files: print " ", s shutil.copy(s, dirpath) print " DONE\n" sys.stdout.flush()
def __init__(self, incarfile, prim_kpointsfile, prim_poscarfile, super_poscarfile, speciesfile, sort=False): """ Construct a VaspIO object Args: incarfile: path to INCAR file prim_kpointsfile: path to primitive KPOINTS file prim_poscarfile: path to primitive POSCAR file super_poscarfile: path to POSCAR file for this configuration speciesfile: path to SPECIES file This functions reads the input files and generates self.kpoints appropriate for self.poscar given that 'prim_kpointsfile' is for 'prim_poscarfile'. """ prim = poscar.Poscar(prim_poscarfile) prim_kpoints = kpoints.Kpoints(prim_kpointsfile) self.species = species.species_settings(speciesfile) self.poscar = poscar.Poscar(super_poscarfile, self.species) self.incar = incar.Incar(incarfile, self.species, self.poscar, sort) self.kpoints = prim_kpoints.super_kpoints(prim, self.poscar)
def set_incar_tag(tag_dict,jobdir=None): """Opens INCAR in 'jobdir', sets 'key' value, and writes INCAR If 'val' is None, the tag is removed from the INCAR. """ if jobdir is None: jobdir = os.getcwd() incarfile = os.path.join(jobdir,"INCAR") tincar = incar.Incar(incarfile) for key, val in tag_dict.iteritems(): for k in tincar.tags: if key.lower() == k.lower(): if (val is None) or (str(val).strip() == ""): del tincar.tags[k] else: tincar.tags[k] = val break if val != None and str(val).strip() != "": tincar.tags[key] = val tincar.write(incarfile)
#!/usr/bin/python import sys import io import os import logging testdir = os.path.dirname(__file__) srcdir = '../parsevasp' sys.path.insert(0, os.path.abspath(os.path.join(testdir, srcdir))) import incar logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('Testing') incar = incar.Incar(file_path=testdir + "/INCAR") incar.modify("PREC", "N") incar.modify("TEST", [2, 3, 4]) incar.modify("TEST", "4 5 6") incar.write(file_path=testdir + "/INCARMOD", comments=True) print incar.entries print incar.get_dict()