22 int rawcycpp_shape_latitude[1] = {-1};
23 cycpp_shape_latitude = std::vector<int>(rawcycpp_shape_latitude, rawcycpp_shape_latitude + 1);
24 int rawcycpp_shape_longitude[1] = {-1};
25 cycpp_shape_longitude = std::vector<int>(rawcycpp_shape_longitude, rawcycpp_shape_longitude + 1);
26 int rawcycpp_shape_outcommod[1] = {-1};
28 int rawcycpp_shape_outrecipe[1] = {-1};
30 int rawcycpp_shape_inventory_size[1] = {-1};
32 int rawcycpp_shape_throughput[1] = {-1};
34 int rawcycpp_shape_package[1] = {-1};
36 int rawcycpp_shape_transport_unit[1] = {-1};
38 int rawcycpp_shape_inventory[2] = {-1, -1};
40 latitude = m->latitude;
41 longitude = m->longitude;
49#line 21 "/cycamore/src/source.cc"
50 cyclus::toolkit::CommodityProducer::Copy(m);
54 int rawcycpp_shape_latitude[1] = {-1};
55 cycpp_shape_latitude = std::vector<int>(rawcycpp_shape_latitude, rawcycpp_shape_latitude + 1);
56 int rawcycpp_shape_longitude[1] = {-1};
57 cycpp_shape_longitude = std::vector<int>(rawcycpp_shape_longitude, rawcycpp_shape_longitude + 1);
58 int rawcycpp_shape_outcommod[1] = {-1};
60 int rawcycpp_shape_outrecipe[1] = {-1};
62 int rawcycpp_shape_inventory_size[1] = {-1};
64 int rawcycpp_shape_throughput[1] = {-1};
66 int rawcycpp_shape_package[1] = {-1};
68 int rawcycpp_shape_transport_unit[1] = {-1};
70 int rawcycpp_shape_inventory[2] = {-1, -1};
72 cyclus::QueryResult qr = b->Query(
"Info", NULL);
73 latitude = qr.GetVal<
double>(
"latitude");
74 longitude = qr.GetVal<
double>(
"longitude");
75 outcommod = qr.GetVal<std::string>(
"outcommod");
76 outrecipe = qr.GetVal<std::string>(
"outrecipe");
79 package = qr.GetVal<std::string>("package");
82#line 26 "/cycamore/src/source.cc"
83 namespace tk = cyclus::toolkit;
84 tk::CommodityProducer::Add(tk::Commodity(
outcommod),
89 namespace tk = cyclus::toolkit;
92 if (cyclus::toolkit::CommodityProducer::Produces(
98 ss << cyclus::Facility::str() <<
" supplies commodity '" <<
outcommod
99 <<
"' with recipe '" <<
outrecipe <<
"' at a throughput of "
101 <<
" commod producer members: "
102 <<
" produces " <<
outcommod <<
"?: " << ans
103 <<
" throughput: " << cyclus::toolkit::CommodityProducer::Capacity(
outcommod)
104 <<
" with package type: " <<
package
105 << " and transport unit type: " << transport_unit
106 << " cost: " << cyclus::toolkit::CommodityProducer::Cost(outcommod);
116 Facility::Build(parent);
118 using cyclus::CompMap;
119 using cyclus::Composition;
120 using cyclus::Material;
123 cyclus::Material::Ptr all_inv;
124 Composition::Ptr blank_comp = Composition::CreateFromMass(CompMap());
126#line 71 "/cycamore/src/source.cc"
132 cyclus::CommodMap<cyclus::Material>::type& commod_requests) {
133 using cyclus::BidPortfolio;
134 using cyclus::CapacityConstraint;
135 using cyclus::Material;
136 using cyclus::Package;
137 using cyclus::Request;
138 using cyclus::TransportUnit;
141 cyclus::toolkit::RecordTimeSeries<double>(
"supply"+
outcommod,
this,
143 LOG(cyclus::LEV_INFO3,
"Source") << prototype() <<
" is bidding up to "
145 LOG(cyclus::LEV_INFO5,
"Source") <<
"stats: " <<
str();
147 std::set<BidPortfolio<Material>::Ptr> ports;
148 if (max_qty < cyclus::eps()) {
150 }
else if (commod_requests.count(
outcommod) == 0) {
154 BidPortfolio<Material>::Ptr port(
new BidPortfolio<Material>());
155 std::vector<Request<Material>*>& requests = commod_requests[
outcommod];
156 std::vector<Request<Material>*>::iterator it;
157 for (it = requests.begin(); it != requests.end(); ++it) {
158 Request<Material>* req = *it;
159 Material::Ptr target = req->target();
160 double qty = std::min(target->quantity(), max_qty);
163 std::vector<double> bids = context()->GetPackage(
package)->GetFillMass(qty);
167 ->MaxShippablePackages(bids.size());
168 if (shippable_pkgs < bids.size()) {
169 bids.erase(bids.begin() + shippable_pkgs, bids.end());
172 std::vector<double>::iterator bit;
173 for (bit = bids.begin(); bit != bids.end(); ++bit) {
175 m =
outrecipe.empty() ? Material::CreateUntracked(*bit, target->comp()) : Material::CreateUntracked(*bit, context()->GetRecipe(
outrecipe));
176#line 122 "/cycamore/src/source.cc"
177 port->AddBid(req, m,
this);
181 CapacityConstraint<Material> cc(max_qty);
182 port->AddConstraint(cc);
188 const std::vector<cyclus::Trade<cyclus::Material> >& trades,
189 std::vector<std::pair<cyclus::Trade<cyclus::Material>,
190 cyclus::Material::Ptr> >& responses) {
191 using cyclus::Material;
194 int shippable_trades = context()->GetTransportUnit(
transport_unit)
195 ->MaxShippablePackages(trades.size());
197 std::vector<Trade<Material> >::const_iterator it;
198 for (it = trades.begin(); it != trades.end(); ++it) {
199 if (shippable_trades > 0) {
200 double qty = it->amt;
204 std::vector<Material::Ptr> m_pkgd = m->Package<Material>(context()->GetPackage(
package));
206 if (m->quantity() > cyclus::eps()) {
212 Material::Ptr response;
213 if (m_pkgd.size() > 0) {
217 response = m_pkgd[0];
218 shippable_trades -= 1;
221 response = Material::CreateUntracked(0, m->comp());
224 if (
outrecipe.empty() && response->comp() != it->request->target()->comp()) {
225 response->Transmute(it->request->target()->comp());
228 responses.push_back(std::make_pair(*it, response));
229 LOG(cyclus::LEV_INFO5,
"Source") << prototype() <<
" sent an order"
230 <<
" for " << response->quantity() <<
" of " <<
outcommod;