19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
## Structure matrix [states,nonstates,inputs,outputs,zero_outputs]
## ###############################################################
## ## Version control history
## ###############################################################
## ## $Id$
## ## $Log$
## ## Revision 1.36 2000/10/13 10:54:47 peterg
## ## Now writes out a unique name for each state etc
## ##
## ## Revision 1.35 2000/10/12 19:27:47 peterg
## ## Now writes the aliased args
## ##
## ## Revision 1.34 2000/09/01 08:42:44 peterg
|
>
>
>
>
>
>
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
## Structure matrix [states,nonstates,inputs,outputs,zero_outputs]
## ###############################################################
## ## Version control history
## ###############################################################
## ## $Id$
## ## $Log$
## ## Revision 1.37 2000/11/12 16:45:57 peterg
## ## Close ese file before recursive call of cbg2ese -- reopen when
## ## finished.
## ## THis prevents a new file being opened for each subsystem which fails
## ## when > 1K files opened
## ##
## ## Revision 1.36 2000/10/13 10:54:47 peterg
## ## Now writes out a unique name for each state etc
## ##
## ## Revision 1.35 2000/10/12 19:27:47 peterg
## ## Now writes the aliased args
## ##
## ## Revision 1.34 2000/09/01 08:42:44 peterg
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
## ## Sorted out file naming sceme
## ##
## ## Revision 1.1 1996/08/08 15:53:23 peter
## ## Initial revision
## ##
## #############################################################
disp("cbg2ese");
system_name, system_type, full_name, repetition
pc = "%";
## Set up the names corresponding to the structure matrix.
structure_name = [
"state ",
"nonstate ",
|
|
|
|
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
## ## Sorted out file naming sceme
## ##
## ## Revision 1.1 1996/08/08 15:53:23 peter
## ## Initial revision
## ##
## #############################################################
## disp("cbg2ese");
## system_name, system_type, full_name, repetition
pc = "%";
## Set up the names corresponding to the structure matrix.
structure_name = [
"state ",
"nonstate ",
|
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
if exist(cbg_name)~=2 # Return if cbg file doesn't exist
disp([cbg_name, " does not exist"]);
return
end;
## Setup files
ese_name = [full_name_repetition, "_ese.r"];
ese_file = fopen(ese_name, "w"); # open file (first time)
fprintf(ese_file, "\n%s%s Equation file for system %s (file %s)\n", ...
pc, pc, full_name_repetition, ese_name);
fprintf(ese_file, "%s%s Generated by MTT\n\n", pc, pc);
## Evaluate the system function to get the bonds
eval(["CBG = ", cbg_name, ";"]);
|
|
|
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
if exist(cbg_name)~=2 # Return if cbg file doesn't exist
disp([cbg_name, " does not exist"]);
return
end;
## Setup files
ese_name = [full_name_repetition, "_ese.r"];
ese_file = fopen(ese_name, "w") # open file (first time)
fprintf(ese_file, "\n%s%s Equation file for system %s (file %s)\n", ...
pc, pc, full_name_repetition, ese_name);
fprintf(ese_file, "%s%s Generated by MTT\n\n", pc, pc);
## Evaluate the system function to get the bonds
eval(["CBG = ", cbg_name, ";"]);
|
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
eval(["subsystem=CBG.",field,".",comp_name,";"]); # Pluck out the details
comp = subsystem.connections; # Connections
bond_list = abs(comp);
direction = sign(comp)'*[1 1];
# Convert from arrow orientated to component orientated causality
comp_bonds = CBG.bonds(bond_list,:).*direction;
disp(["---- ", field, " ---"]);
if AliasingArguments # Alias the args list if appropriate
message = sprintf("\tfor component %s (%s) within %s",\
comp_name,subsystem.type,full_name);
if struct_contains(CBG,"alias")
subsystem.arg = alias_args(subsystem.arg,CBG.alias,";",message,infofilenum,full_name)
endif;
endif;
if AliasingCRs # Alias the CR list if appropriate
message = sprintf("\tfor component %s (%s) within %s",\
comp_name,subsystem.type,full_name);
if struct_contains(CBG,"alias")
subsystem.cr = alias_args(subsystem.cr,CBG.alias,";",message,infofilenum,full_name)
endif;
endif;
## Substitute positional ($1 etc) arguments
subsystem.cr = subs_arg(subsystem.cr,system_cr, ...
"lin",full_name,subsystem.type,comp_name,infofilenum);
subsystem.arg = subs_arg(subsystem.arg,system_args, ...
|
|
|
|
|
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
|
eval(["subsystem=CBG.",field,".",comp_name,";"]); # Pluck out the details
comp = subsystem.connections; # Connections
bond_list = abs(comp);
direction = sign(comp)'*[1 1];
# Convert from arrow orientated to component orientated causality
comp_bonds = CBG.bonds(bond_list,:).*direction;
## disp(["---- ", field, " ---"]);
if AliasingArguments # Alias the args list if appropriate
message = sprintf("\tfor component %s (%s) within %s",\
comp_name,subsystem.type,full_name);
if struct_contains(CBG,"alias")
subsystem.arg = alias_args(subsystem.arg,CBG.alias,";",message,infofilenum,full_name);
endif;
endif;
if AliasingCRs # Alias the CR list if appropriate
message = sprintf("\tfor component %s (%s) within %s",\
comp_name,subsystem.type,full_name);
if struct_contains(CBG,"alias")
subsystem.cr = alias_args(subsystem.cr,CBG.alias,";",message,infofilenum,full_name);
endif;
endif;
## Substitute positional ($1 etc) arguments
subsystem.cr = subs_arg(subsystem.cr,system_cr, ...
"lin",full_name,subsystem.type,comp_name,infofilenum);
subsystem.arg = subs_arg(subsystem.arg,system_args, ...
|
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
|
bond_list(2:2:ports) = new_bonds;
endif;
endif;
## Invoke the appropriate equation-generating procedure
name_r = full_name_repetition;
eqn_name = [subsystem.type, "_eqn"]
if exist(eqn_name)~=2 ## Try a compound component
fclose(ese_file); # Close but reopen later
disp("---PUSH---"); bond_list, comp_name, subsystem.type
structure = cbg2ese(comp_name, subsystem.type, subsystem.cr, subsystem.arg, ...
full_name, full_name_repetition, ...
k, structure, structure_file, infofilenum);
disp("---POP---");
ese_file = fopen(ese_name, "a"); # open file (again)
## Link up the bonds
fprintf(ese_file, ...
"\n\t%s Equations linking up subsystem %s (%s)\n\n", ...
pc, comp_name, subsystem.type);
name_comp_name = sprintf("%s_%s_%d", ...
full_name_repetition, comp_name, k);
|
|
|
|
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
|
bond_list(2:2:ports) = new_bonds;
endif;
endif;
## Invoke the appropriate equation-generating procedure
name_r = full_name_repetition;
eqn_name = [subsystem.type, "_eqn"];
if exist(eqn_name)~=2 ## Try a compound component
fclose(ese_file); # Close but reopen later
disp("---PUSH---"); bond_list, comp_name, subsystem.type
structure = cbg2ese(comp_name, subsystem.type, subsystem.cr, subsystem.arg, ...
full_name, full_name_repetition, ...
k, structure, structure_file, infofilenum);
disp("---POP---");
ese_file = fopen(ese_name, "a") # open file (again)
## Link up the bonds
fprintf(ese_file, ...
"\n\t%s Equations linking up subsystem %s (%s)\n\n", ...
pc, comp_name, subsystem.type);
name_comp_name = sprintf("%s_%s_%d", ...
full_name_repetition, comp_name, k);
|