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:
John Tramm 2020-01-08 19:19:05 +00:00
parent 1fdf446bfe
commit 3621fddc7e
4 changed files with 21 additions and 12 deletions

View file

@ -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};

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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