diff --git a/armi/physics/neutronics/globalFlux/globalFluxInterface.py b/armi/physics/neutronics/globalFlux/globalFluxInterface.py index aef9d2800..e99865cb5 100644 --- a/armi/physics/neutronics/globalFlux/globalFluxInterface.py +++ b/armi/physics/neutronics/globalFlux/globalFluxInterface.py @@ -640,7 +640,7 @@ def _undoGeometryTransformations(self): geomConverter = self.geomConverters.get("edgeAssems") if geomConverter: geomConverter.scaleParamsRelatedToSymmetry( - self.r, paramsToScaleSubset=self.options.paramsToScaleSubset + self.r.core, paramsToScaleSubset=self.options.paramsToScaleSubset ) # Resets the reactor core model to the correct symmetry and removes diff --git a/armi/reactor/blueprints/reactorBlueprint.py b/armi/reactor/blueprints/reactorBlueprint.py index ff7a4e8fb..0af2d81fd 100644 --- a/armi/reactor/blueprints/reactorBlueprint.py +++ b/armi/reactor/blueprints/reactorBlueprint.py @@ -237,6 +237,7 @@ def _modifyGeometry(self, container, gridDesign): runLog.header("=========== Applying Geometry Modifications ===========") converter = geometryConverters.EdgeAssemblyChanger() + converter.scaleParamsRelatedToSymmetry(container) converter.removeEdgeAssemblies(container) # now update the spatial grid dimensions based on the populated children diff --git a/armi/reactor/converters/geometryConverters.py b/armi/reactor/converters/geometryConverters.py index 8006a917f..64d62d6cc 100644 --- a/armi/reactor/converters/geometryConverters.py +++ b/armi/reactor/converters/geometryConverters.py @@ -1360,7 +1360,7 @@ def convert(self, r): self.listOfVolIntegratedParamsToScale, _, ) = _generateListOfParamsToScale( - self._sourceReactor, paramsToScaleSubset=[] + self._sourceReactor.core, paramsToScaleSubset=[] ) for b in a: @@ -1516,6 +1516,7 @@ def removeEdgeAssemblies(self, core): # Don't use newAssembliesAdded b/c this may be BOL cleaning of a fresh case that has edge # assems. edgeAssemblies = core.getAssembliesOnSymmetryLine(grids.BOUNDARY_120_DEGREES) + for a in edgeAssemblies: runLog.debug( "Removing edge assembly {} from {} from the reactor without discharging".format( @@ -1538,7 +1539,7 @@ def removeEdgeAssemblies(self, core): self.reset() @staticmethod - def scaleParamsRelatedToSymmetry(reactor, paramsToScaleSubset=None): + def scaleParamsRelatedToSymmetry(core, paramsToScaleSubset=None): """ Scale volume-dependent params like power to account for cut-off edges. @@ -1555,11 +1556,11 @@ def scaleParamsRelatedToSymmetry(reactor, paramsToScaleSubset=None): "Scaling edge-assembly parameters to account for full hexes instead of two halves" ) completeListOfParamsToScale = _generateListOfParamsToScale( - reactor, paramsToScaleSubset + core, paramsToScaleSubset ) symmetricAssems = ( - reactor.core.getAssembliesOnSymmetryLine(grids.BOUNDARY_0_DEGREES), - reactor.core.getAssembliesOnSymmetryLine(grids.BOUNDARY_120_DEGREES), + core.getAssembliesOnSymmetryLine(grids.BOUNDARY_0_DEGREES), + core.getAssembliesOnSymmetryLine(grids.BOUNDARY_120_DEGREES), ) if not all(symmetricAssems): runLog.extra("No edge-assemblies found to scale parameters for.") @@ -1569,15 +1570,15 @@ def scaleParamsRelatedToSymmetry(reactor, paramsToScaleSubset=None): _scaleParamsInBlock(b, bSymmetric, completeListOfParamsToScale) -def _generateListOfParamsToScale(r, paramsToScaleSubset): +def _generateListOfParamsToScale(core, paramsToScaleSubset): fluxParamsToScale = ( - r.core.getFirstBlock() + core.getFirstBlock() .p.paramDefs.inCategory(Category.fluxQuantities) .inCategory(Category.multiGroupQuantities) .names ) listOfVolumeIntegratedParamsToScale = ( - r.core.getFirstBlock() + core.getFirstBlock() .p.paramDefs.atLocation(ParamLocation.VOLUME_INTEGRATED) .since(SINCE_LAST_GEOMETRY_TRANSFORMATION) ) diff --git a/armi/reactor/converters/tests/test_geometryConverters.py b/armi/reactor/converters/tests/test_geometryConverters.py index 5746a18bb..1c326cd19 100644 --- a/armi/reactor/converters/tests/test_geometryConverters.py +++ b/armi/reactor/converters/tests/test_geometryConverters.py @@ -317,7 +317,7 @@ def getAssemByRingPos(ringPos: tuple): # must be added after geom transform for b in self.o.r.core.getBlocks(): b.p.power = 1.0 - converter.scaleParamsRelatedToSymmetry(self.r) + converter.scaleParamsRelatedToSymmetry(self.r.core) a = self.r.core.getAssembliesOnSymmetryLine(grids.BOUNDARY_0_DEGREES)[0] self.assertTrue(all(b.p.power == 2.0 for b in a), "Powers were not scaled") diff --git a/doc/release/0.5.rst b/doc/release/0.5.rst index e2d4a065d..e005d82f8 100644 --- a/doc/release/0.5.rst +++ b/doc/release/0.5.rst @@ -20,6 +20,7 @@ API Changes Bug Fixes --------- #. Fixing BP-section ignoring tool in ``PassiveDBLoadPlugin``. (`PR#2055 `_) +#. Fixing scaling of volume-integrated parameters on edge assembleis. (`PR#2060 `_) #. TBD Quality Work