armi.physics package
The Physics Packages are where the magic of physical simulation happens in an ARMI run.
Tip
The vast majority of physics capabilities are provided by Plugins
.
Thus, this package contains some fairly generic physics-related code that belongs in a reactor
analysis framework.
Besides providing some generic physics-related capabilities, this package also provides a recommended physics namespace for all ARMI plugins to follow. The physics namespaces we’ve come up with is as follows:
- fuelCycle
Fuel management, fabrication, reprocessing, mass flow, etc.
- neutronics
Radiation transport, nuclear depletion, nuclear cross sections, reactivity coefficients, kinetics, etc.
- safety
Systems analysis in accident scenarios, source term, dose conversion, etc.
- fuelPerformance
Changes in fuel systems vs. burnup and time, including thermophysical modeling of fuel, cladding, fuel salt, etc.
- thermalHydraulics
Heat transfer, fluid flow, pressure drop, power cycles, you name it.
- economics
Economic modeling and cost estimation.
Important
Yeah, we know that it is kind of a stretch to call economics a kind of physics.
We have found it very useful to use Python namespace packages to mirror this exact namespace in physics plugins that are outside of the ARMI framework. Thus, there can be two totally separate plugins:
IAEA/
physics/
neutronics/
superSourceTerm/
__init__.py
plugin.py
and:
IAEA/
physics/
economics/
magwoodsbrain/
__init__.py
plugin.py
And then the associated ARMI-based app could import both IAEA.physics.neutronics.superSourceTerm
and
IAEA.physics.economics.magwoodsbrain
. Having a consistency in namespace along these lines is
quite nice.
If you want to propose a new namespace root folder here, we recommend making a ticket to aid in the discussion.
Historical fun fact
All physics modules once actually lived in this package, before the age of Plugins began. The current state is transient, and will converge as the framework matures.
Subpackages
- armi.physics.fuelCycle package
FuelHandlerPlugin
- Subpackages
- Submodules
- armi.physics.fuelPerformance package
- armi.physics.neutronics package
NeutronicsPlugin
NeutronicsPlugin.exposeInterfaces()
NeutronicsPlugin.defineParameters()
NeutronicsPlugin.defineParameterRenames()
NeutronicsPlugin.defineEntryPoints()
NeutronicsPlugin.defineSettings()
NeutronicsPlugin.defineSettingsValidators()
NeutronicsPlugin.onProcessCoreLoading()
NeutronicsPlugin.getReportContents()
gammaTransportIsRequested()
gammaXsAreRequested()
adjointCalculationRequested()
realCalculationRequested()
applyEffectiveDelayedNeutronFractionToCore()
LatticePhysicsFrequency
- Subpackages
- Submodules
- armi.physics.neutronics.const module
- armi.physics.neutronics.crossSectionGroupManager module
describeInterfaces()
getXSTypeNumberFromLabel()
getXSTypeLabelFromNumber()
BlockCollection
MedianBlockCollection
AverageBlockCollection
getBlockNuclideTemperature()
getBlockNuclideTemperatureAvgTerms()
CylindricalComponentsAverageBlockCollection
CylindricalComponentsDuctHetAverageBlockCollection
SlabComponentsAverageBlockCollection
FluxWeightedAverageBlockCollection
CrossSectionGroupManager
blockCollectionFactory()
- armi.physics.neutronics.crossSectionSettings module
- armi.physics.neutronics.diffIsotxs module
- armi.physics.neutronics.energyGroups module
- armi.physics.neutronics.macroXSGenerationInterface module
- armi.physics.neutronics.parameters module
- armi.physics.neutronics.reports module
- armi.physics.neutronics.settings module
- armi.physics.safety package
- armi.physics.tests package
- armi.physics.thermalHydraulics package