收敛了。但是精度还有点问题,需要调一下。感觉是有一步没更新。

Signed-off-by: facat <facat@ipso.laptop>
This commit is contained in:
facat 2014-04-17 00:32:05 +08:00
commit f55585e444
12 changed files with 560 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.asv
/feeder13
*.mexw32

25
Jacobi.m Normal file
View File

@ -0,0 +1,25 @@
function [jaco]=Jacobi(Balance,busNum,QGi,Volt,YdotSinVolt,YdotCosVolt,diag_Volt_YdotSin,diag_Volt_YdotCos)
diag_YdotSinVolt_=diag(YdotSinVolt);
diag_YdotCosVolt_=diag(YdotCosVolt);
dPdTyta=diag_Volt_YdotSin*diag(Volt)-diag_YdotSinVolt_*diag(Volt); %
dQdTyta=-diag_Volt_YdotCos*diag(Volt)+diag_YdotCosVolt_*diag(Volt);%dQ/dThyta
dPdV=diag_YdotCosVolt_+diag_Volt_YdotCos;%dP/dV
dQdV=diag_YdotSinVolt_+diag_Volt_YdotSin;%dQ/dV
%%
dPdTyta(Balance,:)=0;
dPdTyta(:,Balance)=0;
dPdTyta=dPdTyta+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
dQdTyta(:,Balance)=0;
dPdV(Balance,:)=0;
%% PV
dQdV(QGi,:)=0;
dQdV(:,QGi)=0;
dQdV=dQdV+sparse(QGi,QGi,ones(length(QGi),1),busNum,busNum);
dQdTyta(QGi,:)=0;
dPdV(:,QGi)=0;
% jaco=[
% dPdV,dPdTyta;
% dQdV,dQdTyta;
% ];
jaco=cat(1,cat(2,dPdV,dPdTyta),cat(2,dQdV,dQdTyta));
end

5
Modify.m Normal file
View File

@ -0,0 +1,5 @@
function [Volt, Vangle]=Modify(Volt,Vangle,dV,dVangle,optimalu)
%Volt=Volt+Volt.*dV;
Volt=Volt+optimalu*dV;
Vangle=Vangle+optimalu*dVangle;
end

16
Solv.m Normal file
View File

