Commit 062fa6bc authored by Wysocki, Aaron's avatar Wysocki, Aaron
Browse files

normalizePowers function

parent 9a0d4220
Loading
Loading
Loading
Loading
+28 −47
Original line number Diff line number Diff line
@@ -1140,6 +1140,31 @@ class SquareLatticeLWR_Nodal(CoreBuilder.Core):
            me.model.setInitialConditions(
                me.mdotTotal, me.tempInitial, me.outletPressure)

    def normalizeRadialPowers(me):
        # Renormalize the radial powers over all fuel rods. Set the
        # radial power factor for unheated pins to 1.0 (these pins
        # will be assigned a zero axial power shape, so their power
        # will still come out zero).
        radP = []
        powMults = []
        for i, obj in enumerate(me.model.solidObjects.values()):
            solidID = me.model.solidObjects.keys()[i]
            radP.append(obj.power)
            objType = me.model.solidTypeIDs[solidID]
            # powMults contains the number of fuel rod pins in each
            # solid (does not include unheated pins like obj.mult
            # does)
            if isinstance(me.model.solidTypes[objType], Solid.FuelRod):
                powMults.append(obj.mult)
            else:
                powMults.append(0.)
        radP = np.array(radP) / np.average(np.array(radP), weights=powMults)
        for i, obj in enumerate(me.model.solidObjects.values()):
            if powMults[i] > 0:
                obj.power = radP[i]
            else:
                obj.power = 1.0

    def setCorePowerShape(me, radialPower=None, axialPower=None, coreStart=0.0):
        """ Use to set a power shape in the core region.

@@ -1198,29 +1223,7 @@ class SquareLatticeLWR_Nodal(CoreBuilder.Core):
                radPowers.append(radialPower(
                    utils.radialLocation(obj.x, obj.y)))

        # Renormalize the radial powers over all fuel rods. Set the
        # radial power factor for unheated pins to 1.0 (these pins
        # will be assigned a zero axial power shape, so their power
        # will still come out zero).
        radP = []
        powMults = []
        for i, obj in enumerate(me.model.solidObjects.values()):
            solidID = me.model.solidObjects.keys()[i]
            radP.append(obj.power)
            objType = me.model.solidTypeIDs[solidID]
            # powMults contains the number of fuel rod pins in each
            # solid (does not include unheated pins like obj.mult
            # does)
            if isinstance(me.model.solidTypes[objType], Solid.FuelRod):
                powMults.append(obj.mult)
            else:
                powMults.append(0.)
        radP = np.array(radP) / np.average(np.array(radP), weights=powMults)
        for i, obj in enumerate(me.model.solidObjects.values()):
            if powMults[i] > 0:
                obj.power = radP[i]
            else:
                obj.power = 1.0
        me.normalizeRadialPowers()

    def setCorePowerShape3D(me, powerDist, wgts=None, coreStart=0.0, interp_type="nearest"):
        """
@@ -1268,29 +1271,7 @@ class SquareLatticeLWR_Nodal(CoreBuilder.Core):
            raise RuntimeError(
                "Invalid power distribution shape: %s" % str(powerDist.shape))
        
        # Renormalize the radial powers over all fuel rods. Set the
        # radial power factor for unheated pins to 1.0 (these pins
        # will be assigned a zero axial power shape, so their power
        # will still come out zero).
        radP = []
        powMults = []
        for i, obj in enumerate(me.model.solidObjects.values()):
            solidID = me.model.solidObjects.keys()[i]
            radP.append(obj.power)
            objType = me.model.solidTypeIDs[solidID]
            # powMults contains the number of fuel rod pins in each
            # solid (does not include unheated pins like obj.mult
            # does)
            if isinstance(me.model.solidTypes[objType], Solid.FuelRod):
                powMults.append(obj.mult)
            else:
                powMults.append(0.)
        radP = np.array(radP) / np.average(np.array(radP), weights=powMults)
        for i, obj in enumerate(me.model.solidObjects.values()):
            if powMults[i] > 0:
                obj.power = radP[i]
            else:
                obj.power = 1.0
        me.normalizeRadialPowers()

    def _setCorePowerShapeAsm3D(me, powerDist, wgts=None, coreStart=0.0, interp_type="nearest"):
        """