SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/rbg2abg_m artifact 746d1ccf30 part of check-in e5d081877b
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: rbg2abg_m # ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.13 2000/03/16 12:53:26 peterg ## Added copy of the %VAR declarations ## Put in the endfunction statement ## ## Revision 1.12 1998/07/28 19:07:48 peterg ## Writes out N_ports as well as n_ports ## ## Revision 1.11 1998/07/25 16:14:44 peterg ## *** empty log message *** ## ## Revision 1.10 1998/07/08 15:34:56 peterg ## Sorted out error exit status ## ## Revision 1.9 1998/07/08 08:24:26 peterg ## Added -I option -- if set prints out the indormation messages ## ## Revision 1.8 1998/02/19 08:57:02 peterg ## Fixed mtt-info bug -- confused filename with number ## ## Revision 1.7 1997/08/05 08:38:23 peterg ## Added n-ports to the argument list in the comment. ## ## Revision 1.6 1996/12/04 21:52:01 peterg ## Uses filenum and fopen instead of filename. ## ## Revision 1.5 1996/08/25 09:20:32 peter ## General error handling. ## ## Revision 1.4 1996/08/24 17:57:41 peter ## Removed `touch mtt_info.txt' ## ## Revision 1.3 1996/08/24 14:58:56 peter ## Fixed missprint - mtt_err --> mtt_error ## ## Revision 1.2 1996/08/24 14:33:07 peter ## Error handling included. ## ## Revision 1.1 1996/08/05 12:22:16 peter ## Initial revision ## ############################################################### # Raw bond graph to structured acausal bond graph: mfile format # The structured BG is described by four matrices: # junctions: describes the junctions - # Column 1 Index of component (see components) # Column 2.. Indices of bonds on junction (see jbonds) # rows may be padded with zeros # # jbonds: describes the true bonds - # Column 1 Index of component (see components) # Column 2 Direction # 1 away from junction # -1 towards junction # Column 3 Causality # 1 stroke at arrow end # -1 stroke at other end # 0 no stroke (ie acausal) # Columns 4:5 x,y coordinates of non-arrow end (in Fig) # Columns 6:7 x,y coordinates of arrow end (in Fig) # # mbonds: describes the modulation bonds - # Column 1 Index of component at non-arrow end # Column 2 Index of component at arrow end # Columns 4:5 x,y coordinates of non-arrow end (in Fig) # Columns 6:7 x,y coordinates of arrow end (in Fig) # # components: describes the comonents - # Column 1 Type of component # 0 0-junction # 1 1-junction # 2 R component # 3 C component # 4 I component # 11 TF component # 12 GY component # 13 A component # Column 2 Flag for explicit junction # 4 Explicit component (4 means text type) # 0 Implicit component # Column 3-14 fig file information (see fig documentation) # # P.J.Gawthrop May 1996 # Copyright (c) P.J.Gawthrop, 1996. while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in -I ) info=info;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Remove the old log file rm -f rbg2abg_m.log rm -f $1_abg.m #Inform user echo Creating $1_abg.m # Use matrix manipulation to accomplish the transformation $MATRIX > rbg2abg_m.log 2>mtt_error.txt << EOF name = '$1' infofile = fopen('mtt_info.txt', 'w'); errorfile = fopen('mtt_error.txt', 'w'); %Convert from the fig version of the bonds to a structured version [rbonds,rstrokes,rcomponents,port_coord,port_name,port_list] = $1_rbg; [n_ports, junk] = size(port_list); N_ports = 0; for i=1:n_ports # Count the true number of ports. [subport,n_sub] = split_port(port_list(i,:), ','); N_ports = N_ports+n_sub; end; rbonds = rbonds(:,1:6); # Strip the directional information [bonds,components,n_vector_bonds] = rbg2abg(name,rbonds,rstrokes,rcomponents,port_coord,port_name,\ infofile,errorfile); %Write the function m-file for the causal bond graph write_abg(name,bonds,components,n_vector_bonds); # filename = '$1_abg.m'; # filenum = fopen(filename,'w'); # c = '%'; # fprintf(filenum, 'function [bonds,components,n_ports,N_ports] = $1_abg\n'); # fprintf(filenum, '%s [bonds,components,n_ports] = $1_abg\n', c); # fprintf(filenum, '%s Acausal bond graph created by MTT on %s\n\n', ... # c, date); # mat2mfile(bonds, 'bonds', filenum); # mat2mfile(components, 'components', filenum); # fprintf(filenum, 'n_ports = %1.0f;\n', n_ports); # fprintf(filenum, 'N_ports = %1.0f;\n', N_ports); EOF # Append any VAR declarations if [ -f "$1_lbl.txt" ]; then echo "# Explicit variable declarations" >> $1_abg.m grep '^[\s]*[%|#]VAR' $1_lbl.txt | tr '%' '#' >> $1_abg.m fi ## Close off the function echo "endfunction" >> $1_abg.m ## Errors and info if [ "$info" = "info" ]; then cat mtt_info.txt fi if mtt_error mtt_error.txt then exit 0 else exit 1 fi