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)
def __init__(self, nodes=1, ppn=8, **kwargs): Siesta.__init__(self, **kwargs) self.nodes=nodes self.ppn=ppn
def __init__(self, nodes=1, ppn=8, **kwargs): Siesta.__init__(self, **kwargs) self.nodes = nodes self.ppn = ppn
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()