arfc / moltres

Repository for Moltres, a code for simulating Molten Salt Reactors
GNU Lesser General Public License v2.1
66 stars 41 forks source link

Update action and tests for the Eigenvalue executioner #228

Closed smpark7 closed 6 months ago

smpark7 commented 1 year ago

Description

Closes #177 This PR transitions Moltres from the old NonlinearEigen/InversePowerMethod executioner implementation to the new Eigenvalue executioner implementation in MOOSE for solving k-eigenvalue problems. The old implementation is deprecated and will eventually be removed from MOOSE. All relevant tests and documentation are updated to reflect the transition to the new implementation.

A k-eigenvalue problem may be formulated as $Lx = \frac{1}{k} Fx$, where the $F$ operator comprises of neutron source terms and the $L$ operator comprises of the streaming, collision, and scattering terms.

Unlike the old implementation which requires a separate EigenKernel class for the $F$ operator, the new implementation uses the regular Kernel class with the extra_vector_tags parameter to indicate whether it belongs in $F$ (otherwise $L$).

This PR also refactors NtAction to reduce code duplication. NtAction is an Action object which streamlines the process of creating Moltres input file by automatically setting up various Kernels, BCs, etc. required in a neutronics simulation.

Changes

Impact

smpark7 commented 6 months ago

Thanks for the review @yardasol! I changed the parameters to unsigned int for consistency. All other occurrences of those parameters in Moltres are unsigned ints. Feel free to merge if you (re)approve.