示例#1
0
    def addMass(self, nucName, mass, **kwargs):
        """
        Parameters
        ----------
        nucName - str
            nuclide name -- e.g. 'U235'

        mass - float
            mass in grams
        """
        volume = self.getVolume()
        addedNumberDensity = densityTools.calculateNumberDensity(
            nucName, mass, volume)
        self.setNumberDensity(
            nucName,
            self.p.numberDensities.get(nucName, 0) + addedNumberDensity)
示例#2
0
 def updateMassAdditionComponents(self, density):
     """
     Parameters
     ----------
     density : float
         target density of the mass addition components
     """
     for c in self.getMassAdditionComponents():
         nucNames = list(c.getNuclides())
         if len(nucNames) != 1:
             raise AssertionError(
                 "This mass addition component is not a mass addition component because it has multiple nuclides"
             )
         mass = c.getMass()
         newVolume = mass / density
         c.p.numberDensities[nucNames[0]] = calculateNumberDensity(
             nucNames[0], mass, newVolume)
         c.setVolume(newVolume)
示例#3
0
    def setMass(self, nucName, mass, **kwargs):
        """
        Parameters
        ----------
        nucName - str
            nuclide name -- e.g. 'U235'

        mass - float
            mass in grams
        """
        volume = self.getVolume()
        try:
            addedNumberDensity = densityTools.calculateNumberDensity(
                nucName, mass, volume)
            self.setNumberDensity(
                nucName,
                self.p.numberDensities.get(nucName, 0) + addedNumberDensity)
        except ZeroDivisionError as ee:
            raise ValueError(
                str(ee) + "armiObject {}, volume {}".format(self, volume))