10#include "../../Include_control_blocks.h"
25 Converter(
const std::string& symbol,
const std::string& location)
26 :
Element(symbol, location, 3, 2) {}
63 return Eigen::MatrixXd::Zero(1, 1);
66 Eigen::EigenSolver<Eigen::MatrixXd> es(
A_matrix);
75 Eigen::EigenSolver<Eigen::MatrixXd> es(
A_matrix);
77 Eigen::MatrixXcd V = es.eigenvectors();
78 Eigen::VectorXcd lambda = es.eigenvalues();
79 Eigen::MatrixXcd W = V.inverse();
82 Eigen::MatrixXd
P(n, n);
86 for (
int i = 0; i < n; ++i) {
87 for (
int j = 0;
j < n; ++
j) {
88 std::complex<double> val = V(i,
j) * W(
j, i);
89 P(i,
j) = std::abs(val);
94 for (
int j = 0;
j < n; ++
j) {
95 double col_sum =
P.col(
j).sum();
105 virtual vector<MatrixXcd>
simulateTimeStep(
const vector<MatrixXcd>& input,
double Ts,
int nKeep1,
int nKeep2) {
return vector<MatrixXcd>(1, MatrixXcd::Zero(1, 1)); }
150 "pll",
"dc_voltage",
"active_power",
"ac_voltage",
"reactive_power",
"energy",
"zcc",
"occ",
"ccc",
154 "ac_voltage_dq",
"ac_voltage",
"active_power",
"reactive_power",
"dc_voltage"
void discretizeABCD(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &C, const Eigen::MatrixXd &D, double Ts, Eigen::MatrixXd &Ad, Eigen::MatrixXd &Bd, Eigen::MatrixXd &Cd, Eigen::MatrixXd &Dd)
Discretizes a continuous-time state-space model using the Tustin (bilinear) method.
Definition Differential_equations.cpp:449
RCP< const Basic > j
Imaginary unit j.
Definition Symbolic_functions.cpp:9
Abstract power converter with ABCD matrices, controllers, and filters.
Definition Converter.h:17
VectorXcd eigenvalues
Definition Converter.h:139
Eigen::MatrixXd getC() const
Definition Converter.h:33
double P_dc
Definition Converter.h:120
virtual void discretize(double Ts)
Definition Converter.h:59
const std::vector< std::string > controller_list
Definition Converter.h:149
MatrixXd D_matrix
Definition Converter.h:133
void checkStability() const
Check system stability by evaluating eigenvalues of the A matrix.
Definition Converter.cpp:27
VectorXd equilibrium_state
Definition Converter.h:138
MatrixXd Cd_matrix
Definition Converter.h:135
Eigen::MatrixXd getD() const
Definition Converter.h:34
virtual Eigen::MatrixXd computeStateDerivatives(const Eigen::VectorXd &x, const Eigen::VectorXd &u)
Definition Converter.h:62
MatrixXd Bd_matrix
Definition Converter.h:135
VectorXcd eigenvectors
Definition Converter.h:140
Eigen::MatrixXd getB() const
Definition Converter.h:32
double R_reactor
Definition Converter.h:129
MatrixXd Dd_matrix
Definition Converter.h:135
double Q_max
Definition Converter.h:124
MatrixXd Ad_matrix
Definition Converter.h:135
double omega_0
Definition Converter.h:117
MatrixXd Cdelay
Definition Converter.h:134
Eigen::MatrixXd computeParticipationFactors(const Eigen::MatrixXd &A_matrix)
Definition Converter.h:73
double Q
Definition Converter.h:119
double t_delay
Definition Converter.h:130
string getDCarea() const
Definition Converter.h:49
double L_reactor
Definition Converter.h:128
virtual vector< MatrixXcd > simulateTimeStep(const vector< MatrixXcd > &input, double Ts, int nKeep1, int nKeep2)
Definition Converter.h:105
Eigen::VectorXd getEquilibriumState() const
Definition Converter.h:42
double P_max
Definition Converter.h:122
Eigen::MatrixXd getA() const
Definition Converter.h:31
MatrixXd Bdelay
Definition Converter.h:134
VectorXcd initial_state
Definition Converter.h:142
string getACarea() const
Definition Converter.h:45
double V_m
Definition Converter.h:126
virtual ~Converter()
Definition Converter.cpp:8
MatrixXd B_matrix
Definition Converter.h:133
virtual void plotParticipationFactors() override
Plot participation factors (override in state-space elements).
Definition Converter.cpp:76
double theta
Definition Converter.h:125
VectorXcd getEigenvalues()
Definition Converter.h:43
Eigen::MatrixXd getCd() const
Definition Converter.h:39
Eigen::MatrixXd getBd() const
Definition Converter.h:38
virtual void plotEigenvalues() override
Plot eigenvalues in the complex plane.
Definition Converter.cpp:67
double P_min
Definition Converter.h:121
double P
Definition Converter.h:118
void computeEigenvalues()
Definition Converter.h:65
Converter(const std::string &symbol, const std::string &location)
Construct a three-phase, two-terminal converter element.
Definition Converter.h:25
double V_dc
Definition Converter.h:127
MatrixXd A_matrix
Definition Converter.h:133
MatrixXd Ddelay
Definition Converter.h:134
const std::vector< std::string > filter_list
Definition Converter.h:153
double Q_min
Definition Converter.h:123
Eigen::MatrixXd getDd() const
Definition Converter.h:40
Eigen::MatrixXd getAd() const
Definition Converter.h:37
std::map< std::string, Controller * > controls
Definition Converter.h:145
std::map< std::string, Filter * > filters
Definition Converter.h:146
virtual void solveEquilibrium()
Definition Converter.h:56
virtual void computeABCD()
Definition Converter.h:58
MatrixXd Adelay
Definition Converter.h:134
void printEigenvalues() const
Print eigenvalues of the A matrix.
Definition Converter.cpp:54
VectorXcd getEigenvectors()
Definition Converter.h:44
MatrixXd C_matrix
Definition Converter.h:133
int pade_order
Definition Converter.h:137
Base class for multi-phase network elements with Y-parameters and MNA stamping hooks.
Definition Element.h:29
std::string element_location
Definition Element.h:282