"""
Elements
========
Defines an :class:`.Atom` class for each element.
"""
from __future__ import annotations
from typing import ClassVar, TypeVar
from stk._internal.atom import Atom
_T = TypeVar("_T", bound="AtomImpl")
class AtomImpl(Atom):
"""
An implementation of the :class:`.Atom` interface.
"""
_atomic_number: ClassVar[int]
def __init_subclass__(cls: type[AtomImpl], **kwargs) -> None:
cls._elements[cls._atomic_number] = cls
def __init__(
self,
id: int,
charge: int = 0,
) -> None:
self._id = id
self._charge = charge
def get_id(self) -> int:
return self._id
def _with_id(self: _T, id: int) -> _T:
"""
Modify the atom.
"""
self._id = id
return self
def with_id(self, id: int) -> AtomImpl:
return self.clone()._with_id(id)
def get_atomic_number(self) -> int:
return self._atomic_number
def get_charge(self) -> int:
return self._charge
def clone(self) -> AtomImpl:
return type(self)(self._id, self._charge)
def __repr__(self) -> str:
charge = f", charge={self._charge}" if self._charge != 0 else ""
return f"{self.__class__.__name__}({self._id}{charge})"
def __str__(self) -> str:
return repr(self)
[docs]
class H(AtomImpl):
_atomic_number = 1
[docs]
def clone(self) -> H:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> H:
return self.clone()._with_id(id)
[docs]
class He(AtomImpl):
_atomic_number = 2
[docs]
def clone(self) -> He:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> He:
return self.clone()._with_id(id)
[docs]
class Li(AtomImpl):
_atomic_number = 3
[docs]
def clone(self) -> Li:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Li:
return self.clone()._with_id(id)
[docs]
class Be(AtomImpl):
_atomic_number = 4
[docs]
def clone(self) -> Be:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Be:
return self.clone()._with_id(id)
[docs]
class B(AtomImpl):
_atomic_number = 5
[docs]
def clone(self) -> B:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> B:
return self.clone()._with_id(id)
[docs]
class C(AtomImpl):
_atomic_number = 6
[docs]
def clone(self) -> C:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> C:
return self.clone()._with_id(id)
[docs]
class N(AtomImpl):
_atomic_number = 7
[docs]
def clone(self) -> N:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> N:
return self.clone()._with_id(id)
# "O" is a valid elemental symbol.
[docs]
class O(AtomImpl): # noqa
_atomic_number = 8
[docs]
def clone(self) -> O: # noqa
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> O: # noqa
return self.clone()._with_id(id)
[docs]
class F(AtomImpl):
_atomic_number = 9
[docs]
def clone(self) -> F:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> F:
return self.clone()._with_id(id)
[docs]
class Ne(AtomImpl):
_atomic_number = 10
[docs]
def clone(self) -> Ne:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ne:
return self.clone()._with_id(id)
[docs]
class Na(AtomImpl):
_atomic_number = 11
[docs]
def clone(self) -> Na:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Na:
return self.clone()._with_id(id)
[docs]
class Mg(AtomImpl):
_atomic_number = 12
[docs]
def clone(self) -> Mg:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Mg:
return self.clone()._with_id(id)
[docs]
class Al(AtomImpl):
_atomic_number = 13
[docs]
def clone(self) -> Al:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Al:
return self.clone()._with_id(id)
[docs]
class Si(AtomImpl):
_atomic_number = 14
[docs]
def clone(self) -> Si:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Si:
return self.clone()._with_id(id)
[docs]
class P(AtomImpl):
_atomic_number = 15
[docs]
def clone(self) -> P:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> P:
return self.clone()._with_id(id)
[docs]
class S(AtomImpl):
_atomic_number = 16
[docs]
def clone(self) -> S:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> S:
return self.clone()._with_id(id)
[docs]
class Cl(AtomImpl):
_atomic_number = 17
[docs]
def clone(self) -> Cl:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cl:
return self.clone()._with_id(id)
[docs]
class Ar(AtomImpl):
_atomic_number = 18
[docs]
def clone(self) -> Ar:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ar:
return self.clone()._with_id(id)
[docs]
class K(AtomImpl):
_atomic_number = 19
[docs]
def clone(self) -> K:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> K:
return self.clone()._with_id(id)
[docs]
class Ca(AtomImpl):
_atomic_number = 20
[docs]
def clone(self) -> Ca:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ca:
return self.clone()._with_id(id)
[docs]
class Sc(AtomImpl):
_atomic_number = 21
[docs]
def clone(self) -> Sc:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sc:
return self.clone()._with_id(id)
[docs]
class Ti(AtomImpl):
_atomic_number = 22
[docs]
def clone(self) -> Ti:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ti:
return self.clone()._with_id(id)
[docs]
class V(AtomImpl):
_atomic_number = 23
[docs]
def clone(self) -> V:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> V:
return self.clone()._with_id(id)
[docs]
class Cr(AtomImpl):
_atomic_number = 24
[docs]
def clone(self) -> Cr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cr:
return self.clone()._with_id(id)
[docs]
class Mn(AtomImpl):
_atomic_number = 25
[docs]
def clone(self) -> Mn:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Mn:
return self.clone()._with_id(id)
[docs]
class Fe(AtomImpl):
_atomic_number = 26
[docs]
def clone(self) -> Fe:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Fe:
return self.clone()._with_id(id)
[docs]
class Co(AtomImpl):
_atomic_number = 27
[docs]
def clone(self) -> Co:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Co:
return self.clone()._with_id(id)
[docs]
class Ni(AtomImpl):
_atomic_number = 28
[docs]
def clone(self) -> Ni:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ni:
return self.clone()._with_id(id)
[docs]
class Cu(AtomImpl):
_atomic_number = 29
[docs]
def clone(self) -> Cu:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cu:
return self.clone()._with_id(id)
[docs]
class Zn(AtomImpl):
_atomic_number = 30
[docs]
def clone(self) -> Zn:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Zn:
return self.clone()._with_id(id)
[docs]
class Ga(AtomImpl):
_atomic_number = 31
[docs]
def clone(self) -> Ga:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ga:
return self.clone()._with_id(id)
[docs]
class Ge(AtomImpl):
_atomic_number = 32
[docs]
def clone(self) -> Ge:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ge:
return self.clone()._with_id(id)
[docs]
class As(AtomImpl):
_atomic_number = 33
[docs]
def clone(self) -> As:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> As:
return self.clone()._with_id(id)
[docs]
class Se(AtomImpl):
_atomic_number = 34
[docs]
def clone(self) -> Se:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Se:
return self.clone()._with_id(id)
[docs]
class Br(AtomImpl):
_atomic_number = 35
[docs]
def clone(self) -> Br:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Br:
return self.clone()._with_id(id)
[docs]
class Kr(AtomImpl):
_atomic_number = 36
[docs]
def clone(self) -> Kr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Kr:
return self.clone()._with_id(id)
[docs]
class Rb(AtomImpl):
_atomic_number = 37
[docs]
def clone(self) -> Rb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Rb:
return self.clone()._with_id(id)
[docs]
class Sr(AtomImpl):
_atomic_number = 38
[docs]
def clone(self) -> Sr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sr:
return self.clone()._with_id(id)
[docs]
class Y(AtomImpl):
_atomic_number = 39
[docs]
def clone(self) -> Y:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Y:
return self.clone()._with_id(id)
[docs]
class Zr(AtomImpl):
_atomic_number = 40
[docs]
def clone(self) -> Zr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Zr:
return self.clone()._with_id(id)
[docs]
class Nb(AtomImpl):
_atomic_number = 41
[docs]
def clone(self) -> Nb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Nb:
return self.clone()._with_id(id)
[docs]
class Mo(AtomImpl):
_atomic_number = 42
[docs]
def clone(self) -> Mo:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Mo:
return self.clone()._with_id(id)
[docs]
class Tc(AtomImpl):
_atomic_number = 43
[docs]
def clone(self) -> Tc:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Tc:
return self.clone()._with_id(id)
[docs]
class Ru(AtomImpl):
_atomic_number = 44
[docs]
def clone(self) -> Ru:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ru:
return self.clone()._with_id(id)
[docs]
class Rh(AtomImpl):
_atomic_number = 45
[docs]
def clone(self) -> Rh:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Rh:
return self.clone()._with_id(id)
[docs]
class Pd(AtomImpl):
_atomic_number = 46
[docs]
def clone(self) -> Pd:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pd:
return self.clone()._with_id(id)
[docs]
class Ag(AtomImpl):
_atomic_number = 47
[docs]
def clone(self) -> Ag:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ag:
return self.clone()._with_id(id)
[docs]
class Cd(AtomImpl):
_atomic_number = 48
[docs]
def clone(self) -> Cd:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cd:
return self.clone()._with_id(id)
[docs]
class In(AtomImpl):
_atomic_number = 49
[docs]
def clone(self) -> In:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> In:
return self.clone()._with_id(id)
[docs]
class Sn(AtomImpl):
_atomic_number = 50
[docs]
def clone(self) -> Sn:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sn:
return self.clone()._with_id(id)
[docs]
class Sb(AtomImpl):
_atomic_number = 51
[docs]
def clone(self) -> Sb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sb:
return self.clone()._with_id(id)
[docs]
class Te(AtomImpl):
_atomic_number = 52
[docs]
def clone(self) -> Te:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Te:
return self.clone()._with_id(id)
# "I" is a valid elemental symbol.
[docs]
class I(AtomImpl): # noqa
_atomic_number = 53
[docs]
def clone(self) -> I: # noqa
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> I: # noqa
return self.clone()._with_id(id)
[docs]
class Xe(AtomImpl):
_atomic_number = 54
[docs]
def clone(self) -> Xe:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Xe:
return self.clone()._with_id(id)
[docs]
class Cs(AtomImpl):
_atomic_number = 55
[docs]
def clone(self) -> Cs:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cs:
return self.clone()._with_id(id)
[docs]
class Ba(AtomImpl):
_atomic_number = 56
[docs]
def clone(self) -> Ba:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ba:
return self.clone()._with_id(id)
[docs]
class La(AtomImpl):
_atomic_number = 57
[docs]
def clone(self) -> La:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> La:
return self.clone()._with_id(id)
[docs]
class Ce(AtomImpl):
_atomic_number = 58
[docs]
def clone(self) -> Ce:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ce:
return self.clone()._with_id(id)
[docs]
class Pr(AtomImpl):
_atomic_number = 59
[docs]
def clone(self) -> Pr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pr:
return self.clone()._with_id(id)
[docs]
class Nd(AtomImpl):
_atomic_number = 60
[docs]
def clone(self) -> Nd:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Nd:
return self.clone()._with_id(id)
[docs]
class Pm(AtomImpl):
_atomic_number = 61
[docs]
def clone(self) -> Pm:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pm:
return self.clone()._with_id(id)
[docs]
class Sm(AtomImpl):
_atomic_number = 62
[docs]
def clone(self) -> Sm:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sm:
return self.clone()._with_id(id)
[docs]
class Eu(AtomImpl):
_atomic_number = 63
[docs]
def clone(self) -> Eu:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Eu:
return self.clone()._with_id(id)
[docs]
class Gd(AtomImpl):
_atomic_number = 64
[docs]
def clone(self) -> Gd:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Gd:
return self.clone()._with_id(id)
[docs]
class Tb(AtomImpl):
_atomic_number = 65
[docs]
def clone(self) -> Tb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Tb:
return self.clone()._with_id(id)
[docs]
class Dy(AtomImpl):
_atomic_number = 66
[docs]
def clone(self) -> Dy:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Dy:
return self.clone()._with_id(id)
[docs]
class Ho(AtomImpl):
_atomic_number = 67
[docs]
def clone(self) -> Ho:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ho:
return self.clone()._with_id(id)
[docs]
class Er(AtomImpl):
_atomic_number = 68
[docs]
def clone(self) -> Er:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Er:
return self.clone()._with_id(id)
[docs]
class Tm(AtomImpl):
_atomic_number = 69
[docs]
def clone(self) -> Tm:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Tm:
return self.clone()._with_id(id)
[docs]
class Yb(AtomImpl):
_atomic_number = 70
[docs]
def clone(self) -> Yb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Yb:
return self.clone()._with_id(id)
[docs]
class Lu(AtomImpl):
_atomic_number = 71
[docs]
def clone(self) -> Lu:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Lu:
return self.clone()._with_id(id)
[docs]
class Hf(AtomImpl):
_atomic_number = 72
[docs]
def clone(self) -> Hf:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Hf:
return self.clone()._with_id(id)
[docs]
class Ta(AtomImpl):
_atomic_number = 73
[docs]
def clone(self) -> Ta:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ta:
return self.clone()._with_id(id)
[docs]
class W(AtomImpl):
_atomic_number = 74
[docs]
def clone(self) -> W:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> W:
return self.clone()._with_id(id)
[docs]
class Re(AtomImpl):
_atomic_number = 75
[docs]
def clone(self) -> Re:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Re:
return self.clone()._with_id(id)
[docs]
class Os(AtomImpl):
_atomic_number = 76
[docs]
def clone(self) -> Os:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Os:
return self.clone()._with_id(id)
[docs]
class Ir(AtomImpl):
_atomic_number = 77
[docs]
def clone(self) -> Ir:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ir:
return self.clone()._with_id(id)
[docs]
class Pt(AtomImpl):
_atomic_number = 78
[docs]
def clone(self) -> Pt:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pt:
return self.clone()._with_id(id)
[docs]
class Au(AtomImpl):
_atomic_number = 79
[docs]
def clone(self) -> Au:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Au:
return self.clone()._with_id(id)
[docs]
class Hg(AtomImpl):
_atomic_number = 80
[docs]
def clone(self) -> Hg:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Hg:
return self.clone()._with_id(id)
[docs]
class Tl(AtomImpl):
_atomic_number = 81
[docs]
def clone(self) -> Tl:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Tl:
return self.clone()._with_id(id)
[docs]
class Pb(AtomImpl):
_atomic_number = 82
[docs]
def clone(self) -> Pb:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pb:
return self.clone()._with_id(id)
[docs]
class Bi(AtomImpl):
_atomic_number = 83
[docs]
def clone(self) -> Bi:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Bi:
return self.clone()._with_id(id)
[docs]
class Po(AtomImpl):
_atomic_number = 84
[docs]
def clone(self) -> Po:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Po:
return self.clone()._with_id(id)
[docs]
class At(AtomImpl):
_atomic_number = 85
[docs]
def clone(self) -> At:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> At:
return self.clone()._with_id(id)
[docs]
class Rn(AtomImpl):
_atomic_number = 86
[docs]
def clone(self) -> Rn:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Rn:
return self.clone()._with_id(id)
[docs]
class Fr(AtomImpl):
_atomic_number = 87
[docs]
def clone(self) -> Fr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Fr:
return self.clone()._with_id(id)
[docs]
class Ra(AtomImpl):
_atomic_number = 88
[docs]
def clone(self) -> Ra:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ra:
return self.clone()._with_id(id)
[docs]
class Ac(AtomImpl):
_atomic_number = 89
[docs]
def clone(self) -> Ac:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ac:
return self.clone()._with_id(id)
[docs]
class Th(AtomImpl):
_atomic_number = 90
[docs]
def clone(self) -> Th:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Th:
return self.clone()._with_id(id)
[docs]
class Pa(AtomImpl):
_atomic_number = 91
[docs]
def clone(self) -> Pa:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pa:
return self.clone()._with_id(id)
[docs]
class U(AtomImpl):
_atomic_number = 92
[docs]
def clone(self) -> U:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> U:
return self.clone()._with_id(id)
[docs]
class Np(AtomImpl):
_atomic_number = 93
[docs]
def clone(self) -> Np:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Np:
return self.clone()._with_id(id)
[docs]
class Pu(AtomImpl):
_atomic_number = 94
[docs]
def clone(self) -> Pu:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Pu:
return self.clone()._with_id(id)
[docs]
class Am(AtomImpl):
_atomic_number = 95
[docs]
def clone(self) -> Am:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Am:
return self.clone()._with_id(id)
[docs]
class Cm(AtomImpl):
_atomic_number = 96
[docs]
def clone(self) -> Cm:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cm:
return self.clone()._with_id(id)
[docs]
class Bk(AtomImpl):
_atomic_number = 97
[docs]
def clone(self) -> Bk:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Bk:
return self.clone()._with_id(id)
[docs]
class Cf(AtomImpl):
_atomic_number = 98
[docs]
def clone(self) -> Cf:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cf:
return self.clone()._with_id(id)
[docs]
class Es(AtomImpl):
_atomic_number = 99
[docs]
def clone(self) -> Es:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Es:
return self.clone()._with_id(id)
[docs]
class Fm(AtomImpl):
_atomic_number = 100
[docs]
def clone(self) -> Fm:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Fm:
return self.clone()._with_id(id)
[docs]
class Md(AtomImpl):
_atomic_number = 101
[docs]
def clone(self) -> Md:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Md:
return self.clone()._with_id(id)
[docs]
class No(AtomImpl):
_atomic_number = 102
[docs]
def clone(self) -> No:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> No:
return self.clone()._with_id(id)
[docs]
class Lr(AtomImpl):
_atomic_number = 103
[docs]
def clone(self) -> Lr:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Lr:
return self.clone()._with_id(id)
[docs]
class Rf(AtomImpl):
_atomic_number = 104
[docs]
def clone(self) -> Rf:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Rf:
return self.clone()._with_id(id)
[docs]
class Db(AtomImpl):
_atomic_number = 105
[docs]
def clone(self) -> Db:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Db:
return self.clone()._with_id(id)
[docs]
class Sg(AtomImpl):
_atomic_number = 106
[docs]
def clone(self) -> Sg:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Sg:
return self.clone()._with_id(id)
[docs]
class Bh(AtomImpl):
_atomic_number = 107
[docs]
def clone(self) -> Bh:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Bh:
return self.clone()._with_id(id)
[docs]
class Hs(AtomImpl):
_atomic_number = 108
[docs]
def clone(self) -> Hs:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Hs:
return self.clone()._with_id(id)
[docs]
class Mt(AtomImpl):
_atomic_number = 109
[docs]
def clone(self) -> Mt:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Mt:
return self.clone()._with_id(id)
[docs]
class Ds(AtomImpl):
_atomic_number = 110
[docs]
def clone(self) -> Ds:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ds:
return self.clone()._with_id(id)
[docs]
class Rg(AtomImpl):
_atomic_number = 111
[docs]
def clone(self) -> Rg:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Rg:
return self.clone()._with_id(id)
[docs]
class Cn(AtomImpl):
_atomic_number = 112
[docs]
def clone(self) -> Cn:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Cn:
return self.clone()._with_id(id)
[docs]
class Nh(AtomImpl):
_atomic_number = 113
[docs]
def clone(self) -> Nh:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Nh:
return self.clone()._with_id(id)
[docs]
class Fl(AtomImpl):
_atomic_number = 114
[docs]
def clone(self) -> Fl:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Fl:
return self.clone()._with_id(id)
[docs]
class Mc(AtomImpl):
_atomic_number = 115
[docs]
def clone(self) -> Mc:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Mc:
return self.clone()._with_id(id)
[docs]
class Lv(AtomImpl):
_atomic_number = 116
[docs]
def clone(self) -> Lv:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Lv:
return self.clone()._with_id(id)
[docs]
class Ts(AtomImpl):
_atomic_number = 117
[docs]
def clone(self) -> Ts:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Ts:
return self.clone()._with_id(id)
[docs]
class Og(AtomImpl):
_atomic_number = 118
[docs]
def clone(self) -> Og:
return type(self)(self._id, self._charge)
[docs]
def with_id(self, id: int) -> Og:
return self.clone()._with_id(id)