CYCLUS
enrichment.h
Go to the documentation of this file.
1 #ifndef CYCLUS_SRC_TOOLKIT_ENRICHMENT_H_
2 #define CYCLUS_SRC_TOOLKIT_ENRICHMENT_H_
3 
4 #include <set>
5 
6 #include "material.h"
7 
8 namespace cyclus {
9 namespace toolkit {
10 
11 /// A simple container class for enrichment assays
12 class Assays {
13  public:
14  /// Constructor
15  Assays(double feed, double product, double tails);
16 
17  /// @return the feed assay as an atomic fraction, i.e. for
18  /// 0.711% U-235 in natural uranium, this will return 0.00711.
19  double Feed() const;
20 
21  /// @return the product assay as an atomic fraction, i.e. for
22  /// 3% U-235 in enriched uranium, this will return 0.03.
23  double Product() const;
24 
25  /// @return the tails assay as an atomic fraction, i.e. for
26  /// 0.2% U-235 in depleted uranium, this will return 0.002.
27  double Tails() const;
28 
29  private:
30  double feed_, product_, tails_;
31 };
32 
33 /// @param mat the material inquired about
34 /// @return the atom percent of U-235 w.r.t U-235+U-238 in a material
35 double UraniumAssay(Material::Ptr mat);
36 
37 /// inline double UraniumAssay(Material::Ptr mat) {
38 /// return UraniumAssay(mat.get());
39 /// }
40 
41 /// @param mat the material inquired about
42 /// @return the quantity of uranium in a material whose units match
43 /// those of the given material
44 double UraniumQty(Material::Ptr mat);
45 
46 /// inline double UraniumQty(Material::Ptr mat) { return UraniumQty(mat.get()); }
47 
48 /// @param product_qty the amount of product Uranium,
49 /// assuming feed is comprised of only U-235 and U-238
50 /// @param assays the assay of product, feed, and tails
51 /// @return the quantity of feedstock required to make the product
52 /// whose units match those of the given product
53 double FeedQty(double product_qty, const Assays& assays);
54 
55 /// @param product_qty the amount of product Uranium
56 /// @param assays the assay of product, feed, and tails
57 /// @return the quantity of tails resulting from enriching the product
58 /// whose units match those of the given product
59 double TailsQty(double product_qty, const Assays& assays);
60 
61 /// @param product_qty the amount of product Uranium
62 /// @param assays the assay of product, feed, and tails
63 /// @return the amount of swu required to enrich the product
64 double SwuRequired(double product_qty, const Assays& assays);
65 
66 /// @param frac the fraction input, this will throw if the fraction
67 /// value is not in [0,1)
68 /// @return the value function for a given fraction in [0,1)
69 double ValueFunc(double frac);
70 
71 } // namespace toolkit
72 } // namespace cyclus
73 
74 #endif // CYCLUS_SRC_TOOLKIT_ENRICHMENT_H_
Assays(double feed, double product, double tails)
Constructor.
Definition: enrichment.cc:15
double SwuRequired(double product_qty, const Assays &assays)
Definition: enrichment.cc:98
boost::shared_ptr< Material > Ptr
Definition: material.h:75
double FeedQty(double product_qty, const Assays &assays)
inline double UraniumQty(Material::Ptr mat) { return UraniumQty(mat.get()); }
Definition: enrichment.cc:61
double UraniumQty(Material::Ptr rsrc)
inline double UraniumAssay(Material::Ptr mat) { return UraniumAssay(mat.get()); } ...
Definition: enrichment.cc:55
double Tails() const
Definition: enrichment.cc:31
A simple container class for enrichment assays.
Definition: enrichment.h:12
double UraniumAssay(Material::Ptr rsrc)
Definition: enrichment.cc:36
double Feed() const
Definition: enrichment.cc:21
double Product() const
Definition: enrichment.cc:26
double ValueFunc(double frac)
Definition: enrichment.cc:79
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or.org/Osi/browser/trunk.
Definition: agent.cc:14
double TailsQty(double product_qty, const Assays &assays)
Definition: enrichment.cc:70