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

📄 fm_flows.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
📖 第 1 页 / 共 2 页
字号:
  gi = real(yi);  bi = imag(yi);
  gj = real(yj);  bj = imag(yj);

  vi = DAE.V(i);
  vj = DAE.V(j);
  vij = vi.*vj;
  vi2 = vi.*vi;
  vj2 = vj.*vj;

  ka1 = ga.*cij-ba.*sij;
  ka2 = ba.*cij+ga.*sij;
  kb1 = gb.*cij+bb.*sij;
  kb2 = bb.*cij-gb.*sij;

  refij = gi.*vi2 - ka1.*vij;
  imfij = bi.*vi2 - ka2.*vij;
  refji = gi.*vj2 - kb1.*vij;
  imfji = bi.*vj2 - kb2.*vij;

  Fij = refij.*refij + imfij.*imfij;
  Fji = refji.*refji + imfji.*imfji;

  % ==========================================================================
  % Jacobian matrix of the AC apparent power flows from bus i to bus j
  % ==========================================================================

  drefijdvi =  2*gi.*vi - ka1.*vj;
  drefijdvj = -ka1.*vi;
  drefijdti =  ka2.*vij;
  drefijdtj = -ka2.*vij;

  dimfijdvi =  2*bi.*vi - ka2.*vj;
  dimfijdvj = -ka2.*vi;
  dimfijdti = -ka1.*vij;
  dimfijdtj =  ka1.*vij;

  drefjidvj =  2*gj.*vj - kb1.*vi;
  drefjidvi = -kb1.*vj;
  drefjidti = -kb2.*vij;
  drefjidtj =  kb2.*vij;

  dimfjidvj =  2*bj.*vj - kb2.*vi;
  dimfjidvi = -kb2.*vj;
  dimfjidti =  kb1.*vij;
  dimfjidtj = -kb1.*vij;

  Jij = [sparse(nl,Line.from, 2*(refij.*drefijdti+imfij.*dimfijdti), Line.n,Bus.n)- ...
         sparse(nl,Line.to,   2*(refij.*drefijdti+imfij.*dimfijdti), Line.n,Bus.n), ...
         sparse(nl,Line.from, 2*(refij.*drefijdvi+imfij.*dimfijdvi), Line.n,Bus.n)+ ...
         sparse(nl,Line.to,   2*(refij.*drefijdvj+imfij.*dimfijdvj), Line.n,Bus.n)];

  Jji = [sparse(nl,Line.from, 2*(refji.*drefjidti+imfji.*dimfjidti), Line.n,Bus.n)- ...
         sparse(nl,Line.to,   2*(refji.*drefjidti+imfji.*dimfjidti), Line.n,Bus.n), ...
         sparse(nl,Line.from, 2*(refji.*drefjidvi+imfji.*dimfjidvi), Line.n,Bus.n)+ ...
         sparse(nl,Line.to,   2*(refji.*drefjidvj+imfji.*dimfjidvj), Line.n,Bus.n)];

  % ==========================================================================
  % Hessian matrix of the AC apparent power flows from bus i to bus j
  % ==========================================================================

  % - - - - - - - - - - - - - - - - - - -
  d2refijdvidvi =  2*gi;
  d2refijdvidvj = -ka1;
  d2refijdvidti =  ka2.*vj;
  d2refijdvidtj = -ka2.*vj;

  d2refijdvjdvi = -ka1;
  d2refijdvjdvj =  zeros(Line.n,1);
  d2refijdvjdti =  ka2.*vi;
  d2refijdvjdtj = -ka2.*vi;

  d2refijdtidvi =  ka2.*vj;
  d2refijdtidvj =  ka2.*vi;
  d2refijdtidti =  ka1.*vij;
  d2refijdtidtj = -ka1.*vij;

  d2refijdtjdvi = -ka2.*vj;
  d2refijdtjdvj = -ka2.*vi;
  d2refijdtjdti = -ka1.*vij;
  d2refijdtjdtj =  ka1.*vij;
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  d2imfijdvidvi =  2*bi;
  d2imfijdvidvj = -ka2;
  d2imfijdvidti = -ka1.*vj;
  d2imfijdvidtj =  ka1.*vj;

  d2imfijdvjdvi = -ka2;
  d2imfijdvjdvj =  zeros(Line.n,1);
  d2imfijdvjdti = -ka1.*vi;
  d2imfijdvjdtj =  ka1.*vi;

  d2imfijdtidvi = -ka1.*vj;
  d2imfijdtidvj = -ka1.*vi;
  d2imfijdtidti =  ka2.*vij;
  d2imfijdtidtj = -ka2.*vij;

  d2imfijdtjdvi =  ka1.*vj;
  d2imfijdtjdvj =  ka1.*vi;
  d2imfijdtjdti = -ka2.*vij;
  d2imfijdtjdtj =  ka2.*vij;
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  d2refjidvjdvj =  2*gj;
  d2refjidvjdvi = -kb1;
  d2refjidvjdti = -kb2.*vi;
  d2refjidvjdtj =  kb2.*vi;

  d2refjidvidvj = -kb1;
  d2refjidvidvi =  zeros(Line.n,1);
  d2refjidvidti = -kb2.*vj;
  d2refjidvidtj =  kb2.*vj;

  d2refjidtidvi = -kb2.*vj;
  d2refjidtidvj = -kb2.*vi;
  d2refjidtidti =  kb1.*vij;
  d2refjidtidtj = -kb1.*vij;

  d2refjidtjdvi =  kb2.*vj;
  d2refjidtjdvj =  kb2.*vi;
  d2refjidtjdti = -kb1.*vij;
  d2refjidtjdtj =  kb1.*vij;
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  d2imfjidvjdvj =  2*bj;
  d2imfjidvjdvi = -kb2;
  d2imfjidvjdti =  kb1.*vi;
  d2imfjidvjdtj = -kb1.*vi;

  d2imfjidvidvj = -kb2;
  d2imfjidvidvi =  zeros(Line.n,1);
  d2imfjidvidti =  kb1.*vj;
  d2imfjidvidtj = -kb1.*vj;

  d2imfjidtidvi =  kb1.*vj;
  d2imfjidtidvj =  kb1.*vi;
  d2imfjidtidti =  kb2.*vij;
  d2imfjidtidtj = -kb2.*vij;

  d2imfjidtjdvi = -kb1.*vj;
  d2imfjidtjdvj = -kb1.*vi;
  d2imfjidtjdti = -kb2.*vij;
  d2imfjidtjdtj =  kb2.*vij;
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  rehijtiti =  2*mu1.*(drefijdti.*drefijdti+refij.*d2refijdtidti);
  rehijtitj =  2*mu1.*(drefijdti.*drefijdtj+refij.*d2refijdtidtj);
  rehijtjti =  2*mu1.*(drefijdtj.*drefijdti+refij.*d2refijdtjdti);
  rehijtjtj =  2*mu1.*(drefijdtj.*drefijdtj+refij.*d2refijdtjdtj);

  rehijtivi =  2*mu1.*(drefijdti.*drefijdvi+refij.*d2refijdtidvi);
  rehijtivj =  2*mu1.*(drefijdti.*drefijdvj+refij.*d2refijdtidvj);
  rehijtjvi =  2*mu1.*(drefijdtj.*drefijdvi+refij.*d2refijdtjdvi);
  rehijtjvj =  2*mu1.*(drefijdtj.*drefijdvj+refij.*d2refijdtjdvj);

  rehijviti =  2*mu1.*(drefijdvi.*drefijdti+refij.*d2refijdvidti);
  rehijvitj =  2*mu1.*(drefijdvi.*drefijdtj+refij.*d2refijdvidtj);
  rehijvjti =  2*mu1.*(drefijdvj.*drefijdti+refij.*d2refijdvjdti);
  rehijvjtj =  2*mu1.*(drefijdvj.*drefijdtj+refij.*d2refijdvjdtj);

  rehijvivi =  2*mu1.*(drefijdvi.*drefijdvi+refij.*d2refijdvidvi);
  rehijvivj =  2*mu1.*(drefijdvi.*drefijdvj+refij.*d2refijdvidvj);
  rehijvjvi =  2*mu1.*(drefijdvj.*drefijdvi+refij.*d2refijdvjdvi);
  rehijvjvj =  2*mu1.*(drefijdvj.*drefijdvj+refij.*d2refijdvjdvj);
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  imhijtiti =  2*mu1.*(dimfijdti.*dimfijdti+imfij.*d2imfijdtidti);
  imhijtitj =  2*mu1.*(dimfijdti.*dimfijdtj+imfij.*d2imfijdtidtj);
  imhijtjti =  2*mu1.*(dimfijdtj.*dimfijdti+imfij.*d2imfijdtjdti);
  imhijtjtj =  2*mu1.*(dimfijdtj.*dimfijdtj+imfij.*d2imfijdtjdtj);

  imhijtivi =  2*mu1.*(dimfijdvi.*dimfijdti+imfij.*d2imfijdtidvi);
  imhijtivj =  2*mu1.*(dimfijdvj.*dimfijdti+imfij.*d2imfijdtidvj);
  imhijtjvi =  2*mu1.*(dimfijdvi.*dimfijdtj+imfij.*d2imfijdtjdvi);
  imhijtjvj =  2*mu1.*(dimfijdvj.*dimfijdtj+imfij.*d2imfijdtjdvj);

  imhijviti =  2*mu1.*(dimfijdvi.*dimfijdti+imfij.*d2imfijdvidti);
  imhijvitj =  2*mu1.*(dimfijdvi.*dimfijdtj+imfij.*d2imfijdvidtj);
  imhijvjti =  2*mu1.*(dimfijdvj.*dimfijdti+imfij.*d2imfijdvjdti);
  imhijvjtj =  2*mu1.*(dimfijdvj.*dimfijdtj+imfij.*d2imfijdvjdtj);

  imhijvivi =  2*mu1.*(dimfijdvi.*dimfijdvi+imfij.*d2imfijdvidvi);
  imhijvivj =  2*mu1.*(dimfijdvi.*dimfijdvj+imfij.*d2imfijdvidvj);
  imhijvjvi =  2*mu1.*(dimfijdvj.*dimfijdvi+imfij.*d2imfijdvjdvi);
  imhijvjvj =  2*mu1.*(dimfijdvj.*dimfijdvj+imfij.*d2imfijdvjdvj);
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  rehjititi =  2*mu2.*(drefjidti.*drefjidti+refji.*d2refjidtidti);
  rehjititj =  2*mu2.*(drefjidti.*drefjidtj+refji.*d2refjidtidtj);
  rehjitjti =  2*mu2.*(drefjidtj.*drefjidti+refji.*d2refjidtjdti);
  rehjitjtj =  2*mu2.*(drefjidtj.*drefjidtj+refji.*d2refjidtjdtj);

  rehjitivi =  2*mu2.*(drefjidvi.*drefjidti+refji.*d2refjidtidvi);
  rehjitivj =  2*mu2.*(drefjidvj.*drefjidti+refji.*d2refjidtidvj);
  rehjitjvi =  2*mu2.*(drefjidvi.*drefjidtj+refji.*d2refjidtjdvi);
  rehjitjvj =  2*mu2.*(drefjidvj.*drefjidtj+refji.*d2refjidtjdvj);

  rehjiviti =  2*mu2.*(drefjidvi.*drefjidti+refji.*d2refjidvidti);
  rehjivitj =  2*mu2.*(drefjidvi.*drefjidtj+refji.*d2refjidvidtj);
  rehjivjti =  2*mu2.*(drefjidvj.*drefjidti+refji.*d2refjidvjdti);
  rehjivjtj =  2*mu2.*(drefjidvj.*drefjidtj+refji.*d2refjidvjdtj);

  rehjivivi =  2*mu2.*(drefjidvi.*drefjidvi+refji.*d2refjidvidvi);
  rehjivivj =  2*mu2.*(drefjidvi.*drefjidvj+refji.*d2refjidvidvj);
  rehjivjvi =  2*mu2.*(drefjidvj.*drefjidvi+refji.*d2refjidvjdvi);
  rehjivjvj =  2*mu2.*(drefjidvj.*drefjidvj+refji.*d2refjidvjdvj);
  % - - - - - - - - - - - - - - - - - - -

  % - - - - - - - - - - - - - - - - - - -
  imhjititi =  2*mu2.*(dimfjidti.*dimfjidti+imfji.*d2imfjidtidti);
  imhjititj =  2*mu2.*(dimfjidti.*dimfjidtj+imfji.*d2imfjidtidtj);
  imhjitjti =  2*mu2.*(dimfjidtj.*dimfjidti+imfji.*d2imfjidtjdti);
  imhjitjtj =  2*mu2.*(dimfjidtj.*dimfjidtj+imfji.*d2imfjidtjdtj);

  imhjitivi =  2*mu2.*(dimfjidvi.*dimfjidti+imfji.*d2imfjidtidvi);
  imhjitivj =  2*mu2.*(dimfjidvj.*dimfjidti+imfji.*d2imfjidtidvj);
  imhjitjvi =  2*mu2.*(dimfjidvi.*dimfjidtj+imfji.*d2imfjidtjdvi);
  imhjitjvj =  2*mu2.*(dimfjidvj.*dimfjidtj+imfji.*d2imfjidtjdvj);

  imhjiviti =  2*mu2.*(dimfjidvi.*dimfjidti+imfji.*d2imfjidvidti);
  imhjivitj =  2*mu2.*(dimfjidvi.*dimfjidtj+imfji.*d2imfjidvidtj);
  imhjivjti =  2*mu2.*(dimfjidvj.*dimfjidti+imfji.*d2imfjidvjdti);
  imhjivjtj =  2*mu2.*(dimfjidvj.*dimfjidtj+imfji.*d2imfjidvjdtj);

  imhjivivi =  2*mu2.*(dimfjidvi.*dimfjidvi+imfji.*d2imfjidvidvi);
  imhjivivj =  2*mu2.*(dimfjidvi.*dimfjidvj+imfji.*d2imfjidvidvj);
  imhjivjvi =  2*mu2.*(dimfjidvj.*dimfjidvi+imfji.*d2imfjidvjdvi);
  imhjivjvj =  2*mu2.*(dimfjidvj.*dimfjidvj+imfji.*d2imfjidvjdvj);
  % - - - - - - - - - - - - - - - - - - -

  Hij = [sparse(Line.from,Line.from,rehijtiti+imhijtiti,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehijtitj+imhijtitj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehijtjti+imhijtjti,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehijtjtj+imhijtjtj,Bus.n, Bus.n), ...
         sparse(Line.from,Line.from,rehijtivi+imhijtivi,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehijtivj+imhijtivj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehijtjvi+imhijtjvi,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehijtjvj+imhijtjvj,Bus.n, Bus.n); ...
         sparse(Line.from,Line.from,rehijviti+imhijviti,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehijvitj+imhijvitj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehijvjti+imhijvjti,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehijvjtj+imhijvjtj,Bus.n, Bus.n), ...
         sparse(Line.from,Line.from,rehijvivi+imhijvivi,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehijvivj+imhijvivj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehijvjvi+imhijvjvi,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehijvjvj+imhijvjvj,Bus.n, Bus.n)];

  Hji = [sparse(Line.from,Line.from,rehjititi+imhjititi,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehjititj+imhjititj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehjitjti+imhjitjti,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehjitjtj+imhjitjtj,Bus.n, Bus.n), ...
         sparse(Line.from,Line.from,rehjitivi+imhjitivi,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehjitivj+imhjitivj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehjitjvi+imhjitjvi,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehjitjvj+imhjitjvj,Bus.n, Bus.n); ...
         sparse(Line.from,Line.from,rehjiviti+imhjiviti,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehjivitj+imhjivitj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehjivjti+imhjivjti,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehjivjtj+imhjivjtj,Bus.n, Bus.n), ...
         sparse(Line.from,Line.from,rehjivivi+imhjivivi,Bus.n, Bus.n) + ...
         sparse(Line.from,Line.to,  rehjivivj+imhjivivj,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.from,rehjivjvi+imhjivjvi,Bus.n, Bus.n) + ...
         sparse(Line.to,  Line.to,  rehjivjvj+imhjivjvj,Bus.n, Bus.n)];

end

⌨️ 快捷键说明

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