Beispiel #1
0
    def test_ne(self):
        " Test __ne__() function."
        # Two equal INCAR.
        filename1 = path + "/INCAR"
        filename2 = path + "/INCAR2"
        incar1 = InCar(filename1)
        incar2 = InCar(filename1)
        self.assertFalse(incar1 != incar2)

        # Different INCAR.
        incar1 = InCar(filename1)
        incar2 = InCar(filename2)
        self.assertTrue(incar1 != incar2)
Beispiel #2
0
def create_incar(xsdname, args):
    """"""
    if os.path.exists('INCAR'):
        return 'INCAR already exists, not changed.\n'

    incar = InCar()
    if args.task:
        task = args.task
        incar.quickgen(args.task)
    else:
        task = 'SC'
    content = 'INCAR -->\n'
    content += '     Task is %s\n' %task

    if PY2:
        pname_value_pairs = args.__dict__.iteritems()
    else:
        pname_value_pairs = args.__dict__.items()

    for pname, value in pname_value_pairs :
        if (value is not None):
            if pname in incar.pnames:
                incar.set(pname, value)
            else:
                if (pname in INCAR_PARAMETERS.keys()):
                    incar.add(pname, value)
            content += "     {} -> {}\n".format(pname, value)
    #incar.set('SYSTEM', xsdname)

    incar.tofile(verbos=False)

    content += '\n'

    return content
Beispiel #3
0
    def test_rdata(self):
        " Test data line in INCAR can be read correctly. "
        filename = path + "/INCAR"
        incar = InCar(filename)

        # Test integer parameter.
        ref_line = "ISTART = 0        # 0 = new job, 1 = restart"
        pnames, datas = incar.rdata(ref_line)
        self.assertListEqual(pnames, ["ISTART"])
        self.assertListEqual(datas, ["0"])

        # Test string parameter.
        ref_line = "PREC   = Normal  # [Low/Medium/High/Accurate/Normal]"
        pnames, datas = incar.rdata(ref_line)
        self.assertListEqual(pnames, ["PREC"])
        self.assertListEqual(datas, ["Normal"])

        # Test comment line.
        ref_line = "! Electronic Structure"
        result = incar.rdata(ref_line)
        self.assertIsNone(result)

        # Test multi-parameter line.
        ref_line = "LHFCALC = .TRUE. ; HFSCREEN = 0.2  # HSE"
        pnames, datas = incar.rdata(ref_line)
        self.assertListEqual(pnames, ["LHFCALC", "HFSCREEN"])
        self.assertListEqual(datas, [".TRUE.", "0.2"])
Beispiel #4
0
    def test_parameter_add(self):
        " Test new parameter can be added correctly. "
        filename = path + "/INCAR"
        incar = InCar(filename)

        self.assertFalse(hasattr(incar, "TEST_zjshao"))
        incar.add("TEST_zjshao", "True")
        self.assertTrue(incar.TEST_zjshao, "True")
Beispiel #5
0
    def test_parameter_set(self):
        " Test existed parameter can be set correctly. "
        filename = path + "/INCAR"
        incar = InCar(filename)

        self.assertTrue(incar.ISIF, "2")
        incar.set("ISIF", 3)
        self.assertTrue(incar.ISIF, "3")
Beispiel #6
0
    def test_compare(self):
        " Make sure we can compare two InCar objects correctly. "
        # Two equal INCAR.
        filename1 = path + "/INCAR"
        filename2 = path + "/INCAR2"
        incar1 = InCar(filename1)
        incar2 = InCar(filename1)
        a_dict, b_dict = incar1.compare(incar2)

        self.assertDictEqual(a_dict, {})
        self.assertDictEqual(b_dict, {})

        # Different INCAR.
        incar1 = InCar(filename1)
        incar2 = InCar(filename2)
        a_dict, b_dict = incar1.compare(incar2)

        self.assertDictEqual(a_dict, {'ISMEAR': '1', 'LREAL': 'A'})
        self.assertDictEqual(b_dict, {'ISMEAR': '2', 'LREAL': ''})
