From 49a55120fda38207f4a8babd5fb4b9042f13c5cb Mon Sep 17 00:00:00 2001 From: YoungHui Park Date: Mon, 11 Jan 2021 17:04:08 -0600 Subject: [PATCH] Move surf_source_index out of global scope --- include/openmc/simulation.h | 2 -- include/openmc/state_point.h | 2 +- src/state_point.cpp | 27 ++++++++++++--------------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/include/openmc/simulation.h b/include/openmc/simulation.h index 818d98f527..32e2c67303 100644 --- a/include/openmc/simulation.h +++ b/include/openmc/simulation.h @@ -45,8 +45,6 @@ extern const RegularMesh* ufs_mesh; extern std::vector k_generation; extern std::vector work_index; -extern std::vector surf_source_index; - } // namespace simulation //============================================================================== diff --git a/include/openmc/state_point.h b/include/openmc/state_point.h index 92649a337b..322b3162a5 100644 --- a/include/openmc/state_point.h +++ b/include/openmc/state_point.h @@ -12,7 +12,7 @@ namespace openmc { void load_state_point(); -int query_surf_source_size(); +std::vector query_surf_source_size(); void write_source_point(const char* filename, bool surf_source_bank = false); void write_source_bank(hid_t group_id, bool surf_source_bank); void read_source_bank(hid_t group_id, std::vector& sites, bool distribute); diff --git a/src/state_point.cpp b/src/state_point.cpp index 8ce1e38849..23c2748e4e 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -525,12 +525,11 @@ hid_t h5banktype() { return banktype; } -int query_surf_source_size() +std::vector query_surf_source_size() { - int64_t total; - - simulation::surf_source_index.resize(mpi::n_procs + 1); - simulation::surf_source_index[0] = 0; + std::vector surf_source_index; + surf_source_index.resize(mpi::n_procs + 1); + surf_source_index[0] = 0; #ifdef OPENMC_MPI std::vector bank_size; @@ -546,20 +545,16 @@ int query_surf_source_size() // Populate the surf_source_index with cumulative sum of the number of // surface source banks per process for (int i = 1; i < mpi::n_procs + 1; ++i) { - simulation::surf_source_index[i] = \ - simulation::surf_source_index[i - 1] + bank_size[i - 1]; + surf_source_index[i] = surf_source_index[i - 1] + bank_size[i - 1]; } - total = simulation::surf_source_index[mpi::n_procs]; } - MPI_Bcast(simulation::surf_source_index.data(), mpi::n_procs + 1, MPI_INT64_T, 0, mpi::intracomm); - MPI_Bcast(&total, 1, MPI_INT64_T, 0, mpi::intracomm); + MPI_Bcast(surf_source_index.data(), mpi::n_procs + 1, MPI_INT64_T, 0, mpi::intracomm); #else - simulation::surf_source_index[mpi::n_procs] = simulation::surf_source_bank.size(); - total = simulation::surf_source_bank.size(); + surf_source_index[mpi::n_procs] = simulation::surf_source_bank.size(); #endif - return total; + return surf_source_index; } void @@ -610,14 +605,16 @@ write_source_bank(hid_t group_id, bool surf_source_bank) // Set vectors for source bank and starting bank index of each process std::vector* bank_index = &simulation::work_index; std::vector* source_bank = &simulation::source_bank; + std::vector surf_source_index_vector; std::vector surf_source_bank_vector; // Reset dataspace sizes and vectors for surface source bank if (surf_source_bank) { - dims_size = query_surf_source_size(); + surf_source_index_vector = query_surf_source_size(); + dims_size = surf_source_index_vector[mpi::n_procs]; count_size = simulation::surf_source_bank.size(); - bank_index = &simulation::surf_source_index; + bank_index = &surf_source_index_vector; // Copy data in a SharedArray into a vector. surf_source_bank_vector.resize(count_size);