def __init__(self, type="NONE", spec=0, isot=0, qns1=QuantumNumbers(), qns2=QuantumNumbers()): if isinstance(type, c.c_void_p): self.__delete__ = False self.__data__ = type else: self.__delete__ = True self.__data__ = c.c_void_p(lib.createQuantumIdentifier()) self.type = type self.spec = spec self.isot = isot self.upperqn = qns1 self.lowerqn = qns2
def localquantumnumbers(self, val): if isinstance(val, Sized): self.sizelocalquantumnumbers = len(val) x = self.localquantumnumbers n = self.sizelocalquantumnumbers for i in range(n): x[i].set(QuantumNumbers.to_index(val[i])) else: raise TypeError("Only accepts array-like input")
def lowerqn(self): """ Lower state quantum numbers of the identifier (QuantumNumbers) """ return QuantumNumbers( c.c_void_p( lib.getLowerQuantumNumbersQuantumIdentifier(self.__data__)))
def levelqn(self): return QuantumNumbers( c.c_void_p( lib.getEnergyLevelQuantumNumbersQuantumIdentifier( self.__data__)))
def low(self): if self.type != "Transition": raise RuntimeError(f"Bad state, {self.type} should be Transition") return QuantumNumbers(c.c_void_p(lib.getlowQuantumIdentifier(self.__data__)))
def lvl(self): if self.type != "EnergyLevel": raise RuntimeError(f"Bad state, {self.type} should be EnergyLevel") return QuantumNumbers(c.c_void_p(lib.getuppQuantumIdentifier(self.__data__)))
def low(self): return QuantumNumbers(c.c_void_p(lib.getlowQuantumIdentifier(self.__data__)))