From b5f6dacb7dc1dfff7b95d382f7db114a8d3e4d62 Mon Sep 17 00:00:00 2001 From: YoungHui Park Date: Wed, 5 Aug 2020 11:39:22 -0500 Subject: [PATCH] Add setting parameter for surface source file reading --- include/openmc/settings.h | 1 + src/settings.cpp | 1 + src/source.cpp | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/include/openmc/settings.h b/include/openmc/settings.h index c7d14b4e7..1fc68a6ea 100644 --- a/include/openmc/settings.h +++ b/include/openmc/settings.h @@ -46,6 +46,7 @@ extern bool source_latest; //!< write latest source at each batch? extern bool source_separate; //!< write source to separate file? extern bool source_write; //!< write source in HDF5 files? extern bool surface_source; //!< write surface source file? +extern bool surf_src_read; //!< read surface source file? extern bool survival_biasing; //!< use survival biasing? extern bool temperature_multipole; //!< use multipole data? extern "C" bool trigger_on; //!< tally triggers enabled? diff --git a/src/settings.cpp b/src/settings.cpp index 11effc922..516dfaaea 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -61,6 +61,7 @@ bool source_latest {false}; bool source_separate {false}; bool source_write {true}; bool surface_source {false}; +bool surf_src_read {false}; bool survival_biasing {false}; bool temperature_multipole {false}; bool trigger_on {false}; diff --git a/src/source.cpp b/src/source.cpp index 0efaf52ba..cdf2bac2d 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -72,6 +72,26 @@ IndependentSource::IndependentSource(pugi::xml_node node) // Check for external source file if (check_for_node(node, "file")) { + // Copy path of source file + settings::path_source = get_node_value(node, "file", false, true); + + // Check if source file exists + if (!file_exists(settings::path_source)) { + fatal_error(fmt::format("Source file '{}' does not exist.", + settings::path_source)); + } + + // Check if it is a surface source file. + if (check_for_node(node, "surf_src_file")) { + settings::surf_src_read = get_node_value_bool(node, "surf_src_file"); + } + + } else if (check_for_node(node, "library")) { + settings::path_source_library = get_node_value(node, "library", false, true); + if (!file_exists(settings::path_source_library)) { + fatal_error(fmt::format("Source library '{}' does not exist.", + settings::path_source_library)); + } } else {