SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/abg2cbg_m artifact 5440b5dfe8 part of check-in 1208aacc81
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: abg2cbg_m # # Acausal bond graph to causal bond graph: mfile format ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.16 2001/07/26 04:07:28 gawthrop ## Changed a to w on open (Geraint's suggestion) ## Explictly close files ## ## Revision 1.15 2001/07/23 23:24:02 gawthrop ## Now only writes to type.sh and cbg.m when causality is complete ## ## Revision 1.14 2000/12/28 12:16:13 peterg ## *** empty log message *** ## ## Revision 1.13 1998/07/27 20:30:12 peterg ## *** empty log message *** ## ## Revision 1.12 1998/07/10 08:43:46 peterg ## Added -I switch ## ## Revision 1.11 1998/01/23 13:29:54 peterg ## $RMATRIX --> $MATRIX ## # Revision 1.10 1996/12/04 21:51:02 peterg # Now uses filenum instead of line name. # Uses fopen # # Revision 1.9 1996/11/06 15:49:33 peterg # Cahged $MATRIX to $RMATRIX # # Revision 1.8 1996/08/25 09:31:49 peter # More error handling. # ## Revision 1.7 1996/08/25 09:22:55 peter ## # Print errors, if any. ## mtt_error error.txt ## ## Revision 1.6 1996/08/24 14:36:01 peter ## Error handling included. ## ## Revision 1.5 1996/08/19 15:38:31 peter ## Removed bug work round. ## ## Revision 1.4 1996/08/16 14:28:45 peter ## Some debugging lines removed. ## ## Revision 1.3 1996/08/08 18:06:55 peter ## Unified naming scheme. ## ## Revision 1.2 1996/08/05 11:25:00 peter ## Removed bonds argument from abg2cbg. ## Removed call to $1_abg. ## ## Revision 1.1 1996/08/04 17:45:11 peter ## Initial revision ## ############################################################### # The causal BG is described by four matrices # (the same structure as the acausal BG except that Causality is 1 ot -1): # 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 # # cjbonds: describes the true bonds - # Column 1 Index of component (see components) # Column 2 Direction # 1 away from junction # -1 towards junction # Column 3 Effort causality # 1 stroke at arrow end # -1 stroke at other end # 0 no stroke (ie acausal) # Column 4 Flow causality # 1 stroke at arrow end # -1 stroke at other end # 0 no stroke (ie acausal) # Columns 5:6 x,y coordinates of non-arrow end (in Fig) # Columns 7:8 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) # # Lists of under- and over-causal junctions are displayed. # # P.J.Gawthrop May 1996 # Copyright (c) P.J.Gawthrop, 1996. # P.J.Gawthrop May 1996 # Copyright (c) P.J.Gawthrop, 1996. derivative=0;blurb=integral while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in -I ) info=info;; -derivative ) derivative=1; blurb=derivative;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done infofile='mtt_info.txt' errorfile='mtt_error.txt' typefile="$1_type.sh" # Remove the old log file rm -f abg2cbg_m.log rm -f $1_cbg.m rm -f $typefile rm -f $infofile #Inform user echo "Creating $1_cbg.m (maximise $blurb causality)" echo Creating $1_type.sh ## Start the type.sh file mtt_header $1 type sh > $typefile # Use matrix manipulation to accomplish the transformation $MATRIX << EOF >abg2cbg_m.log #2>mtt_error.txt infofilenum = fopen("$infofile",'w'); errorfilenum = fopen("$errorfile",'w'); typefilenum = fopen("$typefile",'w'); %Convert from acausal to causal bond graph in m-file form. system_name='$1'; port_bonds = []; port_direction = []; port_status = []; [cbonds,status] = abg2cbg(system_name, '', '', port_bonds, port_direction, port_status, ... $derivative,typefilenum, infofilenum, errorfilenum); ## close the files fclose(infofilenum); fclose(errorfilenum); fclose(typefilenum); EOF cat $typefile | sort -u > ${typefile}.tmp mv ${typefile}.tmp $typefile if [ "$info" = "info" ]; then cat $infofile fi # cp $1_$1_cbg.m $1_cbg.m 2>> mtt_error.txt # Print errors, if any. mtt_error mtt_error.txt