예제 #1
0
 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
예제 #2
0
 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")
예제 #3
0
 def lowerqn(self):
     """ Lower state quantum numbers of the identifier (QuantumNumbers) """
     return QuantumNumbers(
         c.c_void_p(
             lib.getLowerQuantumNumbersQuantumIdentifier(self.__data__)))
예제 #4
0
 def levelqn(self):
     return QuantumNumbers(
         c.c_void_p(
             lib.getEnergyLevelQuantumNumbersQuantumIdentifier(
                 self.__data__)))
예제 #5
0
 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__)))
예제 #6
0
 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__)))
예제 #7
0
 def low(self):
     return QuantumNumbers(c.c_void_p(lib.getlowQuantumIdentifier(self.__data__)))