Commit 3b7877dd authored by Gurecky, William's avatar Gurecky, William
Browse files

wip: attempt to fix power normalization

parent a1be2cd6
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -131,10 +131,15 @@ class Core(object):
   @property
   def z_power_grid(me):
      """ Adjust z center endpoints to span entire axial core height """
      z_pwr_grid = me.z_centers
      z_pwr_grid[0] = 0.0
      z_pwr_grid[-1] = np.cumsum(me.dz)[-1] + 0.0001
      return z_pwr_grid
      #z_pwr_grid = me.z_centers
      #z_pwr_grid[0] = 0.0
      #z_pwr_grid[-1] = np.cumsum(me.dz)[-1] + 0.0001

      z_pwr_grid = me.z_bounds_pairs
      # slightly adjust the upper bounds of each axial edit zone
      z_pwr_grid[:, 1] -= 1e-8
      # flatten and return
      return z_pwr_grid.flatten()

   @property
   def z_bounds(me):
+12 −6
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ import numpy as np
import Solid
import Section
import utils.utils as utils
from scipy.interpolate import interp1d


class NodalChannelGeom(object):
@@ -1154,15 +1155,20 @@ class SquareLatticeLWR_Nodal(CoreBuilder.Core):
                  # set rod power
                  powID = "pwr_asm_" + str(assemID) + "_node_" + str(nodeID)
                  node_axial_power_profile = powerDist[asm_i, asm_j, nodeID, :]
                  avg_node_axial_power_profile = \
                      np.max((1e-12, np.average(node_axial_power_profile)))
                  # scale axial power
                  me.model.addAxialPowerShape(powID, me.z_power_grid,
                          node_axial_power_profile / avg_node_axial_power_profile)

                  # the node_axial_power_profile is specified at z_centers
                  assert me.z_centers.size == node_axial_power_profile.size
                  node_axial_power_interpolant = interp1d(me.z_centers, node_axial_power_profile)

                  # interpolate to the z_bounds
                  node_axial_power_ctf = node_axial_power_interpolant(me.z_power_grid)

                  # set axial power profile in the ctf model
                  me.model.addAxialPowerShape(powID, me.z_power_grid, node_axial_power_ctf)
                  obj_rod.powID = powID
                  obj_rod_type_id = me.model.solidTypeIDs[rodID]
                  # obj_rod_type_id == 1 is heated rod
                  # obj_rod_type_id == 2 is guide tube (only present if me.modelGuideTubes=True)
                  # obj_rod is type SubKit.build.Solid.HeatedSolid
                  # radial power factors are implicit in the 3d power distribution
                  obj_rod.power = avg_node_axial_power_profile
                  obj_rod.power = 1.0