亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fm_spf.m

?? 這是一個很適合研究和學(xué)習(xí)用的電力系統(tǒng)仿真軟件
?? M
字號:
function fm_spf
% FM_SPF solve standard power flow by means of the NR method
%       and fast decoupled power flow (XB and BX variations)
%       with either a single or distributed slack bus model.
%
% FM_SPF
%
%see the properties of the Settings structure for options.
%
%Author:    Federico Milano
%Date:      11-Nov-2002
%Update:    09-Jul-2003
%Version:   1.0.1
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

fm_var
fm_disp
fm_disp('Newton-Raphson Method for Power Flow Computation')
if Settings.show
  fm_disp(['Data file "',Path.data,File.data,'"'])
end
nodyn = 0;

% these computations are needed only the first time the power flow is run
if ~Settings.init
  % bus type initialization
  fm_ncomp
  if ~Settings.ok, return, end
  % report components parameters to system bases
  if Settings.conv, fm_base, end
  % create the admittance matrix
  fm_y
  % create the FM_CALL FUNCTION
  if Settings.show, fm_disp('Writing file "fm_call" ...',1), end
  fm_wcall;
  Settings.refbus = SW.bus(1); % reference bus (for phase angle)
  fm_dynlf; % indicization of components used in power flow computations
end

% memory allocation for equations and Jacobians
if (DAE.n~=0)
  DAE.f = ones(DAE.n,1);  % differential equations
  DAE.x = ones(DAE.n,1);  % state variables
  fm_xfirst;
  DAE.Fx = sparse(DAE.n,DAE.n);   % df/dx
  DAE.Fy = sparse(DAE.n,2*Bus.n); % df/dy
  DAE.Gx = sparse(2*Bus.n,DAE.n); % dg/dx
else  % no dynamic elements
  nodyn = 1;
  DAE.n = 1;
  DAE.f = 0;
  DAE.x = 0;
  DAE.Fx = 1;
  DAE.Fy = sparse(1,2*Bus.n);
  DAE.Gx = sparse(2*Bus.n,1);
end

% check PF solver method
FDPF = Settings.pfsolver;
if FDPF > 1
  if Mn.n, mn = sum(~Mn.con(:,8));  else, mn = 0; end
  if Pl.n, pl = sum(~Pl.con(:,11)); else, pl = 0; end
  ncload = mn + pl + Lines.n + (~nodyn);
  if ncload | Settings.distrsw,
    FDPF = 1; % force using standard NR method
  else
    fm_b
    no_sw = 1:Bus.n;
    no_sw(SW.bus) = [];
    no_g = 1:Bus.n;
    no_g([SW.bus; PV.bus]) = [];
    Bp = Line.Bp(no_sw,no_sw);
    Bpp = Line.Bpp(no_g,no_g);
    [Lp, Up, Pp] = lu(Bp);
    [Lpp, Upp, Ppp] = lu(Bpp);
  end
end

switch FDPF
 case 1, fm_disp('PF solver: Newton-Raphson method')
 case 2, fm_disp('PF solver: XB fast decoupled power flow method')
 case 3, fm_disp('PF solver: BX fast decoupled power flow method')
end

if Settings.distrsw
  DAE.Fk = sparse(DAE.n,1);
  DAE.Gk = sparse(2*Bus.n,1);
  Jrow = sparse(1,DAE.n+SW.bus,1,1,DAE.n+2*Bus.n+1);
  DAE.kg = 0;
  if ~swgamma(SW,'sum')
    fm_disp('Slack buses have zero power loss participation factor.')
    fm_disp('Single slack bus model will be used')
    Setting.distrsw = 0;
  end
  if totp(SW) == 0
    SW = setpg(totp(PQ)-totp(PV),1);
    fm_disp('Slack buses have zero generated power.')
    fm_disp('P_slack = sum(P_load)-sum(P_gen) will be used.')
    fm_disp('Only PQ loads and PV generators are used.')
    fm_disp('If there are convergence problems, use the single slack bus model.')
  end
  Gkcall(SW);
  Gkcall(PV);
