When running successive transport simulations for depletion, OpenMC currently starts each new solution with a "fresh" fission source, either uniformly distributed or defined by the user. It could be advantageous to use the fission source from the previous transport solution as the initial guess. If the depletion step is small enough, the source might not change dramatically between steps and thus you could reduce the number of inactive cycles at later points. This was inspired by a similar Serpent setting that allows just this behavior.
The sticky point is how simply provide this feature without having the user turn it on both for the Operator and the Integrator. If we define the setting on the Operator, we can pass an argument to openmc.lib.reset indicating the fission source should not be wiped. Then the Integrator can look at the settings and determine, for later steps, how to adjust the inactive cycles. If at all.
We can also have openmc dump the source to a file, and then read that back in for the later steps. Probably not super ideal, but a quick first pass.
Just wanted to add that this general feature (ability to use source from previous simulation for another one) would be advantageous for multiphysics coupling as well.
When running successive transport simulations for depletion, OpenMC currently starts each new solution with a "fresh" fission source, either uniformly distributed or defined by the user. It could be advantageous to use the fission source from the previous transport solution as the initial guess. If the depletion step is small enough, the source might not change dramatically between steps and thus you could reduce the number of inactive cycles at later points. This was inspired by a similar Serpent setting that allows just this behavior.
With respect to the implementation, we already modify the
particles
setting when using the SIE integrator https://github.com/openmc-dev/openmc/blob/10402760fe3f4906d081ae8bb6d6653163a045bc/openmc/deplete/abc.py#L982-L986 so I feel pretty confident we could do the same withsettings.inactive
I'm not sure where the best place to put the fission source passing though. One place to look would be during
Operator.__call__
, where we prep OpenMC for a new simulation https://github.com/openmc-dev/openmc/blob/ac8dd925d4da711c6611601da45a1f78af1db996/openmc/deplete/operator.py#L292-L295The sticky point is how simply provide this feature without having the user turn it on both for the
Operator
and theIntegrator
. If we define the setting on theOperator
, we can pass an argument toopenmc.lib.reset
indicating the fission source should not be wiped. Then theIntegrator
can look at the settings and determine, for later steps, how to adjust the inactive cycles. If at all.We can also have openmc dump the source to a file, and then read that back in for the later steps. Probably not super ideal, but a quick first pass.