From 9be444a7699e8c4d201f4b2e9e9a04b99abb323c Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Tue, 21 Jan 2025 14:53:37 -0800 Subject: [PATCH 1/6] Fix scaling of edge assemblies. --- armi/reactor/converters/geometryConverters.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/armi/reactor/converters/geometryConverters.py b/armi/reactor/converters/geometryConverters.py index 8006a917f..16ff0df17 100644 --- a/armi/reactor/converters/geometryConverters.py +++ b/armi/reactor/converters/geometryConverters.py @@ -1516,6 +1516,8 @@ 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) + + self.scaleParamsRelatedToSymmetry(core.parent) for a in edgeAssemblies: runLog.debug( "Removing edge assembly {} from {} from the reactor without discharging".format( From 5fc0d5e3e6014ff54cfaa9d8acaea97ec9ef8f0b Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Tue, 21 Jan 2025 23:40:49 +0000 Subject: [PATCH 2/6] Perform scaling during blueprints load. --- .../neutronics/globalFlux/globalFluxInterface.py | 2 +- armi/reactor/blueprints/reactorBlueprint.py | 1 + armi/reactor/converters/geometryConverters.py | 15 +++++++-------- .../converters/tests/test_geometryConverters.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) 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 16ff0df17..58b7961a2 100644 --- a/armi/reactor/converters/geometryConverters.py +++ b/armi/reactor/converters/geometryConverters.py @@ -1540,7 +1540,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. @@ -1557,11 +1557,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.") @@ -1570,16 +1570,15 @@ def scaleParamsRelatedToSymmetry(reactor, paramsToScaleSubset=None): for b, bSymmetric in zip(a, aSymmetric): _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") From 19911b709f674e2e6a8ce014f74a12b52ede2269 Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Tue, 21 Jan 2025 15:45:21 -0800 Subject: [PATCH 3/6] Black formatting. --- armi/reactor/converters/geometryConverters.py | 1 + 1 file changed, 1 insertion(+) diff --git a/armi/reactor/converters/geometryConverters.py b/armi/reactor/converters/geometryConverters.py index 58b7961a2..6cc2d4410 100644 --- a/armi/reactor/converters/geometryConverters.py +++ b/armi/reactor/converters/geometryConverters.py @@ -1570,6 +1570,7 @@ def scaleParamsRelatedToSymmetry(core, paramsToScaleSubset=None): for b, bSymmetric in zip(a, aSymmetric): _scaleParamsInBlock(b, bSymmetric, completeListOfParamsToScale) + def _generateListOfParamsToScale(core, paramsToScaleSubset): fluxParamsToScale = ( core.getFirstBlock() From a53b716149998dd0cd5ca6b9bf21b39352d67075 Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Tue, 21 Jan 2025 15:52:18 -0800 Subject: [PATCH 4/6] Remove old line. --- armi/reactor/converters/geometryConverters.py | 1 - 1 file changed, 1 deletion(-) diff --git a/armi/reactor/converters/geometryConverters.py b/armi/reactor/converters/geometryConverters.py index 6cc2d4410..94c052df7 100644 --- a/armi/reactor/converters/geometryConverters.py +++ b/armi/reactor/converters/geometryConverters.py @@ -1517,7 +1517,6 @@ def removeEdgeAssemblies(self, core): # assems. edgeAssemblies = core.getAssembliesOnSymmetryLine(grids.BOUNDARY_120_DEGREES) - self.scaleParamsRelatedToSymmetry(core.parent) for a in edgeAssemblies: runLog.debug( "Removing edge assembly {} from {} from the reactor without discharging".format( From 9e2488258465999ec41641e61791270f66f5bb4b Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Tue, 21 Jan 2025 16:35:44 -0800 Subject: [PATCH 5/6] Update function argument. --- armi/reactor/converters/geometryConverters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armi/reactor/converters/geometryConverters.py b/armi/reactor/converters/geometryConverters.py index 94c052df7..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: From c190be5e949b13d5c709af4066d25628279f2e3e Mon Sep 17 00:00:00 2001 From: Michael Jarrett Date: Wed, 22 Jan 2025 08:24:12 -0800 Subject: [PATCH 6/6] Update release notes. --- doc/release/0.5.rst | 1 + 1 file changed, 1 insertion(+) 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