Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
#!/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()