Computing the fission matrix

Hi

Could anyone suggest a good way to calculate the fission matrix from an OpenMC run? I’m sure it can be done I just don’t know what would be the best way to approach it. Computational speed is not really an issue and it could also be based on post processing of data. I would appreciate any tips.

Regards,
Kaur

Kaur,

You can easily compute the fission matrix for any arbitrary energy group structure in OpenMC. In summary, you need a tally with “energy” and “energyout” filters for your desired group structure. Since the tally must contain an “energyout” filter, it must use an “analog” tally estimator. The following is an example of the code you would need to specify a tally for a 2-group global fission matrix in the “tallies.xml” input file for OpenMC:




nu-fission
analog

This may alternatively be generated using our Python API as follows:

import openmc

tally = openmc.Tally()
tally.estimator = ‘analog’
tally.add_filter(openmc.Filter(type=‘energy’, bins=[0., 1.e-6, 20.]))
tally.add_filter(openmc.Filter(type=‘energyout’, bins=[0., 1.e-6, 20.]))
tally.add_score(‘nu-fission’)

tallies_file = openmc.TalliesFile()
tallies_file.add_tally(tally)
tallies_file.export_to_xml()

This tally will result in a 2x2 matrix of output which you will need to appropriately normalize. If instead of a matrix all you need is the vector form of the “chi” fission spectrum, then you might consider using the built-in “Chi” class in the “openmc.mgxs” Python module.

Best,
Will

Kaur,

If you are referring to a spatial fission matrix, that can also be done based on cells (unfortunately can’t be done on meshes right now). You would need to specify ‘cellborn’ and ‘cell’ filters, e.g.:




nu-fission

Again, that can be done in a similar fashion in the Python API as to what Will showed before.

I’m not aware of many people using ‘cellborn’ filters, so if you do try it out, let us know how it turns out and of course please don’t hesitate to write if you run into any problems.

Best regards,
Paul

Thanks for the replies. I should’ve clarified, I do mean a spatial fission matrix in the sense as described in this, for example:
https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-13-24523.pdf

So that means I would like to tally how many neutrons were born in the i-th cell caused by neutrons born in the j-th cell. And it would be nice to do it over a mesh. I can see how to tally the nu-fissions in a mesh but not how I could track how a given neutron in a given cell caused a fission in another (or the same) cell. Is it something I could extract from the statepoint files instead?

Best,

Kaur

Kaur- right now it’s not possible to determine scores filtered by what mesh cell the source particle was born in. If that’s a feature you’re interested in, feel free to create an issue on the OpenMC github page.

If you don’t mind me asking, what is your intended use of the fission matrix? If you are interested in determining higher harmonic eigenmodes, that can probably be done via CMFD which is in OpenMC.

Best,
Paul

Yes, I am interested in the higher modes. I have looked at results I can get from CMFD and another method but I would also like to compare them to results from the fission matrix. I would like to get the results from the fission matrix as a sort of a reference. So you would say it’s not possible at the moment?

Best,

Kaur

That’s correct; at the moment it is not possible. I’m trying to think of creative ways to do it, but none of them seem reasonable, e.g.

  • Run a series of fixed source calculations each having a source only in one mesh cell. Problem is that for a k-eigenvalue calculation (i.e., a system with k >=1), running in fixed source mode will cause the particle population to blow up.
  • Generate particle track files and post-process to determine the fission matrix. This would be super cumbersome and error-prone.
  • Hack the OpenMC source to show the mesh cell that a particle originated from when it scores to a tally bin. Probably not the answer you were looking for.
    Best,
    Paul

Hi OpenMC development team,

Is there a current capability for doing mesh-based spatial fission matrix with OpenMC? As a follow-up, what will be an alternative method for determining higher eigenmodes and eigenvalues?

Thanks.

Regards,
Ronald

Are there any updates on computing a mesh-based Fission Matrix with OpenMC ?

Hi Fausto,

I am currently working on implementing mesh-based fission matrix capabilities in OpenMC. It is based on a “meshborn” tally filter where events can be scored based on the mesh cell a particle originated from. I am planning to divide this new feature into two Pull Requests: the first one is for the meshborn filter and the second one is to integrate the actual fission matrix calculation.

For the moment, I am finalizing the testing of the first PR (meshborn filter) to make sure everything is correctly implemented.

I will post updates in this conversation as I move forward with the development.

Best,
Joffrey

1 Like

Hi Fausto,

The first PR on the meshborn filter (#2925 available here: Meshborn filter by JoffreyDorville · Pull Request #2925 · openmc-dev/openmc · GitHub) has recently been merged with the develop branch of OpenMC.

I will keep you updated once the second PR regarding the fission matrix calculation is made available.

Best,
Joffrey