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:
<tally id="1">
<filter type="energy" bins="0. 1.e-6 20.0" />
<filter type="energyout" bins="0. 1.e-6 20.0" />
<scores>nu-fission</scores>
<estimator>analog </estimator>
</tally>
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