mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 05:35:49 -04:00
Make the user-defined distribcells an argument to the function.
This commit is contained in:
parent
7cb0b855f6
commit
88ec652760
5 changed files with 13 additions and 7 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "openmc/vector.h"
|
||||
|
||||
|
|
@ -63,9 +64,12 @@ int32_t find_root_universe();
|
|||
|
||||
//==============================================================================
|
||||
//! Populate all data structures needed for distribcells.
|
||||
//! \param user_distribcells A set of cell indices to create distribcell data
|
||||
//! structures for regardless of whether or not they are part of a tally
|
||||
//! filter.
|
||||
//==============================================================================
|
||||
|
||||
void prepare_distribcell();
|
||||
void prepare_distribcell(const std::unordered_set<int32_t>* user_distribcells = nullptr);
|
||||
|
||||
//==============================================================================
|
||||
//! Recursively search through the geometry and count cell instances.
|
||||
|
|
|
|||
|
|
@ -105,7 +105,6 @@ extern int trigger_batch_interval; //!< Batch interval for triggers
|
|||
extern "C" int verbosity; //!< How verbose to make output
|
||||
extern double weight_cutoff; //!< Weight cutoff for Russian roulette
|
||||
extern double weight_survive; //!< Survival weight after Russian roulette
|
||||
extern std::unordered_set<int32_t> distribcells; //!< Manually set distribcells
|
||||
} // namespace settings
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ public:
|
|||
|
||||
const vector<CellInstance>& cell_instances() const { return cell_instances_; }
|
||||
|
||||
const std::unordered_set<int32_t>& cells() const { return cells_; }
|
||||
|
||||
void set_cell_instances(gsl::span<CellInstance> instances);
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
#include <algorithm> // for std::max
|
||||
#include <sstream>
|
||||
#include <unordered_set>
|
||||
|
||||
#include <fmt/core.h>
|
||||
#include <pugixml.hpp>
|
||||
|
|
@ -311,12 +310,14 @@ find_root_universe()
|
|||
//==============================================================================
|
||||
|
||||
void
|
||||
prepare_distribcell()
|
||||
prepare_distribcell(const std::unordered_set<int32_t>* user_distribcells)
|
||||
{
|
||||
write_message("Preparing distributed cell instances...", 5);
|
||||
|
||||
std::unordered_set<int32_t> distribcells;
|
||||
|
||||
// start with any cells manually specified via the C++ API
|
||||
std::unordered_set<int32_t> distribcells = settings::distribcells;
|
||||
if (user_distribcells) distribcells = *user_distribcells;
|
||||
|
||||
// Find all cells listed in a DistribcellFilter or CellInstanceFilter
|
||||
for (auto& filt : model::tally_filters) {
|
||||
|
|
@ -326,7 +327,8 @@ prepare_distribcell()
|
|||
distribcells.insert(distrib_filt->cell());
|
||||
}
|
||||
if (cell_inst_filt) {
|
||||
for (const auto& c_inst : cell_inst_filt->cell_instances()) distribcells.insert(c_inst.index_cell);
|
||||
const auto& filter_cells = cell_inst_filt->cells();
|
||||
distribcells.insert(filter_cells.begin(), filter_cells.end());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ int trigger_batch_interval {1};
|
|||
int verbosity {7};
|
||||
double weight_cutoff {0.25};
|
||||
double weight_survive {1.0};
|
||||
std::unordered_set<int32_t> distribcells;
|
||||
|
||||
} // namespace settings
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue