SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/cbg2ese_m2r artifact 1a4037d754 part of check-in 6c323ae3f5
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: cbg2ese_m # # # P.J.Gawthrop June 1996 # Copyright (c) P.J.Gawthrop, 1996. ############################################################### ## Version control history ############################################################### ## $Id$ ## ## $Log$ ## Revision 1.15 1998/07/08 14:43:12 peterg ## Restored inforfile ## ## Revision 1.14 1998/07/08 08:26:26 peterg ## Added -I option -- if set prints out the information messages ## ## Revision 1.13 1998/05/12 14:49:10 peterg ## Don't write END; any more - ese-tidy does this now! ## ## Revision 1.12 1998/01/23 13:30:46 peterg ## $RMATRIX --> $MATRIX ## ## Revision 1.11 1997/12/16 18:05:03 peterg ## Increased size of structure vector by on to include unknown_inputs as ## 6th element ## ## Revision 1.10 1997/04/15 09:18:26 peterg ## Added structure file ## # Revision 1.9 1996/12/07 18:21:25 peterg # Now uses fopen + file number # ## Revision 1.8 1996/12/05 10:05:28 peterg ## Removed the Octave switch: empty_list_elements_ok = 1; ## This is now in .octaverc ## # Revision 1.7 1996/08/30 11:29:49 peter # Added constitutive relationship to argument list. # Put in explicit argument list to cbg2ese. # # Revision 1.6 1996/08/26 13:25:07 peterg # Corrected error handling. # # Revision 1.5 1996/08/24 14:38:11 peter # Error handling included. # ## Revision 1.4 1996/08/19 09:02:12 peter ## Errors go to user - not log. ## ## Revision 1.3 1996/08/18 20:05:55 peter ## Included zero outputs. ## ## Revision 1.2 1996/08/08 18:08:37 peter ## Sorted out file naming scheme. ## ## Revision 1.1 1996/08/08 15:57:15 peter ## Initial revision ## ############################################################### while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in -I ) info=info;; -partition ) partition=yes; blurb='with partitioning'; ;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done infofile='mtt_info.txt'; structurefile="$1_struc.txt"; eqnfile="$1_ese.r"; deffile="$1_def.r"; # Remove the old log file rm -f cbg2ese_m.log # Remove the info and error files rm -f mtt_info.txt rm -f mtt_error.txt # Remove relevent ese files rm -f $1_ese.r $1_*_ese.r #Inform user echo Creating $eqnfile $blurb echo Creating $deffile echo Creating $structurefile # Use matrix manipulation to accomplish the transformation $MATRIX << EOF > cbg2ese_m2r.log 2>mtt_error.txt infofile = '$infofile';; infofilenum = fopen(infofile,'w'); structurefile = '$structurefile';; structurefilenum = fopen(structurefile,'w'); deffile = '$1_def.r'; deffilenum = fopen(deffile,'w'); system_name = '$1'; system_type = ''; system_cr = ''; system_args = ''; full_name = ''; full_name_repetition = ''; % Structure matrix [states,nonstates,inputs,outputs,zero_outputs] structure = zeros(1,7); # Initialise structure vector structure = cbg2ese(system_name, system_type, system_cr, ... system_args, full_name, full_name_repetition, ... 1, structure, structurefilenum, infofilenum); makedef(structure,deffilenum); EOF if [ "$info" = "info" ]; then cat $infofile fi if [ -z "$partition" ]; then # Don't partition # Create the composite ese file cat $1_ese.r $1_*_ese.r > $1_ese.tmp 2>> /dev/null mv $1_ese.tmp $1_ese.r # Zap the sub ese files rm -f $1_*_ese.r else # Partition the system # Find subsystems subsystems=`mtt_get_subsystems $1` # Top level # The top-level definition file Nx=`mtt_getsize -external $1 x` Nz=`mtt_getsize -external $1 z` Ny=`mtt_getsize -external $1 y` Nu=`mtt_getsize -external $1 u` Nui=`mtt_getsize -external $1 ui` Nuc=`mtt_getsize -internal $1 u` echo Ny $Ny Nu $Nu Nx $Nx Nui $Nui Nuc $Nuc ## Definitions file octave -q <<EOF deffile = '$1_def.r'; deffilenum = fopen(deffile,'w'); ## Set up the structure vector structure = zeros(1,7); structure(1) = $Nx; # States structure(2) = $Nz; # Non-states structure(3) = $Nu; # Inputs structure(4) = $Ny; # Outputs structure(5) = 0; # Zero outputs structure(6) = $Nui; #Internal inputs structure(7) = $Nuc; # Connecting inputs makedef(structure,deffilenum); #Create definitions EOF ## Extra bits for the ese file to define connections for subsystem in $subsystems; do echo Doing $subsystem Ny=`mtt_getsize -internal $subsystem"_1" y` Nu=`mtt_getsize -internal $subsystem"_1" u` echo Ny $Ny Nu $Nu Nx $Nx echo MATRIX "MTT_"$subsystem"_uc("$Nu",1);" >> $1_def.r echo %Subsystem input connections for $subsystem >> $1_ese.r octave -q <<EOF >> $1_ese.r for i=1:$Nu printf("MTT_%s_uc(%i,1) := %s_1_MTTu%i;\n", "$subsystem", i, "$subsystem", i); endfor; EOF done fi echo "END;" >> $1_ese.r echo "END;" >> $1_def.r # Sort the struc file mv $structurefile junk sort -k 1,1 -k 2,2n junk >$structurefile # Now invoke the standard error handling. mtt_error mtt_error.txt