Harmony
HARMONic stabilitY assessment of PE-penetrated power systems
Loading...
Searching...
No Matches
Filter.h
Go to the documentation of this file.
1#ifndef FILTER_H
2#define FILTER_H
3
4#include "Control_block.h"
5
17class Filter : public ControlBlock {
18public:
27 Filter(const std::string& symbol, const std::string& type, int order, vector<double> values, int number_of_connections)
28 : ControlBlock(), filter_symbol(symbol), filter_size(number_of_connections), filter_type(type), filter_order(order) {
29 if (values.size() != 3) {
30 throw std::invalid_argument("Filter values must contain time constant, damping ratio, and bandwidth.");
31 }
32 timeConstant = values[0]; // Time constant (T)
33 zeta = values[1]; // Damping ratio (ΞΆ)
34 bandwidth = values[2]; // Bandwidth
35 }
36
38 virtual void printValues() override {
39 std::cout << "Filter Parameters:"
40 << " Time Constant (T): " << timeConstant << "\n"
41 << " Damping Ratio (zeta): " << zeta << "\n"
42 << " Bandwidth: " << bandwidth << " Hz\n";
43 }
44
51 void updateParameters(double newTimeConstant, double newZeta, double newBandwidth);
52
59 VectorXd define_differential_equations(const VectorXd& x, const VectorXd& u);
60
67 VectorXd define_differential_equations(const VectorXd& x, const double u);
68
75 VectorXd define_differential_equations(const double x, const double u);
76
78 int getFilterSize() const {
79 return filter_size*filter_order;
80 }
81
82private:
83 string filter_symbol; // Symbol for the filter
84 string filter_type = "LP"; // Type of filter (e.g., LPF, HPF, BPF)
85 int filter_order; // Filter order, for now can be only the 1st and the 2nd
86 int filter_size; // Number of pins for the filter
87 double timeConstant; // Time constant
88 double zeta; // Damping ratio
89 double bandwidth; // Bandwidth
90};
91
92#endif // FILTER_H
Base class for dynamic control blocks used by converters.
Abstract base for filters, integrators, and controllers.
Definition Control_block.h:17
LTI filter with configurable time constant, damping, and bandwidth.
Definition Filter.h:17
virtual void printValues() override
Print filter time constant, damping ratio, and bandwidth.
Definition Filter.h:38
Filter(const std::string &symbol, const std::string &type, int order, vector< double > values, int number_of_connections)
Construct a filter from symbolic metadata and parameter values.
Definition Filter.h:27
void updateParameters(double newTimeConstant, double newZeta, double newBandwidth)
Replace filter time constant, damping ratio, and bandwidth.
Definition Filter.cpp:7
VectorXd define_differential_equations(const VectorXd &x, const VectorXd &u)
State derivatives for a vector-valued filter.
int getFilterSize() const
Total number of filter states (filter_size * filter_order).
Definition Filter.h:78