@ -0,0 +1,16 @@
function [dV, dVangle]=Solv(busNum,jaco,dP,dQ)
%y=klu (jaco, '\', full(-[dP;dQ]));
y=jaco\(-[dP;dQ]);
% [L,U] = luinc(jaco,1e-3); %luinc(A,'0')ILU
% tol=1e-5; %
% restart=30; % 30-50
% maxit=100; %
% [x,flag]=gmres(jaco,-[dP;dQ],restart,tol,maxit);
% y=sparse(x);
y=sparse(y);
dV=y(1:busNum);
dVangle=y(busNum+1:end);
end

27
Unbalance.m Normal file
View File

@ -0,0 +1,27 @@
function [dP, dQ, YdotSinVmf1, YdotCosVmf1, diag_Vmf1_YdotSin, diag_Vmf1_YdotCos]=Unbalance(Balance,busNum, ...
PQi,PG,QG,QGi,PD,QD,Vmf1,Vaf1,Y,Yangle,r,c,Vf2,If2,Vf0,If0,fsY1,Vf1)
%real(diag(Vmf1.*exp(1j*Vaf1))*(fsY1*(Vmf1.*exp(1j*Vaf1))));
% Y=abs(fsY1);
% [r,c,Yangle]=find(fsY1);
% Yangle=angle(Yangle);
% Vmf1=abs(Vf1);
% Vaf1=angle(Vf1);
t1=sparse(r,c,Vaf1(r)-Vaf1(c) -Yangle,busNum,busNum) ;
YdotSin=Y.* ( spfun(@sin,t1) );
YdotCos=Y.* ( spfun (@cos, t1 ) );
orderedPDPG=sparse(PQi,1,PD-PG,busNum,1); %
orderedQDQG=sparse(PQi,1,QD-QG,busNum,1); %
diag_Vmf1_YdotCos=diag(Vmf1)*YdotCos;
diag_Vmf1_YdotSin=diag(Vmf1)*YdotSin;
YdotCosVmf1=YdotCos*Vmf1;
YdotSinVmf1=YdotSin*Vmf1;
diag_Vmf1_YdotCosVmf1=diag_Vmf1_YdotCos*Vmf1;
diag_Vmf1_YdotSinVmf1=diag_Vmf1_YdotSin*Vmf1;
dP=diag_Vmf1_YdotCosVmf1+orderedPDPG+real(Vf2.*conj(If2)+Vf0.*conj(If0));
dQ=diag_Vmf1_YdotSinVmf1+orderedQDQG+imag(Vf2.*conj(If2)+Vf0.*conj(If0));
%orderedPDPG+real(Vf2.*conj(If2)+Vf0.*conj(If0))+real(diag(Vf1)*conj(fsY1*Vf1));
%dP=diag_Vmf1_YdotCosVmf1+orderedPDPG;
%dQ=diag_Vmf1_YdotSinVmf1+orderedQDQG;
dP(Balance)=0;
dQ(QGi)=0;
end

52
YMatrix.m Normal file
View File

@ -0,0 +1,52 @@
function [Y,Yangle,r,c,GB]=YMatrix(Busnum,lineI,lineJ,lineR,lineX,lineB2,groundbranchI,groundbranchB,transI,transJ,transR,transX,transK)
%%
% t1=-lineR./(lineR.^2+lineX.^2);%
% t2=lineX./(lineR.^2+lineX.^2);%
% G = +sparse(lineI,lineJ,t1,Busnum,Busnum) + sparse(lineJ,lineI,t1,Busnum,Busnum);
% B = sparse(lineI,lineJ,t2,Busnum,Busnum)+sparse(lineJ,lineI,t2,Busnum,Busnum);
% G = G - sparse(1:Busnum,1:Busnum,sum(G,2)');
% B = B - sparse(1:Busnum,1:Busnum,sum(B,2)');
t1=lineR+1j*lineX;
t2=1./t1;
% realT2=real(t2);
% imagT2=imag(t2);
GB=sparse(lineI,lineJ,-t2,Busnum,Busnum) + sparse(lineJ,lineI,-t2,Busnum,Busnum);
GB=GB-sparse(1:Busnum,1:Busnum,sum(GB,2));
% G = +sparse(lineI,lineJ,-realT2,Busnum,Busnum) + sparse(lineJ,lineI,-realT2,Busnum,Busnum);
% B = sparse(lineI,lineJ,-imagT2,Busnum,Busnum)+sparse(lineJ,lineI,-imagT2,Busnum,Busnum);
% G = G - sparse(1:Busnum,1:Busnum,sum(G,2)');
% B = B - sparse(1:Busnum,1:Busnum,sum(B,2)');
% G=real(GB);
% B=imag(GB);
%%
% t3=sparse(lineI,lineI,lineB2,Busnum,Busnum)+sparse(lineJ,lineJ,lineB2,Busnum,Busnum);%
%B=B+t3;
t1=1j*lineB2;
GB=GB+sparse(lineI,lineI,t1,Busnum,Busnum)+sparse(lineJ,lineJ,t1,Busnum,Busnum);
% B=imag(GB);
%%
if isempty(groundbranchI)==0 %
% B=B+sparse(groundbranchI,groundbranchI,groundbranchB,Busnum,Busnum);
GB=GB+sparse(groundbranchI,groundbranchI,1j*groundbranchB,Busnum,Busnum);
% B=imag(GB);
end
%%
if isempty(transI)==0 %
% t1 = -transR./(transR.^2+transX.^2);
% t2 = transX./(transR.^2+transX.^2);
t1=1./(transR+1j*transX);
% G = G+sparse(transI,transJ,t1./transK,Busnum,Busnum)+sparse(transJ,transI,t1./transK,Busnum,Busnum)-sparse(transI,transI,t1./transK./transK,Busnum,Busnum)-sparse(transJ,transJ,t1,Busnum,Busnum);
% B = B+sparse(transI,transJ,t2./transK,Busnum,Busnum)+sparse(transJ,transI,t2./transK,Busnum,Busnum)-sparse(transI,transI,t2./transK./transK,Busnum,Busnum)-sparse(transJ,transJ,t2,Busnum,Busnum);
GB=GB+sparse(transI,transJ,-t1./transK,Busnum,Busnum)+sparse(transJ,transI,-t1./transK,Busnum,Busnum)+sparse(transI,transI,t1./transK./transK,Busnum,Busnum)+sparse(transJ,transJ,t1,Busnum,Busnum);
% G=real(GB);
% B=imag(GB);
end
%GB=G+1j*B;
Y = abs(GB);
[r,c,Yangle] = find(GB);
Yangle=angle(Yangle);
%Yangle=angle(GB);
%Angle = angle(GB(GB~=0));
end

23
Yf2p.m Normal file
View File

@ -0,0 +1,23 @@
function [ phaseABCY ] = Yf2p( fs0,fs1,fs2 )
[r,c]=find(fs1);
a=exp(1j*2*pi/3);
Tp2f=1/3*[1 1 1;
1 a a^2;
1 a^2 a];
Tf2p=inv(Tp2f);
%
% Tf2p=[1 1 1;
% 1 a^2 a;
% 1 a a^2];
busNum=size(fs0,1);
phaseABCY=sparse(3*busNum,3*busNum);
for I=1:length(r)
v0=fs0(r(I),c(I));
v1=fs1(r(I),c(I));
v2=fs2(r(I),c(I));
pabc=Tf2p*diag([v0,v1,v2])*Tp2f;
[pr,pc,pv]=find(pabc);
phaseABCY=phaseABCY+sparse(pr+3*(r(I)-1),pc+3*(c(I)-1),pv,3*busNum,3*busNum);
end
end

43
dataRead.m Normal file
View File

@ -0,0 +1,43 @@
function [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,nodeNum,Balance,phaseABCY] = dataRead(lineZ,dataFile )
data=dlmread(dataFile);
zeroEntries=find(data(:,1)==0);
lines=data(zeroEntries(1)+1:zeroEntries(2)-1,:);
[setIJ,nodeNum]=numberNode(lines);
Balance=data(1,1);
Balance=nodeNum(setIJ==Balance);
%%three-phase
phaseABCY=sparse(3*length(nodeNum),3*length(nodeNum));
%% 601 begin
[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,601);
%phaseABCY ÈýÏàµÄµ¼ÄɾØÕó3n x 3n ά
fsY0=fs30;
fsY1=fs31;
fsY2=fs32;
phaseABCY=phaseABCY+retphaseABCY;
% 601 end
%% 602 begin
[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,602);
fsY0=fsY0+fs30;
fsY1=fsY1+fs31;
fsY2=fsY2+fs32;
phaseABCY=phaseABCY+retphaseABCY;
% 602 end
%% spot load
busNum=length(nodeNum);
spotloads=data(zeroEntries(3)+1:zeroEntries(4)-1,:);
spotloads(:,2:end)=spotloads(:,2:end)/1000;
phaseASpotLoadP=sparse(busNum,1);
phaseBSpotLoadP=sparse(busNum,1);
phaseCSpotLoadP=sparse(busNum,1);
phaseASpotLoadQ=sparse(length(nodeNum),1);
phaseBSpotLoadQ=sparse(length(nodeNum),1);
phaseCSpotLoadQ=sparse(length(nodeNum),1);
phaseASpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,2);
phaseBSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,4);
phaseCSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,6);
phaseASpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,3);
phaseBSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,5);
phaseCSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,7);
end

