11. Radial and Axial Expansion and Contraction
ARMI natively supports linear expansion in both the radial and axial dimensions. These expansion
types function independently of one another and each have their own set of underlying assumptions
and use-cases. Radial expansion happens by default but axial expansion only occurs if the setting
inputHeightsConsideredHot
is set to False
.
11.1. Thermal Expansion
ARMI treats thermal expansion as a linear phenomena using a standard linear expansion relationship,
where, \(\Delta L\) and \(\Delta T\) are the change in length and temperature from the reference state, respectively, and \(\alpha\) is the thermal expansion coefficient relative to \(T_0\). Expanding and rearranging Equation (1), we can obtain an expression for the new length, \(L_1\),
Given Equation (1), we can create expressions for the change in length between our “hot” temperature (Equation (3))
and “non-reference” temperature, \(T_c\) (Equation (4)),
These are used within ARMI to enable thermal expansion and contraction with a temperature not equal to the reference temperature, \(T_0\). By taking the difference between Equation (3) and (4), we can obtain an expression relating the change in length, \(L_h - L_c\), to the reference length, \(L_0\),
Using Equations (5) and (4), we can obtain an expression for the change in length, \(L_h - L_c\), relative to the non-reference temperature,
Using Equations (3) and (4), we can simplify Equation (6) to find,
Equation (7) is the expression used by ARMI in
linearExpansionFactor
.
Note
linearExpansionPercent
returns
\(\frac{L - L_0}{L_0}\) in %.
Given that thermal expansion (or contraction) of solid components must conserve mass throughout the system, the density of the component is adjusted as a function of temperature based on Equation (8), assuming isotropic thermal expansion.
where, \(\rho(T_h)\) is the component density in \(\frac{kg}{m^3}\) at the given temperature \(T_h\), \(\rho(T_0)\) is the component density in \(\frac{kg}{m^3}\) at the reference temperature \(T_0\), and \(\alpha(T_h)\) is the mean coefficient of thermal expansion at the specified temperature \(T_h\) relative to the material’s reference temperature.
An update to mass densities is applied for all solid components given the assumption of isotropic thermal expansion. Here we assume the masses of non-solid components (e.g., fluids or gases) are allowed to change within the reactor core model based on changes to solid volume changes. For instance, if solids change volume due to temperature changes, there is a change in the amount of volume left for fluid components.
11.2. Implementation Discussion and Example of Radial and Axial Thermal Expansion
This section provides an example thermal expansion calculation for a simple cylindrical component from a reference temperature of 20°C to 1000°C with example material properties and dimensions as shown in the table below.
Property |
Example |
---|---|
Material |
Steel |
Radius |
0.25 cm |
Height |
5.0 cm |
Reference Temperature |
20°C |
Density |
1.0 g/cc |
Mean Coefficient Thermal Expansion |
2 x 10-6 1/°C |
The figure below illustrates the thermal expansion phenomena in both the radial and axial directions.

Illustration of radial and axial thermal expansion for a cylinder in ARMI.
Thermal expansion calculations are performed for each component in the ARMI reactor data model as component temperatures change. Since components are constrained within blocks, the height of components are determined by the height of their parent block. Equations (9) through (12) illustrate how the radius, height, volume, density, and mass are updated for a Component during thermal expansion, respectively.
Component Temperature |
20°C |
1000°C |
---|---|---|
Radius |
0.25 cm |
0.251 cm |
Height |
5.0 cm |
5.01 cm |
Volume |
0.982 cc |
0.988 cc |
Density |
1.0 g/cc |
0.994 g/cc |
Mass |
0.982 g |
0.982 g |
Radial thermal expansion occurs for each component in a given block. Mechanical contact between components is not accounted for, meaning that the radial expansion of one Component is independent from the radial expansion of the others. Solid components may be linked to gas/fluid components (i.e., sodium bond, helium) and the gas/fluid area is allowed to expand and contract with changes in Component temperatures. It is worth noting that void components are allowed to have negative areas in cases where the expansion of two solid components overlap each other.
When two or more components exist within the Block, the overall height change of the Block is driven by an axial expansion “target Component” (e.g., fuel). Alternatively, the axial thermal expansion of components within a Block influences the positions of components in axially neighboring blocks for a given Assembly. So, while axial thermal expansion evaluations of each Block are treated independently, the axial mesh points are updated to account for the physical material displacements across the entire assembly length.
The following two tables provide illustrations of the axial thermal expansion process for an example core assembly. In this example there are four main block types defined: Shield, Fuel, Plenum, and Dummy.

Illustration of Components for Axial Thermal Expansion Process

Simplified Illustration of Axial Thermal Expansion Process for a Core Assembly
The target components for each Block type are provided in the following table:
Block |
Target Component |
---|---|
Shield |
Shield |
Fuel |
Fuel |
Plenum |
Clad |
Dummy |
N/A |
The axial thermal expansion algorithm is applied in four steps:
Expand the axial dimensions of target component and non-target components within each block independently.
Align blocks axially such that common components have consistent alignments (e.g., overlapping radial dimensions).
Assign the block lower and upper elevations to account for the thermal expansion of blocks below each block.
Create new mesh lines that track the target component.
Adjust the “Dummy” block located at the top of the assembly to maintain a consistent core-wide assembly height before and after axial thermal expansion is applied.
11.2.1. Target Component Logic
When two or more solid components exist within a Block, the overall height change of the Block is
driven by an “axial expansion target component” (e.g., fuel). This Component may either be inferred
from the flags prescribed in the blueprints or manually set using the axial expansion target
component
block blueprint attribute. The following logic is used to infer the target component:
Search Component flags for neutronically important components. These are defined in
expansionData.TARGET_FLAGS_IN_PREFERRED_ORDER
.Compare the Block and Component flags. If a Block and Component contain the same flags, that Component is selected as the axial expansion target Component.
If a Block has
flags.flags.PLENUM
orflags.flags.ACLP
, theflags.flags.CLAD
Component is hard-coded to be the axial expansion target component. If one does not exist, an error is raised.“Dummy Blocks” are intended to only contain fluid (generally coolant fluid), and do not contain solid components, and therefore do not have an axial expansion target component.
11.2.2. Mass Conservation
Due to the requirement that all components within a Block be the same height, the conservation of mass post-axial expansion is not trivial. At the Block-level, the axial expansion target component is guaranteed to have its mass conserved post-axial expansion. For pinned-blocks, this is typically chosen to be the most neutronically important component; e.g., in a fuel Block this is typically the Fuel component. All other components, assuming they expand at a different rate than the fuel, will exhibit non-conservation on the Block-level as mass is redistributed across the axially-neighboring blocks. However, the mass of all solid components at the assembly-level are designed to be conserved if the following are met for a given assembly design.
Axial continuity of like-objects. E.g., pins, clad, etc.
Components that may expand at different rates axially terminate in unique blocks
E.g., the clad extends above the termination of the fuel and the radial duct encasing an assembly extends past the termination of the clad.
The top-most Block must be a “dummy Block” containing fluid (typically coolant).
See armi.tests.detailedAxialExpansion for an example blueprint which satisfy the above requirements.
Important
For sufficiently strong axial thermal gradients, conservation of mass may be lost on the assembly for non-target components, albeit in relatively minor quantities. This is due to the differing temperature between blocks, radial expansion effects, and how mass is redistributed between blocks.