armi.reactor.zones module

Zones are collections of locations.

class armi.reactor.zones.Zone(name, locations=None, symmetry=3)[source]

Bases: object

A group of locations labels useful for choosing where to shuffle from or where to compute reactivity coefficients. locations if specified should be provided as a list of assembly locations.

extend(locList)[source]
index(loc)[source]
__add__(other)[source]

Returns all the blocks in both assemblies.

append(obj)[source]
addAssemblyLocations(aList)[source]

Adds the locations of a list of assemblies to a zone

Parameters

aList (list) – List of assembly objects

addRing(ring, p0=None, p1=None)[source]

Adds a section of a ring (or a whole ring) to the zone

Parameters
  • ring (int) – The ring to add

  • p0 (int, optional) – beginning position within ring. Default: None (full ring)

  • p1 (int, optional) – Ending position within ring.

class armi.reactor.zones.Zones(core, cs)[source]

Bases: object

Collection of Zone objects.

Build a Zones object.

property names

Ordered names of contained zones.

__getitem__(name)[source]

Access a zone by name.

__iter__()[source]

Loop through the zones in order.

update(zones)[source]

Merge with another Zones.

add(zone)[source]

Add a zone to the collection.

removeZone(name)[source]

delete a zone by name.

summary(zoneNames=None)[source]

Print out power distribution of fuel assemblies this/these zone.

getZoneAxialPowerDistribution(zone)[source]

Return a list of powers in watts of the axial levels of zone.

getZoneLocations(zoneNames)[source]

Get the location labels of a particular (or a few) zone(s).

Parameters

zoneNames (str or list) – the zone name or list of names

Returns

zoneLocs – List of location labels of this/these zone(s)

Return type

list

getRingZoneRings()[source]

Get rings in each ring zone as a list of lists.

Returns

ringZones – List of lists. Each entry is the ring numbers in a ring zone. If there are no ring zones defined, returns a list of all rings.

Return type

list

findZoneAssemblyIsIn(a)[source]

Return the zone object that this assembly is in.

Parameters

a (assembly) – The assembly to locate

Returns

zone

Return type

Zone object that the input assembly resides in.

armi.reactor.zones.buildZones(core, cs)[source]

Build/update the zones.

Zones are groups of assembly locations used for various purposes such as defining SASSYS channels and reactivity coefficients.

The zoning option is determined by the zoningStrategy setting.

armi.reactor.zones._buildZonesByOrifice(core, cs)[source]

Group fuel assemblies by orifice zones.

Each zone will contain all FAs with in same orifice coefficients.

Returns

faZonesForSafety – dictionary of zone name and list of FAs name in that zone

Return type

dict

Notes

It separate oxide and LTA assembly into their own zones

armi.reactor.zones._buildManualZones(core, cs)[source]
armi.reactor.zones._buildZonesforEachFA(core, cs)[source]

Split every fuel assembly in to a zones for safety analysis.

Returns

reactorChannelZones – dictionary of each channel as a zone

Return type

dict

armi.reactor.zones._buildRingZoneZones(core, cs)[source]

Build zones based on annular rings.

Notes

Originally, there were ringZones. These were defined by a user-input list of upper bound rings and the zones were just annular regions between rings. They were used to compute reactivity coefficients and whatnot. Then one day, it became clear that more general zones were required. To support old code that used ringZones, this code produces modern zones out of the ringZone input.

It creates zones called ring-0, ring-1, etc. for each zone.

If no zones are defined, one big ringzone comprising the whole core will be built.

See also

getRingZoneAssemblies()

gets assemblies in a ringzone

getRingZoneRings()

computes rings in a ringzone

getAssembly()

accesses assemblies in a zone the new way.

armi.reactor.zones._buildAssemTypeZones(core, cs, typeSpec=None)[source]

Builds zones based on assembly type labels.

Notes

Creates a zone for each assembly type. All locations occupied by a certain type of assembly become a new zone based on that type.

For example, after this call, all ‘feed fuel a’ assemblies will reside in the ‘feed fuel a’ zone.

Useful for building static zones based on some BOL core layout.

Parameters
  • core (Core) – The core

  • typeSpec (Flags or list of Flags, optional) – Assembly types to consider (e.g. Flags.FUEL)

Returns

zones

Return type

Zones

armi.reactor.zones.splitZones(core, cs, zones)[source]

Split the existing zone style into smaller zones via number of blocks and assembly type.

Parameters
  • core (Core) – The Core object to which the Zones belong

  • cs (Case settings) – The case settings for the run

  • zones (Zones) – The Zones to split

Returns

zones

Return type

Zones

Notes

Zones are collections of locations grouped by some user input. Calling this method transforms a collection of zones into another collection of zones further broken down by assembly type and number of blocks. Each new zone only contains assemblies of the same type and block count. any other arbitrary grouping method. A subZone is a further breakdown of a zone.

Examples

If the original zone was ringZone3 and ringZone3 contained three assemblies, one of them being a burner with nine blocks, one being a burner with 8 blocks and one control assembly with 3 blocks three splitZones would be produced and ringZone3 would be deleted. The the zones would be named ringZone3_Burner_8, ringZone3_Burner_9, ringZone3_Control_3.

armi.reactor.zones.createHotZones(core, zones)[source]

Make new zones from assemblies with the max power to flow ratio in a zone.

Parameters
  • core (Core) – The core object

  • zones (Zones) – Zones

Returns

zones

Return type

zones object

Notes

This method determines which assembly has the highest power to flow ratio in each zone. This method then removes that assembly from its original zone and places it in a new zone.