gusucode.com > matpower工具箱源码程序 > matpower工具箱源码程序/MP2_0/printpf.m
function printpf(baseMVA, bus, gen, branch, f, success, et, fd, mpopt) %PRINTOPF Prints optimal power flow results. % printpf(baseMVA, bus, gen, branch, f, success, et, fd, mpopt) prints % powerflow results to fd (a file descriptor which defaults to STDOUT). % mpopt is a MATPOWER options vector (see 'help mpoption' for details). % Uses default options if this parameter is not given. The objective % function value is given in f and the elapsed time (seconds to compute % opf) in et. % MATPOWER Version 2.0 % by Ray Zimmerman, PSERC Cornell 12/24/97 % Copyright (c) 1996, 1997 by Power System Engineering Research Center (PSERC) % See http://www.pserc.cornell.edu/ for more info. %%----- initialization ----- %% default arguments if nargin < 9 mpopt = mpoption; %% use default options if nargin < 8 fd = 1; %% print to stdio by default end end if isempty(f) isOPF = 0; %% have only simple PF data else isOPF = 1; %% have OPF data end %% options OUT_ALL = mpopt(32); OUT_SYS_SUM = OUT_ALL == 1 | (OUT_ALL == -1 & mpopt(33)); OUT_AREA_SUM = OUT_ALL == 1 | (OUT_ALL == -1 & mpopt(34)); OUT_BUS = OUT_ALL == 1 | (OUT_ALL == -1 & mpopt(35)); OUT_BRANCH = OUT_ALL == 1 | (OUT_ALL == -1 & mpopt(36)); OUT_GEN = OUT_ALL == 1 | (OUT_ALL == -1 & mpopt(37)); if OUT_ALL == -1 OUT_ALL_LIM = mpopt(38); elseif OUT_ALL == 1 OUT_ALL_LIM = 2; else OUT_ALL_LIM = 0; end if OUT_ALL_LIM == -1 OUT_V_LIM = mpopt(39); OUT_LINE_LIM = mpopt(40); OUT_PG_LIM = mpopt(41); OUT_QG_LIM = mpopt(42); else OUT_V_LIM = OUT_ALL_LIM; OUT_LINE_LIM = OUT_ALL_LIM; OUT_PG_LIM = OUT_ALL_LIM; OUT_QG_LIM = OUT_ALL_LIM; end OUT_RAW = mpopt(43); %% 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; [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, ... GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN] = idx_gen; [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] = idx_brch; %% constant j = sqrt(-1); %% internal bus number e2i = zeros(max(bus(:, BUS_I)), 1); %% need internal bus numbering for a second e2i(bus(:, BUS_I)) = [1:size(bus, 1)]'; %% parameters nb = size(bus, 1); %% number of buses nl = size(branch, 1); %% number of branches ng = size(gen, 1); %% number of generators ties = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) ~= bus(e2i(branch(:, T_BUS)), BUS_AREA)); %% area inter-ties tap = ones(nl, 1); %% default tap ratio = 1 for lines xfmr = find(branch(:, TAP)); %% indices of transformers tap(xfmr) = branch(xfmr, TAP); %% include transformer tap ratios tap = tap .* exp(j*pi/180 * branch(:, SHIFT)); %% add phase shifters nzld = find(bus(:, PD) | bus(:, QD)); sorted_areas = sort(bus(:, BUS_AREA)); areas = sorted_areas([1; find(diff(sorted_areas))+1]); %% area numbers na = length(areas); %% number of areas on = find(gen(:, GEN_STATUS)); V = bus(:, VM) .* exp(sqrt(-1) * pi/180 * bus(:, VA)); loss = baseMVA * abs(V(e2i(branch(:, F_BUS))) ./ tap - V(e2i(branch(:, T_BUS)))) .^ 2 ./ ... (branch(:, BR_R) - j * branch(:, BR_X)); fchg = abs(V(e2i(branch(:, F_BUS))) ./ tap) .^ 2 .* branch(:, BR_B) * baseMVA / 2; tchg = abs(V(e2i(branch(:, T_BUS))) ) .^ 2 .* branch(:, BR_B) * baseMVA / 2; %%----- print the stuff ----- if success if OUT_SYS_SUM fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| System Summary |'); fprintf(fd, '\n================================================================================'); %% convergence & elapsed time fprintf(fd, '\nConverged in %.2f seconds', et); %% objective function value if isOPF fprintf(fd, '\nObjective Function Value = %.2f $/hr', f); end fprintf(fd, '\n\nHow many? How much? P (MW) Q (MVAR)'); fprintf(fd, '\n--------------------- -------------------- -------- -----------------'); fprintf(fd, '\nBuses %5d Total Gen Capacity %7.1f %7.1f to +%.1f', nb, sum(gen(:, PMAX)), sum(gen(:, QMIN)), sum(gen(:, QMAX))); fprintf(fd, '\nGenerators %5d On-line Capacity %7.1f %7.1f to +%.1f', ng, sum(gen(on, PMAX)), sum(gen(on, QMIN)), sum(gen(on, QMAX))); fprintf(fd, '\nCommited Gens %5d Generation (current) %7.1f %7.1f', length(on), sum(gen(on, PG)), sum(gen(on, QG))); fprintf(fd, '\nLoads %5d Load %7.1f %7.1f', length(nzld), sum(bus(nzld, PD)), sum(bus(nzld, QD))); fprintf(fd, '\nBranches %5d Losses (I^2 * Z) %8.2f %8.2f', nl, sum(real(loss)), sum(imag(loss)) ); fprintf(fd, '\nTransformers %5d Branch Charging (inj) - %7.1f', length(xfmr), sum(fchg) + sum(tchg) ); fprintf(fd, '\nAreas %5d Shunt (inj) %7.1f %7.1f', length(areas), ... -sum(bus(:, VM) .^ 2 .* bus(:, GS)), sum(bus(:, VM) .^ 2 .* bus(:, BS)) ); fprintf(fd, '\nInter-ties %5d Total Inter-tie Flow %7.1f %7.1f', length(ties), sum(abs(branch(ties, PF)-branch(ties, PT))), sum(abs(branch(ties, QF)-branch(ties, QT)))); fprintf(fd, '\n'); fprintf(fd, '\n Minimum Maximum'); fprintf(fd, '\n ------------------------- --------------------------------'); [minv, mini] = min(bus(:, VM)); [maxv, maxi] = max(bus(:, VM)); fprintf(fd, '\nVoltage Magnitude %7.3f p.u. @ bus %-4d %7.3f p.u. @ bus %-4d', minv, mini, maxv, maxi); [minv, mini] = min(bus(:, VA)); [maxv, maxi] = max(bus(:, VA)); fprintf(fd, '\nVoltage Angle %8.2f deg @ bus %-4d %8.2f deg @ bus %-4d', minv, mini, maxv, maxi); [maxv, maxi] = max(real(loss)); fprintf(fd, '\nP Losses (I^2*R) - %8.2f MW @ line %d-%d', maxv, branch(maxi, F_BUS), branch(maxi, T_BUS)); [maxv, maxi] = max(imag(loss)); fprintf(fd, '\nQ Losses (I^2*X) - %8.2f MVAR @ line %d-%d', maxv, branch(maxi, F_BUS), branch(maxi, T_BUS)); if isOPF [minv, mini] = min(bus(:, LAM_P)); [maxv, maxi] = max(bus(:, LAM_P)); fprintf(fd, '\nLambda P %8.2f $/MWh @ bus %-4d %8.2f $/MWh @ bus %-4d', minv, mini, maxv, maxi); [minv, mini] = min(bus(:, LAM_Q)); [maxv, maxi] = max(bus(:, LAM_Q)); fprintf(fd, '\nLambda Q %8.2f $/MWh @ bus %-4d %8.2f $/MWh @ bus %-4d', minv, mini, maxv, maxi); end fprintf(fd, '\n'); end if OUT_AREA_SUM fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Area Summary |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\nArea # of # of Gens # of # of # of # of Total Gen On-line'); fprintf(fd, '\n Num Buses Gens Online Loads Brchs Xfmrs Ties Capacity Capacity'); fprintf(fd, '\n---- ----- ---- ------ ----- ----- ----- ---- ----------- -----------'); for i=1:length(areas) a = areas(i); ib = find(bus(:, BUS_AREA) == a); ig = find(bus(e2i(gen(:, GEN_BUS)), BUS_AREA) == a); igon = find(bus(e2i(gen(:, GEN_BUS)), BUS_AREA) == a & gen(:, GEN_STATUS)); inzld = find(bus(:, BUS_AREA) == a & (bus(:, PD) | bus(:, QD))); ibrch = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) == a & bus(e2i(branch(:, T_BUS)), BUS_AREA) == a); in_tie = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) ~= a & bus(e2i(branch(:, T_BUS)), BUS_AREA) == a); out_tie = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) == a & bus(e2i(branch(:, T_BUS)), BUS_AREA) ~= a); if length(xfmr) nxfmr = length(find(bus(e2i(branch(xfmr, F_BUS)), BUS_AREA) == a & bus(e2i(branch(xfmr, T_BUS)), BUS_AREA) == a)); else nxfmr = 0; end fprintf(fd, '\n%3d %5d %5d %5d %5d %5d %5d %5d %7.1f MW %7.1f MW', ... a, length(ib), length(ig), length(igon), length(inzld), length(ibrch), nxfmr, ... length(in_tie)+length(out_tie), sum(gen(ig, PMAX)), sum(gen(igon, PMAX))); end fprintf(fd, '\n---- ----- ---- ------ ----- ----- ----- ---- ----------- -----------'); fprintf(fd, '\nTot: %5d %5d %5d %5d %5d %5d %5d %7.1f MW %7.1f MW', ... nb, ng, length(on), length(nzld), nl, length(xfmr), ... length(ties), sum(gen(:, PMAX)), sum(gen(on, PMAX))); fprintf(fd, '\n'); fprintf(fd, '\nArea Generation Load Losses Net Export Brnch Shunt'); fprintf(fd, '\n Num MW MVAR MW MVAR MW MVAR MW MVAR Chrgng MVAR'); fprintf(fd, '\n---- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------'); for i=1:length(areas) a = areas(i); ib = find(bus(:, BUS_AREA) == a); ig = find(bus(e2i(gen(:, GEN_BUS)), BUS_AREA) == a); igon = find(bus(e2i(gen(:, GEN_BUS)), BUS_AREA) == a & gen(:, GEN_STATUS)); inzld = find(bus(:, BUS_AREA) == a & (bus(:, PD) | bus(:, QD))); ibrch = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) == a & bus(e2i(branch(:, T_BUS)), BUS_AREA) == a); in_tie = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) == a & bus(e2i(branch(:, T_BUS)), BUS_AREA) ~= a); out_tie = find(bus(e2i(branch(:, F_BUS)), BUS_AREA) ~= a & bus(e2i(branch(:, T_BUS)), BUS_AREA) == a); fprintf(fd, '\n%3d %7.1f%7.1f %7.1f%7.1f%7.2f %7.2f %7.1f%7.1f %7.1f %7.1f', ... a, sum(gen(igon, PG)), sum(gen(igon, QG)), sum(bus(inzld, PD)), sum(bus(inzld, QD)), ... sum(real(loss(ibrch))) + sum(real(loss([in_tie; out_tie]))) / 2, ... sum(imag(loss(ibrch))) + sum(imag(loss([in_tie; out_tie]))) / 2, ... sum(branch(in_tie, PT))+sum(branch(out_tie, PF)), ... sum(branch(in_tie, QT))+sum(branch(out_tie, QF)), ... sum(fchg(ibrch)) + sum(tchg(ibrch)) + sum(fchg(out_tie)) + sum(tchg(in_tie)), ... sum(bus(ib, VM) .^ 2 .* bus(ib, BS)) ); end fprintf(fd, '\n---- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------'); fprintf(fd, '\nTot:%7.1f%7.1f %7.1f%7.1f%7.2f %7.2f %7s%7s %7.1f %7.1f', ... sum(gen(on, PG)), sum(gen(on, QG)), sum(bus(nzld, PD)), sum(bus(nzld, QD)), ... sum(real(loss)), sum(imag(loss)), '- ', '- ', ... sum(fchg) + sum(tchg), sum(bus(:, VM) .^ 2 .* bus(:, BS)) ); fprintf(fd, '\n'); end %% generator data if OUT_GEN if isOPF genlamP = bus(e2i(gen(:, GEN_BUS)), LAM_P); genlamQ = bus(e2i(gen(:, GEN_BUS)), LAM_Q); end fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Generator Data |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\nGen Bus Pg Qg '); if isOPF, fprintf(fd, ' Lambda ($/MVA-hr)'); end fprintf(fd, '\n # # (MW) (MVAR) '); if isOPF, fprintf(fd, ' P Q '); end fprintf(fd, '\n--- --- -------- --------'); if isOPF, fprintf(fd, ' -------- --------'); end for i = 1:ng if gen(i, PG) fprintf(fd, '\n%3d%5d%9.2f%10.2f%10.2f%10.2f', i, gen(i, GEN_BUS), gen(i, PG), gen(i, QG)); if isOPF, fprintf(fd, '%10.2f%10.2f', genlamP(i), genlamQ(i)); end else fprintf(fd, '\n%3d%5d - -', i, gen(i, GEN_BUS)); if isOPF, fprintf(fd, ' - -'); end end end fprintf(fd, '\n -------- --------'); fprintf(fd, '\n Total:%9.2f%10.2f', sum(gen(:, PG)), sum(gen(:, QG))); fprintf(fd, '\n'); end %% bus data if OUT_BUS fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Bus Data |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\nBus Voltage Generation Load '); if isOPF, fprintf(fd, ' Lambda($/MVA-hr)'); end fprintf(fd, '\n # Mag(pu) Ang(deg) P (MW) Q (MVAR) P (MW) Q (MVAR)'); if isOPF, fprintf(fd, ' P Q '); end fprintf(fd, '\n--- ------- -------- -------- -------- -------- --------'); if isOPF, fprintf(fd, ' ------- -------'); end for i = 1:nb fprintf(fd, '\n%3d%8.3f%10.3f', bus(i, [BUS_I, VM, VA])); g = find(gen(:, GEN_BUS) == bus(i, BUS_I)); if gen(g, GEN_STATUS) fprintf(fd, '%10.2f%10.2f', gen(g, [PG, QG])); else fprintf(fd, ' - - '); end if bus(i, PD) | bus(i, QD) fprintf(fd, '%10.2f%10.2f', bus(i, [PD, QD])); else fprintf(fd, ' - - '); end if isOPF fprintf(fd, '%10.3f', bus(i, LAM_P)); if abs(bus(i, LAM_Q)) > 1e-6 fprintf(fd, '%8.3f', bus(i, LAM_Q)); else fprintf(fd, ' - '); end end end fprintf(fd, '\n -------- -------- -------- --------'); fprintf(fd, '\n Total: %9.2f %9.2f %9.2f %9.2f', ... sum(gen(:, PG)), sum(gen(:, QG)), sum(bus(nzld, PD)), sum(bus(nzld, QD))); fprintf(fd, '\n'); end %% branch data if OUT_BRANCH fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Branch Data |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\n From To From Bus Injection To Bus Injection Loss (I^2 * Z) '); fprintf(fd, '\n Bus Bus P (MW) Q (MVAR) P (MW) Q (MVAR) P (MW) Q (MVAR)'); fprintf(fd, '\n----- ----- -------- -------- -------- -------- -------- --------'); fprintf(fd, '\n%4d%7d%10.2f%10.2f%10.2f%10.2f%10.3f%10.2f', ... [ branch(:, [F_BUS, T_BUS]), ... branch(:, [PF, QF]), branch(:, [PT, QT]), ... real(loss), imag(loss) ... ]'); fprintf(fd, '\n -------- --------'); fprintf(fd, '\n Total:%10.3f%10.2f', ... sum(real(loss)), sum(imag(loss))); fprintf(fd, '\n'); end %%----- constraint data ----- if isOPF %% voltage constraints if OUT_V_LIM == 2 | (OUT_V_LIM == 1 & ... (any(bus(:, MU_VMIN) > 1e-6) | any(bus(:, MU_VMAX) > 1e-6))) fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Voltage Constraints |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\nBus'); fprintf(fd, '\n # Vmin mu Vmin |V| Vmax Vmax mu'); fprintf(fd, '\n--- ------- ----- ----- ----- -------'); for i = 1:nb if OUT_V_LIM == 2 | (OUT_V_LIM == 1 & ... (bus(i, MU_VMIN) > 1e-6 | bus(i, MU_VMAX) > 1e-6)) fprintf(fd, '\n%3d', bus(i, BUS_I)); if bus(i, MU_VMIN) > 1e-6 fprintf(fd, '%8.3f', bus(i, MU_VMIN)); else fprintf(fd, ' - '); end fprintf(fd, '%8.3f%7.3f%7.3f', bus(i, [VMIN, VM, VMAX])); if bus(i, MU_VMAX) > 1e-6 fprintf(fd, '%8.3f', bus(i, MU_VMAX)); else fprintf(fd, ' - '); end end end fprintf(fd, '\n'); end %% generator P constraints if OUT_PG_LIM == 2 | OUT_QG_LIM == 2 | ... (OUT_PG_LIM == 1 & (any(gen(:, MU_PMIN) > 1e-6) | any(gen(:, MU_PMAX) > 1e-6))) | ... (OUT_QG_LIM == 1 & (any(gen(:, MU_QMIN) > 1e-6) | any(gen(:, MU_QMAX) > 1e-6))) fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Generation Constraints |'); fprintf(fd, '\n================================================================================'); end if OUT_PG_LIM == 2 | (OUT_PG_LIM == 1 & ... (any(gen(:, MU_PMIN) > 1e-6) | any(gen(:, MU_PMAX) > 1e-6))) fprintf(fd, '\nBus Active Power Limits'); fprintf(fd, '\n # Pmin mu Pmin P Pmax Pmax mu'); fprintf(fd, '\n--- ------- -------- -------- -------- -------'); for i = 1:ng if OUT_PG_LIM == 2 | (OUT_PG_LIM == 1 & (gen(i, MU_PMIN) > 1e-6 | gen(i, MU_PMAX) > 1e-6)) fprintf(fd, '\n%3d', gen(i, GEN_BUS)); if gen(i, MU_PMIN) > 1e-6 fprintf(fd, '%8.3f', gen(i, MU_PMIN)); else fprintf(fd, ' - '); end if gen(i, PG) fprintf(fd, '%10.2f%10.2f%10.2f', gen(i, [PMIN, PG, PMAX])); else fprintf(fd, '%10.2f - %10.2f', gen(i, [PMIN, PMAX])); end if gen(i, MU_PMAX) > 1e-6 fprintf(fd, '%9.3f', gen(i, MU_PMAX)); else fprintf(fd, ' - '); end end end fprintf(fd, '\n'); end %% generator Q constraints if OUT_QG_LIM == 2 | (OUT_QG_LIM == 1 & ... (any(gen(:, MU_QMIN) > 1e-6) | any(gen(:, MU_QMAX) > 1e-6))) fprintf(fd, '\nBus Reactive Power Limits'); fprintf(fd, '\n # Qmin mu Qmin Q Qmax Qmax mu'); fprintf(fd, '\n--- ------- -------- -------- -------- -------'); for i = 1:ng if OUT_QG_LIM == 2 | (OUT_QG_LIM == 1 & (gen(i, MU_QMIN) > 1e-6 | gen(i, MU_QMAX) > 1e-6)) fprintf(fd, '\n%3d', gen(i, GEN_BUS)); if gen(i, MU_QMIN) > 1e-6 fprintf(fd, '%8.3f', gen(i, MU_QMIN)); else fprintf(fd, ' - '); end if gen(i, QG) fprintf(fd, '%10.2f%10.2f%10.2f', gen(i, [QMIN, QG, QMAX])); else fprintf(fd, '%10.2f - %10.2f', gen(i, [QMIN, QMAX])); end if gen(i, MU_QMAX) > 1e-6 fprintf(fd, '%9.3f', gen(i, MU_QMAX)); else fprintf(fd, ' - '); end end end fprintf(fd, '\n'); end %% line flow constraints if OUT_LINE_LIM == 2 | (OUT_LINE_LIM == 1 & ... (any(branch(:, MU_SF) > 1e-6) | any(branch(:, MU_ST) > 1e-6))) fprintf(fd, '\n================================================================================'); fprintf(fd, '\n| Line Flow Constraints |'); fprintf(fd, '\n================================================================================'); fprintf(fd, '\n From "From" End Limit "To" End To'); fprintf(fd, '\n Bus |Sf| mu |Sf| |Smax| |St| |St| mu Bus'); fprintf(fd, '\n----- ------- -------- -------- -------- ------- -----'); for i = 1:nl if OUT_LINE_LIM == 2 | (OUT_LINE_LIM == 1 & ... (branch(i, MU_SF) > 1e-6 | branch(i, MU_ST) > 1e-6)) fprintf(fd, '\n%4d', branch(i, F_BUS)); if branch(i, MU_SF) > 1e-6 fprintf(fd, '%10.3f', branch(i, MU_SF)); else fprintf(fd, ' - '); end fprintf(fd, '%9.2f%10.2f%10.2f', ... [abs(branch(i, PF) + j * branch(i, QF)), ... branch(i, RATE_A), abs(branch(i, PT) + j * branch(i, QT))]); if branch(i, MU_ST) > 1e-6 fprintf(fd, '%10.3f', branch(i, MU_ST)); else fprintf(fd, ' - '); end fprintf(fd, '%6d', branch(i, T_BUS)); end end fprintf(fd, '\n'); end end %% print raw data for Perl database interface if OUT_RAW fprintf(fd, '---------- raw PB::Soln data below ----------\n'); fprintf(fd, 'bus\n'); if isOPF fprintf(fd, '%d\t%d\t%g\t%g\t%g\t%g\t%g\t%g\n', ... bus(:, [BUS_I, BUS_TYPE, VM, VA, LAM_P, LAM_Q, MU_VMAX, MU_VMIN])'); fprintf(fd, 'branch\n'); fprintf(fd, '%d\t%g\t%g\t%g\t%g\t%g\t%g\n', ... [[1:nl]' branch(:, [PF, QF, PT, QT, MU_SF, MU_ST])]'); fprintf(fd, 'gen\n'); fprintf(fd, '%d\t%g\t%g\t%g\t%d\t%g\t%g\t%g\t%g\n', ... [[1:ng]' gen(:, [PG, QG, VG, GEN_STATUS, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN])]'); else fprintf(fd, '%d\t%d\t%f\t%f\t%d\t%d\t%d\t%d\n', ... [bus(:, [BUS_I, BUS_TYPE, VM, VA]) zeros(nb, 4)]'); fprintf(fd, 'branch\n'); fprintf(fd, '%d\t%f\t%f\t%f\t%f\t%d\t%d\n', ... [[1:nl]' branch(:, [PF, QF, PT, QT]) zeros(nl, 2)]'); fprintf(fd, 'gen\n'); fprintf(fd, '%d\t%f\t%f\t%f\t%d\t%d\t%d\t%d\t%d\n', ... [[1:ng]' gen(:, [PG, QG, VG, GEN_STATUS]) zeros(ng, 4)]'); end fprintf(fd, 'end\n'); fprintf(fd, '---------- raw PB::Soln data above ----------\n'); end else %% convergence & elapsed time if OUT_SYS_SUM == 1 | OUT_RAW fprintf(fd, '\nDid not converge (%.2f seconds)\n', et); end end return;