armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage module

armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage.areAxiallyLinked(componentA: Component, componentB: Component) bool[source]

Determine axial component linkage for two components.

Components are considered linked if the following are found to be true:

  1. Both contain solid materials.

  2. They have identical types (e.g., Circle).

  3. Their multiplicities are the same.

  4. The biggest inner bounding diameter of the two is less than the smallest outer bounding diameter of the two.

Parameters:
  • componentA (Component) – component of interest

  • componentB (Component) – component to compare and see if is linked to componentA

Notes

  • Requires that shapes have the getCircleInnerDiameter and getBoundingCircleOuterDiameter defined

  • When component dimensions are retrieved, cold=True to ensure that dimensions are evaluated at cold/input temperatures. At temperature, solid-solid interfaces in ARMI may produce slight overlaps due to thermal expansion. Handling these potential overlaps are out of scope.

Returns:

linked – status is componentA and componentB are axially linked to one another

Return type:

bool

Bases: Generic[Comp]

Small class for named references to objects above and below a specific object.

Axial expansion in ARMI works by identifying what objects occupy the same axial space. For components in blocks, identify which above and below axially align. This is used to determine what, if any, mass needs to be re-assigned across blocks during expansion. For blocks, the linking determines what blocks need to move as a result of a specific block’s axial expansion.

Variables:
  • lower (Composite or None) – Object below, if any.

  • upper (Composite or None) – Object above, if any.

Notes

This class is “templated” by the type of composite that could be assigned and fetched. A block-to-block linkage could be type-hinted via AxialLink[Block] or AxialLink[Component] for component-to-component link.

See also

  • AxialAssemblyLinkage.linkedBlocks

  • AxialAssemblyLinkage.linkedComponents

lower: Optional[Comp] = None
upper: Optional[Comp] = None
class armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage.AssemblyAxialLinkage(assem: Assembly)[source]

Bases: object

Determines and stores the block- and component-wise axial linkage for an assembly.

Parameters:

assem (armi.reactor.assemblies.Assembly) – Assembly to be linked

Variables:
  • a (Assembly) – reference to original assembly; is directly modified/changed during expansion.

  • linkedBlocks (dict) – Keys are blocks in the assembly. Their values are AxialLink with upper and lower attributes for the blocks potentially above and below this block.

  • linkedComponents (dict) – Keys are solid components in the assembly. Their values are AxialLink with upper and lower attributes for the solid components potentially above and below this block.

linkedBlocks: dict[armi.reactor.blocks.Block, armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage.AxialLink[armi.reactor.blocks.Block]]
linkedComponents: dict[armi.reactor.components.component.Component, armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage.AxialLink[armi.reactor.components.component.Component]]
classmethod getLinkedBlocks(blocks: Sequence[Block]) dict[armi.reactor.blocks.Block, armi.reactor.converters.axialExpansionChanger.assemblyAxialLinkage.AxialLink[armi.reactor.blocks.Block]][source]

Produce a mapping showing how blocks are linked.

Parameters:

blocks (sequence of armi.reactor.blocks.Block) – Ordered sequence of blocks from bottom to top. Could just as easily be an armi.reactor.assemblies.Assembly.

Returns:

Dictionary where keys are individual blocks and their corresponding values point to blocks above and below.

Return type:

dict[Block, AxialLink[Block]]

static areAxiallyLinked(componentA: Component, componentB: Component) bool[source]

Check if two components are axially linked.

Parameters:
  • componentA (Component) – component of interest

  • componentB (Component) – component to compare and see if is linked to componentA

Returns:

Status of linkage check

Return type:

bool

See also

areAxiallyLinked(), including, This