Beispiel #7
0
    def test_parameter_del(self):
        " Make sure we can remove parameters correctly. "
        filename = path + "/INCAR"
        incar = InCar(filename)

        # Check before deletion.
        self.assertTrue(hasattr(incar, "ISIF"))
        self.assertTrue("ISIF" in incar.pnames)

        pname, value = incar.pop("ISIF")

        # Check after deletion.
        self.assertEqual(pname, "ISIF")
        self.assertEqual(value, "2")
        self.assertFalse(hasattr(incar, "ISIF"))
        self.assertFalse("ISIF" in incar.pnames)
Beispiel #8
0
    def test_load(self):
        " Test all data in INCAR can be loaded. "
        filename = path + "/INCAR"
        incar = InCar(filename)

        ref_pnames = [
            'SYSTEM', 'ISTART', 'ISPIN', 'PREC', 'ENCUT', 'NELM', 'NELMIN',
            'ISMEAR', 'SIGMA', 'LREAL', 'EDIFFG', 'ALGO', 'ISIF', 'NSW',
            'IBRION', 'POTIM', 'ISYM', 'NWRITE', 'LCHARG', 'LWAVE', 'NCORE'
        ]

        ref_datas = [
            'per', '0', '2', 'Normal', '450', '400', '3', '1', '0.1', 'A',
            '-0.05', 'Fast', '2', '900', '1', '0.2', '0', '1', '.False.',
            '.False.', '4'
        ]

        for pname, data in zip(ref_pnames, ref_datas):
            self.assertEqual(getattr(incar, pname), data)
Beispiel #9
0
    # Copy INCAR vasp.script
    subprocess.getstatusoutput(
        'cp $HOME/example/INCAR $HOME/example/vasp.script ./')

    # Set argument parser.
    parser = argparse.ArgumentParser()

    # Add optional argument.
    parser.add_argument("-k", "--kpoints", help="set k-points")
    parser.add_argument("--nnode", help="node number used for the job")
    parser.add_argument("--ncpu", help="cpu number on each node")
    parser.add_argument("-q", "--queue", help="pbs queue type")

    # Add all possible arguments in INCAR file.
    if os.path.exists("INCAR"):
        incar = InCar()
        parameters = incar.pnames
        for parameter in parameters:
            help_info = "Set '{}' in INCAR".format(parameter)
            parser.add_argument("--{}".format(parameter), help=help_info)

    args = parser.parse_args()

    # Create POSCAR
    status, output = subprocess.getstatusoutput('ls *.xsd | head -1')
    xsd = XsdFile(filename=output)
    poscar_content = xsd.get_poscar_content(bases_const=1.0)
    with open('POSCAR', 'w') as f:
        f.write(poscar_content)

    # Create POTCAR
Beispiel #10
0
import logging

from vaspy.incar import InCar

SHELL_COMMAND = "find ./ -name 'INCAR'"

if "__main__" == __name__:

    # Check command validity.
    status, output = commands.getstatusoutput(SHELL_COMMAND)
    if status:
        raise SystemExit("Invalid shell commands - '{}'".format(SHELL_COMMAND))

    # Get InCar objects.
    incar_paths = (incar_path.strip() for incar_path in output.split('\n'))
    incars = [InCar(incar_path) for incar_path in incar_paths]

    # Get all possible arguments.
    set_list = [set(incar.pnames()) for incar in incars]
    possible_args = set.intersection(*set_list)

    # Set arguments for this script.
    parser = argparse.ArgumentParser()
    for arg in possible_args:
        arg_str = "--{}".format(arg)
        parser.add_argument(arg_str, help="set {} INCAR parameter".format(arg))
    args_space = parser.parse_args()

    # Change parameters for all incars.
    for pname, value in args_space.__dict__.iteritems():
        if value is None:
Beispiel #11
0
 def setUp(self):
     # Create an InCar object.
     self.incar = InCar("./testdata/INCAR")