2014-04-21 20:56:37 +08:00
|
|
|
|
function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config,baseHighU )
|
2014-04-17 00:32:05 +08:00
|
|
|
|
phase3Entry=find(lines(:,1)==config);
|
2014-04-22 21:33:05 +08:00
|
|
|
|
phase3Line=lines(phase3Entry,:);
|
|
|
|
|
|
phase3Line(:,4)=phase3Line(:,4)/1000;
|
|
|
|
|
|
entry=find(lineZ(:,1)==config);
|
|
|
|
|
|
if isempty(entry)
|
2014-04-21 20:56:37 +08:00
|
|
|
|
fs30=0;
|
|
|
|
|
|
fs31=0;
|
|
|
|
|
|
fs32=0;
|
|
|
|
|
|
phaseABCY=0;
|
|
|
|
|
|
fprintf('warning: line type %d not found.\n',config)
|
|
|
|
|
|
return;
|
|
|
|
|
|
end
|
2014-04-17 00:32:05 +08:00
|
|
|
|
phase3R=lineZ(entry+1:entry+3,:);
|
|
|
|
|
|
phase3X=lineZ(entry+5:entry+7,:);
|
|
|
|
|
|
phase3B2=lineZ(entry+9:entry+11,:);
|
2014-04-21 20:56:37 +08:00
|
|
|
|
phase3Z=phase3R+1j*phase3X;
|
|
|
|
|
|
phase3Y=inv(phase3Z);
|
2014-04-21 22:10:03 +08:00
|
|
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
baseS=1;
|
|
|
|
|
|
baseY=baseS/(baseHighU^2);
|
|
|
|
|
|
phase3Y=phase3Y/baseY;
|
|
|
|
|
|
diagEle=diag(phase3Y);%<EFBFBD>Խ<EFBFBD>Ԫ<EFBFBD><EFBFBD>
|
|
|
|
|
|
diagEle=sum(diagEle)/3;
|
|
|
|
|
|
offDiagEle=phase3Y-diag(diag(phase3Y));
|
|
|
|
|
|
offDiagEle=sum(sum(offDiagEle))/6;
|
2014-04-17 00:32:05 +08:00
|
|
|
|
%<EFBFBD>öԽǺͷǶԽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2014-04-21 22:10:03 +08:00
|
|
|
|
phase3Y(1,1)=diagEle;
|
|
|
|
|
|
phase3Y(1,2)=offDiagEle;
|
|
|
|
|
|
phase3Y(2,1)=offDiagEle;
|
|
|
|
|
|
phase3Y(3,1)=offDiagEle;
|
|
|
|
|
|
phase3Y(1,3)=offDiagEle;
|
2014-04-17 00:32:05 +08:00
|
|
|
|
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);
|
|
|
|
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Fortescue<EFBFBD>任
|
|
|
|
|
|
%ֱ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
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];
|
2014-04-21 20:56:37 +08:00
|
|
|
|
% fs3Y=Tp2f*phase3Y*Tf2p;
|
2014-04-21 22:10:03 +08:00
|
|
|
|
% Zl=phase3Y(1,1);
|
|
|
|
|
|
% Zm=phase3Y(2,1);
|
|
|
|
|
|
Zl=diagEle;
|
|
|
|
|
|
Zm=offDiagEle;
|
2014-04-17 00:32:05 +08:00
|
|
|
|
fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%<EFBFBD><EFBFBD><EFBFBD>ﲻ<EFBFBD><EFBFBD>1/3<EFBFBD><EFBFBD>IEEE<EFBFBD>ϵĹ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
|
|
|
|
|
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);
|
|
|
|
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ർ<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
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
|
|
|
|
|
|
|