Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

fprintf(' GAUSS-SEIDEL POWER FLOW SOLUTION

\n');
fprintf('==========================================================================
=============================\n');
fprintf(' Bus No. |V| Phase Angle Load
Generation\n');
fprintf(' pu degree ________________
__________________\n');
fprintf(' MW MVar
MW MVar\n');
fprintf('==========================================================================
=============================\n');
if sum(PV)~=0
[A,~]=size(PV);
else
A=0;
end
[B,~]=size(PQ);
C=2*A+B+1;
[D,~]=size(sl);
M = max(PV(:,1),[],'all');
N = max(PQ(:,1),[],'all');
if N<M
N=M;
end
Lref=zeros(N,7);
Lref(1:D,1:5)=sl;
Lref(D+1:D+A,1:2)=PV(:,1:2);
Lref(D+1:D+A,5)=PV(:,6);
Lref(D+1:D+A,4)=PV(:,4)-PV(:,5);
Lref(D+A+1:N,1:5)=PQ;
PF=Lref;
for b=1:N
refe=find(Lref(:,1)==b);
PF(b,:)=Lref(refe,:);
end
V=zeros(50,N);
Q=zeros(50,N);
if sum(PV)~=0
for a=1:A
V(1,PV(a,1))=PV(a,2)*cos(PV(a,3))+PV(a,2)*sin(PV(a,3))*1i;
end
end
for a=1:B
V(1,PQ(a,1))=PQ(a,2)*cos(PQ(a,3))+PQ(a,2)*sin(PQ(a,3))*1i;
Q(1,PQ(a,1))=Lref(PQ(a,1),5);
end
for a=1:50
V(a,sl(1))=sl(2)*cos(sl(3))+sl(2)*sin(sl(3))*1i;
end
k=1;
diff=1;
t=abs(log10(tol));
while diff>tol
for e=1:A
Q(k+1,PV(e,1))=-imag(Ybus(PV(e,1),:)*transpose(V(k,:))*conj(V(k,PV(e,1))));

V(k+1,PV(e,1))=((PF(PV(e,1),4)/baseMVA-Q(k+1,PV(e,1))*1i)/conj(V(k,PV(e,1)))-
Ybus(PV(e,1),:)*transpose(V(k,:))+Ybus(PV(e,1),PV(e,1))*V(k,PV(e,1)))/
Ybus(PV(e,1),PV(e,1));
if abs(V(k+1,PV(e,1)))~=PV(e,2)
V(k+1,PV(e,1))=sqrt((PV(e,2))^2-(imag(V(k+1,PV(e,1))))^2)+
(imag(V(k+1,PV(e,1))))*1i;
end
end
for f=1:B
ind=PQ(f,1);
V(k+1,ind)=((-PF(ind,4)+PF(ind,5)*1i)/(baseMVA*conj(V(k,ind)))-
(Ybus(ind,:)*transpose(V(k,:)))+Ybus(ind,ind)*V(k,ind))/Ybus(ind,ind);
end
V(k+1,1)=V(k,1);
d1=abs(mean(Q(k+1,:)-Q(k,:)));
d2=abs(mean(V(k+1,:)-V(k,:)));
diff=sum(d1+d2);
k=k+1;
end
Ssl=Ybus(sl(1,1),:)*transpose(V(k-1,:))*conj(V(k,sl(1,1)));
PF(sl(1,1),6)=baseMVA*real(Ssl)-PF(sl(1,1),4);
PF(sl(1,1),7)=baseMVA*-imag(Ssl)-PF(sl(1,1),5);
for g=1:A
PF(PV(g,1),2)=abs(V(k-1,PV(g,1)));
PF(PV(g,1),3)=angle(V(k-1,PV(g,1)))*180/pi;
PF(PV(g,1),7)=baseMVA*Q(k-1,PV(g,1))-PF(PV(g,1),5);
end
for h=1:B
PF(PQ(h,1),2)=abs(V(k-1,PQ(h,1)));
PF(PQ(h,1),3)=angle(V(k-1,PQ(h,1)))*180/pi;
end
[E,~]=size(zdata(:,1));
ydata=zdata;
ydata(1:E,3)=zdata(1:E,3).^-1;
I=zeros(2*E,1);
S=zeros(2*E,1);
Sl=zeros(E,1);
a=1;
b=1;
D=2*E+1;
FB=zeros(D-1,1);
TB=zeros(D-1,1);
while b<D
ik=zdata(a,1);
jk=zdata(a,2);
I(b)=(sum(ydata(a,3:4)))*V(k-1,ik)-ydata(a,3)*V(k-1,jk);
S(b)=V(k-1,ik)*conj(I(b));
FB(b)=ik;
TB(b)=jk;
b=b+1;
I(b)=(sum(ydata(a,3:4)))*V(k-1,jk)-ydata(a,3)*V(k-1,ik);
S(b)=V(k-1,jk)*conj(I(b));
FB(b)=jk;
TB(b)=ik;
b=b+1;
a=a+1;
end
for k=1:E
Sl(k)=S(2*k-1)+S(2*k);
end
I=I*baseMVA;
S=S*baseMVA;
Sl=Sl*baseMVA;
PF=round(PF,7,"significant");
disp(PF);
fprintf('=================================================================\n');
fprintf(' LINE FLOW \n');
fprintf('=================================================================\n');
fprintf(' From To P Flow Q Flow\n');
fprintf(' Bus No. Bus No. MW MVar\n');
fprintf('=================================================================\n');
sref=zeros(2*N,4);
sref(1:2*N,1)=FB;
sref(1:2*N,2)=TB;
sref(1:2*N,3)=real(S);
sref(1:2*N,4)=imag(S);
disp(sref);
fprintf('=================================================================\n');
fprintf(' LINE LOSS\n');
fprintf('=================================================================\n');
fprintf(' From To P Loss Q Loss\n');
fprintf(' Bus No. Bus No. MW MVar\n');
fprintf('=================================================================\n');
FB2=FB(1:2:end,:);
TB2=TB(1:2:end,:);
slref=zeros(N,4);
slref(1:N,1)=FB2;
slref(1:N,2)=TB2;
slref(1:N,3)=real(Sl);
slref(1:N,4)=imag(Sl);
disp(slref);
fprintf('=================================================================');

You might also like