Zones overhaul #811
Replies: 4 comments 4 replies
-
Thanks to @john-science for helping to refine the above requirements. The feature branch for this overhaul is: https://github.com/terrapower/armi/tree/zones_overhaul |
Beta Was this translation helpful? Give feedback.
-
Awesome! Let's try and organize our work a bit. Just edit this comment and put your name next to the thing you're working on:
|
Beta Was this translation helpful? Give feedback.
-
Minor Requirement ChangeAfter looking at the code, I think we can simplify our design significantly if we allow a This would include where we read in Zone definitions. So, this isn't as simple as the old "Assembly-only" pathway, but it is worlds simpler than our original idea of allowing Component-level Zones. |
Beta Was this translation helpful? Give feedback.
-
Also, @joshuavictorchen , I note that we already have logic in the code base for manually defining armi/armi/settings/fwSettings/globalSettings.py Lines 139 to 149 in e336bad And we even check for manual zone definitions: armi/armi/operators/settingsValidation.py Lines 336 to 345 in e336bad And they are really simple Lines 482 to 491 in e336bad I think we can re-use nearly all of that. The only thing we need to add in is some way to say if the We will need to change the default to |
Beta Was this translation helpful? Give feedback.
-
The
armi.reactor.zones
module is very SAS4A/SASSYS-1-specific and is in need of an overhaul - see this issue.This discussion serves to communicate these requirements and manage progress/collaboration on implementation.
Note: In the following bullets we define the term
Item
to be either anAssembly
or aBlock
. And probably, oneZone
collection will have to be defined as allAssembly
objects or allBlock
objects, with no mixing (just to make things easier).Requirements
The following requirements describe what a good
zones
module should look like.zones
should be an attribute of theCore
that tracksItem
locations AND the names of theItems
in those locationsZones
will be affected if anyItem
s are moved, but theItem
s themselves can be perturbed without disturbing theZones
(i.e., updating theirblocks
’ reactivity coefficient parameters)zones
will be to contain a list/set/collection ofZone
objects.Zone
should have the following attributes:name
(string)locations
(dict of locations and correspondingItem
names)length
(int of count of locations)id
(hash based on thelocations
attribute), or ahash()
functionZones
may be mutable, but theirid
attributes should be updated if any changes are made to them, in order to:Item
configuration as expected by the SAS modelZones
on the fly if needed (i.e., for sensitivity studies)Zones
may have the following utility functions:addItem(item, toZone)
transferItem(item, fromZone, toZone)
removeItem(item, fromZone)
checkDuplicates()
zoningStrategy()
<-- abstract method?Item
objects described by theZone
Zones
should be generated whenever a reactor database is created or loadedZones
should be able to be written to/read from the databaseZones
should NOT be able to contain duplicateItems
Zones
should NOT need to be contiguous or contain contiguousItems
Zones
should NOT need to be comprehensive (i.e.,zones
don't have to contain ALL of theItems
in theCore
)Implementation details:
Zones
Plugin
orInterface
or something easyBeta Was this translation helpful? Give feedback.
All reactions