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
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
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 numbered port
  % Convert string to number
  % port_number = abs(flow_attribute)-abs('0');
  %port_number = str2num(flow_attribute);
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;
% $$$   %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, port_number);
        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, port_number, varname(name, bond_number,1));
        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, port_number);
        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, port_number, varname(name, bond_number,-1));
        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 ]