📄 fm_flows.m
字号:
function varargout = fm_flows(varargin)%FM_FLOWS computes active and reactive flows in transmission lines%% [PIJ,QIJ,PJI,QJI] = FM_FLOWS% [PIJ,QIJ,PJI,QJI,FRV,TOV] = FM_FLOWS% [PIJ,QIJ,PJI,QJI,FR,TO] = FM_FLOWS('ONLYIDX')% [FR,TO] = FM_FLOWS('BUS')% [BUSES,NISLAND] = FM_FLOWS('CONNECTIVITY')% [BUSES,NISLAND] = FM_FLOWS('CONNECTIVITY','VERBOSE')%%see also classes LINE, UPFC, TCSC and SSSC%%Author: Federico Milano%Date: 03-Aug-2006%Version: 1.0.0%%E-mail: Federico.Milano@uclm.es%Web-site: http://www.uclm.es/area/gsee/Web/Federico%% Copyright (C) 2002-2008 Federico Milanoglobal Line Upfc Sssc Tcsc Ltc Phs Hvdc Linesif nargin type = varargin{1};else type = 'voltage';endif ~strcmp(type,'onlyidx') [Ps,Qs,Pr,Qr] = flows(Line); [Ps,Qs,Pr,Qr] = flows(Tcsc,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Sssc,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Upfc,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Ltc,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Phs,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Hvdc,Ps,Qs,Pr,Qr); [Ps,Qs,Pr,Qr] = flows(Lines,Ps,Qs,Pr,Qr);endswitch type case {'bus','onlyidx','connectivity'} Fr = [Line.fr; Ltc.bus1; Phs.bus1; Hvdc.bus1; Lines.bus1]; To = [Line.to; Ltc.bus2; Phs.bus2; Hvdc.bus2; Lines.bus2]; otherwise Fr = [Line.vfr; Ltc.v1; Phs.v1; Hvdc.v1; Lines.v1]; To = [Line.vto; Ltc.v2; Phs.v2; Hvdc.v2; Lines.v2];endswitch nargout case 2 varargout{1} = Fr; varargout{2} = To; case 4 varargout{1} = Ps; varargout{2} = Qs; varargout{3} = Pr; varargout{4} = Qr; case 6 varargout{1} = Ps; varargout{2} = Qs; varargout{3} = Pr; varargout{4} = Qr; varargout{5} = Fr; varargout{6} = To;endif strcmp(type,'connectivity') global Bus Syn SW PV PQ Settings if nargin == 2 flag = varargin{2}; else flag = 'mute'; end nb = Bus.n; U = [Line.u; Ltc.u; Phs.u; Hvdc.u; Lines.u]; % connectivity matrix connect_mat = ... sparse(Fr,Fr,1,nb,nb) + ... sparse(Fr,To,U,nb,nb) + ... sparse(To,To,1,nb,nb) + ... sparse(To,Fr,U,nb,nb); % find network islands using QR factorization if Settings.octave [Q,R] = qr(full(connect_mat)); else [Q,R] = qr(connect_mat); end idx = find(abs(sum(R,2)-diag(R)) < 1e-5); % find generators per island nisland = length(idx); buses = []; if nisland > 1 buses = cell(nisland,1); disp(['There are ',num2str(nisland),' islanded networks']) gen_bus = [getbus(Syn);getbus(SW);getbus(PV);getbus(PQ,'gen')]; for i = 1:nisland buses{i} = find(Q(:,idx(i))); nbuses = length(buses{i}); ngen = length(intersect(gen_bus,buses{i})); if strcmp(flag,'verbose') fm_disp([' * * Sub-network ', num2str(i),' has ', ... num2str(nbuses),' bus(es) and ', ... num2str(ngen),' generator(s)']) end end end if nargout varargout{1} = buses; varargout{2} = nisland; end end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -