function structure = SS_eqn(bond_number,bonds,direction,cr,args, ...
structure,filenum);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$
% %% Revision 1.3 1996/08/09 14:08:04 peter
% %% Empty effort and flow attributes replaced by 'external'.
% %%
% %% Revision 1.2 1996/08/08 16:38:19 peter
% %% Changed to filenumer type of fprintf
% %%
% %% Revision 1.1 1996/08/08 16:19:08 peter
% %% Initial revision
% %%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The string 'cr' contains the effort attributes;
% 'arg' contains the flow attributes.
% external indicates an external variable
% internal indicates an internal variable
% anything else is the name of a constant.
% Blank is taken to be external
effort_attribute = cr;
flow_attribute = args;
if length(effort_attribute)==0
effort_attribute = 'external';
end;
if length(flow_attribute)==0
flow_attribute = 'external';
end;
inputs = structure(3);
outputs = structure(4);
zero_outputs = structure(5);
% Effort
if strcmp(effort_attribute, 'external')
if bonds(1,1)==-1 % Source
inputs = inputs+1;
fprintf(filenum, '%s := MTTu(%1.0f,1);\n', ...
varname(bond_number,1),inputs);
else % Sensor
outputs = outputs+1;
fprintf(filenum, 'MTTy(%1.0f,1) := %s;\n', ...
outputs, varname(bond_number,1));
end;
elseif strcmp(effort_attribute, 'internal')
% Do nothing
else % named constant
if bonds(1,1)==-1 % Source
fprintf(filenum, '%s := %s;\n', ...
varname(bond_number,1), effort_attribute);
else % Sensor
if strcmp(effort_attribute, 'zero') %Zero output
zero_outputs = zero_outputs + 1;
fprintf(filenum, 'MTTyz%1.0f := %s;\n', ...
zero_outputs, varname(bond_number,1));
fprintf(filenum, '%s := MTTUi%1.0f;\n', ...
varname(bond_number,-1), zero_outputs);
else
mtt_info([effort_attribute, ' not appropriate for an output ']);
end;
end;
end;
% Flow
if strcmp(flow_attribute, 'external')
if bonds(1,2)==1 % Source
inputs = inputs+1;
fprintf(filenum, '%s := MTTu(%1.0f,1);\n', varname(bond_number,-1),inputs);
else % Sensor
outputs = outputs+1;
fprintf(filenum, 'MTTy(%1.0f,1) := %s;\n', outputs, ...
varname(bond_number,-1));
end;
elseif strcmp(flow_attribute, 'internal')
% Do nothing
else % Named constant
if bonds(1,2)==1 % Source
fprintf(filenum, '%s := %s;\n', ...
varname(bond_number,-1), flow_attribute);
else % Sensor
if strcmp(flow_attribute, 'zero') %Zero output
zero_outputs = zero_outputs + 1;
fprintf(filenum, 'MTTyz%1.0f := %s;\n', ...
zero_outputs, varname(bond_number,-1));
fprintf(filenum, '%s := MTTUi%1.0f;\n', ...
varname(bond_number,1), zero_outputs);
else
mtt_info([effort_attribute, ' not appropriate for an output ']);
end;
end;
end;
structure(3) = inputs;
structure(4) = outputs;
structure(5) = zero_outputs;