35 int nLine = branchData.
From.size();
36 int N = std::max(branchData.
From.maxCoeff(), branchData.
To.maxCoeff());
38 Eigen::MatrixXcd Ybus = Eigen::MatrixXcd::Zero(N, N);
40 for (
int k = 0; k < nLine; ++k) {
41 int from = branchData.
From(k) - 1;
42 int to = branchData.
To(k) - 1;
44 std::complex<double> Z(branchData.
R(k), branchData.
X(k));
45 std::complex<double> Y = 1.0 / Z;
47 std::complex<double> B(0.0, 0.5 * branchData.
B(k));
55 Ybus(from, to) -= Y / a;
56 Ybus(to, from) = Ybus(from, to);
59 Ybus(from, from) += Y / (a * a) + B;
60 Ybus(to, to) += Y + B;
64 int nBuses = busData.
ID.size();
66 for (
int n = 0; n < nBuses; ++n) {
67 int busIndex = busData.
ID(n) - 1;
69 if (busIndex < 0 || busIndex >= Ybus.rows()) {
71 std::string msg = fmt::format(
"Warning: Bus ID {} out of bounds in Ybus", busIndex + 1);
72 observer->
onMessage(
"Admittance", msg.c_str());
77 std::complex<double> Y_shunt(busData.
Gs(n), busData.
Bs(n));
78 Ybus(busIndex, busIndex) += Y_shunt;
Declaration of a class for constructing the bus admittance matrix ($$ Y_{bus} $$) in power system ana...
Data structures and utility functions for reading and displaying bus and branch data in power system ...
static Eigen::MatrixXcd build(const BusData &busData, const BranchData &branchData, ISolverObserver *observer=nullptr)
Computes the complex bus admittance matrix ($$ Y_{bus} $$).
Sink for solver progress/diagnostics (Dependency Inversion / SRP).
virtual void onMessage(const char *solverName, const char *message)=0
Called for solver-specific diagnostic/warning messages (e.g.
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.].