9. Branch Searching¶
A powerful ARMI feature that exists in the Operator
is the branch search.
This runs multiple possible fuel management options in parallel and then
selects the one that is preferred by the user before going on to the
next time step. A branch search involves several methods.
A branch search starts when the branchSearch
method is called on the master node. It backs up the reactor state and that
of all the interfaces to allow the master node to participate in the branch search.
It then calls spawnCritShuffleSearch
and restores the original reactor after the branch search is complete.
The spawnCritShuffleSearch()
method orchestrates
the number of search passes requested by the user (via the factorSearchFlags
mechanism), builds the distribution of control numbers for each case,
calls runCritShuffleSearch
to actually do the runs, and finally wraps up and chooses the best case.
The runCritShuffleSearch
only runs on the master node as well. It distributes the current reactor and
interface state to all MPI processes and then broadcasts the command
to inform the MPI nodes to prepare to do a branch search (with the rebusShuffle
command). On the master and all the workers, the
armi.operators.OperatorMPI.runShuffleBranch()
method is called at the same
time to run the neutronics cases.
10. Physics Coupling¶
Loose coupled physics can be activated though the numCoupledIterations
setting. This is handled in the mainOperate
method.