89
lineWithConfig.m Normal file
View File

@ -0,0 +1,89 @@
function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config )
phase3Entry=find(lines(:,1)==config);
phase3Line=lines(phase3Entry,:);
phase3Line(:,4)=phase3Line(:,4)/1000;
entry=find(lineZ(:,1)==config);
phase3R=lineZ(entry+1:entry+3,:);
phase3X=lineZ(entry+5:entry+7,:);
phase3B2=lineZ(entry+9:entry+11,:);
phase3Y=1./(phase3R+1j*phase3X);%
%phase3Y=1./(1j*phase3X);%
%
phase3Y(1,3)=phase3Y(1,2);
phase3Y(3,1)=phase3Y(2,1);
phase3Y(3,2)=phase3Y(3,1);
phase3Y(2,3)=phase3Y(1,3);
phase3Y(2,2)=phase3Y(1,1);
phase3Y(3,3)=phase3Y(1,1);
%
baseHighU=4.16;
baseLowU=0.48;
baseS=1;
baseY=baseS/(baseHighU^2);
phase3Y=phase3Y/baseY;
%Fortescue
%
a=exp(1j*2*pi/3);
Tp2f=1/3*[1 1 1;
1 a a^2;
1 a^2 a];
Tf2p=inv(Tp2f);
%
% Tf2p=[1 1 1;
% 1 a^2 a;
% 1 a a^2];
fs3Y=Tp2f*phase3Y*Tf2p;
Zl=phase3Y(1,1);
Zm=phase3Y(2,1);
fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%1/3IEEE
fs3Y(abs(fs3Y)<1e-5)=0;
fs3Y=sparse(fs3Y);
lineNodeI=zeros(length(phase3Line(:,2) ) ,1);
lineNodeJ=zeros(length(phase3Line(:,2) ) ,1);
for I=1:length(lineNodeI)
lineNodeI(I)=nodeNum(setIJ==phase3Line(I,2) );
lineNodeJ(I)=nodeNum(setIJ==phase3Line(I,3) );
end
busNum=length(nodeNum);
%
phaseABCY=sparse(busNum*3,busNum*3);
for I=1:length(phase3Line(:,4))
[phase3Yr,phase3Yc,phase3Yv]=find(phase3Y./phase3Line(I,4));
offsetI=phase3Yr+3*(lineNodeI(I)-1);
offsetJ=phase3Yc+3*(lineNodeJ(I)-1);
phaseABCY=phaseABCY+sparse(offsetI,offsetJ,-phase3Yv,busNum*3,busNum*3);
phaseABCY=phaseABCY+sparse(offsetJ,offsetI,-phase3Yv,busNum*3,busNum*3);
%1
diagY=sum(phaseABCY(:,1:3:end),2);
offsetI=1:busNum*3;
offsetJ=zeros(busNum*3,1);
for J=0:busNum*3-1
offsetJ(J+1)=floor(J/3)*3+1;
end
phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3);
%2
diagY=sum(phaseABCY(:,2:3:end),2);
offsetJ=zeros(busNum*3,1);
for J=0:busNum*3-1
offsetJ(J+1)=floor(J/3)*3+2;
end
phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3);
%3
diagY=sum(phaseABCY(:,3:3:end),2);
offsetJ=zeros(busNum*3,1);
for J=0:busNum*3-1
offsetJ(J+1)=floor(J/3)*3+3;
end
phaseABCY=phaseABCY-sparse(offsetI,offsetJ,diagY,busNum*3,busNum*3);
end
fs30=sparse(lineNodeI,lineNodeJ,-fs3Y(1,1)./phase3Line(:,4),busNum,busNum);
fs30=fs30+sparse(lineNodeJ,lineNodeI,-fs3Y(1,1)./phase3Line(:,4),busNum,busNum);
fs30=fs30-sparse(1:busNum,1:busNum,sum(fs30,2));
fs31=sparse(lineNodeI,lineNodeJ,-fs3Y(2,2)./phase3Line(:,4),busNum,busNum);
fs31=fs31+sparse(lineNodeJ,lineNodeI,-fs3Y(2,2)./phase3Line(:,4),busNum,busNum);
fs31=fs31-sparse(1:busNum,1:busNum,sum(fs31,2));
fs32=sparse(lineNodeI,lineNodeJ,-fs3Y(3,3)./phase3Line(:,4),busNum,busNum);
fs32=fs32+sparse(lineNodeJ,lineNodeI,-fs3Y(3,3)./phase3Line(:,4),busNum,busNum);
fs32=fs32-sparse(1:busNum,1:busNum,sum(fs32,2));
end

