59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
|
|
#pragma once
|
|
|
|
#include "waste.hpp"
|
|
|
|
#include <ostream>
|
|
|
|
namespace sim::reactor::fuel
|
|
{
|
|
|
|
class sample
|
|
{
|
|
constexpr static const double Xe_135_M = 1e6;
|
|
|
|
sim::reactor::fuel::waste waste;
|
|
|
|
double fuel = 0;
|
|
double i_135 = 0;
|
|
double xe_135 = 0;
|
|
double te_135 = 0;
|
|
double mass = 0;
|
|
|
|
double energy = 0;
|
|
double fast_neutrons = 0;
|
|
double slow_neutrons = 0;
|
|
double efficiency = 0;
|
|
|
|
void display(std::ostream& o) const;
|
|
void absorb_fast_neutrons();
|
|
void absorb_slow_neutrons();
|
|
|
|
public:
|
|
|
|
sample(double fuel, double mass);
|
|
|
|
void update(double secs);
|
|
double extract_energy();
|
|
double extract_fast_neutrons();
|
|
void add_slow_neutrons(double a);
|
|
|
|
constexpr double get_fuel() const { return fuel; }
|
|
constexpr double get_mass() const { return mass; }
|
|
constexpr double get_energy() const { return energy; }
|
|
constexpr double get_volume() const { return mass + xe_135 * Xe_135_M; }
|
|
constexpr double get_efficiency() const { return efficiency; }
|
|
constexpr double get_te_135() const { return te_135; }
|
|
constexpr double get_i_135() const { return i_135; }
|
|
constexpr double get_xe_135() const { return xe_135; }
|
|
|
|
friend std::ostream& operator<<(std::ostream& o, const sample& s)
|
|
{
|
|
s.display(o);
|
|
return o;
|
|
}
|
|
};
|
|
|
|
}
|
|
|