diff --git a/CHANGELOG.rst b/CHANGELOG.rst index dd73e4aec4..dfd3a7900b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -20,7 +20,7 @@ Since last release * Removed the ResourceBuff class and replaced its instances with ResBuf (#1755) **Fixed:** - +* Removed unnecessary records being added to the Resource database by packaging process (#1761) v1.6.0 ==================== diff --git a/src/res_tracker.cc b/src/res_tracker.cc index c673420e83..d9c877bab0 100644 --- a/src/res_tracker.cc +++ b/src/res_tracker.cc @@ -1,6 +1,7 @@ #include "res_tracker.h" #include "recorder.h" +#include "cyc_limits.h" namespace cyclus { @@ -44,13 +45,17 @@ void ResTracker::Extract(ResTracker* removed) { return; } - parent1_ = res_->state_id(); - parent2_ = 0; + if (res_->quantity() > eps_rsrc()) { + parent1_ = res_->state_id(); + parent2_ = 0; + + Record(); + } + removed->parent1_ = res_->state_id(); removed->parent2_ = 0; removed->tracked_ = tracked_; - Record(); removed->Record(); } diff --git a/src/toolkit/matl_sell_policy.cc b/src/toolkit/matl_sell_policy.cc index 115d76f803..065a991fc6 100644 --- a/src/toolkit/matl_sell_policy.cc +++ b/src/toolkit/matl_sell_policy.cc @@ -212,15 +212,26 @@ void MatlSellPolicy::GetMatlTrades( double qty = it->amt; LGH(INFO3) << " sending " << qty << " kg of " << it->request->commodity(); Material::Ptr mat = buf_->Pop(qty, cyclus::eps_rsrc()); - std::vector mat_pkgd = mat->Package(package_); - // push any extra material that couldn't be packaged back onto buffer - buf_->Push(mat); - if (mat_pkgd.size() > 0) { - if (ignore_comp_) { - mat_pkgd[0]->Transmute(it->request->target()->comp()); - } - responses.push_back(std::make_pair(*it, mat_pkgd[0])); + Material::Ptr trade_mat; + + // don't go through packaging if you don't need to. packaging always bumps + // resource ids and records on resources table, which is not necessary + // when nothing is happening + if (package_->name() != mat->package_name()) { // packaging needed + std::vector mat_pkgd = mat->Package(package_); + // push any extra material that couldn't be packaged back onto buffer + buf_->Push(mat); + if (mat_pkgd.size() > 0) { + trade_mat = mat_pkgd[0]; + } + } else { // no packaging needed + trade_mat = mat; + } + + if (ignore_comp_) { + trade_mat->Transmute(it->request->target()->comp()); } + responses.push_back(std::make_pair(*it, trade_mat)); } }