コード例 #1
0
    def __init__(
        self,
        symbol="X",
        position=(0, 0, 0),
        tag=None,
        momentum=None,
        mass=None,
        magmom=None,
        charge=None,
        atoms=None,
        index=None,
        pse=None,
        element=None,
        **qwargs
    ):
        if element is None and symbol:
            element = symbol
        if tag or momentum or mass or magmom or charge:
            raise ValueError("Not supported parameter used!")
        SparseArrayElement.__init__(self, **qwargs)
        # super(SparseArrayElement, self).__init__(**qwargs)
        # verify that element is given (as string, ChemicalElement object or nucleus number
        if pse is None:
            pse = PeriodicTable()

        if element is None or element == "X":
            if "Z" in qwargs:
                el_symbol = pse.atomic_number_to_abbreviation(qwargs["Z"])
                self._lists["element"] = pse.element(el_symbol)
            else:
                raise ValueError(
                    "Need at least element name, Chemical element object or nucleus number"
                )
        else:
            if isinstance(element, string_types):
                el_symbol = element
                self._lists["element"] = pse.element(el_symbol)
            elif isinstance(element, str):
                el_symbol = element
                self._lists["element"] = pse.element(el_symbol)
            elif isinstance(element, ChemicalElement):
                self._lists["element"] = element
            else:
                raise ValueError("Unknown element type")

        self._position = np.array(position)

        # ASE compatibility
        self.index = index
        self._atoms = atoms
コード例 #2
0
    def __init__(self,
                 symbol="X",
                 position=(0, 0, 0),
                 tag=None,
                 momentum=None,
                 mass=None,
                 magmom=None,
                 charge=None,
                 atoms=None,
                 index=None,
                 pse=None,
                 element=None,
                 **qwargs):
        if element is None:
            element = symbol

        SparseArrayElement.__init__(self, **qwargs)
        # super(SparseArrayElement, self).__init__(**qwargs)
        # verify that element is given (as string, ChemicalElement object or nucleus number
        if pse is None:
            pse = PeriodicTable()

        if element is None or element == "X":
            if "Z" in qwargs:
                el_symbol = pse.atomic_number_to_abbreviation(qwargs["Z"])
                self._lists["element"] = pse.element(el_symbol)
        else:
            if isinstance(element, string_types):
                el_symbol = element
                self._lists["element"] = pse.element(el_symbol)
            elif isinstance(element, str):
                el_symbol = element
                self._lists["element"] = pse.element(el_symbol)
            elif isinstance(element, ChemicalElement):
                self._lists["element"] = element
            else:
                raise ValueError("Unknown element type")

        # KeyError handling required for user defined elements
        try:
            ASEAtom.__init__(self,
                             symbol=symbol,
                             position=position,
                             tag=tag,
                             momentum=momentum,
                             mass=mass,
                             magmom=magmom,
                             charge=charge,
                             atoms=atoms,
                             index=index)
        except KeyError:
            symbol = pse.Parent[symbol]
            ASEAtom.__init__(self,
                             symbol=symbol,
                             position=position,
                             tag=tag,
                             momentum=momentum,
                             mass=mass,
                             magmom=magmom,
                             charge=charge,
                             atoms=atoms,
                             index=index)

        # ASE compatibility for tags
        for key, val in qwargs.items():
            self.data[key] = val