Releases: terrapower/armi
Releases · terrapower/armi
Release version 0.5.0
ARMI v0.5.0
Release Date: 2024-12-14
New Features
- Supporting Python 3.12. PR#1813
- Supporting Python 3.13. PR#1996
- Adding data models for ex-core structures in ARMI. PR#1891
- Opening some DBs without the
App
that created them. PR#1917 - Adding support for ENDF/B-VII.1-based MC2-3 libraries. PR#1982
- Adding setting
mcnpLibraryVersion
to chosen ENDF library for MCNP. PR#1989 - Removing the
tabulate
dependency by ingesting it toarmi.utils.tabulate
. PR#1811 HexBlock.rotate
updates the spatial locator for children of that block. PR#1943- Provide
Block.getInputHeight
for determining the height of a block from blueprints. PR#1927 - Provide
Parameter.hasCategory
for quickly checking if a parameter is defined with a given category. PR#1899 - Provide
ParameterCollection.where
for efficient iteration over parameters who's definition matches a given condition. PR#1899 - Flags can now be defined with letters and numbers. PR#1966
- Provide utilities for determining location of a rotated object in a hexagonal lattice (
getIndexOfRotatedCell
). PR#1846 - Allow merging a component with zero area into another component. PR#1858
- New plugin hook
getAxialExpansionChanger
to customize axial expansion. PR#1870 - New plugin hook
beforeReactorConstruction
to process settings before reactor init. PR#1945 - Improving performance in the lattice physics interface by not updating cross sections at
everyNode
during coupled calculations. PR#1963 - Allow merging a component with zero area into another component. PR#1858
- Updating
copyOrWarn
andgetFileSHA1Hash
to support directories. PR#1984 - Improve efficiency of reaction rate calculations. PR#1887
- Adding new options for simplifying 1D cross section modeling. PR#1949
- Adding
--skip-inspection
flag toCompareCases
CLI. PR#1842 - Exposing skip inspection options for
armi.init
anddb.loadOperator
. PR#2005 - Exposing
detailedNDens
to components. PR#1954 - Adding a method
getPinMgFluxes
to get pin-wise multigroup fluxes from a Block. PR#1990
API Changes
nuclideBases.byMcc3ID
andgetMcc3Id()
return IDs consistent with ENDF/B-VII.1. PR#1982- Moving
settingsValidation
fromoperators
tosettings
. PR#1895 - Allowing for unknown Flags when opening a DB. PR#1844
- Renaming
Reactor.moveList
toReactor.moves
. PR#1881 - Transposing
pinMgFluxes
parameters so that leading dimension is pin index. PR#1937 Block.getPinCoordinates
returns an(N, 3)
array, rather than a list of arrays. PR#1943- Alphabetizing
Flags.toString()
results. PR#1912 copyInterfaceInputs
no longer requires a valid setting object. PR#1934- Changing
synDbAfterWrite
default toTrue
. PR#1968 - Removing
Assembly.rotatePins
andBlock.rotatePins
. PreferAssembly.rotate
andBlock.rotate
. PR#1846 - Removing broken plot
buVsTime
. PR#1994 - Removing class
AssemblyList
andassemblyLists.py
. PR#1891 - Removing class
globalFluxInterface.DoseResultsMapper
. PR#1952 - Removing class
SmartList
. PR#1992 - Removing flags
CORE
andREACTOR
. PR#1835 - Removing method
Assembly.doubleResolution()
. PR#1951 - Removing method
buildEqRingSchedule
. PR#1928 - Removing method
prepSearch
. PR#1845 - Removing method
SkippingXsGen_BuChangedLessThanTolerance
. PR#1845 - Removing setting
autoGenerateBlockGrids
. PR#1947 - Removing setting
mpiTasksPerNode
and renamingnumProcessors
tonTasks
. PR#1958 - History Tracker: "detail assemblies" are now fuel and control assemblies. PR#1990
- Removing
Block.breakFuelComponentsIntoIndividuals()
. PR#1990 - Moving
getPuMoles
from blocks.py up to composites.py. PR#1990 - Requiring
buReducingAssemblyRotation
andgetOptimalAssemblyOrientation
to have pin-level burnup. PR#2019
Bug Fixes
- Fixed spatial grids of pins in Blocks on flats-up grids. PR#1947
- Fixed
DerivedShape.getArea
forcold=True
. PR#1831 - Fixed error parsing command line integers in
ReportsEntryPoint
. PR#1824 - Fixed
PermissionError
when usingsyncDbAfterWrite
. PR#1857 - Fixed
MpiDirectoryChanger
. PR#1853 - Changed data type of
thKernel
setting frombool
tostr
inThermalHydraulicsPlugin
. PR#1855 - Update height of fluid components after axial expansion. PR#1828
- Rotate hexagonal assembly patches correctly on facemap plots. PR#1883
- Material theoretical density is serialized to and read from database. PR#1852
- Removed broken and unused column in
summarizeMaterialData
. PR#1925 - Fixed hex block rotation in
plotBlockDiagram
. PR#1926 - Fixed edge case in
assemblyBlueprint._checkParamConsistency()
. PR#1928 - Fixed wetted perimeter for hex inner ducts. PR#1985
- Fixing number densities when custom isotopics and material properties are combined. PR#1822
Quality Work
Release version 0.4.0
ARMI v0.4.0
Release Date: 2024-08-14
What's new in ARMI
- Conserve mass by component in
assembly.setBlockMesh()
. PR#1665 - Removal of the
Block.reactor
property. PR#1425 - System information is now also logged on Linux. PR#1689
- Reset
Reactor
data on worker processors after every interaction to free memory from state distribution.
[PR#1729](https://github.com/terrapower/armi/pull/1729>`_ and `PR#1750](#1750) - Density can be specified for components via
custom isotopics
in the blueprints. PR#1745 - Implement a new
JaggedArray
class that handles HDF5 interface for jagged data. PR#1726
API Changes
- Replacing the concrete material with a better reference. PR#1717
- Adding more detailed time information to logging. PR#1796
- Renaming
structuredgrid.py
to camelCase. PR#1650 - Removing unused argument from
Block.coords()
. PR#1651 - Removing unused method
HexGrid.allPositionsInThird()
. PR#1655 - Removed unused methods:
Reactor.getAllNuclidesIn()
,plotTriangleFlux()
. PR#1656 - Removed
armi.utils.dochelpers
; not relevant to nuclear modeling. PR#1662 - Removing old tools created to help people convert to the current database format:
armi.bookkeeping.db.convertDatabase()
andConvertDB
. PR#1658 - Removing the unused method
Case.buildCommand()
. PR#1773 - Removed the variable
armi.physics.neutronics.isotopicDepletion.ORDER
. PR#1671 - Removing extraneous
ArmiOjbect
methods. PR#1667- Moving
ArmiObject.getBoronMassEnrich()
toBlock
. - Moving
ArmiObject.getPuMoles()
toBlock
. - Moving
ArmiObject.getUraniumMassEnrich()
toBlock
. - 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()
toAssembly
. - Removing
Block.isOnWhichSymmetryLine()
.
- Moving
- Removing the
Block.reactor
property. PR#1425 - Moving several
ArmiObject
methods. PR#1425- Moving
ArmiObject.getNeutronEnergyDepositionConstants
toBlock
. - Moving
ArmiObject.getGammaEnergyDepositionConstants
toBlock
. - Moving
ArmiObject.getTotalEnergyGenerationConstants
toBlock
. - Moving
ArmiObject.getFissionEnergyGenerationConstants
toBlock
. - Moving
ArmiObject.getCaptureEnergyGenerationConstants
toBlock
.
- Moving
- Removing the parameter
rdIterNum
. PR#1704 - Removing the parameters
outsideFuelRing
andoutsideFuelRingFluxFr
. PR#1700 - Removing the setting
doOrificedTH
. PR#1706 - Changing the Doppler constant params to
VOLUME_INTEGRATED
. PR#1659 - Change
Operator._expandCycleAndTimeNodeArgs
to be a non-static method. PR#1766 - Database now writes state at the last time node of a cycle rather than during the
DatabaseInterface.interactEOC
interaction. PR#1090
Bug fixes
- Fixed four bugs with "corners up" hex grids. PR#1649
- Fixed
safeCopy
to work on both Windows and Linux with strict permissions PR#1691 - When creating a new XS group, inherit settings from initial group. [PR#1653](https://github.com/terrapower/armi/pull/1653>`_, `PR#1751](#1751)
- Fixed a bug with
Core.getReactionRates
. PR#1771 - Fixed a bug with interactive versus batch mode checking on windows versus linux. PR#1786
Quality Work
- Creating a single-block test reactor, to speed up unit tests. PR#1737
- Supporting MacOS in CI. PR#1713
- We now enforce a maximum line length of 120 characters, using
ruff
. PR#1646 - Updating
ruff
to version0.5.1
. PR#1770 - Move
.coveragerc
file information intopyproject.toml
. PR#1692
Changes that Affect Requirements
Release version 0.3.0
ARMI v0.3.0
Release Date: 2024-02-02
What's new in ARMI
- The
_copyInputsHelper()
gives relative path and not absolute after copy. PR#1416 - Attempt to set representative block number densities by component if possible. PR#1412
- Use
functools
to preserve function attributes when wrapping withcodeTiming.timed
PR#1466 - Remove a number of deprecated block, assembly, and core parameters related to a defunct internal plugin.
Bug fixes
StructuredGrid.getNeighboringCellIndices()
was incorrectly implemented for the second neighbor. PR#1614
Quality Work
Release version 0.2.9
ARMI v0.2.9
Release Date: 2023-09-27
What's new in ARMI
- Moved the
Reactor
assembly number from the global scope to aParameter
. PR#1383 - Removed the global
CaseSettings
object,getMasterCs()
, andsetMasterCs()
. PR#1399 - Moved the Spent Fuel Pool (
sfp
) from theCore
to theReactor
. PR#1336 - Made the
sfp
a child of theReactor
so it is stored in the database. PR#1349 - Broad cleanup of
Parameters
: filled in all empty units and descriptions, removed unused params. PR#1345 - Updated some parameter definitions and defaults. PR#1355
- Removed redundant
Material.name
variable. PR#1335 - Added
powerDensity
as a high-level alternative topower
to configure aReactor
. PR#1395 - Added SHA1 hashes of XS control files to the welcome text. PR#1334
Build changes
- Moved from
setup.py
topyproject.toml
. PR#1409 - Added Python 3.11 to ARMI's CI on GH actions. PR#1341
- Updated
black
to version 22.6. PR#1396
Bug fixes
Release version 0.2.8
ARMI v0.2.8
Release Date: 2023-06-21
What's new in ARMI
- Added
Composite.sort()
to allow the user to recursively sort any part of theReactor
. PR#1280 - Switching from
pylint
to theruff
linter. PR#1296 - Move cross section group manager Interface stack position to be just before lattice physics. PR#1288
- Add
interactCoupled
method forSnapshotInterface
. PR#1294 - Calculate weighted-average percent burnup of
BlockCollections
. PR#1265 - Add method
sortAssemsByRing
to sortReactor
assemblies by spatial location (interior first) PR#1320
Bug fixes
- Changed
units.FLOAT_DIMENSION_DECIMALS
from 10 to 8. PR#1183 - Improved
HexBlock.getWettedPerimeter()
to include wire. PR#1299 - Fixed a bug in the ISOTXS file name used for snapshots. PR#1277
- Fix a bug in uniform mesh decusping when assemblies of same type have drastically different height. PR#1282
- Sort
Components
onrepresentativeBlock
for consistency check. PR#1275
Release version 0.2.7
ARMI v0.2.7
What's new in ARMI
- The method
Material.density3
is now calleddensity
, and the olddensity
is now calledpseudoDensity
. PR#1163 - Removed
metadata
setting section, and createdversions
. PR#1274 - Remove unused
HCFcoretype
setting. PR#1179 - Use
minimumNuclideDensity
setting when generating macroscopic XS. PR#1248 - Introduce new
LatticePhysicsFrequency
setting to control lattice physics calculation. PR#1239 - Added new setting
assemFlagsToSkipAxialExpansion
to enable users to list flags of assemblies to skip axial expansion. PR#1235 - Added documentation for the thermal expansion approach used in ARMI. PR#1204
- Use
TemporaryDirectoryChanger
forexecuter.run()
so dirs are cleaned up during run. PR#1219 - New option
copyOutput
for globalFluxInterface to not copy output back to working directory. PR#1218, PR#1227 Executer
class has adcType
attribute to define the type ofDirectoryChanger
it will use. PR#1228- Enabling one-way (upwards) axial expansion of control assemblies. PR#1226
- Implement control rod decusping option for uniform mesh converter. PR#1229
createRepresentativeBlocksFromExistingBlocks
now returns the mapping of original to new XS IDs. PR#1217- Added a capability to prioritize
MpiAction
execution and exclusivity. PR#1237 - Improve support for single component axial expansion and general cleanup of axial expansion unit tests. PR#1230
- New cross section group representative block type for 1D cylindrical models. PR#1238
- Store the axial expansion target component name as a block parameter. PR#1256
- When using non-uniform mesh, detailed fission/activation products have cross sections generated to avoid blocks without xs data. PR#1257
- Made sure all material classes could be resolved via name. PR#1270
- Read flux directly from output into Gamma uniform mesh instead of mapping it in from block params. PR#1213
- Forced GAMISO/PMATRX file path extensions to be lower case for linux support. PR#1216
Bug fixes
Release version 0.2.6
ARMI v0.2.6
Release Date: 2023-02-13
What's new in ARMI
- The
Material
class no longer subclassesComposite
PR#1062 - Froze the NumPy version to <= 1.23.5 PR#1035 to continue to support NumPy jagged arrays in the DatabaseInterface.
- Split 3 classes in
database3.py
into 3 files PR#955 - Split algorithms specific to hex assemblies out of
FuelHandler
. PR#962 - Added 4614 nuclides to decouple the loading of RIPL-3 data from the standard framework run. PR#998
- Overhaul of the tight coupling routine in ARMI, and removal of
looseCoupling
setting. PR #1033 - Added
savePhysicsFiles
setting to copy physics kernel I/O to directories organized by cycle and time step (e.g., c2n1). PR#952 - Add
pinQuantities
parameter category for block params that have spatial distribution. - Use
r.core.p.axialMesh
instead ofr.core.refAssem.getAxialMesh()
for the uniform mesh converter. PR#959 - Add group structures for 21- and 94-groups used in photon transport.
- Add block parameter,
fuelCladLocked
, to track whether or not the fuel and clad are locked. PR#1038 - An explicit fission product modeling option was added. PR#1022
- Axially expand from cold to hot before deepcopy of assemblies into reactor; improving speed. PR#1047
- Add a how-to on restart calculations in the docs.
- General improvements to efficiency in uniform mesh conversion. PR#1042
- Allow MCNP material card number to be defined after the card is written. PR#1086
- Refine logic for
Block.getNumPins()
to only count components that are actually pins. PR#1098 - Improve handling of peak/max parameters by the
UniformMeshConverter
parameter mapper. PR#1108 - Calculate block kgHM and kgFis on core loading and after shuffling. PR#1136
- Calculate block
PuFrac
on core loading and after shuffling. PR#1165 - Remove unused
HCFcoretype
setting. PR#1179
Bug fixes
- Fixed
referenceBlockAxialMesh
andaxialMesh
during process loading. PR#980 - Fixed deadelines in MPI cases due to barriers in temp directory changers.
- Fixed the material namespace order for
test_axialExpansionChanger.py
persisting after tests. PR#1046 - 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
- Fixed non-fuel depletable components not being initialized with all nuclides with the
explicitFissionProducts
model PR#1067 - Fixed consistency between cross section group manager and lattice physics interface for tight coupling. PR#1118
- Fixed numerical diffusion in uniform mesh converter that affects number densities and cumulative parameters like DPA. PR#992
- Fix the formula to calculate
b.p.puFrac
. PR#1168 - Fixed
Material.densityTimesHeatCapacity()
, moving from pseudo-density to physical density. PR#1129 - Fixed
TD_frac
modification on UraniumOxide and MOX was not being applied correctly. - Fixed Magnessium density curve. PR#1126
- Fixed Potassium density curve. PR#1128
- Fixed Concrete density curve. PR#1131
- Fixed Copper density curve. PR#1150
- Fixed Component.density. PR#1149
- Fixed interface/event
runLog.header
for tight coupling. PR#1178 - Fixed circular import bug in
reactors.py
caused by importing settings constants. PR#1185
Release version 0.2.5
ARMI v0.2.5
Release Date: 2022-10-26
What's new in ARMI
ARMI now provides a simple interface to create Zones, and no longer has a bunch of default Zoning algorithms built into every run.
- Overhaul
Reactor.zones
tooling and remove application-specific zoning logic PR#943. - Cleanup of stale
coveragerc
file PR#923. - Added
medium
writer style option toSettingsWriter
. Added it as arg to modify CLI PR#924, and to clone CLI PR#932. - Update the
EntryPoint
class to provide user feedback on required positional arguments PR#922.
Bug fixes
Release version 0.2.4
ARMI v0.2.4
Release Date: 2022-10-03
What's new in ARMI
- Added new
UserPlugin
functionality. - Introduced axial expansion changer.
- Greatly improved the
UniformMeshGeometryConverter
. - Made the min/max temperatures of Material curves discoverable.
- Removed the
PyYaml
dependency. - Changed the default Git branch name to
main
. - Moved math utilities into their own module.
- Moved
newReports
into their final location inarmi/bookkeeping/report/
. - Removed
_swapFluxParam
method (#665 (comment)) - Removed the last usage of
settingsRules
; now only usesettingsValidation
. - Removed separate blueprints in snapshot runs, they must come from the database (PR#872 #872)
- Added reporting of neutron and gamma energy groups in the XS library
__repr__
. - Updated NHFLUX reader to store VARIANT data that was being discarded.
- Store thermally expanded block heights at BOL in
Core::processLoading.
- Added neutronics settings: inners and outers for downstream support.
- Removed unused Thermal Hydraulics settings.
- Replaced setting
stationaryBlocks
withstationaryBlockFlags
setting (#665) - Changed the default value of the
trackAssems
setting to False. - Add setting
inputHeightsConsideredHot
to enable thermal expansion of assemblies at BOL.
Bug fixes
- Fixed issues finding ISOXX files cross-platform.
- Fixed issues in
growToFullCore
. - Fixed issue in the ARMI memory profiler.
- Fixed issue in linear expansion in Alloy200.
- Fixed issue in
Helix::getCircleInnerDiameter
- Fixed issue with axial expansion changer in
Core::processLoading
. - Fixed issue in how number densities are initialized for components.
- Fixed issue in
armi/cases/case.py::copyInterfaceInputs
- Fixed issue in
armi/reactor/components/component.py::getReac
- Fixed issue in
armi/reactor/converters/uniformMesh.py
was clearing out unchanged param data. - Fixed issue where components were different if initialized through blueprints vs init.
- Fixed issue where component mass was conserved in axial expansion instead of density (#846)
- Fixed issue in
HexBlock::rotatePins
failed to modifypinLocation
param (#855). - Fixed issue in
Core::_applyThermalExpansion
failed to callblock.completeInitiaLoading
(#885). - Fixed issue where a validator would complain both simple and detailed cycles settings were used.
- Fixed issue where
getReactionRates()
was not accounting for burnup-dependent cross-sections.