📄 fm_flows.m
字号:
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 + -