📄 fm_install.m
字号:
string_update{7,1} = 'Updating of "fm_dynlf.m is not required (no state variables).';
set(hdl_list,'String',string_update);
end
% ***********************************************************************
% update file "Contents.m"
fid = fopen([Path.psat,'Contents.m'], 'rt+');
if fid == -1
fm_disp('Cannot open file "Contents.m". Check permissions.')
end
update = 1;
while 1
sline = fgetl(fid);
if ~ischar(sline), break; end
sline = [sline,blanks(length(f_name)+4)];
sline = sline(1:length(f_name)+4);
if ~isempty(findstr(sline,['% ',f_name]))
update = 0;
break
end
end
if update
fseek(fid,0,'eof');
fprintf(fid,'\n%% %s - %s',f_name,Comp.descr);
end
fclose(fid);
string_update{9,1} = 'Contents file for on line help updated.';
set(hdl_list,'String',string_update);
% **********************************************************************
% update file "service.ini"
fid = fopen([Path.psat,'service.ini'], 'rt+');
if fid == -1
fm_disp('Cannot open file "service.ini". Check permissions.')
end
for i = 1:Servc.n
update = 1;
fseek(fid,0,'bof');
if strcmp(Servc.type{i,1},'Input')
while 1
sline = fgetl(fid);
sline = [sline,blanks(length(Servc.name{i}))]
if ~ischar(sline)
break
end
if findstr(Servc.name{i},sline(1:length(Servc.name{i})))
update = 0;
break
end
end
if update
fseek(fid,0,'eof');
fprintf(fid,['\n',Servc.name{i,1}]);
end
end
end
fclose(fid);
string_update{10,1} = 'File Data "service.ini" updated.';
set(hdl_list,'String',string_update);
% ***********************************************************************
% update function "fm_xfirst.m"
if State.n & ~Comp.init
fid = fopen([Path.psat,'fm_xfirst.m'], 'rt+');
if fid == -1
fm_disp('Cannot open file "fm_xfirst.m". Check permissions.')
end
update = 1;
while 1
sline = fgetl(fid);
if ~ischar(sline), break; end
if ~isempty(findstr([c_name,'.n'],sline))
update = 0;
break
end
end
if update
fseek(fid,0,'eof');
fprintf(fid,'\n\nglobal %s',c_name);
fprintf(fid,'\nif %s.n',c_name);
for i = 1:State.n
fprintf(fid,'\n DAE.x(%s.%s) = %s*ones(%s.n,1);', ...
c_name,State.name{i,1},State.init{i,1},c_name);
end
fprintf(fid,['\nend']);
end
fclose(fid);
string_update{11,1} = 'System file "fm_xfirst.m" updated.';
set(hdl_list,'String',string_update);
else
string_update{11,1} = 'Updating System file "fm_xfirst.m" not required.';
set(hdl_list,'String',string_update);
end
% ***********************************************************************
% update file "fcomp.ini"
fid = fopen([Path.psat,'fcomp.ini'], 'rt+');
if fid == -1
fm_disp('Cannot open file "fcomp.ini". Check permissions.')
end
update = 1;
while 1
sline = fgetl(fid);
if ~ischar(sline)
break
end
sline = [sline,blanks(length(f_name))];
if ~isempty(strmatch(c_name,sline(1:length(c_name)),'exact'))
update = 0;
break
end
end
if update
fseek(fid,0,'eof');
string = [c_name,blanks(15)];
fprintf(fid,['\n',string(1:15)]);
x_max = [1:State.n];
if State.n
x_idx = strmatch('None',State.limit(:,1),'exact');
x_max(x_idx) = [];
end
x_min = [1:State.n];
if State.n
x_idx = strmatch('None',State.limit(:,2),'exact');
x_min(x_idx) = [];
end
n_xmax = length(x_max); n_xmin = length(x_min);
s_max = [1:Servc.neq];
if Servc.n
s_idx = strmatch('None',Servc.limit(:,1),'exact');
s_max(s_idx) = [];
end
s_min = [1:Servc.neq];
if Servc.n
s_idx = strmatch('None',Servc.limit(:,2),'exact');
s_min(s_idx) = [];
end
n_smax = length(s_max); n_smin = length(s_min);
n_tot_param = 2 + Buses.n + Param.n + n_xmax + n_xmin + n_smax + n_smin;
fprintf(fid,['[repmat(''%%4d '',1,%d), ', ...
'repmat(''%%8.4f '',1,%d)]'],Buses.n,n_tot_param);
end
fclose(fid);
string_update{12,1} = 'File Data "fcomp.ini" updated.';
set(hdl_list,'String',string_update);
% ***********************************************************************************
% update function "psat.m"
fid = fopen([Path.psat,'psat.m'], 'rt+');
if fid == -1
fm_disp('Cannot open file "psat.m". Check permissions.')
end
update = 1;
while 1
sline = fgetl(fid);
if ~ischar(sline), break, end
sline = [sline,blanks(length(f_name))];
if ~isempty(strmatch(c_name,sline(1:length(c_name)),'exact'))
update = 0;
break
end
end
if update
fseek(fid,0,'eof');
fprintf(fid,'\n%% %s - %s',c_name,Comp.descr);
fprintf(fid,'\n%s = struct(''con'',[],''n'',0,',c_name);
okdata = 0;
for i = 1:Servc.n;
if ~strcmp(Servc.type{i},'Input'); okdata = 1;
break
end
end
if Initl.n | okdata
fprintf(fid,'''dat'',[],',c_name);
end
if Buses.n == 1
fprintf(fid,'''bus'',[],');
else
for i = 1:Buses.n
fprintf(fid,'''%s'',[],',Buses.name{i});
end
end
for i = 1:State.n-1
fprintf(fid,'''%s'',[],',State.name{i,1});
end
fprintf(fid,'''%s'',[]);\n',State.name{State.n,1});
end
fclose(fid);
string_update{13,1} = 'System file "psat.m" updated.';
set(hdl_list,'String',string_update);
% ***********************************************************************************
% update function "closepsat.m"
fid = fopen([Path.psat,'closepsat.m'], 'rt+');
if fid == -1
fm_disp('Cannot open file "closepsat.m". Check permissions.')
end
update = 1;
while 1
sline = fgetl(fid);
if ~ischar(sline)
break
end
if strmatch(['clear ',c_name],sline,'exact');
update = 0
break
end
end
if update
fseek(fid,0,'eof');
fprintf(fid,['\n\n%% ',Comp.descr,'\nclear ',c_name]);
end
fclose(fid);
string_update{14,1} = 'System file "closepsat.m" updated.';
set(hdl_list,'String',string_update);
% **********************************************************************
% update structure Varname
Varname.uname = '';
Varname.fname = '';
Varname.comp = '';
Varname.fcomp = '';
Varname.format = '';
failed = 0;
fid = fopen([Path.psat,'namevar.ini'], 'rt');
if fid == -1,
failed = 1;
else
nname = 0;
while 1
sline = fgetl(fid);
if ~ischar(sline), break; end
try
Varname.uname{nname+1,1} = deblank(sline(1:20));
Varname.fname{nname+1,1} = deblank(sline(21:40));
Varname.comp{nname+1,1} = deblank(sline(41:end));
nname = nname + 1;
end
end
count = fclose(fid);
string_update{15,1} = 'Structure "Varname" updated.';
end
fid = fopen([Path.psat,'fcomp.ini'], 'rt');
if fid == -1,
disp('#Error: File "fcomp.ini" cannot be open.')
failed = 1;
else
tipi = 0;
while 1
sline = fgetl(fid);
if ~ischar(sline), break; end
try
tipi = tipi + 1;
Varname.fcomp{tipi,1} = deblank(sline(1:15));
Varname.format{tipi,1} = sline(16:end);
end
end
fclose(fid);
end
if failed
string_update{15,1} = 'Error: Structure "Varname" could not be updated.';
else
string_update{15,1} = 'Structure "Varname" updated.';
end
set(hdl_list,'String',string_update);
% ***********************************************************************************
% update structure Comp
Comp.funct = '';
Comp.number = '';
Comp.prop = '';
Comp.n = 0;
Comp.shunt = 1;
fid = fopen([Path.psat,'comp.ini'], 'rt');
if fid == -1,
string_update{16,1} = 'Error: Structure "Comp" could not be updated.';
else
ncomp=0;
while 1
sline = fgetl(fid);
if ~ischar(sline), break; end
try
Comp.funct{ncomp+1,1} = deblank(sline(1:23));
Comp.number{ncomp+1,1} = [deblank(sline(25:44)),'.n'];
Comp.prop(ncomp+1,:) = str2num(sline(46:58));
ncomp=ncomp+1;
end
end
count = fclose(fid);
Comp.funct{ncomp+1} = 'fm_pv';
Comp.number{ncomp+1} = 'PV.n';
Comp.prop(ncomp+1,:) = [1 1 0 0 0 1 0];
Comp.funct{ncomp+2} = 'fm_sw';
Comp.number{ncomp+2} = 'SW.n';
Comp.prop(ncomp+2,:) = [1 1 0 0 0 1 0];
Comp.n = ncomp+2;
string_update{16,1} = 'Structure "Comp" updated.';
end
set(hdl_list,'String',string_update);
% last operations
string_update{end+1,1} = 'Updating operations successfully completed.';
set(hdl_list,'String',string_update);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -