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.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
|
>
>
>
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
## Structure matrix [states,nonstates,inputs,outputs,zero_outputs]
## ###############################################################
## ## Version control history
## ###############################################################
## ## $Id$
## ## $Log$
## ## Revision 1.38 2000/11/16 10:00:57 peterg
## ## *** empty log message ***
## ##
## ## 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
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
## ##
## #############################################################
## disp("cbg2ese");
## system_name, system_type, full_name, repetition
pc = "%";
## Set up the names corresponding to the structure matrix.
structure_name = [
"state ",
"nonstate ",
"input ",
"output ",
"zero_output ",
|
>
>
|
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
## ##
## #############################################################
## disp("cbg2ese");
## system_name, system_type, full_name, repetition
pc = "%";
unit_error = "Component %s connects inconsistent ports with units %s and %s"
unit_info = "Component %s connects ports with units %s and %s"
## Set up the names corresponding to the structure matrix.
structure_name = [
"state ",
"nonstate ",
"input ",
"output ",
"zero_output ",
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
## eval(["[junk,components]=", abg_name, ";"]);
## Find number of bonds
[n_bonds,columns] = size(CBG.bonds);
if (columns ~= 2)&(n_bonds>0)
error("Incorrect bonds matrix: must have 2 columns");
endif;
## ## Find number of components
## [n_components,columns] = size(components);
## n_components = n_components
## Set up the first dummy bond number - needed for repetative components
## next_bond = max(max(abs(components)))+1;
next_bond = n_bonds+1;
|
|
>
>
>
>
>
>
|
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
## eval(["[junk,components]=", abg_name, ";"]);
## Find number of bonds
[n_bonds,columns] = size(CBG.bonds);
if (columns ~= 2)&(n_bonds>0)
error("Incorrect bonds matrix: must have 2 columns");
endif;
## Set up initial bond units
for i=1:n_bonds
bond_effort_unit(i,:)="null";
bond_flow_unit(i,:)="null";
endfor
## ## Find number of components
## [n_components,columns] = size(components);
## n_components = n_components
## Set up the first dummy bond number - needed for repetative components
## next_bond = max(max(abs(components)))+1;
next_bond = n_bonds+1;
|
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
|
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);
printf("\n\t%s Equations linking up subsystem %s (%s)\n\n",\
pc, comp_name, subsystem.type);
bond_list
u_index = 0; y_index = 0; ## Count the inputs and outputs
for port_number=1:length(bond_list)
## Effort
if comp_bonds(port_number,1)==1 # Source
u_index = u_index + 1;
fprintf(ese_file, "%s_MTTu%d := %s;\n", ...
name_comp_name, u_index, varname(name_r, ...
bond_list(port_number),1));
else # Sensor
|
>
>
|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
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)
eval(["subABG = ",subsystem.type , "_abg;"]); # Get the information
## Link up the bonds for this compound component
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);
printf("\n\t%s Equations linking up subsystem %s (%s)\n\n",\
pc, comp_name, subsystem.type);
u_index = 0; y_index = 0; ## Count the inputs and outputs
for port_number=1:length(bond_list)
port_bond_number = bond_list(port_number);
this_bond_effort_unit = \
deblank(bond_effort_unit(port_bond_number,:));
this_bond_flow_unit = \
deblank(bond_flow_unit(port_bond_number,:));
## Extract the unit/domain stuff
this_port_name = subABG.portlist(port_number,:);
eval(sprintf("this_port = subABG.ports.%s;", \
this_port_name));
if struct_contains(this_port,"units")
eval(["effort_unit = \
subABG.ports.",this_port_name,".units.effort;"]);
eval(["flow_unit = \
subABG.ports.",this_port_name,".units.flow;"]);
else
effort_unit = "none";
flow_unit = "none";
endif
## and check consistency
## Efforts
if strcmp(this_bond_effort_unit,"null") # set
bond_effort_unit = \
[bond_effort_unit(1:port_bond_number-1,:)
effort_unit
bond_effort_unit(port_bond_number+1:n_bonds,:)
]
else # check
mtt_info(sprintf(unit_info,full_name, effort_unit, \
this_bond_effort_unit), infofilenum);
if !strcmp(this_bond_effort_unit,effort_unit)
error_string = sprintf(unit_error, full_name,\
effort_unit, \
this_bond_effort_unit);
mtt_error(error_string);
endif
endif
## Flows
if strcmp(this_bond_flow_unit,"null") # set
bond_flow_unit = \
[bond_flow_unit(1:port_bond_number-1,:)
flow_unit
bond_flow_unit(port_bond_number+1:n_bonds,:)
]
else # check
mtt_info(sprintf(unit_info,full_name, flow_unit, \
this_bond_flow_unit), infofilenum);
if !strcmp(this_bond_flow_unit,flow_unit)
error_string = sprintf(unit_error, full_name,\
flow_unit, \
this_bond_flow_unit);
mtt_error(error_string);
endif
endif
## Effort
if comp_bonds(port_number,1)==1 # Source
u_index = u_index + 1;
fprintf(ese_file, "%s_MTTu%d := %s;\n", ...
name_comp_name, u_index, varname(name_r, ...
bond_list(port_number),1));
else # Sensor
|