end

switch Settings.distrsw
 case 1
  fm_disp('Distributed slack bus model')
 case 0
  fm_disp('Single slack bus model')
end

if FDPF > 1, fm_call('fdpf'), end

iter_max = Settings.lfmit;
if iter_max < 2, iter_max = 2; end
iteration = 0;
tol = Settings.lftol;
err_max = tol+1;
err_vec = [];
alfatry = 1;
alfa = 1;
safety = 0.9;
pgrow = -0.2;
pshrnk = -0.25;
try
  errcon = (5/safety)^(1/pgrow);
catch
  errcon = 1.89e-4;
end

% Graphical settings
fm_status('pf','init',iter_max,{'r'},{'-'},{Theme.color11})
fm_connectivity(0,'islands')

%  Newton-Raphson routine
t0 = clock;

while (err_max > tol) & (iteration <= iter_max) & (alfa > 1e-5)

  if Fig.main
    if ~get(Fig.main,'UserData'), break, end
  end

  if FDPF == 1   % Standard NR technique

    refreshJac;

    % component calls
    if Settings.distrsw
      fm_call('kgpf');
      glambda(SW,1,DAE.kg);
      DAE.g(Bus.n+SW.bus) = 0;

      Gbus = Bus.n+[SW.bus;PV.bus];
      DAE.Jlfv(Gbus,:) = 0;
      DAE.Jlfv(:,Gbus) = 0;
      DAE.Jlfv(:,SW.bus) = 0;
      DAE.Jlfv(Gbus,Gbus) = speye(PV.n+SW.n);
      DAE.Fy(:,SW.bus) = 0;
      DAE.Gx(SW.bus,:) = 0;
      if nodyn, DAE.Fx = 1; end
      inc = -[[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv],[DAE.Fk;DAE.Gk];Jrow]\ ...
            [DAE.f; DAE.g; 0];
      DAE.x = DAE.x + inc(1:DAE.n);
      DAE.a = DAE.a + inc(1+DAE.n:Bus.n+DAE.n);
      DAE.V = DAE.V + inc(1+DAE.n+Bus.n:DAE.n+2*Bus.n);
      DAE.kg = DAE.kg + inc(end);

    elseif Settings.robust

      xold = DAE.x;
      aold = DAE.a;
      Vold = DAE.V;

      while 1

        refreshJac;
        fm_call('l');
        refreshGen(nodyn);
        k1 = -alfa*[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv]\[DAE.f; DAE.g];

        DAE.x = xold + 0.5*k1(1:DAE.n);
        DAE.a = aold + 0.5*k1(1+DAE.n:Bus.n+DAE.n);
        DAE.V = Vold + 0.5*k1(1+DAE.n+Bus.n:DAE.n+2*Bus.n);
        refreshJac;
        fm_call('l');
        refreshGen(nodyn);
        k2 = -alfa*[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv]\[DAE.f; DAE.g];

        DAE.x = xold + 0.5*k2(1:DAE.n);
        DAE.a = aold + 0.5*k2(1+DAE.n:Bus.n+DAE.n);
        DAE.V = Vold + 0.5*k2(1+DAE.n+Bus.n:DAE.n+2*Bus.n);
        refreshJac;
        fm_call('l');
        refreshGen(nodyn);
        k3 = -alfa*[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv]\[DAE.f; DAE.g];

        DAE.x = xold + k3(1:DAE.n);
        DAE.a = aold + k3(1+DAE.n:Bus.n+DAE.n);
        DAE.V = Vold + k3(1+DAE.n+Bus.n:DAE.n+2*Bus.n);
        refreshJac;
        fm_call('l');
        refreshGen(nodyn);
        k4 = -alfa*[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv]\[DAE.f; DAE.g];

        % compute RK4 increment of variables
        inc = (k1+2*(k2+k3)+k4)/6;

        % to estimate RK error, use the RK2:Dy and RK4:Dy.
        yerr = max(abs(abs(k2)-abs(inc)));
        if yerr > 0.01
          alfa = max(0.985*alfa,0.9);
        else
          alfa = min(1.015*alfa,1.1);
        end

        DAE.x = xold + inc(1:DAE.n);
        DAE.a = aold + inc(1+DAE.n:Bus.n+DAE.n);
        DAE.V = Vold + inc(1+DAE.n+Bus.n:DAE.n+2*Bus.n);
        break

      end
      %disp(['alpha = ',num2str(alfa)])

    else % standard Newton-Raphson method

      % complete Jacobian matrix
      fm_call('l');
      refreshGen(nodyn)
      inc = -[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Jlfv]\[DAE.f; DAE.g];
      DAE.x = DAE.x + inc(1:DAE.n);
      DAE.a = DAE.a + inc(1+DAE.n:Bus.n+DAE.n);
      DAE.V = DAE.V + inc(1+DAE.n+Bus.n:DAE.n+2*Bus.n);

    end

  else % Fast Decoupled Power Flow

    % P-theta
    da = -(Up\(Lp\(Pp*DAE.gp(no_sw))));
    DAE.a(no_sw) = DAE.a(no_sw) + da;
    Vc = DAE.V.*exp(j*DAE.a);
    fm_call('fdpf')
    normP = norm(DAE.gp,inf);
    normQ = norm(DAE.gq,inf);
    if normP < tol & normQ < tol, break, end

    % Q-V
    dV = -(Upp\(Lpp\(Ppp*DAE.gq(no_g))));
    DAE.V(no_g) = DAE.V(no_g)+dV;
    Vc = DAE.V.*exp(j*DAE.a);
    fm_call('fdpf')
    normP = norm(DAE.gp,inf);
    normQ = norm(DAE.gq,inf);
    if normP < tol & normQ < tol, break, end

    inc = [normP; normQ];

    % recompute Bpp if some PV bus has been switched to PQ bus
    if Settings.pv2pq & strmatch('Switch',History.text{end})
      fm_disp('Recomputing Bpp matrix for FDPF')
      no_g = 1:Bus.n;
      no_g([SW.bus; PV.bus]) = [];
      Bpp = Line.Bpp(no_g,no_g);
      [Lpp, Upp, Ppp] = lu(Bpp);
    end
  end

  iteration = iteration + 1;
  err_max = max(abs(inc));
  err_vec(iteration) = err_max;
  
  fm_status('pf','update',[iteration, err_max],iteration)

  if Settings.show
    if err_max == Inf, err_max = 1e3; end
    fm_disp(['Iteration = ', num2str(iteration), ...
             '     Maximum Convergency Error = ', ...
             num2str(err_max)],1)
  end

  % stop if the error increases too much 
  if iteration > 4
    if err_vec(iteration) > 1000*err_vec(1)
      fm_disp('The error is increasing too much.')
      fm_disp('Convergence is likely not reachable.')
      break
    end
  end

