ARMI v0.2 Release Notes

ARMI v0.2.9

Release Date: 2023-09-27

What’s new in ARMI

  1. Moved the Reactor assembly number from the global scope to a Parameter. (PR#1383)

  2. Removed the global Settings object, getMasterCs(), and setMasterCs(). (PR#1399)

  3. Moved the Spent Fuel Pool (sfp) from the Core to the Reactor. (PR#1336)

  4. Made the sfp a child of the Reactor so it is stored in the database. (PR#1349)

  5. Broad cleanup of Parameters: filled in all empty units and descriptions, removed unused params. (PR#1345)

  6. Updated some parameter definitions and defaults. (PR#1355)

  7. Removed redundant Material.name variable. (PR#1335)

  8. Added powerDensity as a high-level alternative to power to configure a Reactor. (PR#1395)

  9. Added SHA1 hashes of XS control files to the welcome text. (PR#1334)

Build changes

  1. Moved from setup.py to pyproject.toml. (PR#1409)

  2. Add python 3.11 to ARMI’s CI testing GH actions! (PR#1341)

  3. Put back avgFuelTemp block parameter. (PR#1362)

  4. Make cylindrical component block collection less strict about pre-homogenization checks. (PR#1347)

  5. Updated some parameter definitions and defaults. (PR#1355)

  6. Make the SFP a child of the reactor so it is stored in database. (PR#1349)

  7. Update black to version 22.6 (PR#1396)

  8. Added Python 3.11 to ARMI’s CI on GH actions. (PR#1341)

  9. Updated black to version 22.6. (PR#1396)

  10. Add a _getNucTempHelper method for CylindricalComponentsAverageBlockCollection. (PR#1363)

Bug fixes

  1. Fixed _processIncludes() to handle StringIO input. (PR#1333)

  2. Fixed logic for computing thermal expansion factors for axial expansion. (PR#1342)

ARMI v0.2.8

Release Date: 2023-06-21

What’s new in ARMI

  1. Added Composite.sort() to allow the user to recursively sort any part of the Reactor. (PR#1280)

  2. Switching from pylint to the ruff linter. (PR#1296)

  3. Move cross section group manager Interface stack position to be just before lattice physics. (PR#1288)

  4. Add interactCoupled method for SnapshotInterface. (PR#1294)

  5. Calculate weighted-average percent burnup of BlockCollections. (PR#1265)

  6. Add method sortAssemsByRing to sort Reactor assemblies by spatial location (interior first) (PR#1320)

Bug fixes

  1. Changed units.FLOAT_DIMENSION_DECIMALS from 10 to 8. (PR#1183)

  2. Improved HexBlock.getWettedPerimeter() to include wire. (PR#1299)

  3. Fixed a bug in the ISOTXS file name used for snapshots. (PR#1277)

  4. Fix a bug in uniform mesh decusping when assemblies of same type have drastically different height. (PR#1282)

  5. Sort Components on representativeBlock for consistency check. (PR#1275)

ARMI v0.2.7

Release Date: 2023-05-24

What’s new in ARMI

  1. The method Material.density3 is now called density, and the old density is now called pseudoDensity. (PR#1163)

  2. Removed metadata setting section, and created versions. (PR#1274)

  3. Remove unused HCFcoretype setting. (PR#1179)

  4. Use minimumNuclideDensity setting when generating macroscopic XS. (PR#1248)

  5. Introduce new LatticePhysicsFrequency setting to control lattice physics calculation. (PR#1239)

  6. Added new setting assemFlagsToSkipAxialExpansion to enable users to list flags of assemblies to skip axial expansion. (PR#1235)

  7. Added documentation for the thermal expansion approach used in ARMI. (PR#1204)

  8. Use TemporaryDirectoryChanger for executer.run() so dirs are cleaned up during run. (PR#1219)

  9. New option copyOutput for globalFluxInterface to not copy output back to working directory. (PR#1218, PR#1227)

  10. Executer class has a dcType attribute to define the type of DirectoryChanger it will use. (PR#1228)

  11. Enabling one-way (upwards) axial expansion of control assemblies. (PR#1226)

  12. Implement control rod decusping option for uniform mesh converter. (PR#1229)

  13. createRepresentativeBlocksFromExistingBlocks now returns the mapping of original to new XS IDs. (PR#1217)

  14. Added a capability to prioritize MpiAction execution and exclusivity. (PR#1237)

  15. Improve support for single component axial expansion and general cleanup of axial expansion unit tests. (PR#1230)

  16. New cross section group representative block type for 1D cylindrical models. (PR#1238)

  17. Store the axial expansion target component name as a block parameter. (PR#1256)

  18. When using non-uniform mesh, detailed fission/activation products have cross sections generated to avoid blocks without xs data. (PR#1257)

  19. Fix a bug in database comparison. (PR#1258)

  20. Introduce new LatticePhysicsFrequency setting to control lattice physics calculation. (PR#1239)

  21. Made sure all material classes could be resolved via name. (PR#1270)

  22. Read flux directly from output into Gamma uniform mesh instead of mapping it in from block params. (PR#1213)

  23. Forced GAMISO/PMATRX file path extensions to be lower case for linux support. (PR#1216)

Bug fixes

  1. Fixed a bug in database comparison. (PR#1258)

  2. Fixed an invalid assumption on the lattice physics and cross section manager interfaces when using tight coupling for snapshot runs. (PR#1206)

  3. Fixed a bug where the precision used to determine the axial submesh was too small. (PR#1225)

ARMI v0.2.6

Release Date: 2023-02-09

What’s new in ARMI

  1. The Material class no longer subclasses Composite (PR#1062)

  2. Froze the NumPy version to <= 1.23.5 (PR#1035) to continue to support NumPy jagged arrays in the DatabaseInterface.

  3. Split 3 classes in database3.py into 3 files (PR#955)

  4. Split algorithms specific to hex assemblies out of FuelHandler. (PR#962)

  5. Added 4614 nuclides to decouple the loading of RIPL-3 data from the standard framework run. (PR#998)

  6. Overhaul of the tight coupling routine in ARMI, and removal of looseCoupling setting. (PR #1033)

  7. Added savePhysicsFiles setting to copy physics kernel I/O to directories organized by cycle and time step (e.g., c2n1). (PR#952)

  8. Add pinQuantities parameter category for block params that have spatial distribution.

  9. Use r.core.p.axialMesh instead of r.core.refAssem.getAxialMesh() for the uniform mesh converter. (PR#959)

  10. Add group structures for 21- and 94-groups used in photon transport.

  11. Add block parameter, fuelCladLocked, to track whether or not the fuel and clad are locked. (PR#1038)

  12. An explicit fission product modeling option was added. (PR#1022)

  13. Axially expand from cold to hot before deepcopy of assemblies into reactor; improving speed. (PR#1047)

  14. Add a how-to on restart calculations in the docs.

  15. General improvements to efficiency in uniform mesh conversion. (PR#1042)

  16. Allow MCNP material card number to be defined after the card is written. (PR#1086)

  17. Refine logic for Block.getNumPins() to only count components that are actually pins. (PR#1098)

  18. Improve handling of peak/max parameters by the UniformMeshConverter parameter mapper. (PR#1108)

  19. Calculate block kgHM and kgFis on core loading and after shuffling. (PR#1136)

  20. Calculate block PuFrac on core loading and after shuffling. (PR#1165)

  21. Add setting cyclesSkipTightCouplingInteraction to skip coupling interaction on specified cycles. (PR#1173)

  22. Remove unused HCFcoretype setting. (PR#1179)

Bug fixes

  1. Fixed referenceBlockAxialMesh and axialMesh during process loading. (PR#980)

  2. Fixed deadelines in MPI cases due to barriers in temp directory changers.

  3. Fixed the material namespace order for test_axialExpansionChanger.py persisting after tests. (PR#1046)

  4. Fixed the gaseous fission products not being removed from the core directly, but instead the fission yields within the lumped fission products were being adjusted. (PR#1022)

  5. Fixed non-fuel depletable components not being initialized with all nuclides with the explicitFissionProducts model (PR#1067)

  6. Fixed consistency between cross section group manager and lattice physics interface for tight coupling. (PR#1118)

  7. Fixed numerical diffusion in uniform mesh converter that affects number densities and cumulative parameters like DPA. (PR#992)

  8. Fix the formula to calculate b.p.puFrac. (PR#1168)

  9. Fixed Material.densityTimesHeatCapacity(), moving from pseudo-density to physical density. (PR#1129)

  10. Fixed TD_frac modification on UraniumOxide and MOX was not being applied correctly.

  11. Fixed Magnessium density curve. (PR#1126)

  12. Fixed Potassium density curve. (PR#1128)

  13. Fixed Concrete density curve. (PR#1131)

  14. Fixed Copper density curve. (PR#1150)

  15. Fixed Component.density. (PR#1149)

  16. Fixed error where a non-float value could be assigned to a material’s mass fraction dictionary (PR#1199)

  17. Fixed interface/event runLog.header for tight coupling. (PR#1178)

  18. Fixed circular import bug in reactors.py caused by importing settings constants. (PR#1185)

ARMI v0.2.5

Release Date: 2022-10-24

What’s new in ARMI

  1. Cleanup of stale coveragerc file (PR#923)

  2. Added medium writer style option to SettingsWriter. Added it as arg to modify CLI (PR#924), and to clone CLI (PR#932).

  3. Update the EntryPoint class to provide user feedback on required positional arguments (PR#922)

  4. Overhaul reactor.zones tooling and remove application-specific zoning logic (PR#943)

Bug fixes

  1. Adjusted density3 in armi/materials/b4C.py to include the theoretical density. (PR#942)

  2. Fixed bug in fastFlux block parameter mapping in the UniformMeshConverter by applying it to the detailedAxialExpansion category.

  3. Fixed issue where shuffles might duplicate in restart runs.

ARMI v0.2.4

Release Date: 2022-10-03

What’s new in ARMI

  1. Added new UserPlugin functionality.

  2. Introduced axial expansion changer.

  3. Greatly improved the UniformMeshGeometryConverter.

  4. Made the min/max temperatures of Material curves discoverable.

  5. Removed the PyYaml dependency.

  6. Changed the default Git branch name to main.

  7. Moved math utilities into their own module.

  8. Moved newReports into their final location in armi/bookkeeping/report/.

  9. Removed _swapFluxParam method (PR#665)

  10. Removed the last usage of settingsRules; now only use settingsValidation.

  11. Removed separate blueprints in snapshot runs, they must come from the database (PR#872 https://github.com/terrapower/armi/pull/872)

  12. Added reporting of neutron and gamma energy groups in the XS library __repr__.

  13. Updated NHFLUX reader to store VARIANT data that was being discarded.

  14. Store thermally expanded block heights at BOL in armi/reactor/reactors.py::Core::processLoading.

  15. Added neutronics settings: inners and outers for downstream support.

  16. Removed unused Thermal Hydraulics settings.

  17. Replaced setting stationaryBlocks with stationaryBlockFlags setting (PR#665)

  18. Changed the default value of the trackAssems setting to False.

  19. Add setting inputHeightsConsideredHot to enable thermal expansion of assemblies at BOL.

Bug fixes

  1. Fixed issues finding ISOXX files cross-platform.

  2. Fixed issues in growToFullCore.

  3. Fixed issue in the ARMI memory profiler.

  4. Fixed issue in linear expansion in Alloy200.

  5. Fixed issue in armi/reactor/components/complexShapes.py::Helix::getCircleInnerDiameter

  6. Fixed issue with axial expansion changer in armi/reactor/reactors.py::Core::processLoading.

  7. Fixed issue in how number densities are initialized for components.

  8. Fixed issue in armi/cases/case.py::copyInterfaceInputs

  9. Fixed issue in armi/reactor/components/component.py::getReac

  10. Fixed issue in armi/reactor/converters/uniformMesh.py was clearing out unchanged param data.

  11. Fixed issue where components were different if initialized through blueprints vs init.

  12. Fixed issue where component mass was conserved in axial expansion instead of density (PR#846)

  13. Fixed issue in HexBlock::rotatePins failed to modify pinLocation param. (#855)

  14. Fixed issue in Core::_applyThermalExpansion failed to call block.completeInitiaLoading. (#885)

  15. Fixed issue where a validator would complain both simple and detailed cycles settings were used.

  16. Fixed issue where getReactionRates() was not accounting for burnup-dependent cross-sections.

ARMI v0.2.3

Release Date: 2022-02-08

What’s new in ARMI

  1. Upgrading the version of NumPy for a security alert (PR#530)

  2. Upgraded ThoriumOxide material (PR#558)

  3. Upgraded Lithium material (PR#546)

  4. Improved Helix class (PR#558)

Bug fixes

  1. Fixed issue where UML diagrams weren’t being generated in docs (#550)

  2. Fixed issue with Inconel Alloy 617 (PR#557)

ARMI v0.2.2

Release Date: 2022-01-19

What’s new in ARMI v0.2.2

  1. Improved type hinting

  2. Flushed out the ability to build the docs as PDF

  3. Material modifications can now be made per-component

  4. The loadOperator method now has the optional allowMissing argument

Bug fixes

  1. Fixed issue where copying a Setting with a defined list of options would throw an error (PR#540)

ARMI v0.2.1

Release Date: 2022-01-13

What’s new in ARMI v0.2.1

  1. Added new reference data for lumped fission products (#507)

Bug fixes

  1. Fixed issue where grid GUI was not saving lattice maps (#490)

  2. Fixed issue where SettingsModifier was using old Settings API (#500)

  3. Fixed issue where copying a Setting only copied the default value (PR#534)

ARMI v0.2.0

Release Date: 2021-11-19

The API has started to solidify, and the number of external-facing changes have started to slow down. This release is a stake in the ground on a stable API.

What’s new in ARMI v0.2.0

  1. Made user settings immutable to avoid confusing runtime behavior

  2. Removed the concept of ‘facemaps’ (now replaced with more general grids)

  3. Added ability to use module-level logging for more precise debugging

  4. Added ability to write full tips-up hex asciimaps

  5. Fixed ability to serialize grid blueprints

  6. Improved code coverage and linting

  7. Added a latin hypercube suite builder for parameter sweeps

  8. Added several clarifications, fixes, and updates to documentation

  9. Updated units labels on several parameters

  10. Added protections against deleting directories

  11. Updated spontaneous fission data

  12. Removed confusing Charge Fuel Pool from core

  13. Sped up YAML reading

  14. Removed localization module

  15. Added ANL116 energy group structure

  16. Added setting to control auto-creation of within-block grids

  17. Added new plot/summarizing capabilities

  18. Added ability for GUI to save map as image

  19. Added C5G7 compositions and dimensions to LWR tutorial

  20. Added 1d/2d mesh reading/writing to GEODST

Backwards incompatible changes

There may be some new errors based on updated input checking.

Bug fixes

  1. Fixed centering of full-symmetry Cartesian lattice maps

  2. Fixed issues with grids that had multii-index locations

  3. Removed test files from coverage check

  4. Fixed order of operations issue in rotatePins

  5. Fixed incorrect multiplicity for non-grid block components

  6. Many additional bugfixes and cleanups (see PR list)