armi.reactor.converters.meshConverters module

Mesh specifiers update the mesh structure of a reactor by increasing or decreasing the number of mesh coordinates.

class armi.reactor.converters.meshConverters.MeshConverter(converterSettings: dict)[source]

Bases: object

Base class for the reactor mesh conversions.

Parameters

converterSettings (dict) – A set of str, value settings used in mesh conversion. Required settings are implementation specific.

generateMesh(r=None)[source]
writeMeshData()[source]
class armi.reactor.converters.meshConverters.RZThetaReactorMeshConverter(converterSettings)[source]

Bases: armi.reactor.converters.meshConverters.MeshConverter

Handles mesh conversions for r-z-theta reactor geometries.

Variables

~RZThetaReactorMeshConverter.converterSettings (dict) – This is a dictionary of settings that are used for the RZThetaReactorMeshConverter. Required converter settings: uniformThetaMesh,``thetaBins``

generateMesh(r=None)[source]
writeMeshData()[source]

Write a summary table of the radial, axial, and theta bins that will be used for geometry conversion.

Notes

This should be on the ThetaRZGrid object.

setRingsToConvert(core)[source]
setAxialMesh()[source]
setThetaMesh()[source]

Generate a uniform theta mesh in radians.

class armi.reactor.converters.meshConverters.RZThetaReactorMeshConverterByRingCompositionAxialBins(cs)[source]

Bases: armi.reactor.converters.meshConverters._RZThetaReactorMeshConverterByRingComposition, armi.reactor.converters.meshConverters._RZThetaReactorMeshConverterByAxialBins

Generate a new mesh based on the radial compositions and axial bins in the core.

See also

_RZThetaReactorMeshConverterByRingComposition, _RZThetaReactorMeshConverterByAxialBins

class armi.reactor.converters.meshConverters.RZThetaReactorMeshConverterByRingCompositionAxialCoordinates(cs)[source]

Bases: armi.reactor.converters.meshConverters._RZThetaReactorMeshConverterByRingComposition, armi.reactor.converters.meshConverters._RZThetaReactorMeshConverterByAxialCoordinates

Generate a new mesh based on the radial compositions and axial coordinates in the core.

See also

_RZThetaReactorMeshConverterByRingComposition, _RZThetaReactorMeshConverterByAxialCoordinates

armi.reactor.converters.meshConverters.checkLastValueInList(inputList, listName, expectedValue, eps=0.001, adjustLastValue=False)[source]

Check that the last value in the list is equal to the expected value within +/- eps

armi.reactor.converters.meshConverters.checkListBounds(inputList, listName, minVal, maxVal, eps=0.001)[source]

Ensure that each value in a list does not exceed the allowable bounds

armi.reactor.converters.meshConverters.generateBins(totalNumDataPoints, numPerBin, minNum)[source]

Fill in a list based on the total number of data points and the number of data points per bin

class armi.reactor.converters.meshConverters.AxialExpansionModifier(percent, fuelLockedToClad=False, cs=None)[source]

Bases: armi.reactor.converters.meshConverters.MeshConverter

Axially expand or contract a reactor.

Useful for fuel performance, thermal expansion, reactivity coefficients, etc.

Build an axial expansion converter.

Parameters
  • percent (float) – the desired axial expansion in percent. If negative, use special treatment of down-expanding

  • fuelLockedToClad (bool) – Specify whether or not to conserve mass on structure due to the fuel being locked to the clad. Note: this should generally be set to False even if the fuel is locked to the clad because the duct will not be axially expanding.

convert(r=None, converterSettings=None)[source]

Perform an axial expansion of the core.

Notes

This loops through the fuel blocks, making their height larger by a fraction of maxPercent. It reduces the homogenized actinide number densities to conserve atoms.

This is a first approximation, adjusting the whole core uniformly and adjusting fuel with structure and everything.

When fuel is locked to clad, this only expands the actinides! So the structural materials and sodium stay as they are in terms of density. By growing the mesh, we are introducing NEW ATOMS of these guys, thus violating conservation of atoms. However, the new ones are effectively piled up on top of the reactor where they are neutronically uninteresting. This approximates fuel movement without clad/duct movement.

armi.reactor.converters.meshConverters.getAxialExpansionNuclideAdjustList(r, componentFlags: Optional[Union[armi.utils.flags.Flag, armi.utils.flags.auto, Sequence[Union[armi.utils.flags.Flag, armi.utils.flags.auto]]]] = None)[source]

Determine which nuclides should have their mass conserved during axial expansion

Parameters
  • r (Reactor) – The Reactor object to search for nuclide instances

  • componentFlags (TypeSpec, optional) – A type specification to use for filtering components that should conserve mass. If None, Flags.FUEL is used.