openmc icon indicating copy to clipboard operation
openmc copied to clipboard

Depletion capability in multi-group energy mode

Open AI-Pranto opened this issue 5 years ago • 1 comments

A user mentioned Any chance to add depletion capabilities to the multi-group execution mode? @nelsonag has already given a possible way to implement this

To do so will require: extension of the multigroup library to include 
additional reaction channel cross-sections required for depletion 
but not needed for transport (e.g., (n,p) cross sections)), tieing in 
the multigroup mode to depletion (relatively minor changes would be necessary), 
and likely changes to the multigroup cross-section API to have 
continuous-energy mode create the MGXS data for the new reaction channels.

I opened this issue so that we can keep track of this.

AI-Pranto avatar Sep 25 '20 13:09 AI-Pranto

Some additional notes on work to be done:

  • As mentioned above, we will need additional xs channels in the mgxs HDF5 library. Potentially will need to read them in the C++ XsData class.

  • As of #1705, the openmc.mgxs.Library class supports arbitrary reaction channels. That provides a way to get the additional xs channels from above in to the mgxs HDF5 library besides manually creating them.

  • The mgxs HDF5 library (or just the name of xs sets) needs to be made aware of burnup-dependence in some way. Note if names and names alone are used, then Operator (and Integrator?) need to be smart enough to figure out what part of the name is the isotope and which part is the burnup flag.

  • An extension of openmc.deplete.Operator would be required to:

    • Get needed reaction rates from tallies but instead to just get the fluxes via tallies and the rest via dot-products with the MGXS library. Note this saves computation time and avoids the need to make the XsData class aware of these other reaction channels.
    • The extended openmc.deplete.Operator class would also need to update the model materials so that the isotopic constituents capture the burnup dependence. At the naive level this would be just changing the name (e.g., "U235_0MWdMTU" to "U235_10MWdMTU" assuming both are present in the MGXS library) but other methods should be considered.

I will upload these notes as I think of more items.

These notes are not implying I am actively working on this, if interested, feel free to jump in and take advantage of the notes. If I do start working on it, I will advertise here so we dont duplicate efforts.

nelsonag avatar Oct 05 '21 20:10 nelsonag