end

Settings.lftime = etime(clock,t0);
Settings.iter = iteration;
if iteration > iter_max
  fm_disp(['Reached Maximum number of iteration for NR Routine without ' ...
           'Convergence'],2)
end

% Total power injections and consumptions at network buses

% Pl and Ql computation (shunts only)
DAE.gp = zeros(Bus.n,1);
DAE.gq = zeros(Bus.n,1);
fm_call('pq');
Bus.Pl = DAE.gp;
Bus.Ql = DAE.gq;
% take away PQ generator powers
rmpqgen(PQ)

%Pg and Qg computation
if Line.n, fm_lf(1), end
DAE.gp = zeros(Bus.n,1);
DAE.gq = zeros(Bus.n,1);
fm_call('1');
Bus.Pg = DAE.gp + DAE.glfp;
Bus.Qg = DAE.gq + DAE.glfq;
SW = setpg(SW,'all',Bus.Pg(SW.bus));
% add PQ generator powers
addpqgen(PQ)

% memory allocation for dynamic variables & state variables indicization
if nodyn == 1; DAE.x = []; DAE.f = []; DAE.n = 0; end
DAE.npf = DAE.n;
fm_dynidx;
if (DAE.n~=0)
  DAE.f = [DAE.f; ones(DAE.n-DAE.npf,1)];  % differential equations
  DAE.x = [DAE.x; ones(DAE.n-DAE.npf,1)];  % state variables
  DAE.Fx = sparse(DAE.n,DAE.n); % state Jacobian df/dx
  DAE.Fy = sparse(DAE.n,2*Bus.n); % state Jacobian df/dy
  DAE.Gx = sparse(2*Bus.n,DAE.n); % algebraic Jacobian dg/dx
