Harmony
HARMONic stabilitY assessment of PE-penetrated power systems
Loading...
Searching...
No Matches
Proportional_controller.h
Go to the documentation of this file.
1#ifndef PROPORTIONAL_CONTROLLER_H
2#define PROPORTIONAL_CONTROLLER_H
3
4#include "Controller.h"
5
16public:
24 ProportionalController(const std::string& symbol, const vector<double>& value, int number_signals, std::vector<double> refs = { 0 })
25 : Controller(symbol, value, number_signals, refs) {
26 if (value.size() != 1) {
27 throw std::invalid_argument("Proportional controller values must contain Kp.");
28 }
29 K = value[0]; // Proportional gain
30 }
31
39 virtual Eigen::VectorXd define_equations(const Eigen::VectorXd& x, const Eigen::VectorXd& u, const Eigen::VectorXd& c) override;
40
48 virtual Eigen::VectorXd define_equations(const double x, const double u, const double c) override;
49
51 virtual void printValues() override {
52 std::cout << " Controller Type: P\n"
53 << " Proportional Gain (K): " << K << "\n"
54 << " Reference Values: ";
55 for (const auto& ref : reference) {
56 std::cout << ref << " ";
57 }
58 std::cout << std::endl;
59 }
60
62 double getK() const {
63 return K; // Get proportional gain
64 }
65
67 void setK(double newK) {
68 K = newK; // Set new proportional gain
69 }
70
72 virtual vector<double> getParameters() const override {
73 return { K }; // Return controller parameters
74 }
75
77 virtual void setParameters(const vector<double>& params) override {
78 if (params.size() != 1) {
79 throw std::invalid_argument("Parameter vector must contain only K.");
80 }
81 K = params[0];
82 }
83
84private:
85 double K; // proportional gain
86};
87
88#endif // PROPORTIONAL_CONTROLLER_H
Base class for reference-tracking controllers.
Abstract controller with per-channel reference values.
Definition Controller.h:17
std::vector< double > reference
Definition Controller.h:105
Single-gain proportional controller: output = K * (reference - u) + c.
Definition Proportional_controller.h:15
double getK() const
Return the proportional gain K.
Definition Proportional_controller.h:62
virtual void setParameters(const vector< double > &params) override
Set K from a single-element parameter vector.
Definition Proportional_controller.h:77
ProportionalController(const std::string &symbol, const vector< double > &value, int number_signals, std::vector< double > refs={ 0 })
Construct a P controller.
Definition Proportional_controller.h:24
virtual void printValues() override
Print controller type, gain K, and reference values.
Definition Proportional_controller.h:51
virtual vector< double > getParameters() const override
Return { K }.
Definition Proportional_controller.h:72
virtual Eigen::VectorXd define_equations(const Eigen::VectorXd &x, const Eigen::VectorXd &u, const Eigen::VectorXd &c) override
Vector P-controller dynamics.
Definition Proportional_controller.cpp:18
void setK(double newK)
Set the proportional gain K.
Definition Proportional_controller.h:67