Scattering multiplication in MG mode

Hi,

In the tally, the scatter (8. Specifying Tallies — OpenMC Documentation) already accounts for elastic, inelastic, (n,2n), and (n,3n)?

In OpenMC MG calculation mode, the scattering multiplication is accounted for by adjusting the weight of the particle after the collision such that the correct total weight is maintained (3. Cross Section Representations — OpenMC Documentation). In the core calculation, the nu-scatter matrix is used as shown in Jupyter Notebook Viewer. Does this mean the multiplicity is twice accounted for, one in the nu-scatter matrix and the other in the multiplicity matrix?

Thanks in advance.

Yes, the scatter score is calculated as (total - absorption), and absorption is (all reactions with no exiting neutrons) + (fission).

The MG mode always relies on 1) a scattering matrix and 2) a multiplicity matrix. To get the multiplicity matrix, the OpenMC MGXS automation will actually tally both scatter and nu-scatter and then take the quotient of them to produce the multiplicity matrix. So, the answer is no – multiplicity is only accounted for once at the time you are running in MG mode.

The OpenMC MG mode uses the scatter matrix or (total-absorption) or another measure to decide if the scattering happens?
In the openmc.mgxs.Library — OpenMC Documentation, the (consistent) nu-scatter matrix is set for scattering matrix instead of (consistent) scatter matrix as using_multiplicity=True. If the nu-scatter matrix is used directly, the nu effect in scattering would be doubly accounted for? If (total-absorption) is used, the nu-scatter matrix is normalized at each group and served only as a scattering probability matrix?
Thanks for helping me clear up the misunderstanding.

I think I see your point and I’m actually not sure about it. Hoping that @agnelson, who is the author of the relevant code, can chime in here and explain.

Hi all,

Great question @maximeguo. During particle transport, the OpenMC MG mode uses Sigma_t to sample distance travelled, and the Sigma_a/Sigma_t to sample if absorption or scattering occured. The Sigma_s matrix is only used to compute a normalized probability distribution function (PDF) of outgoing energies/angles that is then used during transport to sample the outgoing energy and angle of a particle compute after a scattering event. Finally, the multiplicity matrix scales the scattered particle weight based on the sampled outgoing group.

So if a nu-scatter matrix is provided instead of a scatter matrix, all that means is the effect of scattering multiplicity is factored into the PDFs describing a scattering event. That is, n,Xn reactions (where X>1) now rightfully hold more weight when creating the outgoing PDFs and the outgoing energy/angle distribution is more accurate. This is the reason I use nu-scatter in that example notebook you referenced.

The multiplicity as mentioned above is handled separately and doesn’t “care” what type of scattering matrix is provided when building the Library.

Does this help? Thanks for the good question!

Thank you very much for your help @paulromano and @agnelson.

Hi, Paul. I am trying to produce a 2-group xs for diffusion calculation by using openmc. In a 2D PWR pin model with all reflective boundaries, I tallied scattering (score with “scatter”, filter with “energy_in” and “energy_out”) / absorption / total reaction rates for the homogenized pin cell model. I found that it exists a small bias between total and (scattering + absorption) reaction rates for each group. Two ways to calculate removal xs from the tallied reaction rates : (1) total - inner scattering, (2) absorption + outer scattering, might have a very small bias. But, these small difference caused a bias with hundreds of pcm for keff in homogenized diffusion calculation for this 2D pin model.

I not sure the difference comes from statistic errors. Could you point out my troubles?