Beispiel #1
0
 def Write_NONSCF_KPOINTS(self,
                          mode="line",
                          nedos=601,
                          reciprocal_density=100,
                          sym_prec=0.1,
                          kpoints_line_density=20,
                          optics=False,
                          **kwargs):
     """
     generate KPOINTS for DOS (mode="uniform") or band struture (mode="line") by pymatgen.io.vasp.set.MPNonSCFSet
     input arguments:
         -mode (str): 'line' or 'uniform'
         -nedos (int): default 601. Only valid at mode='uniform'
         -reciprocal_density (int): default 100. Only valid at mode='uniform'
         -sym_prec (float): default 0.1
         -kpoints_line_density (int): default 20. Only valid at mode='line'
         -optics (bool)
     """
     vis = MPNonSCFSet(structure=self.structure,
                       mode=mode,
                       nedos=nedos,
                       reciprocal_density=reciprocal_density,
                       sym_prec=sym_prec,
                       kpoints_line_density=kpoints_line_density,
                       optics=optics)
     vis.kpoints.write_file(os.path.join(self.cal_loc, "KPOINTS"))
def Write_NONSCF_KPOINTS(structure_filename="./POSCAR",
                         mode='line',
                         nedos=601,
                         reciprocal_density=100,
                         sym_prec=0.1,
                         kpoints_line_density=20,
                         optics=False,
                         **kwargs):
    """
    generate KPOINTS for DOS (mode="uniform") or band struture (mode="line") by pymatgen.io.vasp.set.MPNonSCFSet
    input arguments:
        -structure_filename (str): a file that can be understood by pymatgen.Structure.from_file.
        -mode (str): 'line' or 'uniform'
        -nedos (int): default 601. Only valid at mode='uniform'
        -reciprocal_density (int): default 100. Only valid at mode='uniform'
        -sym_prec (float): default 0.1
        -kpoints_line_density (int): default 20. Only valid at mode='line'
        -optics (bool)
    """
    #print(os.getcwd())
    #print(os.listdir())
    #print(structure_filename)
    struct = Structure.from_file(structure_filename)
    vis = MPNonSCFSet(structure=struct,
                      mode=mode,
                      nedos=nedos,
                      reciprocal_density=reciprocal_density,
                      sym_prec=sym_prec,
                      kpoints_line_density=kpoints_line_density,
                      optics=optics)
    folder = os.path.split(structure_filename)[0]
    vis.kpoints.write_file(os.path.join(folder, "KPOINTS"))
    def setUp(self):
        coords = list()
        coords.append([0, 0, 0])
        coords.append([0.75, 0.5, 0.75])
        lattice = [
            [3.8401979337, 0.00, 0.00],
            [1.9200989668, 3.3257101909, 0.00],
            [0.00, -2.2171384943, 3.1355090603],
        ]

        structure = Structure(lattice, ["Si", "Si"], coords)

        input_sets = {
            "GGA Structure Optimization": MPRelaxSet(structure),
            "GGA Static": MPStaticSet(structure),
            "GGA NSCF Line": MPNonSCFSet(structure, mode="line"),
            "GGA NSCF Uniform": MPNonSCFSet(structure, mode="uniform"),
        }

        tasks = []
        t_id = 1
        for task_type, input_set in input_sets.items():
            doc = {
                "true_task_type": task_type,
                "last_updated": datetime.now(),
                "task_id": t_id,
                "state": "successful",
                "orig_inputs": {
                    "incar": input_set.incar.as_dict(),
                    "kpoints": input_set.kpoints.as_dict(),
                },
                "output": {
                    "structure": structure.as_dict()
                },
            }
            t_id += 1
            tasks.append(doc)

        self.test_tasks = MemoryStore("tasks")
        self.task_types = MemoryStore("task_types")
        self.test_tasks.connect()
        self.task_types.connect()

        self.test_tasks.update(tasks)