end

%  build cell arrays of variable names
fm_idx(1)
if (Settings.vs == 1), fm_idx(2), end

% initializations of state variables and components
if Settings.static
  fm_disp('* * * Dynamic components are not initialized * * *')
end
Settings.init = 1;
fm_synit
fm_excin
fm_call('0');
% start up of induction machines
if Mot.n > 0, fm_mot(5), end
% refresh PQ powers
% PQ = pqactual(PQ,'all');

% power flow result visualization
fm_disp(['Power Flow completed in ',num2str(Settings.lftime),' s'])
if Settings.showlf == 1 | Fig.stat
  fm_stat;
else
  if Settings.beep, beep, end
end

% initialization of all equations & Jacobians
refreshJac
fm_call('i');

% build structure "Snapshot"
if isempty(Settings.t0) & Fig.main
  hdl = findobj(Fig.main,'Tag','EditText3');
  Settings.t0 = str2num(get(hdl,'String'));
end

if ~Settings.locksnap & Bus.n <= 5000 & DAE.n < 5000
  Snapshot = struct( ...
      'name','Power Flow Results', ...
      'time',Settings.t0, ...
      'V',DAE.V, ...
      'ang',DAE.a, ...
      'x',DAE.x,...
      'Y',Line.Y, ...
      'Pg',Bus.Pg, ...
      'Qg',Bus.Qg, ...
      'Pl',Bus.Pl, ...
      'Ql',Bus.Ql, ...
      'vfd',Syn.vf, ...
      'pmech',Syn.pm, ...
      'Jlf',DAE.Jlf, ...
      'Jlfv',DAE.Jlfv, ...
      'Fx',DAE.Fx, ...
      'Fy',DAE.Fy, ...
      'Gx',DAE.Gx, ...
      'Ploss',sum(DAE.glfp), ...
      'Qloss',sum(DAE.glfq), ...
      'it',1);
else
  if Bus.n > 5000
    fm_disp(['Snapshots are disabled for networks with more than 5000 ' ...
             'buses.'])
  end
  if DAE.n > 5000
    fm_disp(['Snapshots are disabled for networks with more than 5000 ' ...
             'state variables.'])
  end  
end

fm_status('pf','close')

LIB.selbus = min(LIB.selbus,Bus.n);
if Fig.lib,
  set(findobj(Fig.lib,'Tag','Listbox1'), ...
      'String',Varname.bus, ...
      'Value',LIB.selbus);
end


% -----------------------------------------------
function refreshJac

global DAE Bus

DAE.gp = sparse(Bus.n,1);
DAE.gq = sparse(Bus.n,1);
DAE.J11 = sparse(Bus.n,Bus.n);
DAE.J21 = sparse(Bus.n,Bus.n);
DAE.J12 = sparse(Bus.n,Bus.n);
DAE.J22 = sparse(Bus.n,Bus.n);

% -----------------------------------------------
function refreshGen(nodyn)

