📄 fm_fault.m
字号:
function fm_fault(flag,t)
% FM_FAULT define three phase faults at buses
%
% FM_FAULT(FLAG,T)
% FLAG 0 fault initialization
% 1 fault interventions
% T integration time
%
%Author: Federico Milano
%Date: 11-Nov-2002
%Update: 13-Jan-2003
%Update: 11-Sep-2003
%Version: 1.1.0
%
%E-mail: fmilano@thunderbox.uwaterloo.ca
%Web-site: http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano
global Fault DAE Bus Shunt jay Settings Syn SW Varname
% Fault.dat:
% 1. fault conductance
% 2. fault susceptance
% 3. old bus conductance
% 4. old bus susceptance
% 5. fault check:
% 0 if fault is not yet met
% 1 if fault is met
% -1 if fault is ended
switch flag
case 0 % fault data initializations
Fault.dat = zeros(Fault.n,5);
%Fault.ang = DAE.a;
x = Fault.con(:,7)+jay*Fault.con(:,8);
x(find(abs(x) == 0)) = jay*1e-6;
y = 1./x;
Fault.dat(:,1) = real(y);
Fault.dat(:,2) = imag(y);
Fault.dat(:,3) = Shunt.g(Fault.bus);
Fault.dat(:,4) = Shunt.b(Fault.bus);
case 1 % faults computations
for i = 1:Fault.n
h = Fault.bus(i);
if t == Fault.con(i,5) % fault intervention
fm_disp(['Applying fault(s) at bus <', ...
Varname.bus{h},'> for t = ',num2str(t),' s'])
% update admittance matrix
Shunt.g(h) = Fault.dat(i,3) + Fault.dat(i,1);
Shunt.b(h) = Fault.dat(i,4) + Fault.dat(i,2);
fm_y
% update algebraic variables
conv = fm_nrlf(40,1e-4,1);
elseif t == Fault.con(i,6) % fault clearance
fm_disp(['Clearing fault(s) at bus <', ...
Varname.bus{h},'> for t = ',num2str(t),' s'])
% update admittance matrix
Shunt.g(h) = Fault.dat(i,3);
Shunt.b(h) = Fault.dat(i,4);
fm_y
if Syn.n & ~SW.n
DAE.a = mean(DAE.x(Syn.delta))*ones(Bus.n,1);
DAE.a(Syn.bus) = DAE.x(Syn.delta);
else
DAE.a = DAE.a(Settings.refbus)*ones(Bus.n,1); %Fault.ang;
end
% update algebraic variables
conv = fm_nrlf(40,1e-4,1);
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -