ARMI v0.4 Release Notes

ARMI v0.4.1

Release Date: TBD

New Features

  1. Adding data models for ex-core structures in ARMI. (PR#1891)

  2. ARMI now supports Python 3.12. (PR#1813)

  3. Removing the tabulate dependency by ingesting it to armi.utils.tabulate. (PR#1811)

  4. Adding --skip-inspection flag to CompareCases CLI. (PR#1842)

  5. Allow merging a component with zero area into another component. (PR#1858)

  6. Use Block.getNumPins() in HexBlock._rotatePins(). (PR#1859)

  7. Provide utilities for determining location of a rotated object in a hexagonal lattice (getIndexOfRotatedCell). (PR#1846)

  8. Allow merging a component with zero area into another component. (PR#1858)

  9. Provide Parameter.hasCategory for quickly checking if a parameter is defined with a given category. (PR#1899)

  10. Provide ParameterCollection.where for efficient iteration over parameters who’s definition matches a given condition. (PR#1899)

  11. Flags can now be defined with letters and numbers. (PR#1966)

  12. Plugins can provide the getAxialExpansionChanger hook to customize axial expansion. (PR#1870)

  13. HexBlock.rotate updates the spatial locator for children of that block. (PR#1943)

  14. New plugin hook beforeReactorConstruction added to enable plugins to process case settings before reactor init. (PR#1945)

  15. Provide Block.getInputHeight for determining the height of a block from blueprints. (PR#1927)

  16. Improve performance by changing the lattice physics interface so that cross sections are not updated on everyNode calls during coupled calculations (PR#1963)

  17. Improve efficiency of reaction rate calculations. (PR#1887)

  18. Adding support for ENDF/B-VII.1-based MC2-3 libraries. (PR#1982)

  19. Adding new options for simplifying 1D cross section modeling. (PR#1949)

  20. Updating copyOrWarn and getFileSHA1Hash to support directories. (PR#1984)

  21. Exposing detailedNDens to components. (PR#1954)

  22. TBD

API Changes

  1. Removing flags CORE and REACTOR. (PR#1835)

  2. Alphabetizing Flags.toString() results. (PR#1912)

  3. Moving settingsValidation from operators to settings. (PR#1895)

  4. Removing deprecated method prepSearch. (PR#1845)

  5. Removing unused function SkippingXsGen_BuChangedLessThanTolerance. (PR#1845)

  6. Renaming Reactor.moveList to Reactor.moves. (PR#1881)

  7. copyInterfaceInputs no longer requires a valid setting object. (PR#1934)

  8. Removing buildEqRingSchedule. (PR#1928)

  9. Removing broken plot buVsTime. (PR#1994)

  10. Allowing for unknown Flags when opening a DB. (PR#1844)

  11. Removing Assembly.doubleResolution(). (PR#1951)

  12. Removing assemblyLists.py and the AssemblyList class. (PR#1891)

  13. Removing Assembly.rotatePins and Block.rotatePins. Prefer Assembly.rotate and Block.rotate. (PR#1846)

  14. Removing unused setting autoGenerateBlockGrids. (PR#1947)

  15. Transposing pinMgFluxes parameters so that leading dimension is pin index. (PR#1937)

  16. Block.getPinCoordinates returns an (N, 3) array, rather than a length N list of three-length arrays. (PR#1943)

  17. Removing globalFluxInterface.DoseResultsMapper class. (PR#1952)

  18. Removing setting mpiTasksPerNode and renaming numProcessors to nTasks. (PR#1958)

  19. Changing synDbAfterWrite default to True. (PR#1968)

  20. Removing unused class SmartList. (PR#1992)

  21. nuclideBases.byMcc3ID and getMcc3Id() return IDs consistent with ENDF/B-VII.1. (PR#1982)

  22. TBD

Bug Fixes

  1. Fixed spatial grids of pins in Blocks on flats-up grids. (PR#1947)

  2. Fixed DerivedShape.getArea for cold=True. (PR#1831)

  3. Fixed error parsing command line integers in ReportsEntryPoint. (PR#1824)

  4. Fixed PermissionError when using syncDbAfterWrite. (PR#1857)

  5. Fixed MpiDirectoryChanger. (PR#1853)

  6. Changed data type of thKernel setting from bool to str in ThermalHydraulicsPlugin. (PR#1855)

  7. Update height of fluid components after axial expansion. (PR#1828)

  8. Rotate hexagonal assembly patches correctly on facemap plots. (PR#1883)

  9. Material theoretical density is serialized to and read from database. (PR#1852)

  10. Removed broken and unused column in summarizeMaterialData. (PR#1925)

  11. Fixed hex block rotation in plotBlockDiagram. (PR#1926)

  12. Fixed edge case in assemblyBlueprint._checkParamConsistency(). (PR#1928)

  13. Fixed wetted perimeter for hex inner ducts. (PR#1985)

  14. TBD

Quality Work

  1. Removing deprecated code axialUnitGrid. (PR#1809)

  2. Refactoring axialExpansionChanger. (PR#1861)

  3. Raising a ValueError when database load fails. (PR#1940)

  4. Changes to make axial expansion related classes more extensible. (PR#1920)

  5. TBD

Changes that Affect Requirements

  1. TBD

ARMI v0.4.0

Release Date: 2024-07-29

New Features

  1. Conserve mass by component in assembly.setBlockMesh(). (PR#1665)

  2. Removal of the Block.reactor property. (PR#1425)

  3. System information is now also logged on Linux. (PR#1689)

  4. Reset Reactor data on worker processors after every interaction to free memory from state distribution. (PR#1729 and PR#1750)

  5. Density can be specified for components via custom isotopics in the blueprints. (PR#1745)

  6. Implement a new JaggedArray class that handles HDF5 interface for jagged data. (PR#1726)

  7. Adding temperature dependent representative blocks to cross section group manager. (PR#1987)

API Changes

  1. Replacing the concrete material with a better reference. (PR#1717)

  2. Adding more detailed time information to logging. (PR#1796)

  3. Renaming structuredgrid.py to camelCase. (PR#1650)

  4. Removing unused argument from Block.coords(). (PR#1651)

  5. Removing unused method HexGrid.allPositionsInThird(). (PR#1655)

  6. Removed unused methods: Reactor.getAllNuclidesIn(), plotTriangleFlux(). (PR#1656)

  7. Removed armi.utils.dochelpers; not relevant to nuclear modeling. (PR#1662)

  8. Removing old tools created to help people convert to the current database format: armi.bookkeeping.db.convertDatabase() and ConvertDB. (PR#1658)

  9. Removing the unused method Case.buildCommand(). (PR#1773)

  10. Removed the variable armi.physics.neutronics.isotopicDepletion.ORDER. (PR#1671)

  11. Removing extraneous ArmiOjbect methods. (PR#1667)
    • Moving ArmiObject.getBoronMassEnrich() to Block.

    • Moving ArmiObject.getPuMoles() to Block.

    • Moving ArmiObject.getUraniumMassEnrich() to Block.

    • Removing ArmiObject.getMaxUraniumMassEnrich.().

    • Removing ArmiObject.getMaxVolume() & Block.getMaxVolume().

    • Removing ArmiObject.getPuFrac().

    • Removing ArmiObject.getPuMass().

    • Removing ArmiObject.getPuN().

    • Removing ArmiObject.getZrFrac().

    • Removing ArmiObject.printDensities().

    • Moving Composite.isOnWhichSymmetryLine() to Assembly.

    • Removing Block.isOnWhichSymmetryLine().

  12. Removing the Block.reactor property. (PR#1425)

  13. Moving several ArmiObject methods. (PR#1425)
    • Moving ArmiObject.getNeutronEnergyDepositionConstants to Block.

    • Moving ArmiObject.getGammaEnergyDepositionConstants to Block.

    • Moving ArmiObject.getTotalEnergyGenerationConstants to Block.

    • Moving ArmiObject.getFissionEnergyGenerationConstants to Block.

    • Moving ArmiObject.getCaptureEnergyGenerationConstants to Block.

  14. Removing the parameter rdIterNum. (PR#1704)

  15. Removing the parameters outsideFuelRing and outsideFuelRingFluxFr. (PR#1700)

  16. Removing the setting doOrificedTH. (PR#1706)

  17. Changing the Doppler constant params to VOLUME_INTEGRATED. (PR#1659)

  18. Change Operator._expandCycleAndTimeNodeArgs to be a non-static method. (PR#1766)

  19. Database now writes state at the last time node of a cycle rather than during the DatabaseInterface.interactEOC interaction. (PR#1090)

  20. Renaming b.p.buGroup to b.p.envGroup. Environment group captures both burnup and temperature. (PR#1987)

Bug Fixes

  1. Fixed four bugs with “corners up” hex grids. (PR#1649)

  2. Fixed safeCopy to work on both Windows and Linux with strict permissions (PR#1691)

  3. When creating a new XS group, inherit settings from initial group. (PR#1653, PR#1751)

  4. Fixed a bug with Core.getReactionRates. (PR#1771)

  5. Fixed a bug with interactive versus batch mode checking on windows versus linux. (PR#1786)

Quality Work

  1. Creating a single-block test reactor, to speed up unit tests. (PR#1737)

  2. Supporting MacOS in CI. (PR#1713)

  3. We now enforce a maximum line length of 120 characters, using ruff. (PR#1646)

  4. Updating ruff to version 0.5.1. (PR#1770)

  5. Move .coveragerc file information into pyproject.toml. (PR#1692)

Changes that Affect Requirements

  1. Very minor change to Block.coords(), removing unused argument. (PR#1651)

  2. Touched HexGrid by adding a “cornersUp” property and fixing two bugs. (PR#1649)

  3. Very slightly modified the implementation of Assembly.add(). (PR#1670)