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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fm_spf.m

?? 電力系統分析計算程序
?? 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:    Federico.Milano@uclm.es%Web-site:  http://www.uclm.es/area/gsee/Web/Federico%% Copyright (C) 2002-2008 Federico Milanoglobal DAE Pl Mn Lines Line SW PV PQ Busglobal History Theme Fig Settings LIB Snapshot Path Filefm_dispfm_disp('Newton-Raphson Method for Power Flow Computation')if Settings.show  fm_disp(['Data file "',Path.data,File.data,'"'])endnodyn = 0;% these computations are needed only the first time the power flow is runif ~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  Line = build_y(Line);  % create the FM_CALL FUNCTION  if Settings.show, fm_disp('Writing file "fm_call" ...',1), end  fm_wcall;  fm_dynlf; % indicization of components used in power flow computationsend% memory allocation for equations and Jacobiansif (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,DAE.m); % df/dy  DAE.Gx = sparse(DAE.m,DAE.n); % dg/dxelse  % no dynamic elements  nodyn = 1;  DAE.n = 1;  DAE.f = 0;  DAE.x = 0;  DAE.Fx = 1;  DAE.Fy = sparse(1,DAE.m);  DAE.Gx = sparse(DAE.m,1);end% check PF solver methodPFmethod = Settings.pfsolver;ncload = getnum(Mn) + getnum(Pl) + getnum(Lines) + (~nodyn);if (ncload | Settings.distrsw) & (PFmethod == 2 | PFmethod == 3)  if ncload    fm_disp('Fast Decoupled PF cannot be used with dynamic components')  end  if Settings.distrsw    fm_disp('Fast Decoupled PF cannot be used with distributed slack bus model')  end  PFmethod = 1; % force using standard NR methodendswitch PFmethod case 1, fm_disp('PF solver: Newton-Raphson method') case 2, fm_disp('PF solver: XB fast decoupled method') case 3, fm_disp('PF solver: BX fast decoupled method') case 4, fm_disp('PF solver: Runge-Kutta method') case 5, fm_disp('PF solver: Iwamoto method') case 6, fm_disp('PF solver: Robust power flow method') case 7, fm_disp('PF solver: DC power flow')endDAE.lambda = 1;Jrow = 0;if Settings.distrsw  DAE.Fk = sparse(DAE.n,1);  DAE.Gk = sparse(DAE.m,1);  Jrow = sparse(1,DAE.n+SW.refbus,1,1,DAE.n+DAE.m+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);endswitch Settings.distrsw case 1  fm_disp('Distributed slack bus model') case 0  fm_disp('Single slack bus model')enditer_max = Settings.lfmit;convergence = 1;if iter_max < 2, iter_max = 2; enditeration = 0;tol = Settings.lftol;err_max = tol+1;err_max_old = 1e6;err_vec = [];alfatry = 1;alfa = 1; %0.85;safety = 0.9;pgrow = -0.2;pshrnk = -0.25;robust = 1;try  errcon = (5/safety)^(1/pgrow);catch  errcon = 1.89e-4;end% Graphical settingsfm_status('pf','init',iter_max,{'r'},{'-'},{Theme.color11})islands(Line)%  Newton-Raphson routinet0 = clock;while (err_max > tol) & (iteration <= iter_max) & (alfa > 1e-5)  if Fig.main    if ~get(Fig.main,'UserData'), break, end  end  switch PFmethod   case 1 % Standard Newton-Raphson method    inc = calcInc(nodyn,Jrow);    DAE.x = DAE.x + inc(1:DAE.n);    DAE.y = DAE.y + inc(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw, DAE.kg = DAE.kg + inc(end); end   case {2,3} % Fast Decoupled Power Flow    if ~iteration % initialize variables      Line = build_b(Line);      no_sw = Bus.a;      no_sw(getbus(SW)) = [];      no_g = Bus.a;      no_g([getbus(SW); getbus(PV)]) = [];      Bp = Line.Bp(no_sw,no_sw);      Bpp = Line.Bpp(no_g,no_g);      [Lp, Up, Pp] = lu(Bp);      [Lpp, Upp, Ppp] = lu(Bpp);      no_g = no_g + Bus.n;      fm_call('fdpf')    end    % P-theta    da = -(Up\(Lp\(Pp*DAE.g(no_sw))));    DAE.y(no_sw) = DAE.y(no_sw) + da;    Vc = DAE.y(Bus.v).*exp(j*DAE.y(Bus.a));    fm_call('fdpf')    normP = norm(DAE.g,inf);    % Q-V    dV = -(Upp\(Lpp\(Ppp*DAE.g(no_g))));    DAE.y(no_g) = DAE.y(no_g)+dV;    Vc = DAE.y(Bus.v).*exp(j*DAE.y(Bus.a));    fm_call('fdpf')    normQ = norm(DAE.g,inf);    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 Fast Decoupled PF')      no_g = Bus.a;      no_g([getbus(SW); getbus(PV)]) = [];      Bpp = Line.Bpp(no_g,no_g);      [Lpp, Upp, Ppp] = lu(Bpp);      no_g = no_g + Bus.n;    end   case 4 % Runge-Kutta method    xold = DAE.x;    yold = DAE.y;    kold = DAE.kg;    k1 = alfa*calcInc(nodyn,Jrow);    Jac = -[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Gy];    DAE.x = xold + 0.5*k1(1:DAE.n);    DAE.y = yold + 0.5*k1(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw, DAE.kg = kold + 0.5*k1(end); end    k2 = alfa*calcInc(nodyn,Jrow);    DAE.x = xold + 0.5*k2(1:DAE.n);    DAE.y = yold + 0.5*k2(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw, DAE.kg = kold + 0.5*k2(end); end    k3 = alfa*calcInc(nodyn,Jrow);    DAE.x = xold + k3(1:DAE.n);    DAE.y = yold + k3(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw, DAE.kg = kold + k3(end); end    k4 = alfa*calcInc(nodyn,Jrow);    % 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.75);    else      alfa = min(1.015*alfa,0.75);    end    DAE.x = xold + inc(1:DAE.n);    DAE.y = yold + inc(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw, DAE.kg = kold + inc(end); end   case 5 % Iwamoto method    xold = DAE.x;    yold = DAE.y;    kold = DAE.kg;    inc = calcInc(nodyn,Jrow);    vec_a = -[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Gy]*inc;    vec_b = -vec_a;    DAE.x = inc(1:DAE.n);    DAE.y = inc(1+DAE.n:DAE.m+DAE.n);    if Settings.distrsw      DAE.kg = inc(end);      fm_call('kgpf');      if nodyn, DAE.Fx = 1; end      vec_c = -[DAE.f; DAE.g; DAE.y(SW.refbus)];    else      refreshJac;      fm_call('l');      refreshGen(nodyn);      vec_c = -[DAE.f; DAE.g];    end    g0 = (vec_a')*vec_b;    g1 = sum(vec_b.*vec_b + 2*vec_a.*vec_c);    g2 = 3*(vec_b')*vec_c;    g3 = 2*(vec_c')*vec_c;    pp = -g2/3/g3;    qq = pp^3 + (g2*g1-3*g3*g0)/6/g3/g3;    rr = g1/3/g3;    mu = (qq+sqrt(qq*qq+(rr-pp*pp)^3))^(1/3) + ...         (qq-sqrt(qq*qq+(rr-pp*pp)^3))^(1/3) + pp;    mu = min(abs(mu),0.75);    DAE.x = xold + mu*inc(1:DAE.n);    DAE.y = yold + mu*inc(1+DAE.n:DAE.n+DAE.m);    if Settings.distrsw, DAE.kg = kold + mu*inc(end); end   case 6 % simple robust power flow method    inc = robust*calcInc(nodyn,Jrow);    err_max = max(abs(inc));    if err_max > 1.5*err_max_old & iteration      robust = 0.25*robust;      if robust < tol        fm_disp('The otpimal multiplier is too small.')        iteration = iter_max+1;        break      end    else      DAE.x = DAE.x + inc(1:DAE.n);      DAE.y = DAE.y + inc(1+DAE.n:DAE.m+DAE.n);      if Settings.distrsw, DAE.kg = DAE.kg + inc(end); end      err_max_old = err_max;      robust = 1;    end  end  iteration = iteration + 1;  err_max = max(abs(inc));  err_vec(iteration) = err_max;  if err_max < 1e-2 & PFmethod > 3 & Settings.switch2nr    fm_disp('Switch to standard Newton-Raphson method.')    PFmethod = 1;  end  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.')      convergence = 0;      break    end  endendSettings.lftime = etime(clock,t0);Settings.iter = iteration;if iteration > iter_max  fm_disp(['Reached maximum number of iteration of NR routine without ' ...           'convergence'],2)  convergence = 0;end% Total power injections and consumptions at network buses% Pl and Ql computation (shunts only)DAE.g = zeros(DAE.m,1);fm_call('load0');Bus.Pl = DAE.g(Bus.a);Bus.Ql = DAE.g(Bus.v);%Pg and Qg computationfm_call('gen0');Bus.Pg = DAE.g(Bus.a);Bus.Qg = DAE.g(Bus.v);if ~Settings.distrsw  SW = setpg(SW,'all',Bus.Pg(SW.bus));end% adjust powers in case of PQ generatorsadjgen(PQ)% memory allocation for dynamic variables & state variables indicizationif nodyn == 1; DAE.x = []; DAE.f = []; DAE.n = 0; endDAE.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,DAE.m); % state Jacobian df/dy  DAE.Gx = sparse(DAE.m,DAE.n); % algebraic Jacobian dg/dxend%  build cell arrays of variable namesfm_idx(1)if (Settings.vs == 1), fm_idx(2), end% initializations of state variables and componentsif Settings.static  fm_disp('* * * Dynamic components are not initialized * * *')endif convergence  Settings.init = 1;else  Settings.init = -1;endfm_rmgen(-1); % initialize function for removing static generatorsfm_call('0'); % compute inital state variables% power flow result visualizationfm_disp(['Power Flow completed in ',num2str(Settings.lftime),' s'])if Settings.showlf == 1 | Fig.stat  fm_stat;else  if Settings.beep, beep, endendif Fig.threed, fm_threed('update'), end% initialization of all equations & JacobiansrefreshJacfm_call('i');% build structure "Snapshot"if isempty(Settings.t0) & Fig.main  hdl = findobj(Fig.main,'Tag','EditText3');  Settings.t0 = str2num(get(hdl,'String'));endif ~Settings.locksnap & Bus.n <= 5000 & DAE.n < 5000  Snapshot = struct( ...      'name','Power Flow Results', ...      'time',Settings.t0, ...      'y',DAE.y, ...      'x',DAE.x,...      'Ybus',Line.Y, ...      'Pg',Bus.Pg, ...      'Qg',Bus.Qg, ...      'Pl',Bus.Pl, ...      'Ql',Bus.Ql, ...      'Gy',DAE.Gy, ...      'Fx',DAE.Fx, ...      'Fy',DAE.Fy, ...      'Gx',DAE.Gx, ...      'Ploss',sum(Bus.Pg)-sum(Bus.Pl), ...      'Qloss',sum(Bus.Qg)-sum(Bus.Ql), ...      '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.'])  endendfm_status('pf','close')LIB.selbus = min(LIB.selbus,Bus.n);if Fig.lib,  set(findobj(Fig.lib,'Tag','Listbox1'), ...      'String',Bus.names, ...      'Value',LIB.selbus);end% -----------------------------------------------function refreshJacglobal DAEDAE.g = zeros(DAE.m,1);% -----------------------------------------------function refreshGen(nodyn)global DAE SW PVif nodyn, DAE.Fx = 1; endFxcall(SW,'full')Fxcall(PV)% -----------------------------------------------function inc = calcInc(nodyn,Jrow)global DAE Settings SW PVDAE.g = zeros(DAE.m,1);if Settings.distrsw % distributed slack bus  fm_call('kgpf');  if nodyn, DAE.Fx = 1; end  inc = -[DAE.Fx,DAE.Fy,DAE.Fk;DAE.Gx,DAE.Gy,DAE.Gk;Jrow]\ ...        [DAE.f; DAE.g; DAE.y(SW.refbus)];else % single slack bus  fm_call('l');  if nodyn, DAE.Fx = 1; end  Fxcall(SW,'full')  Fxcall(PV)  inc = -[DAE.Fx, DAE.Fy; DAE.Gx, DAE.Gy]\[DAE.f; DAE.g];end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品最新网址| 欧美国产欧美综合| 国产午夜亚洲精品不卡| 夜夜揉揉日日人人青青一国产精品| 青草国产精品久久久久久| 粉嫩一区二区三区性色av| 555www色欧美视频| 亚洲少妇最新在线视频| 国产一区久久久| 91精品国产麻豆国产自产在线 | 成人天堂资源www在线| 欧美另类videos死尸| 17c精品麻豆一区二区免费| 国产原创一区二区三区| 亚洲国产精品精华液2区45| 亚洲电影一级片| 91在线丨porny丨国产| 国产香蕉久久精品综合网| 另类中文字幕网| 欧美日韩国产中文| 一区二区三区欧美亚洲| 99视频精品免费视频| 欧美国产一区二区在线观看| 国内精品伊人久久久久av一坑| 欧美一区二区大片| 日韩精品国产精品| 6080日韩午夜伦伦午夜伦| 五月天激情综合网| 欧美日韩亚洲高清一区二区| 亚洲精品老司机| 在线观看一区不卡| 亚洲综合色区另类av| 欧美中文字幕不卡| 亚洲高清视频在线| 欧美日韩午夜在线| 日本色综合中文字幕| 日韩视频在线观看一区二区| 毛片基地黄久久久久久天堂| 日韩你懂的在线播放| 国产一区二区在线观看免费| 久久久国产一区二区三区四区小说 | 亚洲福利一二三区| 欧美日韩国产一区二区三区地区| 亚洲国产成人av网| 337p亚洲精品色噜噜噜| 九九久久精品视频| 国产亚洲欧美在线| 91免费国产视频网站| 亚洲免费av高清| 欧美日本韩国一区| 精品一区二区综合| 亚洲国产精品高清| 欧美中文字幕一区二区三区 | 亚洲午夜久久久久久久久电影院| 欧美日韩国产区一| 国产在线观看一区二区| 中文字幕高清一区| 欧美综合色免费| 日本不卡一二三区黄网| 国产片一区二区| 色综合久久中文综合久久牛| 午夜精品福利久久久| 精品久久久久久久久久久久包黑料 | 91婷婷韩国欧美一区二区| 亚洲一区二区在线视频| 日韩三级电影网址| 99久久免费国产| 日韩一区欧美二区| 国产精品久久久久久久久动漫 | 成人a免费在线看| 亚洲成人1区2区| 久久品道一品道久久精品| 91女人视频在线观看| 免费在线观看精品| 国产精品第一页第二页第三页| 欧美日韩国产综合视频在线观看| 国产一区二区成人久久免费影院| 亚洲精品你懂的| 久久亚洲一区二区三区四区| 精品欧美乱码久久久久久| 成人av动漫在线| 麻豆精品久久精品色综合| 成人欧美一区二区三区在线播放| 日韩一区二区三区视频| 91视频在线观看| 九九精品一区二区| 亚洲高清不卡在线观看| 欧美激情综合网| 日韩欧美国产午夜精品| 欧美视频中文字幕| zzijzzij亚洲日本少妇熟睡| 免费人成在线不卡| 亚洲一区二区欧美| 中文字幕五月欧美| 国产人妖乱国产精品人妖| 欧美精品乱码久久久久久| 91香蕉视频mp4| 国产精品一区二区无线| 另类小说欧美激情| 午夜精品一区二区三区三上悠亚| 亚洲视频一区在线| 国产精品日日摸夜夜摸av| 精品免费国产一区二区三区四区| 欧美高清dvd| 欧美性色综合网| 日本乱码高清不卡字幕| 99精品一区二区三区| 成人午夜激情在线| 国产成人小视频| 国产一区美女在线| 国产精品一区二区无线| 国产乱人伦偷精品视频免下载| 精品午夜一区二区三区在线观看| 日韩综合小视频| 天堂一区二区在线| 婷婷综合在线观看| 视频一区免费在线观看| 亚洲国产一区二区三区| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲国产精品av| 国产欧美综合在线| 国产精品视频一区二区三区不卡| 日本一区二区三区免费乱视频| 中文字幕欧美日韩一区| 成人免费在线视频观看| 亚洲精品欧美在线| 日韩电影在线免费| 国产在线播精品第三| 国产在线播放一区二区三区| 国产福利一区二区| 91在线观看污| 欧美性猛交xxxx黑人交| 91精品久久久久久久99蜜桃| 日韩女同互慰一区二区| 国产欧美日韩在线视频| 成人免费在线观看入口| 午夜精品在线视频一区| 久草在线在线精品观看| 成人一道本在线| 欧美性淫爽ww久久久久无| 欧美一级欧美三级在线观看| 久久久三级国产网站| 亚洲色图清纯唯美| 日韩影院精彩在线| 国产aⅴ综合色| 在线观看网站黄不卡| 日韩美女一区二区三区四区| 日本一区二区免费在线观看视频| 一区二区在线观看免费视频播放 | 国产精品中文字幕日韩精品| 成人福利视频在线| 538prom精品视频线放| 国产亚洲精品超碰| 午夜精品一区在线观看| 国产凹凸在线观看一区二区| 欧美三级视频在线播放| 26uuu国产电影一区二区| 亚洲美女在线一区| 狠狠色2019综合网| 日本韩国欧美一区二区三区| 精品久久久久久久人人人人传媒| 亚洲视频网在线直播| 激情另类小说区图片区视频区| 99在线视频精品| 欧美精品一区在线观看| 一区二区成人在线观看| 国产精品系列在线观看| 欧美精品v日韩精品v韩国精品v| 国产精品免费视频网站| 另类欧美日韩国产在线| 欧美无砖专区一中文字| 国产日韩欧美激情| 久久爱另类一区二区小说| 在线亚洲免费视频| 国产精品久久看| 国产一区二区毛片| 日韩欧美高清一区| 亚洲成人777| 欧美亚洲国产bt| 亚洲三级理论片| 成人性生交大片免费看中文| 精品国产欧美一区二区| 婷婷综合在线观看| 欧美日韩国产精选| 久久国产麻豆精品| 欧美精品日韩一区| 午夜伊人狠狠久久| 欧美在线看片a免费观看| 日韩美女精品在线| va亚洲va日韩不卡在线观看| 久久久国产一区二区三区四区小说| 日本色综合中文字幕| 欧美私人免费视频| 亚洲一区影音先锋| 在线看国产日韩| 亚洲国产日韩a在线播放性色| 色婷婷综合五月| 一区二区三区日本| 欧美亚洲另类激情小说| 亚洲bt欧美bt精品777|