diff --git a/src/tallies/filter_legendre.cpp b/src/tallies/filter_legendre.cpp index 088f59ac44..3961e06d40 100644 --- a/src/tallies/filter_legendre.cpp +++ b/src/tallies/filter_legendre.cpp @@ -16,6 +16,9 @@ LegendreFilter::from_xml(pugi::xml_node node) void LegendreFilter::set_order(int order) { + if (order < 0) { + throw std::invalid_argument{"Legendre order must be non-negative."}; + } order_ = order; n_bins_ = order_ + 1; } diff --git a/src/tallies/filter_sptl_legendre.cpp b/src/tallies/filter_sptl_legendre.cpp index 75a46348f2..40d82f4c1f 100644 --- a/src/tallies/filter_sptl_legendre.cpp +++ b/src/tallies/filter_sptl_legendre.cpp @@ -37,6 +37,9 @@ SpatialLegendreFilter::from_xml(pugi::xml_node node) void SpatialLegendreFilter::set_order(int order) { + if (order < 0) { + throw std::invalid_argument{"Legendre order must be non-negative."}; + } order_ = order; n_bins_ = order_ + 1; } diff --git a/src/tallies/filter_zernike.cpp b/src/tallies/filter_zernike.cpp index 21b9a6b32a..b732ef7931 100644 --- a/src/tallies/filter_zernike.cpp +++ b/src/tallies/filter_zernike.cpp @@ -74,6 +74,9 @@ ZernikeFilter::text_label(int bin) const void ZernikeFilter::set_order(int order) { + if (order < 0) { + throw std::invalid_argument{"Zernike order must be non-negative."}; + } order_ = order; n_bins_ = ((order+1) * (order+2)) / 2; } @@ -111,7 +114,7 @@ ZernikeRadialFilter::text_label(int bin) const void ZernikeRadialFilter::set_order(int order) { - order_ = order; + ZernikeFilter::set_order(order); n_bins_ = order / 2 + 1; } diff --git a/src/tallies/tally.cpp b/src/tallies/tally.cpp index 1c95604048..27d6cc58c0 100644 --- a/src/tallies/tally.cpp +++ b/src/tallies/tally.cpp @@ -279,18 +279,16 @@ Tally::Tally(pugi::xml_node node) // Allocate and store filter user ids std::vector filters; - if (!filter_ids.empty()) { - for (int filter_id : filter_ids) { - // Determine if filter ID is valid - auto it = model::filter_map.find(filter_id); - if (it == model::filter_map.end()) { - throw std::runtime_error{"Could not find filter " + std::to_string(filter_id) - + " specified on tally " + std::to_string(id_)}; - } - - // Store the index of the filter - filters.push_back(model::tally_filters[it->second].get()); + for (int filter_id : filter_ids) { + // Determine if filter ID is valid + auto it = model::filter_map.find(filter_id); + if (it == model::filter_map.end()) { + throw std::runtime_error{"Could not find filter " + std::to_string(filter_id) + + " specified on tally " + std::to_string(id_)}; } + + // Store the index of the filter + filters.push_back(model::tally_filters[it->second].get()); } // Set the filters