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 /// @param mat the material inquired about
38 /// @return the mass percent of U-235 w.r.t U-235+U-238 in a material
40 
41 /// @param mat the material inquired about
42 /// @return the atom percent of U-235 w.r.t U-235+U-238 in a material
44 
45 /// inline double UraniumAssay(Material::Ptr mat) {
46 /// return UraniumAssay(mat.get());
47 /// }
48 
49 /// @param mat the material inquired about
50 /// @return the quantity of uranium in a material whose units match
51 /// those of the given material
52 double UraniumQty(Material::Ptr mat);
53 
54 /// inline double UraniumQty(Material::Ptr mat) { return UraniumQty(mat.get()); }
55 
56 /// @param product_qty the amount of product Uranium,
57 /// assuming feed is comprised of only U-235 and U-238
58 /// @param assays the assay of product, feed, and tails
59 /// @return the quantity of feedstock required to make the product
60 /// whose units match those of the given product
61 double FeedQty(double product_qty, const Assays& assays);
62 
63 /// @param product_qty the amount of product Uranium
64 /// @param assays the assay of product, feed, and tails
65 /// @return the quantity of tails resulting from enriching the product
66 /// whose units match those of the given product; product_qty and assay
67 /// must share the same units: both in mass or in atom
68 double TailsQty(double product_qty, const Assays& assays);
69 
70 /// @param product_qty the amount of product Uranium
71 /// @param assays the assay of product, feed, and tails
72 /// @return the amount of swu required to enrich the product
73 double SwuRequired(double product_qty, const Assays& assays);
74 
75 /// @param frac the fraction input, this will throw if the fraction
76 /// value is not in [0,1)
77 /// @return the value function for a given fraction in [0,1)
78 double ValueFunc(double frac);
79 
80 } // namespace toolkit
81 } // namespace cyclus
82 
83 #endif // CYCLUS_SRC_TOOLKIT_ENRICHMENT_H_
double Product() const
Definition: enrichment.cc:26
Assays(double feed, double product, double tails)
Constructor.
Definition: enrichment.cc:15
double SwuRequired(double product_qty, const Assays &assays)
Definition: enrichment.cc:122
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:85
double UraniumAssayMass(Material::Ptr rsrc)
Definition: enrichment.cc:60
double UraniumQty(Material::Ptr rsrc)
inline double UraniumAssay(Material::Ptr mat) { return UraniumAssay(mat.get()); } ...
Definition: enrichment.cc:79
A simple container class for enrichment assays.
Definition: enrichment.h:12
double UraniumAssayAtom(Material::Ptr rsrc)
Definition: enrichment.cc:41
double Tails() const
Definition: enrichment.cc:31
double UraniumAssay(Material::Ptr rsrc)
Definition: enrichment.cc:36
double ValueFunc(double frac)
Definition: enrichment.cc:103
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or.org/Osi/browser/trunk.
Definition: agent.cc:14
double Feed() const
Definition: enrichment.cc:21
double TailsQty(double product_qty, const Assays &assays)
Definition: enrichment.cc:94