armi: Inconsistency with 'sfp' SystemBlueprint object and o.r.core.sfp
The problem/observation
- in marching through
armi/reactor/tests/test_reactors.py::loadTestReactor, there are two designs stored inbp.systemDesigns,Coreandsfp. https://github.com/terrapower/armi/blob/55766354067d8b1cffed02a48d36cd5d59c10718/armi/reactor/reactors.py#L145-L147 - The
coreobject is built just before this for loop here, https://github.com/terrapower/armi/blob/55766354067d8b1cffed02a48d36cd5d59c10718/armi/reactor/reactors.py#L143-L144. ForloadTestReactorit gets 73 assemblies in core and 8 blueprints assemblies. - The
sfpobject is then built instructure.construct. It contains the 4 sfp assemblies defined in the input and 8 blueprints assemblies.
After both objects have been constructed, when r is returned the sfp object seems to be missing.
r.sfpis not a thing…r.core.sfpis an “AssemblyList object: Spent Fuel Pool”, but contains no assemblies.
Then in loadTestReactor, we put stuff into r.core.sfp https://github.com/terrapower/armi/blob/55766354067d8b1cffed02a48d36cd5d59c10718/armi/reactor/tests/test_reactors.py#L188-L191
- So, now we have these 10 assemblies in
r.core.sfp, but the original 4 assemblies from the input are no where to be found (at least I can’t find them).
Impacts
For the most part, I don’t think this a huge deal (otherwise we would have found it by now). But, it does raise an issue if a user assigns assemblies in the SFP via the inputs or wants to see what assemblies are in the sfp on a database load.
-
Since there isn’t a registered
r.sfpobject andr.core.sfpdoesn’t get written to the database (at least in my tests it doesn’t), then there is no way to check what is actually in the sfp on a database load (either put in via a shuffle or initialized there via an input).- I imagine this is certainly something we’ll want to support. Knowing what is in the SFP feels important. Especially when we’re shuffling assemblies out of the core.
-
There is a disconnect between where ARMI stores SFP assemblies from inputs (in Core: sfp object) vs where it stashes them as a result of shuffling (in r.core.sfp).
-
This also wreaks havoc a bit on the global assem counter as it has been ticked to account for SFP assemblies, but they aren’t anywhere to be found. https://github.com/terrapower/armi/blob/55766354067d8b1cffed02a48d36cd5d59c10718/armi/bookkeeping/db/tests/test_database3.py#L331-L351
About this issue
- Original URL
- State: open
- Created 2 years ago
- Comments: 19 (19 by maintainers)
SFP was around before the reactor could have child systems and is kind of shoe-horned in for transitional reasons. It’s supposed to end up being just another system alongside the core as a child of the
reactor. Andr.sfpmight be useful as a convenient shortcut for that child, kind of like howr.coreis a convenient shortcut for the core system.We anticipate more systems like this being added to models for other non-core things, like pumps and heat exchangers, etc.
Well, I would disagree with this statement. Just because they aren’t written to the database doesn’t mean that the SFP assemblies can’t still be used during the run. In a non-restart run, they can definitely still be valuable.
the issue seems to be the assemblies in SFP are created but just dropped on the ground and not actually stored in sfp.
When test_reactor is created it should have 4 assemblies in SFP according to the blueprints grid, and they are created, but they are never stored on the object
AssertionError: assert 0 == 4