def getUniv(self, univ, burnup=None, index=None, timeDays=None): """ Return a specific universe given the ID and time of interest Parameters ---------- univ: str Unique str for the desired universe burnup: float or int, optional Burnup [MWd/kgU] of the desired universe timeDays: float or int, optional Time [days] of the desired universe index: int, optinal Point of interest in the burnup/days index Returns ------- serpentTools.objects.HomogUniv Requested universe Raises ------ KeyError If the requested universe could not be found ValueError If burnup, days and index are not given """ if index is None and burnup is None and timeDays is None: raise ValueError('Burnup, time or index are required inputs') searchKey = UnivTuple(univ, burnup, index, timeDays) # check if key is exactly present universe = self.universes.get(searchKey) if universe is not None: return universe for key, universe in self.universes.items(): for uItem, sItem in zip(key, searchKey): if sItem is None: continue elif uItem != sItem: break else: return universe raise KeyError( "Could not find a universe that matches {}".format(searchKey))
def _getBUstate(self): """Define unique branch state""" burnIdx = self._counter['rslt'] - 1 dayVec = self._tempArrays.get(self._burnupKeys["days"]) if dayVec is None: days = 0 elif burnIdx: days = dayVec[-1][0] else: days = dayVec[0][0] burnupVec = self._tempArrays.get(self._burnupKeys["burnup"]) if burnupVec is None: burnup = 0 elif burnIdx: burnup = burnupVec[-1][0] else: burnup = burnupVec[0][0] return UnivTuple(self._univlist[-1], burnup, burnIdx, days)