Overview
| Comment: | Writes flipped port info |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | origin/master | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
d92c3d35def14adc038d01cbe0580f8b |
| User & Date: | gawthrop@users.sourceforge.net on 1998-08-25 20:06:16.000 |
| Other Links: | branch diff | manifest | tags |
Context
|
1998-08-25
| ||
| 20:06:56 | New data structure for abg.m and cbg.m check-in: 3416b8080a user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
| 20:06:16 | Writes flipped port info check-in: d92c3d35de user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
| 20:05:33 | Write flipped port info check-in: e34ae7e51b user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/bin/trans/m/abg2cbg.m
from [d3bc550e93]
to [fe77282cde].
| ︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # [bonds,status] = abg2cbg(system_name, system_type, full_name, port_bonds, infofile) # ############################################################### # ## Version control history # ############################################################### # ## $Id$ # ## $Log$ # ## Revision 1.37 1998/08/25 08:33:29 peterg # ## Now does ports as well - fixed string prob by using deblank # ## # ## Revision 1.36 1998/08/25 06:44:40 peterg # ## Furhter revisions # ## # ## Revision 1.35 1998/08/24 10:16:32 peterg | > > > > > > > > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # [bonds,status] = abg2cbg(system_name, system_type, full_name, port_bonds, infofile) # ############################################################### # ## Version control history # ############################################################### # ## $Id$ # ## $Log$ # ## Revision 1.38 1998/08/25 09:15:28 peterg # ## Fixed couple of problems with using two copies of the one data # ## stucture: # ## # ## ABG_field and ABG.field # ## # ## Maybe this is conceptually wrong? # ## # ## Revision 1.37 1998/08/25 08:33:29 peterg # ## Now does ports as well - fixed string prob by using deblank # ## # ## Revision 1.36 1998/08/25 06:44:40 peterg # ## Furhter revisions # ## # ## Revision 1.35 1998/08/24 10:16:32 peterg |
| ︙ | ︙ | |||
239 240 241 242 243 244 245 | # return # end; # Coerce the port (SS:[]) component bonds to have the same direction as # of the bonds in the encapsulating system -- but not at top level | > | | < < < | < | | < < | | | < | < | | | < < < > > | < < > | | | | | < > > > < | < | < < < < | | < < | | | | | < < | | < | 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 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# return
# end;
# Coerce the port (SS:[]) component bonds to have the same direction as
# of the bonds in the encapsulating system -- but not at top level
Flipped.ports="";Flipped.subs="";Flipped.cons="";
if (n_ports>0)&&(!at_top_level) # Coerce directions
for [port,name] = ABG.ports # Just ports are relevant here
if (sign(port.connections)!=port_bond_direction(port.index)) # Direction different?
eval(["ABG.ports.",name,".connections = - port.connections;"]); # Flip direction at port
Flipped.ports=[Flipped.ports;name]; # Remember which port has been flipped
bond_index=abs(port.connections); # Index of bond on port
mtt_info(sprintf("Flip port %s on %s"\
,name,full_name),infofile); # And report
for [subsystem,name] = ABG.subsystems # and at the other end
for k=1:length(subsystem.connections)
if (abs(subsystem.connections(k))==bond_index)
eval(["ABG.subsystems.",name,".connections(k) = -subsystem.connections(k);"]);
Flipped.subs=[Flipped.subs;name]; # Remember which subsystem has been flipped
Flipped.cons=[Flipped.cons;k]; # Remember which connection has been flipped
mtt_info(sprintf("Flip subsystem %s on %s"\
,name,full_name),infofile); # And report
endif
endfor
endfor # subsystem = ABG.subsystems
ABG.bonds(bond_index,:) = -ABG.bonds(bond_index,:); # Flip the bond causalities
#(these are arrow-orientated)
endif # Is the direction different?
endfor # port = ABG.ports
endif # (n_ports>0)&&(!at_top_level)
# If not at top level, then copy the port bonds.
if !at_top_level # Find number of port bonds
for port = ABG.ports # Copy the port bonds.
jj = abs(port.connections); # The index of the bond
j = port.index; # The index of the port bond
for k = 1:2
if ABG.bonds(jj,k)==0 # only copy if not already set
ABG.bonds(jj,k) = port_bonds(j,k);
endif
endfor
endfor
else
n_port_bonds=0;
endif
# Causality indicator
total = 2*n_bonds;
done = sum(sum(abs(ABG.bonds)))/total*100;
fields=["ports";"subsystems"]; # Do for both ports and subsystems -
|
| ︙ | ︙ | |||
435 436 437 438 439 440 441 |
if done<100
mtt_error(sprintf("Unable to complete causality"),errorfile);
end;
endif # at_top_level
disp(["Writing ", full_name]);
| | > > | | | | | | | | | | | < | 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 |
if done<100
mtt_error(sprintf("Unable to complete causality"),errorfile);
end;
endif # at_top_level
disp(["Writing ", full_name]);
write_cbg(full_name,system_type,ABG,Flipped);
# Return the port bonds - arrow orientated causality - and the direction
status=0;
if !at_top_level # Not at top level
port_bonds = ABG.bonds(port_bond_index,:); # Return port bonds
endif; # at top level
for [subsystem,name] = ABG.subsystems
if subsystem.status==-1 # Under causal
status=-1;
mtt_info(sprintf("Component %s (%s) is undercausal", name, subsystem.type), ...
infofile);
elseif subsystem.status==1; # Over causal
status=-1;
mtt_info(sprintf("Component %s (%s) is overcausal", name, subsystem.type), ...
infofile);
endif;
endfor; # [subsystem,name] = ABG.subsystems
status, port_bonds
disp("====================================");
disp(["END: ", full_name, " (", fun_name, ")"]);
disp("====================================");
endfunction;
|