armi.reactor.components package

Components package contains components and shapes.

These objects hold the dimensions, temperatures, composition, and shape of reactor primitives.

armi.reactor.components.factory(shape, bcomps, kwargs)[source]

Build a new component object.

Parameters
  • shape (str) – lowercase string corresponding to the component type name

  • bcomps (list(Component)) – list of “sibling” components. This list is used to find component links, which are of the form <name>.<dimension.

  • kwargs (dict) – dictionary of inputs for the Component subclass’s __init__ method.

armi.reactor.components._removeDimensionNameSpaces(attrs)[source]

Some components use spacing in their dimension names, but can’t internally.

class armi.reactor.components.NullComponent(name, material, Tinput, Thot, area=None, isotopics='', mergeWith='', components=None)[source]

Bases: armi.reactor.components.component.Component

returns zero for all dimensions. is none.

getBoundingCircleOuterDiameter(Tc=None, cold=False)[source]

Abstract bounding circle method that should be overwritten by each shape subclass.

getDimension(key, Tc=None, cold=False)[source]

Return a specific dimension at temperature as determined by key

Parameters
  • key (str) – The dimension key (op, ip, mult, etc.)

  • Tc (float) – Temperature in C. If None, the current temperature of the component is used.

  • cold (bool, optional) – If true, will return cold (input) value of the requested dimension

DIMENSION_NAMES = ()
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.ComponentParameterCollection

class armi.reactor.components.UnshapedComponent(name, material, Tinput, Thot, area=nan, modArea=None, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.component.Component

A component with undefined dimensions.

Useful for situations where you just want to enter the area directly.

pDefs = <armi.reactor.parameters.parameterDefinitions.ParameterDefinitionCollection object>
getComponentArea(cold=False)[source]

Get the area of this component in cm^2.

Parameters

cold (bool, optional) – Compute the area with as-input dimensions instead of thermally-expanded

setArea(val)[source]
getBoundingCircleOuterDiameter(Tc=None, cold=False)[source]

Approximate it as circular and return the radius.

This is the smallest it can possibly be. Since this is used to determine the outer component, it will never be allowed to be the outer one.

static fromComponent(otherComponent)[source]

Build a new UnshapedComponent that has area equal to that of another component.

This can be used to “freeze” a DerivedShape, among other things.

DIMENSION_NAMES = ('modArea',)
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'modArea', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.UnshapedComponentParameterCollection

class armi.reactor.components.UnshapedVolumetricComponent(name, material, Tinput, Thot, area=nan, op=None, isotopics=None, mergeWith=None, components=None, volume=nan)[source]

Bases: armi.reactor.components.UnshapedComponent

A component with undefined dimensions.

Useful for situations where you just want to enter the volume directly.

is3D = True
getComponentArea(cold=False)[source]

Get the area of this component in cm^2.

Parameters

cold (bool, optional) – Compute the area with as-input dimensions instead of thermally-expanded

getComponentVolume()[source]

Get the volume of the component in cm^3.

setVolume(val)[source]
DIMENSION_NAMES = ('op', 'volume')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'op', 'isotopics', 'mergeWith', 'components', 'volume')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.UnshapedComponentParameterCollection

class armi.reactor.components.ZeroMassComponent(name, material, Tinput, Thot, area=nan, op=None, isotopics=None, mergeWith=None, components=None, volume=nan)[source]

Bases: armi.reactor.components.UnshapedVolumetricComponent

A component that never has mass – it always returns zero for getMass and getNumberDensity

Useful for situations where you want to give a block integrated flux, but ensure mass is never added to it

See also

armi.reactor.batch.makeMgFluxBlock

getNumberDensity(*args, **kwargs)[source]

Always return 0 because this component has not mass

setNumberDensity(*args, **kwargs)[source]

Never add mass

DIMENSION_NAMES = ('op', 'volume')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'op', 'isotopics', 'mergeWith', 'components', 'volume')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.UnshapedComponentParameterCollection

class armi.reactor.components.PositiveOrNegativeVolumeComponent(name, material, Tinput, Thot, area=nan, op=None, isotopics=None, mergeWith=None, components=None, volume=nan)[source]

Bases: armi.reactor.components.UnshapedVolumetricComponent

A component that may have negative mass for removing mass from batches

See also

armi.reactor.batch.makeMassAdditionComponent

_checkNegativeVolume(volume)[source]

Allow negative areas.

DIMENSION_NAMES = ('op', 'volume')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'op', 'isotopics', 'mergeWith', 'components', 'volume')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.UnshapedComponentParameterCollection

class armi.reactor.components.DerivedShape(name, material, Tinput, Thot, area=nan, modArea=None, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.UnshapedComponent

This a component that does have specific dimensions, but they’re complicated.

Notes

  • This component type is “derived” through the addition or subtraction of other shaped components (e.g. Coolant)

  • Because its area and volume are defined by other components, a DerivedShape’s area and volume may change as the other components thermally expand. However the DerivedShape cannot drive thermal expansion itself, even if it is a solid component with non-zero thermal expansion coefficient

getBoundingCircleOuterDiameter(Tc=None, cold=False)[source]

The bounding circle for a derived component.

Notes

This is used to sort components relative to one another.

There can only be one derived component per block, this is generally the coolant inside a duct. Under most circumstances, the volume (or area) of coolant will be greater than any other (single) component (i.e. a single pin) within the assembly. So, sorting based on the Dh of the DerivedShape will result in somewhat expected results.

computeVolume()[source]

Cannot compute volume until it is derived.

DIMENSION_NAMES = ('modArea',)
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'area', 'modArea', 'isotopics', 'mergeWith', 'components')
_deriveVolumeAndArea()[source]

Derive the volume and area of DerivedShapes.

Notes

If a parent exists, this will iterate over it and then determine both the volume and area based on its context within the scope of the parent object by considering the volumes and areas of the surrounding components.

Since some components are volumetric shapes, this must consider the volume so that it wraps around in all three dimensions.

But there are also situations where we need to handle zero-height blocks with purely 2D components. Thus we track area and volume fractions here when possible.

paramCollectionType

alias of armi.reactor.parameters.parameterCollections.UnshapedComponentParameterCollection

getVolume()[source]

Get volume of derived shape.

The DerivedShape must pay attention to all of the companion objects, because if they change, this changes. However it’s inefficient to always recompute the derived volume, so we have to rely on the parent to know if anything has changed.

Since each parent is only allowed one DerivedShape, we can reset the update flag here.

Returns

volume of component in cm^3.

Return type

float

getComponentArea(cold=False)[source]

Get the area of this component in cm^2.

Parameters

cold (bool, optional) – Ignored for this component