From dd82da692a96575a385858ab72d927ea9e354bbf Mon Sep 17 00:00:00 2001 From: YoungHui Park Date: Wed, 19 Aug 2020 17:40:56 -0500 Subject: [PATCH] Move query_surf_src_size from simulation.cpp to state_point.cpp --- include/openmc/simulation.h | 3 --- include/openmc/state_point.h | 1 + src/simulation.cpp | 39 ------------------------------------ src/state_point.cpp | 39 ++++++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 42 deletions(-) diff --git a/include/openmc/simulation.h b/include/openmc/simulation.h index bd10c96c79..7a206284f2 100644 --- a/include/openmc/simulation.h +++ b/include/openmc/simulation.h @@ -61,9 +61,6 @@ void allocate_banks(); //! Determine number of particles to transport per process void calculate_work(); -//! Determine number of surface source banks per process and their sum -void query_surf_src_size(); - //! Initialize nuclear data before a simulation void initialize_data(); diff --git a/include/openmc/state_point.h b/include/openmc/state_point.h index 1d7254af85..255c7ff1d1 100644 --- a/include/openmc/state_point.h +++ b/include/openmc/state_point.h @@ -12,6 +12,7 @@ namespace openmc { void load_state_point(); +void query_surf_src_size(); void write_source_point(const char* filename, bool surf_src_bank); void write_source_bank(hid_t group_id, bool surf_src_bank); void read_source_bank(hid_t group_id, std::vector& sites, bool distribute); diff --git a/src/simulation.cpp b/src/simulation.cpp index bcb48ab547..ae0ad319b8 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -569,45 +569,6 @@ void calculate_work() } } -void query_surf_src_size() -{ - int64_t total; - if (mpi::master) { - simulation::surf_src_index.resize(mpi::n_procs + 1); - simulation::surf_src_index[0] = 0; - } - -#ifdef OPENMC_MPI - std::vector bank_size; - bank_size.resize(mpi::n_procs); - - // Collect the number of surface source banks from all processes - int64_t size = simulation::surf_src_bank.size(); - MPI_Gather(&size, 1, MPI_INT64_T, - bank_size.data(), 1, MPI_INT64_T, - 0, mpi::intracomm); - - if (mpi::master) { - // Populate the surf_src_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_src_index[i] = \ - simulation::surf_src_index[i - 1] + bank_size[i - 1]; - } - // Set maximum bank size - simulation::max_bank_size = *std::max_element(bank_size.begin(), - bank_size.end()); - total = simulation::surf_src_index[mpi::n_procs]; - } -#else - total = simulation::surf_src_bank.size(); - simulation::surf_src_index[mpi::n_procs] = total; -#endif - // Set total number of surface source banks - simulation::total_surf_banks = total; - -} - void initialize_data() { // Determine minimum/maximum energy for incident neutron/photon data diff --git a/src/state_point.cpp b/src/state_point.cpp index 278576ea03..01660831da 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -525,6 +525,45 @@ hid_t h5banktype() { return banktype; } +void query_surf_src_size() +{ + int64_t total; + if (mpi::master) { + simulation::surf_src_index.resize(mpi::n_procs + 1); + simulation::surf_src_index[0] = 0; + } + +#ifdef OPENMC_MPI + std::vector bank_size; + bank_size.resize(mpi::n_procs); + + // Collect the number of surface source banks from all processes + int64_t size = simulation::surf_src_bank.size(); + MPI_Gather(&size, 1, MPI_INT64_T, + bank_size.data(), 1, MPI_INT64_T, + 0, mpi::intracomm); + + if (mpi::master) { + // Populate the surf_src_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_src_index[i] = \ + simulation::surf_src_index[i - 1] + bank_size[i - 1]; + } + // Set maximum bank size + simulation::max_bank_size = *std::max_element(bank_size.begin(), + bank_size.end()); + total = simulation::surf_src_index[mpi::n_procs]; + } +#else + total = simulation::surf_src_bank.size(); + simulation::surf_src_index[mpi::n_procs] = total; +#endif + // Set total number of surface source banks + simulation::total_surf_banks = total; + +} + void write_source_point(const char* filename, bool surf_src_bank) {