dIbr_dV
- dIbr_dV(branch, Yf, Yt, V, vcart)
dIbr_dV()
- Computes partial derivatives of branch currents w.r.t. voltage.The derivatives can be take with respect to polar or cartesian coordinates of voltage, depending on the 5th argument. [DIF_DVA, DIF_DVM, DIT_DVA, DIT_DVM, IF, IT] = DIBR_DV(BRANCH, YF, YT, V) [DIF_DVA, DIF_DVM, DIT_DVA, DIT_DVM, IF, IT] = DIBR_DV(BRANCH, YF, YT, V, 0) Returns four matrices containing partial derivatives of the complex branch currents at "from" and "to" ends of each branch w.r.t voltage magnitude and voltage angle, respectively (for all buses). [DIF_DVR, DIF_DVI, DIT_DVR, DIT_DVI, IF, IT] = DIBR_DV(BRANCH, YF, YT, V, 1) Returns four matrices containing partial derivatives of the complex branch currents at "from" and "to" ends of each branch w.r.t real and imaginary parts of voltage, respectively (for all buses). If YF is a sparse matrix, the partial derivative matrices will be as well. Optionally returns vectors containing the currents themselves. The following explains the expressions used to form the matrices: If = Yf * V; Polar coordinates: Partials of V, Vf & If w.r.t. voltage angles dV/dVa = j * diag(V) dVf/dVa = sparse(1:nl, f, j * V(f)) = j * sparse(1:nl, f, V(f)) dIf/dVa = Yf * dV/dVa = Yf * j * diag(V) Partials of V, Vf & If w.r.t. voltage magnitudes dV/dVm = diag(V./abs(V)) dVf/dVm = sparse(1:nl, f, V(f)./abs(V(f)) dIf/dVm = Yf * dV/dVm = Yf * diag(V./abs(V)) Cartesian coordinates: Partials of V, Vf & If w.r.t. real part of complex voltage dV/dVr = diag(ones(n,1)) dVf/dVr = Cf dIf/dVr = Yf where Cf is the connection matrix for line & from buses Partials of V, Vf & If w.r.t. imaginary part of complex voltage dV/dVi = j * diag(ones(n,1)) dVf/dVi = j * Cf dIf/dVi = j * Yf Derivations for "to" bus are similar. Example: [Ybus, Yf, Yt] = makeYbus(baseMVA, bus, branch); [dIf_dVa, dIf_dVm, dIt_dVa, dIt_dVm, If, It] = ... dIbr_dV(branch, Yf, Yt, V); [dIf_dVr, dIf_dVi, dIt_dVr, dIt_dVi, If, It] = ... dIbr_dV(branch, Yf, Yt, V, 1);
For more details on the derivations behind the derivative code used in MATPOWER information, see:
[TN2] R. D. Zimmerman, "AC Power Flows, Generalized OPF Costs and their Derivatives using Complex Matrix Notation", MATPOWER Technical Note 2, February 2010. [Online]. Available: https://matpower.org/docs/TN2-OPF-Derivatives.pdf doi: 10.5281/zenodo.3237866 [TN4] B. Sereeter and R. D. Zimmerman, "AC Power Flows and their Derivatives using Complex Matrix Notation and Cartesian Coordinate Voltages," MATPOWER Technical Note 4, April 2018. [Online]. Available: https://matpower.org/docs/TN4-OPF-Derivatives-Cartesian.pdf doi: 10.5281/zenodo.3237909