1 #ifndef PSIM_SENSORCONTROLLER_H
2 #define PSIM_SENSORCONTROLLER_H
24 [[nodiscard]]
virtual double getHeatCapacity(std::size_t step)
const noexcept = 0;
25 [[nodiscard]]
virtual double getInitTemp() const noexcept = 0;
26 [[nodiscard]] virtual
double getSteadyTemp(std::
size_t step) const noexcept = 0;
38 [[nodiscard]] virtual
bool resetRequired(
double t_final, std::vector<
double>&&) noexcept;
39 virtual
void reset() noexcept = 0;
52 std::vector<const Material::Table*>
62 [[nodiscard]]
double getHeatCapacity([[maybe_unused]] std::size_t step)
const noexcept
override {
70 [[nodiscard]]
double getSteadyTemp([[maybe_unused]] std::size_t step)
const noexcept
override {
74 void reset() noexcept override;
81 [[nodiscard]]
double getHeatCapacity([[maybe_unused]] std::size_t step)
const noexcept
override {
88 [[nodiscard]]
double getSteadyTemp([[maybe_unused]] std::size_t step)
const noexcept
override {
92 void reset() noexcept override;
107 [[nodiscard]]
double getSteadyTemp(std::size_t step)
const noexcept
override;
110 [[nodiscard]]
bool resetRequired([[maybe_unused]]
double t_final,
111 std::vector<double>&& final_temps) noexcept
override;
112 void reset() noexcept override;
Definition: material.h:15
std::array< std::pair< double, double >, NUM_FREQ_BINS > Table
Definition: material.h:20
Definition: sensorController.h:77
double getInitTemp() const noexcept override
Definition: sensorController.h:85
double getHeatCapacity([[maybe_unused]] std::size_t step) const noexcept override
Definition: sensorController.h:81
double getSteadyTemp([[maybe_unused]] std::size_t step) const noexcept override
Definition: sensorController.h:88
Definition: sensorController.h:11
std::vector< double > heat_capacities_
Definition: sensorController.h:54
SensorController(SensorController &&) noexcept=default
virtual double getSteadyTemp(std::size_t step) const noexcept=0
SensorController(const Material &material, double t_init, std::size_t num_measurements=0)
Definition: sensorController.cpp:18
double t_steady_
Definition: sensorController.h:46
const Material & material_
Definition: sensorController.h:42
virtual void reset() noexcept=0
void initialUpdate(Phonon &p, const Material::Table &table) const noexcept
Definition: sensorController.cpp:30
double getHeatCapacityAtFreq(std::size_t freq_index) const noexcept
Definition: sensorController.cpp:25
std::vector< double > steady_temps_
Definition: sensorController.h:55
double heat_capacity_
Definition: sensorController.h:47
virtual bool resetRequired(double t_final, std::vector< double > &&) noexcept
Definition: sensorController.cpp:59
const Material::Table * scatter_table_
Definition: sensorController.h:49
virtual double getInitTemp() const noexcept=0
virtual ~SensorController()=default
virtual double getHeatCapacity(std::size_t step) const noexcept=0
virtual void scatterUpdate(Phonon &p) const noexcept
Definition: sensorController.cpp:54
virtual void updateTables()
Definition: sensorController.cpp:40
double t_init_
Definition: sensorController.h:43
const Material::Table * base_table_
Definition: sensorController.h:48
const Material & getMaterial() const noexcept
Definition: sensorController.h:20
SensorController(const SensorController &)=default
std::size_t num_measurements_
Definition: sensorController.h:44
std::vector< const Material::Table * > scatter_tables_
Definition: sensorController.h:53
Definition: sensorController.h:58
double getInitTemp() const noexcept override
Definition: sensorController.h:67
double getHeatCapacity([[maybe_unused]] std::size_t step) const noexcept override
Definition: sensorController.h:62
void reset() noexcept override
Definition: sensorController.cpp:66
double getSteadyTemp([[maybe_unused]] std::size_t step) const noexcept override
Definition: sensorController.h:70
Definition: sensorController.h:96
double getHeatCapacity(std::size_t step) const noexcept override
Definition: sensorController.h:100
double getInitTemp() const noexcept override
Definition: sensorController.h:103
Material::Table Table
Definition: material.cpp:17