Exemplo n.º 1
0
    def __init__(self,
                 atoms=None,
                 command=None,
                 xc='LDA',
                 spin='non-polarized',
                 ghosts=[],
                 **kwargs):
        if atoms is not None:
            finder = DojoFinder()
            elems = list(dict.fromkeys(atoms.get_chemical_symbols()).keys())
            elem_dict = dict(zip(elems, range(1, len(elems) + 1)))
            symbols = atoms.get_chemical_symbols()

            # ghosts
            ghost_symbols = [symbols[i] for i in ghosts]
            ghost_elems = list(dict.fromkeys(ghost_symbols).keys())
            tags = [1 if i in ghosts else 0 for i in range(len(atoms))]
            atoms.set_tags(tags)

            pseudo_path = finder.get_pp_path(xc=xc)
            if spin == 'spin-orbit':
                rel = 'fr'
            else:
                rel = 'sr'
            species = [
                Species(symbol=elem,
                        pseudopotential=finder.get_pp_fname(elem,
                                                            xc=xc,
                                                            rel=rel),
                        ghost=False) for elem in elem_dict.keys()
            ]
            for elem in ghost_elems:
                species.append(
                    Species(symbol=elem,
                            pseudopotential=finder.get_pp_fname(elem,
                                                                xc=xc,
                                                                rel=rel),
                            tag=1,
                            ghost=True))

        Siesta.__init__(self,
                        xc=xc,
                        spin=spin,
                        atoms=atoms,
                        pseudo_path=pseudo_path,
                        species=species,
                        **kwargs)
Exemplo n.º 2
0
 def __init__(self, nodes=1, ppn=8, **kwargs):
     Siesta.__init__(self, **kwargs)
     self.nodes=nodes
     self.ppn=ppn
Exemplo n.º 3
0
 def __init__(self, nodes=1, ppn=8, **kwargs):
     Siesta.__init__(self, **kwargs)
     self.nodes = nodes
     self.ppn = ppn
Exemplo n.º 4
0
    def __init__(self,
                 atoms=None,
                 command=None,
                 xc='LDA',
                 spin='non-polarized',
                 basis_set='DZP',
                 ghosts=[],
                 input_basis_set={},
                 pseudo_path=None,
                 input_pp={},
                 pp_accuracy='standard',
                 **kwargs):
        # non-perturnbative polarized orbital.
        self.npt_elems = set()

        if atoms is not None:
            finder = DojoFinder()
            elems = list(dict.fromkeys(atoms.get_chemical_symbols()).keys())
            self.elem_dict = dict(zip(elems, range(1, len(elems) + 1)))
            symbols = atoms.get_chemical_symbols()

            # ghosts
            ghost_symbols = [symbols[i] for i in ghosts]
            ghost_elems = list(dict.fromkeys(ghost_symbols).keys())
            tags = [1 if i in ghosts else 0 for i in range(len(atoms))]
            atoms.set_tags(tags)

            if pseudo_path is None:
                pseudo_path = finder.get_pp_path(xc=xc, accuracy=pp_accuracy)

            if spin == 'spin-orbit':
                rel = 'fr'
            else:
                rel = 'sr'
            species = []
            for elem, index in self.elem_dict.items():
                if elem not in input_basis_set:
                    bselem = basis_set
                    if elem in ['Li', 'Be', 'Na', 'Mg']:
                        self.npt_elems.add(f"{elem}.{index}")
                else:
                    bselem = PAOBasisBlock(input_basis_set[elem])
                if elem not in input_pp:
                    pseudopotential = finder.get_pp_fname(
                        elem, xc=xc, rel=rel, accuracy=pp_accuracy)
                else:
                    pseudopotential = os.path.join(
                        pseudo_path, input_pp[elem])

                species.append(Species(symbol=elem,
                                       pseudopotential=pseudopotential,
                                       basis_set=bselem,
                                       ghost=False))
            for elem in ghost_elems:
                species.append(
                    Species(symbol=elem,
                            pseudopotential=finder.get_pp_fname(
                                elem, xc=xc, rel=rel, accuracy=pp_accuracy),
                            tag=1,
                            ghost=True))

        Siesta.__init__(self,
                        xc=xc,
                        spin=spin,
                        atoms=atoms,
                        pseudo_path=pseudo_path,
                        species=species,
                        **kwargs)
        self.set_npt_elements()