⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_idx.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
字号:
function  fm_idx(flag)
% FM_IDX define formatted and unformatted names of system variables
%
% FM_IDX(FLAG)
%   FLAG  1  -> power flow and state variables
%         2  -> determinants and eigenvalues
%
%Author:    Federico Milano
%Date:      11-Nov-2002
%Update:    05-Mar-2004
%Update:    14-Sep-2005
%Update:    19-Dec-2005
%Version:   1.2.0
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

global Varname DAE Bus Line Syn File Settings Path Exc Oxl

switch flag

 case 1  % power flow and state variables

  nidx = DAE.n+4*Bus.n+2*Syn.n+Exc.n+Oxl.n+4*Line.n;

  % cell array of unformatted variable names
  Varname.uvars = cell(nidx,1);

  % cell array of formatted (LaTeX style) variable names
  Varname.fvars = cell(nidx,1);

  % state variables
  if DAE.n
    for j = 1:length(Varname.fname)
      eval(['global ',Varname.comp{j}]);
      nome = eval([Varname.comp{j},'.',Varname.uname{j}]);
      if ~isempty(nome)
        b = find(nome);
        numero = length(b);
        for i = 1:numero
          Varname.uvars{nome(b(i))} = [Varname.uname{j},'_', ...
                              Varname.comp{j},'_',  int2str(b(i))];
          Varname.fvars{nome(b(i))} = [Varname.fname{j},'_{', ...
                              Varname.comp{j},' ', int2str(b(i)),'}'];
        end
      end
    end
  end

  idx1 = DAE.n+Bus.n;
  idx2 = DAE.n+2*Bus.n+2*Syn.n+Exc.n+Oxl.n;
  idx3 = idx2+Bus.n;
  for j = 1:Bus.n
    b = strrep(Varname.bus{j,1},'_',' ');
    % V
    Varname.fvars{DAE.n+j} = ['V_{', b,'}'];
    Varname.uvars{DAE.n+j} = ['V_', b];
    % theta
    Varname.fvars{idx1+j} = [char(92),'theta_{', b,'}'];
    Varname.uvars{idx1+j} = ['theta_', b];
    % P
    Varname.fvars{idx2+j} = ['P_{', b,'}'];
    Varname.uvars{idx2+j} = ['P_', b];
    % Q
    Varname.fvars{idx3+j} = ['Q_{', b,'}'];
    Varname.uvars{idx3+j} = ['Q_', b];
  end

  idx1 = DAE.n+2*Bus.n;
  idx2 = DAE.n+2*Bus.n+Syn.n;
  for j = 1:Syn.n
    b = int2str(j);
    % Pm
    Varname.fvars{idx1+j} = ['P_{mech ', b,'}'];
    Varname.uvars{idx1+j} = ['Pmech_', b];
    % Vf
    Varname.fvars{idx2+j} = ['V_{fd ', b,'}'];
    Varname.uvars{idx2+j} = ['Vfd_', b];
  end

  idx1 = DAE.n+2*Bus.n+2*Syn.n;
  for j = 1:Exc.n
    b = int2str(j);
    % Vref
    Varname.fvars{idx1+j} = ['V_{ref ', b,'}'];
    Varname.uvars{idx1+j} = ['Vref_', b];
  end

  idx1 = DAE.n+2*Bus.n+2*Syn.n+Exc.n;
  for j = 1:Oxl.n
    b = int2str(j);
    % If
    Varname.fvars{idx1+j} = ['I_{f ', b,'}'];
    Varname.uvars{idx1+j} = ['I_f', b];
  end

  idx1 = DAE.n+4*Bus.n+2*Syn.n+Exc.n+Oxl.n;
  idx2 = idx1 + Line.n;
  idx3 = idx2 + Line.n;
  idx4 = idx3 + Line.n;
  for j = 1:Line.n
    b = Varname.bus{Bus.int(Line.con(j,1)),1};
    d = Varname.bus{Bus.int(Line.con(j,2)),1};
    % P_ij
    Varname.fvars{idx1+j} = ['P_{',b,' ',d,'}'];
    Varname.uvars{idx1+j} = ['P_',b,'_',d];
    % Q_ij
    Varname.fvars{idx3+j} = ['Q_{',b,' ',d,'}'];
    Varname.uvars{idx3+j} = ['Q_',b,'_',d];
    % P_ji
    Varname.fvars{idx2+j} = ['P_{',d,' ',b,'}'];
    Varname.uvars{idx2+j} = ['P_',d,'_',b];
    % Q_ji
    Varname.fvars{idx4+j} = ['Q_{',d,' ',b,'}'];
    Varname.uvars{idx4+j} = ['Q_',d,'_',b];
  end

  Varname.nvars = length(Varname.uvars);
  % plot variables
  if isempty(Varname.idx)
    % use default variables
    Varname.fixed = 1;
    Varname.custom = 0;
    Varname.x = 1;
    Varname.V = 1;
    Varname.PQ = 0;
    Varname.Pij = 0;
    Varname.idx = [1:(DAE.n+2*Bus.n)]';
  else
    % check for possible index inconsistency
    idx = find(Varname.idx > Varname.nvars);
    if ~isempty(idx)
      Varname.idx(idx) = [];
    end
  end

 case 2 % determinants and eigenvalues

  idx0 = DAE.n+4*Bus.n+2*Syn.n+Exc.n+Oxl.n+4*Line.n;
  Varname.fvars{idx0+1} = 'det(J_l_f)';
  Varname.fvars{idx0+2} = 'det(J_l_f_v)';
  Varname.fvars{idx0+3} = 'det(J_l_f_d)';
  Varname.uvars{idx0+1} = 'det(Jlf)';
  Varname.uvars{idx0+2} = 'det(Jlfv)';
  Varname.uvars{idx0+3} = 'det(Jlfd)';

  idx0 = idx0+3;
  for i = 1:DAE.n
    Varname.fvars{idx0+i} = [char(92),'lambda', '_{As (', int2str(i),')}'];
    Varname.uvars{idx0+i} = ['eigenvalue_As', int2str(i)];
  end

  idx0 = idx0+DAE.n;
  for i = 1:Bus.n
    Varname.fvars{idx0+i} = [char(92),'lambda','_{Jlfr (', int2str(i),')}'];
    Varname.uvars{idx0+i} = ['eigenvalue_Jlfr', int2str(i)];
  end

  idx0 = idx0+Bus.n;
  for i = 1:Bus.n
    Varname.fvars{idx0+i} = [char(92),'lambda','_{Jlfvr (', int2str(i),')}'];
    Varname.uvars{idx0+i} = ['eigenvalue_Jlfvr', int2str(i)];
  end

  idx0 = idx0+Bus.n;
  for i = 1:Bus.n
    Varname.fvars{idx0+i} = [char(92),'lambda','_{Jlfdr (', int2str(i),')}'];
    Varname.uvars{idx0+i} = ['eigenvalue_Jlfdr', int2str(i)];
  end

  Varname.nvars = length(Varname.uvars);

end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -