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)
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)
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))