Releases: terrapower/armi
Releases · terrapower/armi
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.
Release version 0.2.3
Release version 0.2.2
ARMI v0.2.2
Release Date: 2022-01-19
What's new in ARMI v0.2.2
- Improved type hinting
- Flushed out the ability to build the docs as PDF
- Material modifications can now be made per-component
- The loadOperator method now has the optional allowMissing argument
Bug fixes
- Fixed issue where copying a Setting with a defined list of options would throw an error (PR#540)