fast-nuclear-sim/src/system.hpp

56 lines
1.2 KiB
C++
Raw Normal View History

2024-01-28 00:02:54 +11:00
#pragma once
#include <memory>
2024-02-13 22:33:55 +11:00
#include <json/json.h>
2024-01-28 00:02:54 +11:00
#include "reactor/coolant/vessel.hpp"
#include "reactor/reactor.hpp"
#include "coolant/pump.hpp"
#include "coolant/valve.hpp"
#include "coolant/condenser.hpp"
2024-02-07 16:04:22 +11:00
#include "coolant/condenser_secondary.hpp"
#include "coolant/evaporator.hpp"
#include "coolant/sink.hpp"
#include "electric/turbine.hpp"
2024-01-28 00:02:54 +11:00
namespace sim
{
struct system
{
2024-01-31 00:23:44 +11:00
static system active;
2024-01-30 16:09:43 +11:00
std::unique_ptr<sim::reactor::reactor> reactor;
std::unique_ptr<sim::reactor::coolant::vessel> vessel;
2024-02-07 16:04:22 +11:00
std::unique_ptr<sim::coolant::sink> sink;
std::unique_ptr<sim::coolant::condenser> condenser;
2024-02-07 16:04:22 +11:00
std::unique_ptr<sim::coolant::condenser_secondary> condenser_secondary;
std::unique_ptr<sim::coolant::evaporator> evaporator;
std::unique_ptr<sim::electric::turbine> turbine;
2024-02-07 16:04:22 +11:00
2024-02-05 18:33:31 +11:00
std::unique_ptr<sim::coolant::pump> primary_pump;
2024-02-07 16:04:22 +11:00
std::unique_ptr<sim::coolant::pump> secondary_pump;
std::unique_ptr<sim::coolant::pump> freight_pump;
std::unique_ptr<sim::coolant::valve> turbine_bypass_valve;
std::unique_ptr<sim::coolant::valve> turbine_inlet_valve;
2024-02-07 16:04:22 +11:00
double speed = 1;
2024-02-14 00:38:28 +11:00
double clock = 0;
system();
2024-02-14 00:38:28 +11:00
system(const Json::Value& node);
2024-01-28 00:02:54 +11:00
void update(double dt);
2024-02-14 00:38:28 +11:00
static void save();
static void load();
2024-02-13 22:33:55 +11:00
operator Json::Value() const;
2024-01-28 00:02:54 +11:00
};
};