Thanks, i looked at the '\' operator documentation and found that Matlab uses
UMFPack package for sparse, nonsymmetric matrices. UMFPack uses some minimum
degree ordering by default. Hence '\' operator works like a charm for power
flow Jacobian! Shri ----- Original Message -----
> Sorry for the delay in responding, I was off work for a few weeks.
> First, I have some topology checking code that I plan to include in
> the next release. And it confirms that bus 10287 (external numbering)
> is isolated as you stated.
> I know I did look at Matlab's matrix re-ordering schemes a long time
> ago and if I remember correctly, concluded that the default internal
> reordering done by simply using the backslash operator was typically a
> very good choice. That is, little if anything was gained on average by
> using a different manual re-ordering.
> --
> Ray Zimmerman
> Senior Research Associate
> 419A Warren Hall, Cornell University, Ithaca, NY 14853
> phone: (607) 255-9645
> On May 16, 2012, at 4:21 PM, Shrirang Abhyankar wrote:
> > On May 16, 2012, at 2:22 PM, 李诗旸 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 check J
> > 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, 李诗旸 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