Tally filter restructuring
Created by: paulromano
The implementation of tally filters has been significantly overhauled. In the current version of OpenMC, filters were specified like:
<tally>
<filters>
<cell>1 5 10</cell>
<energy>0.0 0.253e-6 1.0 20.0</energy>
</filters>
<scores>total fission</scores>
</tally>
This has been changed so that there are multiple <filter>
tags, i.e.
<tally>
<filter type="cell" bins="1 5 10" />
<filter type="energy" bins="0.0 0.253e-6 1.0 20.0" />
<scores>total fission</scores>
</tally>
This allows the user to change the order of striding of filters rather than it being hard-coded. The striding can have an effect on tally performance.
The main motivation for the change was to simplify the Tally derived type and related routines. Before, the Tally type had many components:
integer, allocatable :: univere_bins(:)
integer, allocatable :: cell_bins(:)
...
real(8), allocatable :: energy_in(:)
Adding another filter type meant that a new variable would have to be introduced in the Tally type. This has been changed so that there is now a component of Tally called filters
that is of derived type TallyFilter. This greatly simplies logic in many places of the code having to do with tally filters.
@bhermanmit I will need to change the cmfd_data module so that it grabs data correctly.