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
|