8
numberNode.m Normal file
View File

@ -0,0 +1,8 @@
function [ setIJ,nodeNum ] = numberNode( lines )
%%
setI=lines(:,2);
setJ=lines(:,3);
setIJ=union(setI,setJ);
nodeNum=(1:length(setIJ))';
end

4
readLineZ.m Normal file
View File

@ -0,0 +1,4 @@
function [ data ] = readLineZ( lineParaFile )
data=dlmread(lineParaFile);
end

265
run.m Normal file
View File

@ -0,0 +1,265 @@
clc
clear
lineZ=readLineZ('.\feeder13\lineParameter.txt');
[ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,nodeNum,Balance,phaseABCY]=dataRead(lineZ,'.\feeder13\data1.txt');
%fsY1(1,1)=fsY1(1,1)+1j*1e-10;
a=exp(1j*2*pi/3);
Tp2f=1/3*[1 1 1;
1 a a^2;
1 a^2 a];
Tf2p=inv(Tp2f);
fsY1amp=abs(fsY1);
[r,c,fsY1ang]=find(fsY1);
fsY1ang=angle(fsY1ang);
% fsY2amp=abs(fsY2);
% fsY0ang=angle(fsY0);
% fsY1ang=angle(fsY1);
% fsY2ang=angle(fsY2);
Pabc=phaseASpotLoadP+phaseBSpotLoadP+phaseCSpotLoadP;
Qabc=phaseASpotLoadQ+phaseBSpotLoadQ+phaseCSpotLoadQ;
busNum=length(phaseASpotLoadP);
%
Vmf1=sparse(ones(busNum,1));
Vmf2=sparse(ones(busNum,1));
Vmf0=sparse(busNum,1);
Vaf1=sparse(busNum,1);
Vaf2=sparse(busNum,1);
Vaf0=sparse(busNum,1);
%
PQi=nodeNum;
PG=sparse(busNum,1);
QG=sparse(busNum,1);
QGi=[Balance];
PD=Pabc/3;
QD=Qabc/3;
maxD=100000;%
EPS=1e-5;
k=0;
kmax=20;
%%F
phaseABCYalt=Yf2p( fsY0,fsY1,fsY2 );
%%
Vf1=-ones(busNum,1);
fsY11=fsY1;
fsY00=fsY0;
fsY22=fsY2;
while(k<=kmax && maxD> EPS)
k=k+1;
% %
% Vf2=Vmf2.*exp(1j*Vaf2) ;
% If2=fsY2*(Vf2);
% %
% Vf0=Vmf0.*exp(1j*Vaf0) ;
% If0=fsY0*(Vmf0.*exp(1j*Vaf0) );
%
VoltpABC=Tf2p*conj([ (Vmf0.*exp(1j*Vaf0))'; (Vmf1.*exp(1j*Vaf1))'; (Vmf2.*exp(1j*Vaf2))']);
VoltpA=conj(VoltpABC(1,:)');
CurpA=conj((phaseASpotLoadP+1j*phaseASpotLoadQ)./VoltpA);
VoltpB=conj(VoltpABC(2,:)');
CurpB=conj((phaseBSpotLoadP+1j*phaseBSpotLoadQ)./VoltpB);
VoltpC=conj(VoltpABC(3,:)');
CurpC=conj((phaseCSpotLoadP+1j*phaseCSpotLoadQ)./VoltpC);
f012=Tp2f*conj([CurpA';CurpB';CurpC']);
If0=conj(f012(1,:)');
If1=conj(f012(2,:)');
If2=conj(f012(3,:)');
%0
fsY2(Balance,:)=0;
fsY2(:,Balance)=0;
fsY2=fsY2+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
If2(Balance)=0;
Vf2=fsY2\If2;
Vmf2=abs(Vf2);
Vaf2=angle(Vf2);
%If1(Balance)=1;
%fsY1(Balance,:)=0;
%fsY1(:,Balance)=0;
%fsY1=fsY1+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
%Vf1=fsY1\If1;%
%0
fsY0(Balance,:)=0;
fsY0(:,Balance)=0;
fsY0=fsY0+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
If0(Balance)=0;
Vf0=fsY0\If0;
Vmf0=abs(Vf0);
Vaf0=angle(Vf0);
[dP, dQ, YdotSinVolt, YdotCosVolt, diag_Volt_YdotSin, diag_Volt_YdotCos]=Unbalance(Balance,busNum, ...
PQi,PG,QG,QGi,PD,QD,Vmf1,Vaf1,fsY1amp,fsY1ang,r,c,Vf2,If2,Vf0,If0,fsY11,Vf1);%
maxD=max([dP;dQ;]);
jaco=Jacobi(Balance,busNum,QGi,Vmf1,YdotSinVolt,YdotCosVolt,diag_Volt_YdotSin,diag_Volt_YdotCos);%
[dV, dVangle]=Solv(busNum,jaco,dP,dQ);%
[Vmf1, Vaf1]=Modify(Vmf1,Vaf1,dV,dVangle,1);
fprintf(' %d %f\n\n',k,full(maxD));
%%
%
VoltpABC=Tf2p*conj([ (Vmf0.*exp(1j*Vaf0))'; (Vmf1.*exp(1j*Vaf1))'; (Vmf2.*exp(1j*Vaf2))']);
VoltpA=conj(VoltpABC(1,:)');
CurpA=-conj((phaseASpotLoadP+1j*phaseASpotLoadQ)./VoltpA);
VoltpB=conj(VoltpABC(2,:)');
CurpB=-conj((phaseBSpotLoadP+1j*phaseBSpotLoadQ)./VoltpB);
VoltpC=conj(VoltpABC(3,:)');
CurpC=-conj((phaseCSpotLoadP+1j*phaseCSpotLoadQ)./VoltpC);
f012=Tp2f*conj([CurpA';CurpB';CurpC']);
If0=conj(f012(1,:)');
If1=conj(f012(2,:)');
If2=conj(f012(3,:)');
Vf0=fsY0\If0;
Vmf0=abs(Vf0);
Vaf0=angle(Vf0);
Vf2=fsY2\If2;
Vmf2=abs(Vf2);
Vaf2=angle(Vf2);
Vf1=Vmf1.*exp(1j*Vaf1);
%%
% VoltpABC=Tf2p*conj([ (Vmf0.*exp(1j*Vaf0))'; (Vmf1.*exp(1j*Vaf1))'; (Vmf2.*exp(1j*Vaf2))']);
% VoltpA=conj(VoltpABC(1,:)');
% CurpA=-conj((phaseASpotLoadP+1j*phaseASpotLoadQ)./VoltpA);
% VoltpB=conj(VoltpABC(2,:)');
% CurpB=-conj((phaseBSpotLoadP+1j*phaseBSpotLoadQ)./VoltpB);
% VoltpC=conj(VoltpABC(3,:)');
% CurpC=-conj((phaseCSpotLoadP+1j*phaseCSpotLoadQ)./VoltpC);
% f012=Tp2f*conj([CurpA';CurpB';CurpC']);
% If0=conj(f012(1,:)');
% If1=conj(f012(2,:)');
% If2=conj(f012(3,:)');
%%
% If0(Balance)=-sum(If0);
% If2(Balance)=-sum(If2);
% If1(Balance)=-sum(If1);
%%
end
%%
Vtest=[1.02*exp(1j*0);1.01*exp(1j*0.21);1.00*exp(1j*-0.13)];%
%Itest=[0.12*exp(1j*0.15);0.09*exp(1j*1.21);0.81*exp(1j*-0.43)];%
Ytest=diag([0.75*exp(1j*1.7);33*exp(1j*2.1);12*exp(1j*-3)]);
Itest=Ytest*Vtest;
Stest=Vtest.*conj(Itest);%
sum(Stest)/3;
sum((Tp2f*Vtest).*conj(Tp2f*Itest));
YYtest=Ytest;
Ytest(2,:)=0;
Ytest(:,2)=0;
Ytest(2,2)=1;
tttt=Itest(2);
Itest(2)=1.01*exp(1j*0.21);
tV=Ytest\Itest;
Itest(2)=tttt;
YYtest*tV;
%%
(Vf0.*conj(fsY00*Vf0)+Vf1.*conj(fsY11*Vf1)+Vf2.*conj(fsY22*Vf2))*3;
(Vf1.*conj(fsY11*Vf1))/3;
conj(Tf2p*[If0(2);If1(2);If2(2)]).*(Tf2p*[Vf0(2);Vf1(2);Vf2(2)]);
%%
If1=fsY11*Vf1;
If1(Balance)=Vf1(Balance);
fsY1(Balance,:)=0;
fsY1(:,Balance)=0;
% fsY1=fsY1+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
fsY1(3,3)=1;
%VV1=fsY1(1:2,1:2)\If1(1:2);%
VV1=fsY1\If1;%
%Vf1=Vmf1.*exp(1j*Vaf1);
If0(Balance)=-sum(If0);
If2(Balance)=-sum(If2);
If1(Balance)=-sum(If1);
fsY11*VV1;
%%
IpABC=Tf2p*conj([If0';If1';If2']);
%
VoltpABC=Tf2p*conj([ (Vmf0.*exp(1j*Vaf0))'; (Vmf1.*exp(1j*Vaf1))'; (Vmf2.*exp(1j*Vaf2))']);
VoltpABC(:,1);
Tp2f*VoltpABC(:,1);
Tf2p*Tp2f*VoltpABC(:,1);
disp([' A B C'])
abs(VoltpABC')
VoltpA=VoltpABC(1,:);
VoltpB=VoltpABC(2,:);
VoltpC=VoltpABC(3,:);
Vp3=sparse(busNum*3,1);
Vp3(1:3:end)=VoltpA;
Vp3(2:3:end)=VoltpB;
Vp3(3:3:end)=VoltpC;
Ip3=phaseABCY*Vp3;
Sp3=Vp3.*conj(Ip3);
VoltpABC.*conj(IpABC);
I2inj=IpABC(:,2);
aa=phaseABCY(1:3,1:3)*[VoltpA(1);VoltpB(1);VoltpC(1)];
a1=Tf2p*diag([fsY0(2,1),fsY1(2,1),fsY2(2,1)])*[Vf0(1);Vf1(1);Vf2(1)];
a2=Tf2p*diag([fsY0(2,2),fsY1(2,2),fsY2(2,2)])*[Vf0(2);Vf1(2);Vf2(2)];
a3=Tf2p*diag([fsY0(2,3),fsY1(2,3),fsY2(2,3)])*[Vf0(3);Vf1(3);Vf2(3)];
bb=0;
a1=diag([fsY0(2,2)])*[Vf0(2)];
a2=diag([fsY1(2,2)])*[Vf1(2)];
a3=diag([fsY2(2,2)])*[Vf2(2)];
bb=bb+1*[a1;a2;a3];
a1=diag([fsY0(2,1)])*[Vf0(1)];
a2=diag([fsY1(2,1)])*[Vf1(1)];
a3=diag([fsY2(2,1)])*[Vf2(1)];
bb=bb+1*[a1;a2;a3];
a1=diag([fsY0(2,3)])*[Vf0(3)];
a2=diag([fsY1(2,3)])*[Vf1(3)];
a3=diag([fsY2(2,3)])*[Vf2(3)];
bb=bb+1*[a1;a2;a3];
b=0;
aa=phaseABCY(4:6,4:6)*[VoltpA(2);VoltpB(2);VoltpC(2)];
b=b+aa;
aa=phaseABCY(4:6,1:3)*[VoltpA(1);VoltpB(1);VoltpC(1)];
b=b+aa;
aa=phaseABCY(4:6,7:9)*[VoltpA(3);VoltpB(3);VoltpC(3)];
b=b+aa;
aa=phaseABCY(4:6,:)*[VoltpA(1);VoltpB(1);VoltpC(1);VoltpA(2);VoltpB(2);VoltpC(2);VoltpA(3);VoltpB(3);VoltpC(3)];
conj(aa).*[VoltpA(2);VoltpB(2);VoltpC(2)];
conj(a1+a2+a3).*[VoltpA(2);VoltpB(2);VoltpC(2)];
aa=[15.3502321158364 - 26.9339348391836i,30.6661479563297 - 84.3093119155620i,30.6661479563297 - 84.3093119155620i;30.6661479563297 - 84.3093119155620i,15.3502321158364 - 26.9339348391836i,30.6661479563297 - 84.3093119155620i;30.6661479563297 - 84.3093119155620i,30.6661479563297 - 84.3093119155620i,15.3502321158364 - 26.9339348391836i;];
aa*Vp3(1:3);
fs=Tp2f*aa*Tf2p;
phaseABCY(7,:)=0;
phaseABCY(:,7)=0;
phaseABCY(8,:)=0;
phaseABCY(:,8)=0;
phaseABCY(9,:)=0;
phaseABCY(:,9)=0;
phaseABCY(7,7)=1;
phaseABCY(8,8)=1;
phaseABCY(9,9)=1;
Ip3(7)=1;
Ip3(8)=-0.5 - 0.866025403784439i;
Ip3(9)=-0.5 + 0.866025403784439i;
inv(phaseABCY)*Ip3;
IppABC=sparse(9,1);
IppABC(1:3:end)=IpABC(1,:);
IppABC(2:3:end)=IpABC(2,:);
IppABC(3:3:end)=IpABC(3,:);
IppABC(7)=1;
IppABC(8)=-0.5 - 0.866025403784439i;
IppABC(9)=-0.5 + 0.866025403784439i;
inv(phaseABCY)*IppABC;
aa*Tf2p*[Vf0(1);Vf1(1);Vf2(1)]-Tf2p*[If0(1);If1(1);If2(1)];
diag([fsY0(1),fsY1(1),fsY2(1)])*[Vf0(1);Vf1(1);Vf2(1)]-[If0(1);If1(1);If2(1)];
Tp2f*diag([fsY0(1),fsY1(1),fsY2(1)])*Tf2p;
altY012=sparse(3,3);
altY012(1,1)=fsY0(1,1);
altY012(2,2)=fsY1(1,1);
altY012(3,3)=fsY2(1,1);
V11I=altY012*[Vf0(1);Vf1(1);Vf2(1)];
V11S=[VoltpA(1);VoltpB(1);VoltpC(1)].*conj(Tf2p*altY012*Tp2f*[VoltpA(1);VoltpB(1);VoltpC(1)]);
altY012(1,1)=fsY0(1,2);
altY012(2,2)=fsY1(1,2);
altY012(3,3)=fsY2(1,2);
V12I=altY012*[Vf0(2);Vf1(2);Vf2(2)];
V12S=[VoltpA(1);VoltpB(1);VoltpC(1)].*conj(Tf2p*altY012*Tp2f*[VoltpA(1);VoltpB(1);VoltpC(1)]);
altY012(1,1)=fsY0(1,3);
altY012(2,2)=fsY1(1,3);
altY012(3,3)=fsY2(1,3);
V13I=altY012*[Vf0(3);Vf1(3);Vf2(3)];
V12S+V11S;
[VoltpA(1);VoltpB(1);VoltpC(1)].*(Tf2p*(V11I+V12I));
Tf2p*V11I;
altY012(1,1)=fsY0(1,1);
altY012(2,2)=fsY1(1,1);
altY012(3,3)=fsY2(1,1);
Tf2p*altY012*Tp2f*[VoltpA(1);VoltpB(1);VoltpC(1)];
Tf2p*[Vf0(1);Vf1(1);Vf2(1)];