threephasese-onlyenquationc.../lineWithConfig.m

107 lines
3.3 KiB
Mathematica
Raw Permalink Normal View History

function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config,baseHighU )
phase3Entry=find(lines(:,1)==config);
phase3Line=lines(phase3Entry,:);
phase3Line(:,4)=phase3Line(:,4)/1000;
entry=find(lineZ(:,1)==config);
if isempty(entry)
fs30=0;
fs31=0;
fs32=0;
phaseABCY=0;
fprintf('warning: line type %d not found.\n',config)
return;
end
phase3R=lineZ(entry+1:entry+3,:);
phase3X=lineZ(entry+5:entry+7,:);
phase3B2=lineZ(entry+9:entry+11,:);
phase3Z=phase3R+1j*phase3X;
phase3Y=inv(phase3Z);
%<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;
%<EFBFBD>öԽǺͷǶԽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
phase3Y(1,1)=diagEle;
phase3Y(1,2)=offDiagEle;
phase3Y(2,1)=offDiagEle;
phase3Y(3,1)=offDiagEle;
phase3Y(1,3)=offDiagEle;
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];
% fs3Y=Tp2f*phase3Y*Tf2p;
% Zl=phase3Y(1,1);
% Zm=phase3Y(2,1);
Zl=diagEle;
Zm=offDiagEle;
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