1 #ifndef CYCLUS_COMMODCONVERTERS_COMMODCONVERTER_H_
2 #define CYCLUS_COMMODCONVERTERS_COMMODCONVERTER_H_
9 namespace commodconverter {
10 class CommodConverter;
14 namespace commodconverter {
67 :
public cyclus::Facility,
68 public cyclus::toolkit::CommodityProducer {
82 #pragma cyclus note {"doc": "A commodconverter facility converts from one " \
83 "commodity to another, with an optional delay."}
86 virtual std::string
str();
103 virtual std::set<cyclus::RequestPortfolio<cyclus::Material>::Ptr>
GetMatlRequests();
108 const std::vector< std::pair<cyclus::Trade<cyclus::Material>,
109 cyclus::Material::Ptr> >& responses);
114 virtual std::set<cyclus::BidPortfolio<cyclus::Material>::Ptr>
115 GetMatlBids(cyclus::CommodMap<cyclus::Material>::type&
123 const std::vector< cyclus::Trade<cyclus::Material> >& trades,
124 std::vector<std::pair<cyclus::Trade<cyclus::Material>,
125 cyclus::Material::Ptr> >& responses);
137 void AddMat_(cyclus::Material::Ptr mat);
146 cyclus::BidPortfolio<cyclus::Material>::Ptr
GetBids_(
147 cyclus::CommodMap<cyclus::Material>::type& commod_requests,
149 cyclus::toolkit::ResourceBuff* buffer);
154 cyclus::toolkit::ResourceBuff* buffer);
163 inline void crctx(
const cyclus::toolkit::CommodityRecipeContext&
crctx) {
167 inline cyclus::toolkit::CommodityRecipeContext
crctx()
const {
176 #pragma cyclus var {"tooltip":"input commodity",\
177 "doc":"commodity accepted by this facility"}
180 #pragma cyclus var {"tooltip":"output commodity",\
181 "doc":"commodity produced by this facility"}
184 #pragma cyclus var {"default":"",\
185 "tooltip":"input recipe",\
186 "doc":"recipe accepted by this facility"}
189 #pragma cyclus var {"default":"",\
190 "tooltip":"output recipe",\
191 "doc":"recipe to be generated by this facility"}
194 #pragma cyclus var {"default": 0,\
195 "tooltip":"process time (timesteps)",\
196 "doc":"the time it takes to convert a received commodity (timesteps)."}
199 #pragma cyclus var {"default": 1e299,\
200 "tooltip":"maximum inventory size (kg)",\
201 "doc":"the amount of material that can be in storage at "\
205 #pragma cyclus var{"default": 1e299,\
206 "tooltip":"capacity per timestep (kg)",\
207 "doc":"the maximumamount that can be processed per timestep (kg)"}
210 #pragma cyclus var{"default": 0,\
211 "tooltip":"cost per kg of production",\
212 "doc":"cost per kg of produced out_commod"}
216 cyclus::toolkit::ResourceBuff
stocks;
219 std::map<int, cyclus::toolkit::ResourceBuff>
processing;
221 cyclus::toolkit::CommodityRecipeContext
crctx_;
264 #endif // CYCLUS_COMMODCONVERTERS_COMMODCONVERTER_H_
double current_capacity() const
current maximum amount that can be added to processing
void capacity_(double c)
the maximum amount processed per timestep
cyclus::BidPortfolio< cyclus::Material >::Ptr GetBids_(cyclus::CommodMap< cyclus::Material >::type &commod_requests, std::string commod, cyclus::toolkit::ResourceBuff *buffer)
gathers information about bids
cyclus::toolkit::ResourceBuff inventory
std::string in_recipe_() const
virtual void GetMatlTrades(const std::vector< cyclus::Trade< cyclus::Material > > &trades, std::vector< std::pair< cyclus::Trade< cyclus::Material >, cyclus::Material::Ptr > > &responses)
respond to each trade with a material of out_commod and out_recipe
int process_time_() const
cyclus::toolkit::CommodityRecipeContext crctx_
cyclus::Material::Ptr TradeResponse_(double qty, cyclus::toolkit::ResourceBuff *buffer)
suggests, based on the buffer, a material response to an offer
std::string out_commod_() const
virtual std::set< cyclus::RequestPortfolio< cyclus::Material >::Ptr > GetMatlRequests()
The CommodConverter request Materials of its given commodity.
void out_recipe_(std::string c)
the out recipe
void Convert_()
Convert one ready resource in processing.
void in_recipe_(std::string c)
the in recipe
void in_commod_(std::string c)
the in commodity
virtual void AcceptMatlTrades(const std::vector< std::pair< cyclus::Trade< cyclus::Material >, cyclus::Material::Ptr > > &responses)
The CommodConverter place accepted trade Materials in their Inventory.
cyclus::toolkit::CommodityRecipeContext crctx() const
virtual std::set< cyclus::BidPortfolio< cyclus::Material >::Ptr > GetMatlBids(cyclus::CommodMap< cyclus::Material >::type &commod_requests)
Responds to each request for this facility's commodity.
void BeginProcessing_()
Move all unprocessed inventory to processing.
double max_inv_size_() const
virtual std::string str()
A verbose printer for the CommodConverter.
virtual void Tock()
The handleTick function specific to the CommodConverter.
void cost_(double c)
the cost per unit out_commod
void process_time_(int t)
the processing time required for a full process
void AddMat_(cyclus::Material::Ptr mat)
adds a material into the incoming commodity inventory
int ready()
returns the time key for ready materials
cyclus::Material::Ptr Request_()
generates a request for this facility given its current state.
CommodConverter(cyclus::Context *ctx)
Constructor for CommodConverter Class.
std::string in_commod_() const
cyclus::toolkit::ResourceBuff stocks
virtual void Tick()
The handleTick function specific to the CommodConverter.
void out_commod_(std::string c)
the out commodity
std::string out_recipe_() const
void max_inv_size_(double c)
the maximum amount allowed in inventory
void crctx(const cyclus::toolkit::CommodityRecipeContext &crctx)
this facility's commodity-recipe context
std::map< int, cyclus::toolkit::ResourceBuff > processing
map from ready time to resource buffers
virtual void EnterNotify()