From adf7077a01b6661316b4db94e11fa4d51f0b995d Mon Sep 17 00:00:00 2001 From: helen-brooks Date: Fri, 29 Jan 2021 14:33:43 +0000 Subject: [PATCH] Refactor read_input_xml so that all non-trivial functionality is containined in public functions. --- include/openmc/cross_sections.h | 3 +++ include/openmc/geometry_aux.h | 7 +------ src/cross_sections.cpp | 23 +++++++++++++++++++++++ src/geometry_aux.cpp | 6 +----- src/initialize.cpp | 21 ++++----------------- 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/include/openmc/cross_sections.h b/include/openmc/cross_sections.h index 3afcf6b177..aa1ba3661a 100644 --- a/include/openmc/cross_sections.h +++ b/include/openmc/cross_sections.h @@ -70,6 +70,9 @@ void read_ce_cross_sections(const std::vector>& nuc_temps, //! Read cross_sections.xml and populate data libraries void read_ce_cross_sections_xml(); +//! Load nuclide and thermal scattering data +void finalize_cross_sections(); + void library_clear(); } // namespace openmc diff --git a/include/openmc/geometry_aux.h b/include/openmc/geometry_aux.h index 5ff05e7a7d..43e4e71cdf 100644 --- a/include/openmc/geometry_aux.h +++ b/include/openmc/geometry_aux.h @@ -46,14 +46,9 @@ void get_temperatures(std::vector>& nuc_temps, //============================================================================== //! \brief Perform final setup for geometry -//! -//! \param[out] nuc_temps Vector of temperatures for each nuclide -//! \param[out] thermal_temps Vector of tempratures for each thermal scattering -//! table //============================================================================== -void finalize_geometry(std::vector>& nuc_temps, - std::vector>& thermal_temps); +void finalize_geometry(); //============================================================================== //! Figure out which Universe is the root universe. diff --git a/src/cross_sections.cpp b/src/cross_sections.cpp index b82a690e6d..dc071cbac9 100644 --- a/src/cross_sections.cpp +++ b/src/cross_sections.cpp @@ -7,6 +7,7 @@ #include "openmc/dagmc.h" #endif #include "openmc/error.h" +#include "openmc/geometry_aux.h" #include "openmc/file_utils.h" #include "openmc/hdf5_interface.h" #include "openmc/material.h" @@ -17,6 +18,7 @@ #include "openmc/settings.h" #include "openmc/simulation.h" #include "openmc/string_utils.h" +#include "openmc/timer.h" #include "openmc/thermal.h" #include "openmc/xml_interface.h" #include "openmc/wmp.h" @@ -323,6 +325,27 @@ void read_ce_cross_sections_xml() } } +void finalize_cross_sections(){ + if (settings::run_mode != RunMode::PLOTTING) { + simulation::time_read_xs.start(); + if (settings::run_CE) { + // Determine desired temperatures for each nuclide and S(a,b) table + double_2dvec nuc_temps(data::nuclide_map.size()); + double_2dvec thermal_temps(data::thermal_scatt_map.size()); + get_temperatures(nuc_temps, thermal_temps); + + // Read continuous-energy cross sections from HDF5 + read_ce_cross_sections(nuc_temps, thermal_temps); + } else { + // Create material macroscopic data for MGXS + set_mg_interface_nuclides_and_temps(); + data::mg.init(); + mark_fissionable_mgxs_materials(); + } + simulation::time_read_xs.stop(); + } +} + void library_clear() { data::libraries.clear(); data::library_map.clear(); diff --git a/src/geometry_aux.cpp b/src/geometry_aux.cpp index eff7016ab8..e2b079ba79 100644 --- a/src/geometry_aux.cpp +++ b/src/geometry_aux.cpp @@ -242,8 +242,7 @@ get_temperatures(std::vector>& nuc_temps, //============================================================================== -void finalize_geometry(std::vector>& nuc_temps, - std::vector>& thermal_temps) +void finalize_geometry() { // Perform some final operations to set up the geometry adjust_indices(); @@ -253,9 +252,6 @@ void finalize_geometry(std::vector>& nuc_temps, // Assign temperatures to cells that don't have temperatures already assigned assign_temperatures(); - // Determine desired temperatures for each nuclide and S(a,b) table - get_temperatures(nuc_temps, thermal_temps); - // Determine number of nested coordinate levels in the geometry model::n_coord_levels = maximum_levels(model::root_universe); } diff --git a/src/initialize.cpp b/src/initialize.cpp index 6594417de9..2c645ace1b 100644 --- a/src/initialize.cpp +++ b/src/initialize.cpp @@ -257,24 +257,11 @@ void read_input_xml() read_materials_xml(); read_geometry_xml(); - // Convert user IDs -> indices, assign temperatures - double_2dvec nuc_temps(data::nuclide_map.size()); - double_2dvec thermal_temps(data::thermal_scatt_map.size()); - finalize_geometry(nuc_temps, thermal_temps); + // Final geometry setup and assign temperatures + finalize_geometry(); - if (settings::run_mode != RunMode::PLOTTING) { - simulation::time_read_xs.start(); - if (settings::run_CE) { - // Read continuous-energy cross sections - read_ce_cross_sections(nuc_temps, thermal_temps); - } else { - // Create material macroscopic data for MGXS - set_mg_interface_nuclides_and_temps(); - data::mg.init(); - mark_fissionable_mgxs_materials(); - } - simulation::time_read_xs.stop(); - } + // Finalize cross sections having assigned temperatures + finalize_cross_sections(); read_tallies_xml();