global DAE Bus SW PV

DAE.Fy(:,SW.bus) = 0;
DAE.Gx(SW.bus,:) = 0;
DAE.Fy(:,Bus.n+SW.bus) = 0;
DAE.Gx(Bus.n+SW.bus,:) = 0;
DAE.Fy(:,Bus.n+PV.bus) = 0;
DAE.Gx(Bus.n+PV.bus,:) = 0;
if nodyn, DAE.Fx = 1; end
 
% check for islanded buses
if ~isempty(Bus.island)
  k = Bus.island;
  DAE.Jlfv(k,:) = 0;
  DAE.Jlfv(:,k) = 0;
  DAE.Jlfv(:,k+Bus.n) = 0;
  DAE.Jlfv(k+Bus.n,:) = 0;
  DAE.Jlfv(k,k) = speye(length(k));
  DAE.Jlfv(k+Bus.n,k+Bus.n) = speye(length(k));
  DAE.g(k) = 0;
  DAE.g(k+Bus.n) = 0;
  DAE.V(k) = 1e-6;
  DAE.a(k) = 0;
end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲嫩草精品久久| 337p亚洲精品色噜噜狠狠| 精品国产99国产精品| 日本va欧美va精品| 欧美大黄免费观看| 国产一区视频在线看| 亚洲乱码国产乱码精品精的特点 | 一区二区三区四区五区视频在线观看| 国产成人综合自拍| 国产精品人妖ts系列视频| 成人aa视频在线观看| 一区二区三区波多野结衣在线观看| 色综合天天综合色综合av| 一区二区三区产品免费精品久久75| 欧美在线观看禁18| 免费人成黄页网站在线一区二区| 日韩免费一区二区| 国产精品综合在线视频| 国产精品久久毛片a| 在线日韩av片| 免费观看日韩av| 国产女人水真多18毛片18精品视频 | 亚洲欧美色图小说| 欧美日韩激情一区二区| 精东粉嫩av免费一区二区三区| 中文无字幕一区二区三区| 在线一区二区三区四区五区| 免费观看在线综合| 国产精品免费视频网站| 欧美精品三级在线观看| 国产精品资源在线| 一区二区三区在线看| 日韩欧美黄色影院| 99视频超级精品| 免费成人在线视频观看| 国产精品传媒入口麻豆| 91麻豆精品91久久久久同性| 国产成人8x视频一区二区| 亚洲一区二区中文在线| 久久久www成人免费毛片麻豆| 97久久超碰国产精品| 伦理电影国产精品| 亚洲欧美一区二区久久 | 免播放器亚洲一区| 中文字幕日本乱码精品影院| 欧美一区二区女人| 99久久婷婷国产综合精品| 老司机免费视频一区二区三区| 亚洲欧美综合在线精品| 亚洲18女电影在线观看| 久久精品亚洲国产奇米99| 精品视频资源站| 丁香一区二区三区| 免费的成人av| 亚洲国产中文字幕| 亚洲四区在线观看| 国产三级一区二区| 日韩欧美视频在线| 欧美图片一区二区三区| 99久久免费精品| 国产乱码精品一区二区三区av| 婷婷中文字幕综合| 亚洲精品视频自拍| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲裸体xxx| 中文字幕av在线一区二区三区| 日韩欧美成人一区| 欧美日韩国产天堂| 欧洲日韩一区二区三区| 99久久婷婷国产综合精品| 国产精品91xxx| 国产自产2019最新不卡| 免费成人在线影院| 免费观看久久久4p| 日本不卡免费在线视频| 天堂影院一区二区| 亚洲国产aⅴ天堂久久| 一区二区三区四区中文字幕| 亚洲欧洲精品一区二区精品久久久 | 污片在线观看一区二区| 亚洲国产成人tv| 亚洲国产成人porn| 亚洲国产视频在线| 午夜精品aaa| 日本成人在线网站| 日韩国产在线一| 日本不卡视频在线观看| 美美哒免费高清在线观看视频一区二区 | 5566中文字幕一区二区电影| 欧美精品丝袜久久久中文字幕| 欧美日韩国产系列| 91精品国产高清一区二区三区| 欧美一区午夜精品| 日韩精品中文字幕在线不卡尤物| 欧美成人一区二区三区片免费 | 欧美一区二区三区在| 日韩三级精品电影久久久| 日韩精品中文字幕一区二区三区| 精品伦理精品一区| 中文字幕乱码一区二区免费| 国产精品久久夜| 亚洲主播在线观看| 麻豆精品新av中文字幕| 国产精品一区二区在线观看不卡 | 国内精品国产成人国产三级粉色| 久久国产精品99精品国产| 国产最新精品免费| 99热99精品| 欧美系列日韩一区| 欧美成人a视频| 欧美激情资源网| 亚洲综合激情小说| 国模套图日韩精品一区二区| 成人国产电影网| 精品视频123区在线观看| 日韩欧美一级特黄在线播放| 久久精品一区四区| 一区二区三区在线播| 蜜桃av一区二区在线观看| 国产成人99久久亚洲综合精品| 欧美制服丝袜第一页| 欧美一级一区二区| 国产精品国产三级国产aⅴ无密码| 亚洲一二三四在线观看| 国产一区二区三区免费看| 91麻豆6部合集magnet| 日韩一区二区三| 国产精品福利在线播放| 日韩国产欧美三级| 成人激情免费视频| 欧美一区二区三区男人的天堂| 国产精品久久久久久亚洲毛片 | 欧美一级艳片视频免费观看| 中文幕一区二区三区久久蜜桃| 天堂一区二区在线| 91小视频免费观看| 精品成人佐山爱一区二区| 亚洲综合丁香婷婷六月香| 国内精品国产成人国产三级粉色| 欧日韩精品视频| 中文在线资源观看网站视频免费不卡 | 国产呦精品一区二区三区网站| 欧美色精品在线视频| 久久精品人人做| 美女任你摸久久| 欧美三级视频在线播放| 国产精品福利一区| 国产麻豆视频一区| 欧美一区二区三区色| 亚洲一级二级三级| 色婷婷久久综合| 日本一区二区三级电影在线观看 | 日韩av在线发布| 在线免费观看日韩欧美| 国产精品拍天天在线| 美女在线观看视频一区二区| 欧美色综合影院| 亚洲色大成网站www久久九九| 国产麻豆精品在线| 精品国产乱码久久久久久闺蜜| 丝袜美腿成人在线| 欧美午夜电影网| 一区二区高清视频在线观看| 99久久免费精品| 国产精品护士白丝一区av| 国产精华液一区二区三区| 精品国产伦一区二区三区观看方式 | 99re视频这里只有精品| 欧美国产精品专区| 国产成人综合亚洲网站| 久久综合久久久久88| 精品在线观看免费| 精品动漫一区二区三区在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美一区二区国产| 美脚の诱脚舐め脚责91| 精品嫩草影院久久| 国产专区欧美精品| 久久在线观看免费| 国产成人午夜精品5599| 国产婷婷一区二区| 成人美女视频在线观看18| 中文字幕欧美激情| 91麻豆产精品久久久久久| 亚洲精品水蜜桃| 欧美日本国产一区| 日本va欧美va精品发布| 精品国产乱码久久久久久老虎| 国产一区二区视频在线| 中文天堂在线一区| 色婷婷综合激情| 日韩不卡一二三区| 精品国产伦一区二区三区观看体验| 国产一区欧美日韩| 中文无字幕一区二区三区 | 国内精品久久久久影院一蜜桃| 国产欧美一区二区精品仙草咪| 成人黄色av电影| 一区二区三区四区不卡视频 | 国产成人夜色高潮福利影视|