Пример #1
0
    def from_files(struct="CONTCAR",
                   wavecar="WAVECAR",
                   cr="POTCAR",
                   vr="vasprun.xml",
                   setup_projectors=False):
        """
		Construct a Wavefunction object from file paths.

		Arguments:
			struct (str): VASP POSCAR or CONTCAR file path
			wavecar (str): VASP WAVECAR file path
			cr (str): VASP POTCAR file path
			vr (str): VASP vasprun file path
			outcar (str): VASP OUTCAR file path
			setup_projectors (bool, False): Whether to set up the core region
				components of the wavefunctions. Pawpyseed will set up the projectors
				automatically when they are first needed, so this generally
				can be left as False.

		Returns:
			Wavefunction object
		"""
        vr = Vasprun(vr)
        dim = np.array(
            [vr.parameters["NGX"], vr.parameters["NGY"], vr.parameters["NGZ"]])
        symprec = vr.parameters["SYMPREC"]
        pwf = pawpyc.PWFPointer(wavecar, vr)
        return Wavefunction(
            Poscar.from_file(struct).structure, pwf,
            CoreRegion(Potcar.from_file(cr)), dim, symprec, setup_projectors)
Пример #2
0
def get_wavefunction(potcar="POTCAR",
                     wavecar="WAVECAR",
                     vasprun="vasprun.xml",
                     directory=None):
    from pawpyseed.core import pawpyc
    from pawpyseed.core.wavefunction import CoreRegion, Wavefunction

    if directory:
        wf = Wavefunction.from_directory(path=directory)
    else:
        if isinstance(vasprun, str):
            vasprun = Vasprun(vasprun)

        if isinstance(potcar, str):
            potcar = Potcar.from_file(potcar)

        ngx = vasprun.parameters["NGX"]
        ngy = vasprun.parameters["NGY"]
        ngz = vasprun.parameters["NGZ"]
        dim = np.array([ngx, ngy, ngz])
        symprec = vasprun.parameters["SYMPREC"]
        structure = vasprun.final_structure

        pwf = pawpyc.PWFPointer(wavecar, vasprun)
        core_region = CoreRegion(potcar)

        wf = Wavefunction(structure, pwf, core_region, dim, symprec, False)

    wf = wf.desymmetrized_copy(time_reversal_symmetry=False, symprec=1e-4)
    return wf