MGXS generation for each depletion step


I’m trying to run a depletion calculation while generating multigroup cross sections for each depletion step in a nuclide by nuclide basis.

# Defining the energy group structure:

one_group = openmc.mgxs.EnergyGroups([0.0, 20.0e6])
two_group = openmc.mgxs.EnergyGroups([0.0, 1.0, 20.0e6])

# Defining the MGXS objects:

mgxs_list = []

mgxs_list.append(openmc.mgxs.CaptureXS(domain = fuel_cell, domain_type = 'cell', energy_groups = one_group, by_nuclide = True, name = 'Capture MGXS'))
mgxs_list.append(openmc.mgxs.FissionXS(domain = fuel_cell, domain_type = 'cell', energy_groups = one_group, by_nuclide = True, name = 'Fission MGXS'))

However, the multigroup cross sections seems to be generated only for the nuclides present in the beginning of the simulation (fresh fuel). Is there anyway to automatically generate the cross sections for every nuclide in a material including those that are produced during depletion (e.g. fission products)?

Best regards,
Artur Souza

Hi @Artur. That’s a very good question! Each of the MGXS objects actually allows you to specify the list of nuclides that you want cross sections for, so you would need something like the following:

capture_xs = openmc.mgxs.CaptureXS(...)
capture_xs.nuclides = ['U235', 'U238', ...]
fission_xs = openmc.mgxs.FissionXS(...)
fission_xs.nuclides = ['U235', 'U238', ...]
mgxs_list = [capture_xs, fission_xs]

It may be a little bit laborious to come up with that list of nuclides, but once you have it hopefully it works smoothly!

Hello @paulromano,

Thank you very much for the answer. I tried your suggestion but it doesn’t seems to work. The simulation aborts and the following error is reported:

ERROR: Could not find the nuclide U239 specified in tally 4 in any material

This error seems to be related precisely to the fact that most of the nuclides for which i wish to compute mgxs are not present in my model in the beginning of the simulation. It probably crashed in U239 because it is the first nuclide in my nuclide list that is not present in fresh fuel:

nuclide_list = ['U235', 'U238', 'U239', 'Np239', 'Pu239', 'Pu240', 'Pu241', 'I135', 'Xe135', 'Xe135_m1', 'Nd149', 'Pm149', 'Sm149']

My previous attempt to solve this issue was to artificially include very low concentrations of all nuclides from my nuclide list in the fresh fuel material. However, this strangely led to absurdly huge microscopic multigroup cross sections (on the order of 10^{12} barns). Perhaps i set the concentrations too low and this caused some error in the mgxs calculation, but i need to make more tests about this.

Do you have any further suggestion?

Best regards,
Artur Souza

@Artur I understand – in this case I would have suggested what you already tried, which is to include those nuclides that are not already present at a very low concentration. I’m not sure why you would see this issue with a huge microscopic MG cross section. I would give it another try and see if we can figure out what’s going on with the micros.