You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.3 KiB
86 lines
3.3 KiB
function [Y,Ytr,Ysh,ytrfr,ytrto,yshfr,yshto]=getYMatrix(nbus,line,fault)
|
|
% Generate admittance matrix
|
|
%
|
|
% FUNCTION getYMatrix
|
|
%
|
|
% Author: Rui Yao <ruiyao@ieee.org>
|
|
%
|
|
% Copyright (C) 2021, UChicago Argonne, LLC. All rights reserved.
|
|
%
|
|
% OPEN SOURCE LICENSE
|
|
%
|
|
% Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
%
|
|
% 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
% 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
% 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
%
|
|
%
|
|
% ******************************************************************************************************
|
|
% DISCLAIMER
|
|
%
|
|
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
% WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
% PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
|
% DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
% ***************************************************************************************************
|
|
%
|
|
% fault has 4 columns:
|
|
% line number, relative position, fault resistance, fault reactance
|
|
|
|
if nargin<3
|
|
fault=[];
|
|
end
|
|
r=line(:,8);
|
|
x=line(:,9);
|
|
z=r+1j*x;
|
|
b=line(:,10);
|
|
chrg1 = 1j*0.5*line(:,16).*b;
|
|
chrg2 = 1j*0.5*line(:,16).*b;
|
|
y = line(:,16)./z;
|
|
if ~isempty(fault)
|
|
zf1=z(fault(:,1)).*fault(:,2);
|
|
zf2=z(fault(:,1)).*(1-fault(:,2));
|
|
zfg=fault(:,3)+1j*fault(:,4);
|
|
% delta-wye transform
|
|
zden=zf1.*zf2+zf2.*zfg+zfg.*zf1;
|
|
yffr=zf2./zden;
|
|
yfto=zf1./zden;
|
|
yftr=zfg./zden;
|
|
|
|
rzf2=1./zf2;
|
|
yfto(zf1==0&zfg==0)=rzf2(zf1==0&zfg==0);
|
|
yftr(zf1==0&zfg==0)=rzf2(zf1==0&zfg==0);
|
|
|
|
rzf1=1./zf1;
|
|
yffr(zf2==0&zfg==0)=rzf1(zf2==0&zfg==0);
|
|
yftr(zf2==0&zfg==0)=rzf1(zf2==0&zfg==0);
|
|
|
|
y(fault(:,1))=yftr;
|
|
chrg1(fault(:,1))=chrg1(fault(:,1))+yffr;
|
|
chrg2(fault(:,1))=chrg2(fault(:,1))+yfto;
|
|
end
|
|
|
|
line(line(:,11)==0,11)=1;
|
|
ts = line(:,11).*exp(1j*line(:,12)*pi/180);
|
|
ts2= ts.*conj(ts);
|
|
|
|
ytrfr=y./conj(ts);
|
|
ytrto=y./ts;
|
|
yshfr=(y+chrg1)./ts2-ytrfr;
|
|
yshto=y+chrg2-ytrto;
|
|
|
|
i_fr=line(:,1);
|
|
i_to=line(:,2);
|
|
|
|
Y = sparse(i_fr,i_to,-y./conj(ts),nbus,nbus) + ...
|
|
sparse(i_to,i_fr,-y./ts,nbus,nbus) + ...
|
|
sparse(i_fr,i_fr,(y+chrg1)./ts2,nbus,nbus)+ ...
|
|
sparse(i_to,i_to,y+chrg2,nbus,nbus);
|
|
|
|
Ysh=sum(Y,2);
|
|
Ytr=Y-sparse(1:nbus,1:nbus,Ysh,nbus,nbus);
|
|
end |