예제 #1
0
    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))
예제 #2
0
    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)