From:  Jip <[email protected]>
Reply-To:  MATPOWER discussion forum <[email protected]>
Date:  Wed, 23 Apr 2014 17:06:51 +0200
To:  <[email protected]>
Subject:  Power flow with voltage dependent load


>Power flow with voltage dependent load Hi all,
>I would like to model constant impedance and constant current loads in
>Matpower. With some help of the manual and Ray Zimmerman I managed to
>change the newtonpf.m file as follows:
>
>mis = V .* conj(Ybus * V) - Sbus .* (V.^n); (line 74)
>mis = V .* conj(Ybus * V) - Sbus .* (V.^n); (line 124)

A couple of things to note:
i) Note that the Sbus vector is the complex bus injection, i.e., Sbus =
(P_G + j*Q_G) - (P_D + j*Q_D). The equations you have above would work
only in the case with generators and loads not being
incident at the same bus. In this case where generators and loads are
incident on the same bus, the generator injection will be also scaled
which is incorrect.
ii) Constant impedance and constant current load models are scaled using
the voltage magnitude 'Vm' and not the complex voltage 'V' as you have in
the equations above. See this IEEE Task Force paper
   on load models for steady state and dynamic simulations.
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=00466523

So the equations you should implement are
mis = V .* conj(Ybus * V) - ((P_G+j*Q_G) - (P_D+j*Q_D).* (Vm.^n));
(1)


The easiest way to implement (1) would be to pass the vectors P_G, Q_G,
P_D, Q_D to newtonpf (See how these vectors can be created from makeSbus
routine)

>with n = 0 for constant power, n =1 for constant current and n = 2 for
>constant impedance.
>However, this affects the Jacobian therefore I must edit dSbus_dV.m as
>well. In my attempt to do this I am stuck since I do not know how to do
>this properly. I know, from TN2-OPF-Derivatives.pdf, that:
>I_load = [Y_load] V      - see (22) and (23)
>S_load = [V] I_load*     - see (27) - (32)
>Where [Yload] = [conj(Sd)].
>This leads to g(x) = Sbus + Sd ­ Cg Sg. With Sbus = [V] Ibus* and Sd =
>[V] Iload*.
>For the partial derivatives of the Jacobian dSbus_dVm and dSbus_dVa I
>found:
>dSbus_dVm = diagV * conj(Ybus * diagVnorm) + conj(diagIbus) * diagVnorm
>+  diagV * conj(Yload * diagVnorm) + conj(diagIload) * diagVnorm;
>dSbus_dVa = 1j * diagV * conj(diagIbus - Ybus * diagV) + 1j * diagV *
>conj(diagIload - Yload * diagV);
>Are these two equations for the partial derivatives correct? Any help
>would be appreciated. Thanks in advance.

For the Jacobian, you don't need to modify dSbus_dV file, you could simply
create the matrix of partial derivatives for (P_D+j*Q_D).* (Vm.^n) in
newtonpf 
and then add it to dSbus_dVm

dSload_dVm = sparse(diag(n*(P_D+j*Q_D).*Vm.^(n-1)));
dSbus_dVm = dSbus_dVm + dSload_dVm;

Shri

>Regards, Jip
>



Reply via email to