Differences From Artifact [b0e9681c1e]:

To Artifact [312d13fc4c]:


1
2








3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21



22
23
24
25
26
27
28
function structure =  SS_eqn(name,bond_number,bonds,direction,cr,args, ...
    structure,filenum);








% SS_eqn - equations for SS component
% 
%     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%     %%%%% Model Transformation Tools %%%%%
%     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 
% Matlab function  SS_eqn
% structure =  SS_eqn(name,bond_number,bonds,direction,cr,args, ...
%    structure,filenum);


% Copyright (c) P.J. Gawthrop, 1996.

			
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$



% %% Revision 1.10  1997/03/22  17:13:03  peterg
% %% Fixed bug for port nos. > 1 digit!
% %%
% %% Revision 1.9  1997/03/22  15:50:59  peterg
% %% Changed %1.0f to %d format.
% %%
% %% Revision 1.8  1996/12/10 16:52:29  peterg


>
>
>
>
>
>
>
>



















>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function structure =  SS_eqn(name,bond_number,bonds,direction,cr,args, ...
    structure,filenum);

% Set up globals to count the component inputs and outputs. This relies on
% the named SS (the ports) being in the correct order. Using globals here
% avoids changing the common argument list for all _eqn files for something
% which is only used for named SS components.
global local_u_index
global local_y_index

% SS_eqn - equations for SS component
% 
%     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%     %%%%% Model Transformation Tools %%%%%
%     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 
% Matlab function  SS_eqn
% structure =  SS_eqn(name,bond_number,bonds,direction,cr,args, ...
%    structure,filenum);


% Copyright (c) P.J. Gawthrop, 1996.

			
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% Version control history
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %% $Id$
% %% $Log$
% %% Revision 1.11  1997/05/09 08:21:07  peterg
% %% Explicit computation of port number -- avoids str2num
% %%
% %% Revision 1.10  1997/03/22  17:13:03  peterg
% %% Fixed bug for port nos. > 1 digit!
% %%
% %% Revision 1.9  1997/03/22  15:50:59  peterg
% %% Changed %1.0f to %d format.
% %%
% %% Revision 1.8  1996/12/10 16:52:29  peterg
77
78
79
80
81
82
83
84



85
86
87
88
89
90
91
92
93
94
95
96
97
98

99
100
101

102
103
104
105
106

107
108
109

110
111
112
113
114
115
116
117
118
119
120
121
122
123
end;


inputs = structure(3);
outputs = structure(4);
zero_outputs = structure(5);

if strcmp(effort_attribute, 'MTT_port') % Its a numbered port



  % Convert string to number
  % port_number = abs(flow_attribute)-abs('0');
  %port_number = str2num(flow_attribute);

  %Compute port number
  str_port_number = flow_attribute;
  N_string = length(str_port_number);
  port_number=0;
  for i=1:N_string
    port_number = 10*port_number + abs(str_port_number(i))-abs('0');
  end;

  % Effort 
  if bonds(1,1)==-1 % Source

    fprintf(filenum, '%s := %s_MTTu%d;\n', ...
        varname(name, bond_number,1), name, port_number);
  else % Sensor

    fprintf(filenum, '%s_MTTy%d := %s;\n', ...
        name, port_number, varname(name, bond_number,1));
  end;
  % Flow 
  if bonds(1,2)==1 % Source

    fprintf(filenum, '%s := %s_MTTu%d;\n', ...
        varname(name, bond_number,-1), name, port_number);
  else % Sensor

    fprintf(filenum, '%s_MTTy%d := %s;\n', ...
        name, port_number, varname(name, bond_number,-1));
  end;  
  return
end;


% Effort
if strcmp(effort_attribute, 'external')
  if bonds(1,1)==-1 % Source
    inputs = inputs+1;
    fprintf(filenum, '%s := MTTu(%d,1);\n', ...
        varname(name, bond_number,1),inputs);
  else % Sensor







|
>
>
>
|
|
|

|
|
|
|
|
|
|



>

|

>

|



>

|

>

|




|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
end;


inputs = structure(3);
outputs = structure(4);
zero_outputs = structure(5);

if strcmp(effort_attribute, 'MTT_port') % Its a named port

% Note: we don't have numbered ports now, so the correct indices are deduced
% by incrementing the two globals: local_u_index and local_y_index
% $$$   % Convert string to number
% $$$   % port_number = abs(flow_attribute)-abs('0');
% $$$   % port_number = str2num(flow_attribute);

% $$$   %Compute port number
% $$$   str_port_number = flow_attribute;
% $$$   N_string = length(str_port_number);
% $$$   port_number=0;
% $$$   for i=1:N_string
% $$$     port_number = 10*port_number + abs(str_port_number(i))-abs('0');
% $$$   end;

  % Effort 
  if bonds(1,1)==-1 % Source
    local_u_index = local_u_index + 1;
    fprintf(filenum, '%s := %s_MTTu%d;\n', ...
        varname(name, bond_number,1), name, local_u_index);
  else % Sensor
    local_y_index = local_y_index + 1;
    fprintf(filenum, '%s_MTTy%d := %s;\n', ...
        name, local_y_index, varname(name, bond_number,1));
  end;
  % Flow 
  if bonds(1,2)==1 % Source
    local_u_index = local_u_index + 1;
    fprintf(filenum, '%s := %s_MTTu%d;\n', ...
        varname(name, bond_number,-1), name, local_u_index);
  else % Sensor
    local_y_index = local_y_index + 1;
    fprintf(filenum, '%s_MTTy%d := %s;\n', ...
        name, local_y_index, varname(name, bond_number,-1));
  end;  
  return
end;

% Now do SS which are not ports.
% Effort
if strcmp(effort_attribute, 'external')
  if bonds(1,1)==-1 % Source
    inputs = inputs+1;
    fprintf(filenum, '%s := MTTu(%d,1);\n', ...
        varname(name, bond_number,1),inputs);
  else % Sensor

MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]