From d1b5810688530e81b37d86821cf32b708967d5f5 Mon Sep 17 00:00:00 2001 From: John Tramm Date: Fri, 3 Jan 2020 21:55:03 +0000 Subject: [PATCH] moved thread private trace debugging variable into particle object. --- include/openmc/particle.h | 2 ++ src/geometry.cpp | 4 ++-- src/particle.cpp | 10 +++++----- src/physics.cpp | 2 +- src/physics_mg.cpp | 2 +- src/simulation.cpp | 11 ++++------- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/openmc/particle.h b/include/openmc/particle.h index 7b0cd938dd..ea89753ab9 100644 --- a/include/openmc/particle.h +++ b/include/openmc/particle.h @@ -335,6 +335,8 @@ public: double tally_collision_ {0.0}; double tally_tracklength_ {0.0}; double tally_leakage_ {0.0}; + + bool trace_; //!< flag to show debug information }; } // namespace openmc diff --git a/src/geometry.cpp b/src/geometry.cpp index 88b48c8660..efe7100b4c 100644 --- a/src/geometry.cpp +++ b/src/geometry.cpp @@ -119,7 +119,7 @@ find_cell_inner(Particle* p, const NeighborList* neighbor_list) } // Announce the cell that the particle is entering. - if (found && (settings::verbosity >= 10 || simulation::trace)) { + if (found && (settings::verbosity >= 10 || p->trace_)) { std::stringstream msg; msg << " Entering cell " << model::cells[i_cell]->id_; write_message(msg, 1); @@ -299,7 +299,7 @@ cross_lattice(Particle* p, const BoundaryInfo& boundary) auto& coord {p->coord_[p->n_coord_ - 1]}; auto& lat {*model::lattices[coord.lattice]}; - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || p->trace_) { std::stringstream msg; msg << " Crossing lattice " << lat.id_ << ". Current position (" << coord.lattice_x << "," << coord.lattice_y << "," diff --git a/src/particle.cpp b/src/particle.cpp index e3f6db583d..4528f57c53 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -139,7 +139,7 @@ Particle::transport() /* // Display message if high verbosity or trace is on - if (settings::verbosity >= 9 || simulation::trace) { + if (settings::verbosity >= 9 || trace_) { write_message("Simulating Particle " + std::to_string(id_)); } @@ -416,7 +416,7 @@ Particle::cross_surface() int i_surface = std::abs(surface_); // TODO: off-by-one const auto& surf {model::surfaces[i_surface - 1].get()}; - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || trace_) { write_message(" Crossing surface " + std::to_string(surf->id_)); } @@ -443,7 +443,7 @@ Particle::cross_surface() tally_leakage_ += wgt_; // Display message - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || trace_) { write_message(" Leaked out of surface " + std::to_string(surf->id_)); } return; @@ -507,7 +507,7 @@ Particle::cross_surface() r_last_current_ = this->r() + TINY_BIT*this->u(); // Diagnostic message - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || trace_) { write_message(" Reflected from surface " + std::to_string(surf->id_)); } return; @@ -561,7 +561,7 @@ Particle::cross_surface() r_last_current_ = this->r() + TINY_BIT*this->u(); // Diagnostic message - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || trace_) { write_message(" Hit periodic boundary on surface " + std::to_string(surf->id_)); } diff --git a/src/physics.cpp b/src/physics.cpp index c639c59076..8689133312 100644 --- a/src/physics.cpp +++ b/src/physics.cpp @@ -60,7 +60,7 @@ void collision(Particle* p) } // Display information about collision - if (settings::verbosity >= 10 || simulation::trace) { + if (settings::verbosity >= 10 || p->trace_) { std::stringstream msg; if (p->event_ == EVENT_KILL) { msg << " Killed. Energy = " << p->E_ << " eV."; diff --git a/src/physics_mg.cpp b/src/physics_mg.cpp index f2bd8cc42b..c219582e0b 100644 --- a/src/physics_mg.cpp +++ b/src/physics_mg.cpp @@ -31,7 +31,7 @@ collision_mg(Particle* p) sample_reaction(p); // Display information about collision - if ((settings::verbosity >= 10) || (simulation::trace)) { + if ((settings::verbosity >= 10) || (p->trace_)) { std::stringstream msg; msg << " Energy Group = " << p->g_; write_message(msg, 1); diff --git a/src/simulation.cpp b/src/simulation.cpp index f0dd4ad07a..c5a0fd187e 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -298,7 +298,7 @@ void process_advance_particle_events() #pragma omp parallel for schedule(dynamic, DYNAMIC_SIZE) for (int i = 0; i < advance_particle_queue_length; i++) { Particle * p = particles + advance_particle_queue[i].idx; - simulation::trace == (p->id_ == 0); + p->trace_ == (p->id_ == 0); // Sample a distance to collision double d_collision; @@ -987,9 +987,6 @@ const RegularMesh* ufs_mesh {nullptr}; std::vector k_generation; std::vector work_index; -// Threadprivate variables -bool trace; //!< flag to show debug information - } // namespace simulation //============================================================================== @@ -1238,10 +1235,10 @@ void initialize_history(Particle* p, int64_t index_source) init_particle_seeds(particle_seed, p->seeds_); // set particle trace - simulation::trace = false; + p->trace_ = false; if (simulation::current_batch == settings::trace_batch && simulation::current_gen == settings::trace_gen && - p->id_ == settings::trace_particle) simulation::trace = true; + p->id_ == settings::trace_particle) p->trace_ = true; // Set particle track. p->write_track_ = false; @@ -1259,7 +1256,7 @@ void initialize_history(Particle* p, int64_t index_source) } // Display message if high verbosity or trace is on - if (settings::verbosity >= 9 || simulation::trace) { + if (settings::verbosity >= 9 || p->trace_) { write_message("Simulating Particle " + std::to_string(p->id_)); }