31 const Eigen::VectorXd& Ps,
32 const Eigen::VectorXd& Qs,
33 const Eigen::MatrixXd& G,
34 const Eigen::MatrixXd& B,
35 const Eigen::VectorXd& V,
36 const Eigen::VectorXd& delta,
38 const std::vector<int>& pq_bus_id,
42 P = Eigen::VectorXd::Zero(n_bus);
43 Q = Eigen::VectorXd::Zero(n_bus);
46 for (
int i = 0; i < n_bus; ++i) {
47 for (
int j = 0; j < n_bus; ++j) {
48 double dij = delta(i) - delta(j);
49 P(i) += V(i) * V(j) * (G(i, j) * std::cos(dij) + B(i, j) * std::sin(dij));
50 Q(i) += V(i) * V(j) * (G(i, j) * std::sin(dij) - B(i, j) * std::cos(dij));
55 Eigen::VectorXd delta_P = Ps - P;
56 Eigen::VectorXd delta_Q = Qs - Q;
59 int n_pq =
static_cast<int>(pq_bus_id.size());
60 Eigen::VectorXd delta_Q_pq(n_pq);
61 for (
int k = 0; k < n_pq; ++k) {
62 delta_Q_pq(k) = delta_Q(pq_bus_id[k]);
67 Eigen::VectorXd mismatch(n_bus - 1 + n_pq);
68 mismatch.head(n_bus - 1) = delta_P.tail(n_bus - 1);
69 mismatch.tail(n_pq) = delta_Q_pq;
Eigen::VectorXd powerMismatch(const Eigen::VectorXd &Ps, const Eigen::VectorXd &Qs, const Eigen::MatrixXd &G, const Eigen::MatrixXd &B, const Eigen::VectorXd &V, const Eigen::VectorXd &delta, int n_bus, const std::vector< int > &pq_bus_id, Eigen::VectorXd &P, Eigen::VectorXd &Q)
Computes the power mismatch vector for use in Newton-Raphson iterations.