mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Changed the nu_bank particle field to be a vector. We can get away with it being a static array of length 15, but for CPU robustness we will make it a vector. We will need to convert a bunch of other vectors when moving to GPU so this is fine.
This commit is contained in:
parent
1fdf446bfe
commit
3621fddc7e
4 changed files with 21 additions and 12 deletions
|
|
@ -334,7 +334,7 @@ public:
|
|||
|
||||
std::vector<std::vector<Position>> tracks_;
|
||||
|
||||
NuBank nu_bank_[15];
|
||||
std::vector<NuBank> nu_bank_;
|
||||
|
||||
double tally_absorption_ {0.0};
|
||||
double tally_collision_ {0.0};
|
||||
|
|
|
|||
|
|
@ -169,14 +169,16 @@ create_fission_sites(Particle* p, int i_nuclide, const Reaction* rx,
|
|||
// First, if our bank is full then don't continue
|
||||
if (nu == 0) return;
|
||||
|
||||
assert( nu < 15 );
|
||||
|
||||
// Initialize the counter of delayed neutrons encountered for each delayed
|
||||
// group.
|
||||
double nu_d[MAX_DELAYED_GROUPS] = {0.};
|
||||
|
||||
// Clear out particle's nu fission bank
|
||||
p->nu_bank_.clear();
|
||||
|
||||
p->fission_ = true;
|
||||
int skipped = 0;
|
||||
|
||||
for (int i = 0; i < nu; ++i) {
|
||||
Particle::Bank * site;
|
||||
if(use_fission_bank)
|
||||
|
|
@ -219,9 +221,12 @@ create_fission_sites(Particle* p, int i_nuclide, const Reaction* rx,
|
|||
// Write fission particles to nuBank
|
||||
if(use_fission_bank)
|
||||
{
|
||||
p->nu_bank_[i].wgt = site->wgt;
|
||||
p->nu_bank_[i].E = site->E;
|
||||
p->nu_bank_[i].delayed_group = site->delayed_group;
|
||||
Particle::NuBank* nu_bank_entry;
|
||||
p->nu_bank_.emplace_back();
|
||||
nu_bank_entry = &p->nu_bank_.back();
|
||||
nu_bank_entry->wgt = site->wgt;
|
||||
nu_bank_entry->E = site->E;
|
||||
nu_bank_entry->delayed_group = site->delayed_group;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,14 +112,17 @@ create_fission_sites(Particle* p, std::vector<Particle::Bank>& bank, bool use_fi
|
|||
// First, if our bank is full then don't continue
|
||||
if (nu == 0) return;
|
||||
|
||||
assert( nu < 15 );
|
||||
|
||||
// Initialize the counter of delayed neutrons encountered for each delayed
|
||||
// group.
|
||||
double nu_d[MAX_DELAYED_GROUPS] = {0.};
|
||||
|
||||
// Clear out particle's nu fission bank
|
||||
p->nu_bank_.clear();
|
||||
|
||||
p->fission_ = true;
|
||||
int skipped = 0;
|
||||
|
||||
for (int i = 0; i < nu; ++i) {
|
||||
Particle::Bank * site;
|
||||
if(use_fission_bank)
|
||||
|
|
@ -182,9 +185,12 @@ create_fission_sites(Particle* p, std::vector<Particle::Bank>& bank, bool use_fi
|
|||
// Write fission particles to nuBank
|
||||
if(use_fission_bank)
|
||||
{
|
||||
p->nu_bank_[i].wgt = site->wgt;
|
||||
p->nu_bank_[i].E = site->E;
|
||||
p->nu_bank_[i].delayed_group = site->delayed_group;
|
||||
Particle::NuBank* nu_bank_entry;
|
||||
p->nu_bank_.emplace_back();
|
||||
nu_bank_entry = &p->nu_bank_.back();
|
||||
nu_bank_entry->wgt = site->wgt;
|
||||
nu_bank_entry->E = site->E;
|
||||
nu_bank_entry->delayed_group = site->delayed_group;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -331,8 +331,6 @@ score_fission_eout(Particle* p, int i_tally, int i_score, int score_bin)
|
|||
|
||||
// loop over number of particles banked
|
||||
for (auto i = 0; i < p->n_bank_; ++i) {
|
||||
//auto i_bank = simulation::fission_bank.size() - p->n_bank_ + i; //TODO: This is breaking event-based right here
|
||||
//const auto& bank = simulation::fission_bank[i_bank];
|
||||
const auto& bank = p->nu_bank_[i];
|
||||
|
||||
// get the delayed group
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue