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