Implement cell instance filter

This commit is contained in:
Paul Romano 2019-11-05 08:13:25 -05:00
parent 9e636a6f07
commit e6d2648dc1
6 changed files with 202 additions and 6 deletions

View file

@ -18,6 +18,7 @@
#include "openmc/settings.h"
#include "openmc/surface.h"
#include "openmc/tallies/filter.h"
#include "openmc/tallies/filter_cell_instance.h"
#include "openmc/tallies/filter_distribcell.h"
@ -319,13 +320,20 @@ find_root_universe()
void
prepare_distribcell()
{
// Find all cells listed in a DistribcellFilter.
// Find all cells listed in a DistribcellFilter or CellInstanceFilter
std::unordered_set<int32_t> distribcells;
for (auto& filt : model::tally_filters) {
auto* distrib_filt = dynamic_cast<DistribcellFilter*>(filt.get());
if (distrib_filt) {
distribcells.insert(distrib_filt->cell());
}
auto* ci_filt = dynamic_cast<CellInstanceFilter*>(filt.get());
if (ci_filt) {
for (const auto& i : ci_filt->cell_instances()) {
distribcells.insert(i.index_cell);
}
}
}
// Find all cells with distributed materials or temperatures. Make sure that