33 int nLine = branchData.
From.size();
34 int N = std::max(branchData.
From.maxCoeff(), branchData.
To.maxCoeff());
36 Eigen::MatrixXcd Ybus = Eigen::MatrixXcd::Zero(N, N);
38 for (
int k = 0; k < nLine; ++k) {
39 int from = branchData.
From(k) - 1;
40 int to = branchData.
To(k) - 1;
42 std::complex<double> Z(branchData.
R(k), branchData.
X(k));
43 std::complex<double> Y = 1.0 / Z;
45 std::complex<double> B(0.0, 0.5 * branchData.
B(k));
53 Ybus(from, to) -= Y / a;
54 Ybus(to, from) = Ybus(from, to);
57 Ybus(from, from) += Y / (a * a) + B;
58 Ybus(to, to) += Y + B;
62 int nBuses = busData.
ID.size();
64 for (
int n = 0; n < nBuses; ++n) {
65 int busIndex = busData.
ID(n) - 1;
67 if (busIndex < 0 || busIndex >= Ybus.rows()) {
68 LOG_ERROR(
"Warning: Bus ID {} out of bounds in Ybus", busIndex + 1);
72 std::complex<double> Y_shunt(busData.
Gs(n), busData.
Bs(n));
73 Ybus(busIndex, busIndex) += Y_shunt;
Eigen::MatrixXcd computeAdmittanceMatrix(const BusData &busData, const BranchData &branchData)
Computes the complex bus admittance matrix ($$ Y_{bus} $$).
Declaration of functions and classes for constructing the bus admittance matrix ($$ Y_{bus} $$) in po...
Data structures and utility functions for reading and displaying bus and branch data in power system ...
Logger utilities for deltaFlow, providing logging macros and a singleton Logger class.
#define LOG_ERROR(msg,...)
Macro for logging an error-level message.
Contains all relevant data for each transmission line or transformer branch.
Eigen::VectorXd tapRatio
Transformer tap ratio ($$ a $$)
Eigen::VectorXd B
Line susceptance ($$ B $$) [p.u.].
Eigen::VectorXd X
Reactance ($$ X $$) [p.u.].
Eigen::VectorXi From
From bus indices.
Eigen::VectorXd R
Resistance ($$ R $$) [p.u.].
Eigen::VectorXi To
To bus indices.
Contains all relevant data for each bus in the power system.
Eigen::VectorXi ID
Bus numbers.
Eigen::VectorXd Gs
Shunt conductance ($$ G_{sh} $$) [p.u.].
Eigen::VectorXd Bs
Shunt susceptance ($$ B_{sh} $$) [p.u.].