Package pypower :: Module dSbus_dV
[hide private]
[frames] | no frames]

Module dSbus_dV

source code

Computes partial derivatives of power injection w.r.t. voltage.

Functions [hide private]
 
dSbus_dV(Ybus, V)
Computes partial derivatives of power injection w.r.t.
source code
Variables [hide private]
  __package__ = 'pypower'
Function Details [hide private]

dSbus_dV(Ybus, V)

source code 

Computes partial derivatives of power injection w.r.t. voltage.

Returns two matrices containing partial derivatives of the complex bus power injections w.r.t voltage magnitude and voltage angle respectively (for all buses). If Ybus is a sparse matrix, the return values will be also. The following explains the expressions used to form the matrices:

   S = diag(V) * conj(Ibus) = diag(conj(Ibus)) * V

Partials of V & Ibus w.r.t. voltage magnitudes:

   dV/dVm = diag(V / abs(V))
   dI/dVm = Ybus * dV/dVm = Ybus * diag(V / abs(V))

Partials of V & Ibus w.r.t. voltage angles:

   dV/dVa = j * diag(V)
   dI/dVa = Ybus * dV/dVa = Ybus * j * diag(V)

Partials of S w.r.t. voltage magnitudes:

   dS/dVm = diag(V) * conj(dI/dVm) + diag(conj(Ibus)) * dV/dVm
          = diag(V) * conj(Ybus * diag(V / abs(V)))
                                   + conj(diag(Ibus)) * diag(V / abs(V))

Partials of S w.r.t. voltage angles:

   dS/dVa = diag(V) * conj(dI/dVa) + diag(conj(Ibus)) * dV/dVa
          = diag(V) * conj(Ybus * j * diag(V))
                                   + conj(diag(Ibus)) * j * diag(V)
          = -j * diag(V) * conj(Ybus * diag(V))
                                   + conj(diag(Ibus)) * j * diag(V)
          = j * diag(V) * conj(diag(Ibus) - Ybus * diag(V))

For more details on the derivations behind the derivative code used in PYPOWER 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. http://www.pserc.cornell.edu/matpower/TN2-OPF-Derivatives.pdf

Authors:
Ray Zimmerman (PSERC Cornell), Richard Lincoln