⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fjh2.m

📁 用于电力系统的一个很好的分析软件
💻 M
字号:
function varargout = fjh2(p,type,varargin)% FJH2 compute the square of current, active power and apparent %      power flows of transmission lines and the associated %      Jacobian and Hessian matrices%% Synthax:%%                  [FIJ,FJI] = FJH2(LINE,TYPE)%          [FIJ,JIJ,FJI,JJI] = FJH2(LINE,TYPE)%  [FIJ,JIJ,HIJ,FJI,JJI,HJI] = FJH2(LINE,TYPE)%  [FIJ,JIJ,HIJ,FJI,JJI,HJI] = FJH2(LINE,TYPE,MU1,MU2)%% TYPE -> type of flows computations: (1) square current flows%                                     (2) square active power flows%                                     (3) square apparent power flows%% MU1 -> column vector (Line.n,1) of Lagrangian multipliers for (i->j)% MU2 -> column vector (Line.n,1) of Lagrangian multipliers for (j->i)%% FIJ -> column vector (Line.n,1) of flows from bus "i" to bus "j"% JIJ -> Jacobian matrix (Line.n,Bus.n) from bus "i" to bus "j"% HIJ -> Hessian matrix (Bus.n,Bus.n) from bus "i" to bus "j"%% FJI -> column vector (Line.n,1) of flows from bus "j" to bus "i"% JJI -> Jacobian matrix (Line.n,Bus.n) from bus "j" to bus "i"% HJI -> Hessian matrix (Bus.n,Bus.n) from bus "j" to bus "i"%%Author:    Federico Milano%Date:      11-Nov-2002%Version:   1.0.0%%E-mail:    fmilano@thunderbox.uwaterloo.ca%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano%% Copyright (C) 2002-2007 Federico Milanoglobal Bus DAE jay% ==========================================================================% line flow solution% ==========================================================================tps = p.con(:,11).*exp(jay*p.con(:,12)*pi/180);Vfr = DAE.y(p.vfr).*exp(jay*DAE.y(p.fr));Vto = DAE.y(p.vto).*exp(jay*DAE.y(p.to));r = p.con(:,8);x = p.con(:,9);chrg = p.u.*p.con(:,10)/2;z = r + jay*x;y = p.u./z;g = real(y);b = imag(y);nl = [1:p.n];nb = Bus.n;if nargout == 6  if nargin == 2    mu1 = ones(p.n,1);    mu2 = ones(p.n,1);  else    mu1 = varargin{1};    mu2 = varargin{2};    endendswitch type case 1  % ========================================================================  % AC Current Flows, Jacobian and Hessian  % ========================================================================  Vi = DAE.y(p.vfr);  Vj = DAE.y(p.vto);  ti = DAE.y(p.fr);  tj = DAE.y(p.to);  b0 = p.u.*p.con(:,10)/2;  yij = abs(y);  fij = angle(y);  m = p.con(:,11);  a = p.con(:,12)*pi/180;  ki = abs(y+i*b0).^2;  kj = abs(y.*m.*m+i*b0).^2;  Vij = Vi.*Vj;  y2 = yij.*yij;  m2 = m.*m;  m3 = m2.*m;  k1 = 2*yij.*m.*b0;  k2 = k1.*m2;  k3 = 2*y2.*m;  k4 = k3.*m2;  k5 = m2.*y2;  cij = cos(ti-tj-a);  sij = sin(ti-tj-a);  sfij = sin(ti-tj-fij-a);  cfij = cos(ti-tj-fij-a);  sfji = sin(tj-ti-fij+a);  cfji = cos(tj-ti-fij+a);    Fij = Vi.*Vi.*ki + Vj.*Vj.*k5 - Vij.*k3.*cij + Vij.*k1.*sfij;  Fji = Vj.*Vj.*kj + Vi.*Vi.*k5 - Vij.*k4.*cij + Vij.*k2.*sfji;    if nargout == 2    varargout{1} = Fij;    varargout{2} = Fji;    return  end    Jij = [sparse(nl,p.fr, Vij.*k3.*sij + Vij.*k1.*cfij,p.n,nb) + ...         sparse(nl,p.to,-Vij.*k3.*sij - Vij.*k1.*cfij,p.n,nb), ...         sparse(nl,p.fr, 2*Vi.*ki - Vj.*k3.*cij + Vj.*k1.*sfij,p.n,nb) + ...         sparse(nl,p.to, 2*Vj.*k5 - Vi.*k3.*cij + Vi.*k1.*sfij,p.n,nb)];  Jji = [sparse(nl,p.fr, Vij.*k4.*sij - Vij.*k2.*cfji,p.n,nb) + ...         sparse(nl,p.to,-Vij.*k4.*sij + Vij.*k2.*cfji,p.n,nb), ...         sparse(nl,p.fr, 2*Vi.*k5 - Vj.*k4.*cij + Vj.*k2.*sfji,p.n,nb) + ...         sparse(nl,p.to, 2*Vj.*kj - Vi.*k4.*cij + Vi.*k2.*sfji,p.n,nb)];  if nargout == 4    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Fji;    varargout{4} = Jji;    return  end  a1 = mu1.*(Vij.*k3.*cij - Vij.*k1.*sfij);  a2 = mu1.*(Vj.*k3.*sij + Vj.*k1.*cfij);  a3 = mu1.*(Vi.*k3.*sij + Vi.*k1.*cfij);  a4 = 2*mu1.*ki;  a5 = mu1.*(-k3.*cij + k1.*sfij);  a6 = 2*mu1.*k5;  Hij = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  a1 = mu2.*(-Vij.*k4.*cij + Vij.*k2.*sfji);  a2 = mu2.*( Vj.*k4.*sij - Vj.*k2.*cfji);  a3 = mu2.*( Vi.*k4.*sij - Vi.*k2.*cfji);  a4 = 2*mu2.*k5;  a5 = mu2.*(-k4.*cij + k2.*sfji);  a6 = 2*mu2.*kj;  Hji = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  if nargout == 6    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Hij;    varargout{4} = Fji;    varargout{5} = Jji;    varargout{6} = Hji;  end case 2  % ========================================================================  % AC active power flows in each line from bus i to bus j  % ========================================================================  Vi = DAE.y(p.vfr);  Vj = DAE.y(p.vto);  ti = DAE.y(p.fr);  tj = DAE.y(p.to);  yij = abs(y);  fij = angle(y);  m = p.con(:,11);  a = p.con(:,12)*pi/180;  y2 = yij.*yij;  m2 = m.*m;  ki = y2.*cos(fij).*cos(fij);  kj = ki.*m2.*m2;  Vij = Vi.*Vj;  Vi2 = Vi.*Vi;  Vj2 = Vj.*Vj;  m3 = m2.*m;  k1 = 2*y2.*m.*cos(fij);  k2 = k1.*m2;  k5 = m2.*y2;  cij = cos(ti-tj-a);  sij = sin(ti-tj-a);  sfij = sin(ti-tj-fij-a);  cfij = cos(ti-tj-fij-a);  sfji = sin(tj-ti-fij+a);  cfji = cos(tj-ti-fij+a);  Fij = Vi2.*(Vi2.*ki + Vj2.*k5.*cfij.*cfij - Vij.*k1.*cfij);  Fji = Vj2.*(Vj2.*kj + Vi2.*k5.*cfji.*cfji - Vij.*k2.*cfji);    if nargout == 2    varargout{1} = Fij;    varargout{2} = Fji;    return  end  Jij = [sparse(nl,p.fr, Vi2.*(-2*Vj2.*k5.*cfij.*sfij + Vij.*k1.*sfij),p.n,nb) + ...         sparse(nl,p.to, Vi2.*( 2*Vj2.*k5.*cfij.*sfij - Vij.*k1.*sfij),p.n,nb), ...         sparse(nl,p.fr, 4*Vi.*Vi2.*ki + 2*Vi.*Vj2.*k5.*cfij.*cfij - 3.*Vi.*Vij.*k1.*cfij,p.n,nb) + ...         sparse(nl,p.to, 2*Vi2.*Vj.*k5.*cfij.*cfij - Vi2.*Vi.*k1.*cfij,p.n,nb)];  Jji = [sparse(nl,p.fr, Vj2.*(-2*Vi2.*k5.*cfji.*sfji + Vij.*k2.*sfji),p.n,nb) + ...         sparse(nl,p.to, Vj2.*( 2*Vi2.*k5.*cfji.*sfji - Vij.*k2.*sfji),p.n,nb), ...         sparse(nl,p.fr, 2*Vj2.*Vi.*k5.*cfji.*cfji - Vj2.*Vj.*k2.*cfji,p.n,nb) + ...         sparse(nl,p.to, 4*Vj.*Vj2.*kj + 2*Vj.*Vi2.*k5.*cfji.*cfji - 3*Vj.*Vij.*k2.*cfji,p.n,nb)];    if nargout == 4    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Fji;    varargout{4} = Jji;    return  end  a1 = mu1.*Vi2.*(-2*Vj2.*k5.*cos(2*(ti-tj-fij-a)) + Vij.*k1.*cfij);  a2 = mu1.*(-4*Vi.*Vj2.*k5.*cfij.*sfij + 3.*Vi.*Vij.*k1.*sfij);  a3 = mu1.*(-4*Vi2.*Vj.*k5.*cfij.*sfij + Vi2.*Vi.*k1.*sfij);  a4 = mu1.*(12*Vi2.*ki + 2*Vj2.*k5.*cfij.*cfij - 6.*Vij.*k1.*cfij);  a5 = mu1.*(4*Vij.*k5.*cfij.*cfij - 3*Vi2.*k1.*cfij);  a6 = 2*mu1.*Vi2.*k5.*cfij.*cfij;  Hij = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  a1 = mu2.*Vj2.*(-2*Vi2.*k5.*cos(2*(tj-ti-fij+a)) + Vij.*k2.*cfji);  a2 = mu2.*(-4*Vj2.*Vi.*k5.*cfji.*sfji + Vj2.*Vj.*k2.*sfji);  a3 = mu2.*(-4*Vj.*Vi2.*k5.*cfji.*sfji + 3*Vj.*Vij.*k2.*sfji);  a4 = 2*mu2.*Vj2.*k5.*cfji.*cfji;  a5 = mu2.*(4*Vij.*k5.*cfji.*cfji - 3*Vj2.*k2.*cfji);  a6 = mu2.*(12*Vj2.*kj + 2*Vi2.*k5.*cfji.*cfji - 6*Vij.*k2.*cfji);  Hji = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  if nargout == 6    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Hij;    varargout{4} = Fji;    varargout{5} = Jji;    varargout{6} = Hji;  end case 3  % ========================================================================  % AC apparent power flows  % ========================================================================  Vi = DAE.y(p.vfr);  Vj = DAE.y(p.vto);  ti = DAE.y(p.fr);  tj = DAE.y(p.to);  b0 = p.u.*p.con(:,10)/2;  yij = abs(y);  fij = angle(y);  m = p.con(:,11);  a = p.con(:,12)*pi/180;  ki = abs(y+i*b0).^2;  kj = abs(y.*m.*m+i*b0).^2;  Vij = Vi.*Vj;  Vi2 = Vi.*Vi;  Vj2 = Vj.*Vj;  y2 = yij.*yij;  m2 = m.*m;  m3 = m2.*m;  k1 = 2*yij.*m.*b0;  k2 = k1.*m2;  k3 = 2*y2.*m;  k4 = k3.*m2;  k5 = m2.*y2;  cij = cos(ti-tj-a);  sij = sin(ti-tj-a);  sfij = sin(ti-tj-fij-a);  cfij = cos(ti-tj-fij-a);  sfji = sin(tj-ti-fij+a);  cfji = cos(tj-ti-fij+a);    Fij = Vi2.*(Vi2.*ki + Vj2.*k5 - Vij.*k3.*cij + Vij.*k1.*sfij);  Fji = Vj2.*(Vj2.*kj + Vi2.*k5 - Vij.*k4.*cij + Vij.*k2.*sfji);    if nargout == 2    varargout{1} = Fij;    varargout{2} = Fji;    return  end    Jij = [sparse(nl,p.fr, Vi2.*Vij.*k3.*sij + Vi2.*Vij.*k1.*cfij,p.n,nb) + ...         sparse(nl,p.to,-Vi2.*Vij.*k3.*sij - Vi2.*Vij.*k1.*cfij,p.n,nb), ...         sparse(nl,p.fr, 4*Vi2.*Vi.*ki + 2*Vi.*Vj2.*k5 - 3*Vi2.*Vj.*k3.*cij + 3*Vi2.*Vj.*k1.*sfij,p.n,nb) + ...         sparse(nl,p.to, 2*Vi2.*Vj.*k5 - Vi2.*Vi.*k3.*cij + Vi2.*Vi.*k1.*sfij,p.n,nb)];  Jji = [sparse(nl,p.fr, Vj2.*Vij.*k4.*sij - Vj2.*Vij.*k2.*cfji,p.n,nb) + ...         sparse(nl,p.to,-Vj2.*Vij.*k4.*sij + Vj2.*Vij.*k2.*cfji,p.n,nb), ...         sparse(nl,p.fr, 2*Vj2.*Vi.*k5 - Vj2.*Vj.*k4.*cij + Vj2.*Vj.*k2.*sfji,p.n,nb) + ...         sparse(nl,p.to, 4*Vj2.*Vj.*kj + 2*Vj.*Vi2.*k5 - 3*Vj2.*Vi.*k4.*cij + 3*Vj2.*Vi.*k2.*sfji,p.n,nb)];  if nargout == 4    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Fji;    varargout{4} = Jji;    return  end  a1 = mu1.*Vi2.*(Vij.*k3.*cij - Vij.*k1.*sfij);  a2 = mu1.*(3*Vi2.*Vj.*k3.*sij + 3*Vi2.*Vj.*k1.*cfij);  a3 = mu1.*(Vi2.*Vi.*k3.*sij + Vi2.*Vi.*k1.*cfij);  a4 = mu1.*(12*Vi2.*ki + 2*Vj2.*k5 - 6*Vij.*k3.*cij + 6*Vij.*k1.*sfij);  a5 = mu1.*(4*Vij.*k5 - 3*Vi2.*k3.*cij + 3*Vi2.*k1.*sfij);  a6 = 2*Vi2.*mu1.*k5;  Hij = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  a1 = mu2.*Vj2.*(-Vij.*k4.*cij + Vij.*k2.*sfji);  a2 = mu2.*( Vj2.*Vj.*k4.*sij - Vj2.*Vj.*k2.*cfji);  a3 = mu2.*( 3*Vj2.*Vi.*k4.*sij - 3*Vj2.*Vi.*k2.*cfji);  a4 = 2*Vj2.*mu2.*k5;  a5 = mu2.*(4*Vij.*k5 - 3*Vj2.*k4.*cij + 3*Vj2.*k2.*sfji);  a6 = mu2.*(12*Vj2.*kj + 2*Vi2.*k5 - 6*Vij.*k4.*cij + 6*Vij.*k2.*sfji);  Hji = [sparse(p.fr, p.fr, a1, nb, nb) + ...         sparse(p.fr, p.to,-a1, nb, nb) + ...         sparse(p.to, p.fr,-a1, nb, nb) + ...         sparse(p.to, p.to, a1, nb, nb), ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to, a3, nb, nb) + ...         sparse(p.to, p.fr,-a2, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb); ...         sparse(p.fr, p.fr, a2, nb, nb) + ...         sparse(p.fr, p.to,-a2, nb, nb) + ...         sparse(p.to, p.fr, a3, nb, nb) + ...         sparse(p.to, p.to,-a3, nb, nb), ...         sparse(p.fr, p.fr, a4, nb, nb) + ...         sparse(p.fr, p.to, a5, nb, nb) + ...         sparse(p.to, p.fr, a5, nb, nb) + ...         sparse(p.to, p.to, a6, nb, nb)];  if nargout == 6    varargout{1} = Fij;    varargout{2} = Jij;    varargout{3} = Hij;    varargout{4} = Fji;    varargout{5} = Jji;    varargout{6} = Hji;  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -