diff --git a/include/openmc/simulation.h b/include/openmc/simulation.h index 96f2c632e..32e2c6730 100644 --- a/include/openmc/simulation.h +++ b/include/openmc/simulation.h @@ -57,8 +57,8 @@ void allocate_banks(); //! Determine number of particles to transport per process void calculate_work(); -//! Determine energy limits for incident neutron/photon data -void determine_energy_limits(); +//! Initialize nuclear data before a simulation +void initialize_data(); //! Initialize a batch void initialize_batch(); diff --git a/src/particle_restart.cpp b/src/particle_restart.cpp index 3347030ba..b0f739bd0 100644 --- a/src/particle_restart.cpp +++ b/src/particle_restart.cpp @@ -74,6 +74,9 @@ void run_particle_restart() // Set verbosity high settings::verbosity = 10; + // Initialize nuclear data (energy limits, log grid, etc.) + initialize_data(); + // Initialize the particle to be tracked Particle p; diff --git a/src/simulation.cpp b/src/simulation.cpp index 37b9bd882..c2672c750 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -69,19 +69,11 @@ int openmc_simulation_init() // Skip if simulation has already been initialized if (simulation::initialized) return 0; - // Determine limits for incident neutron/photon data + // Initialize nuclear data (energy limits, log grid) if (settings::run_CE) { - determine_energy_limits(); + initialize_data(); } - // Set up logarithmic grid for nuclides - for (auto& nuc : data::nuclides) { - nuc->init_grid(); - } - int neutron = static_cast(Particle::Type::neutron); - simulation::log_spacing = std::log(data::energy_max[neutron] / - data::energy_min[neutron]) / settings::n_log_bins; - // Determine how much work each process should do calculate_work(); @@ -569,7 +561,7 @@ void calculate_work() } } -void determine_energy_limits() +void initialize_data() { // Determine minimum/maximum energy for incident neutron/photon data data::energy_max = {INFTY, INFTY}; @@ -629,6 +621,14 @@ void determine_energy_limits() } } } + + // Set up logarithmic grid for nuclides + for (auto& nuc : data::nuclides) { + nuc->init_grid(); + } + int neutron = static_cast(Particle::Type::neutron); + simulation::log_spacing = std::log(data::energy_max[neutron] / + data::energy_min[neutron]) / settings::n_log_bins; } #ifdef OPENMC_MPI