On May 16, 2012, at 2:22 PM, ?????D wrote:
> Shri,
>
> I??m sorry for giving you the wrong inner index for the isolated buses.
> Actually what I presented is the index in the Jacobian matrix of Newton
> method, not the bus number (relative to ref, pq, pv list).
>
> You fixed the problem, but actually your code is not valid universally: all
> buses connecting to in-service branch is not sufficient for a connected
> graph, two isolated subsystem for example.
>
I guess an example of such a case would be an outage of a tie line connecting
two areas, resulting in either, or both the, end buses to be isolated. I guess
the code should work for this scenario too if the updated branch (with
br_status for the tie line set to 0) and bus data is provided. Some other work
may be needed if a generator/load/shunt exists on the bus that is going to be
isolated and ofcourse rebuilding the Ybus.
> Topological check may be a more complex task. I guess Dr. Zimmerman will be
> very glad to involve this function if you??d like to provide your code for a
> really valid topological checkJ
>
Sure, you can have the code.
Btw, i am keen to know if you guys have done any experiments with matrix
reordering schemes available with Matlab (AMD, SYMAMD, SYMRCM, etc.) to reduce
the factored matrix fill-ins and whether it is worth doing Jacobian reordering.
Thanks,
Shri
>
>
> Shiyang Li
>
>
> ??????: [email protected]
> [mailto:[email protected]] ???? Shrirang Abhyankar
> ????????: 2012??5??17?? 2:55
> ??????: MATPOWER discussion forum
> ????: Re: case3375wp
>
> Shiyang,
> Thanks for the information. However, i could not figure out external
> numbering for buses with inner indices 591,3574. Does the n2i variable in
> ext2int.m hold the external to internal index transformation? If so, then
> find(n2i == 591) returned 228 which i assume is the external numbering. This
> bus is listed in the some branch to and from bus list. find(n2i == 3574)
> returned an empty matrix.
>
> Hence, i wrote a small topological check code to find which buses are
> isolated.
>
> %% define named indices into bus, gen, branch matrices
> [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, ...
> VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus;
> [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, ...
> TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ...
> ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch;
> [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...
> MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...
> QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;
>
> data = 'case3375wp';
>
> %% read data
> mpc = loadcase(data);
>
> isolated_bus = [];
> nbranch = length(mpc.branch(:,1));
> nbus = length(mpc.bus(:,1));
> % Include only ON branches
> kk = find(mpc.branch(:,BR_STATUS) == 1);
> branch = mpc.branch(kk,:);
> for(i=1:nbus)
> % Check if bus i is in the from or to bus list,
> % If not then add it to the list of isolated buses
> ii = find(branch(:,F_BUS) == mpc.bus(i,BUS_I));
> jj = find(branch(:,T_BUS) == mpc.bus(i,BUS_I));
> if(isempty(ii) & isempty(jj))
> isolated_bus = [isolated_bus;mpc.bus(i,BUS_I)];
> end
> end
>
> and found that bus 10287 (external numbering) is isolated. It's internal
> number is 285. Setting its bus type to NONE (4) resulted in converged power
> flow.
>
> Thanks,
> Shri
>
> On May 16, 2012, at 12:06 PM, ?????D wrote:
>
>
> Shri,
>
> I think you are right. There may be some problems with case3375wp.
>
> sprank(J) = 6355 < 6357, the size of J. So the Jacobian matrix is surely
> singular.
>
> As far as I know, Matpower doesn??t apply a topological check before PF
> calculation. So if some parts of the system are actually isolated but not
> assigned the bus type ??4?? (none) to, Jacobian matrix will have all-zero
> rows and columns, then singular.
>
> For case3375wp, bus 591, 3574 (inner index) are actually isolated. You could
> find their external index; assigned them bus type 4; then run the case again.
>
> I think Dr. Zimmerman may correct this mistake in the next version.
>
>
>
> Shiyang Li
>
>
> -----????????-----
> ??????: [email protected]
> [mailto:[email protected]]???? Shrirang Abhyankar
> ????????: 2012??5??16?? 23:57
> ??????: MATPOWER discussion forum
> ????: case3375wp
>
> There seems to be something amiss with the case3375wp data. Matlab complains
> of singular Jacobian matrix.
>
> mpopt= mpoption;
> mpoption(31) = 2;
> runpf('case3375wp',mpopt,'pfresults');
>
> (printpf is commented out)
>
> it max P & Q mismatch (p.u.)
> ---- ---------------------------
> 0 2.442e+01Warning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 1 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 2 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 3 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 4 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 5 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 6 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 7 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 8 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 9 NaNWarning: Matrix is singular to working precision.
> > In newtonpf at 125
> In runpf at 224
>
> 10 NaN
> Newton's method power flow did not converge in 10 iterations.
>
> Thanks,
> Shri