📄 setup.m
字号:
function a = setup(a)global DAE Settings Varname% check busesif isempty(a.con) fm_disp(['The data file does not seem to be in a valid ', ... 'format: no bus found.']) Settings.ok = 0; returnenda.n = length(a.con(:,1));a.a = [1:a.n]';a.v = a.a + a.n;% set up internal bus numbers for second indexing of busesa.int(round(a.con(:,1)),1) = a.a;% check bus voltage ratesif length(a.con(1,:)) < 2 fm_disp('No voltage rates found in Bus data.',2) Settings.ok = 0; returnendidx = find(a.con(:,2) == 0);if ~isempty(idx) fm_disp('Some Bus voltage rate is zero! 1 kV will be used.') a.con(idx,2) = 1;end% defining bus namesif isfield(Varname,'bus') % backward compatibility if ~isempty(Varname.bus) a.names = Varname.bus; end Varname = rmfield(Varname,'bus');endif length(a.names) ~= a.n fm_disp('Bus names does not match bus number.',2) a.names = '';endif isempty(a.names) if isempty(Bus.names) Bus.names = cellstr(fm_strjoin('Bus',num2str(Bus.con(:,1)))); end a.names = fm_strjoin({'Bus '},int2str(a.con(:,1)));endDAE.m = 2*a.n;DAE.y = zeros(DAE.m,1);DAE.g = zeros(DAE.m,1);DAE.Gy = sparse(DAE.m,DAE.m);if length(a.con(1,:)) >= 4, % check voltage magnitudes Vlow = find(a.con(:,3) < 0.5); Vhigh = find(a.con(:,3) > 1.5); if ~isempty(Vlow), fm_disp(['Warning: some initial guess voltage magnitudes are too low.']) end if ~isempty(Vhigh), fm_disp(['Warning: some initial guess voltage magnitudes are too high.']) end DAE.y(a.v) = a.con(:,3); % check voltage phases aref = min(abs(a.con(:,4))); alow = find(a.con(:,4)-aref < -1.5708); ahigh = find(a.con(:,4)-aref > 1.5708); if ~isempty(alow), fm_disp(['Warning: some initial guess voltage phases are too low.']) end if ~isempty(ahigh), fm_disp(['Warning: some initial guess voltage phases are too high.']) end DAE.y(a.a) = a.con(:,4);else DAE.y(a.a) = zeros(a.n,1); DAE.y(a.v) = ones(a.n,1);enda.Pl = zeros(a.n,1);a.Ql = zeros(a.n,1);a.Pg = zeros(a.n,1);a.Qg = zeros(a.n,1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -