SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/csm2sm_r artifact d62d77923d part of check-in 0187760d62
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: csm2sm_r # Constrained-state equation to linear constrained-state matrices conversion # P.J.Gawthrop 6th September 1991, May 1994 # Copyright (c) P.J.Gawthrop, 1991, 1994, 1996 ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.1 2000/12/28 12:24:03 peterg ## Put under RCS ## ## Revision 1.2 1996/08/25 10:11:32 peter ## Added END in output file. ## Error handling. ## ## Revision 1.1 1996/08/19 15:06:16 peter ## Initial revision ## ############################################################### optimise=''; optimise_msg='' while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in -optimise) optimise='-optimise' optimise_msg=' with optimisation' ;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code def2write_r $optimise $1 $2 # Inform user echo Creating $1_$2.r $optimise_msg case $2 in sm) rep=csm; ;; ssm) rep=scsm ;; *) echo Representation must be sm or ssm esac # Remove the old log file rm -f csm2sm_r.log # Use reduce to accomplish the transformation $SYMBOLIC >csm2sm_r.log << EOF in "$1_def.r"; in "$1_$rep.r"; in "$1_cr.r"; %%in "$1_sympar.r"; OFF Echo; OFF Nat; % Find MTTA and MTTB : the A and B matrices MTTinvE := MTTE^(-1); MTTA := MTTinvE*MTTA; MTTB := MTTinvE*MTTB; % Create the matrix declarations OUT "$1_$2.r1"; write "MATRIX MTTA(", MTTNx, ",", MTTNx, ")$"; write "MATRIX MTTB(", MTTNx, ",", MTTNu, ")$"; write "MATRIX MTTC(", MTTNy, ",", MTTNx, ")$"; write "MATRIX MTTD(", MTTNy, ",", MTTNu, ")$"; SHUT "$1_$2.r1"; %Create the output file OUT "$1_$2.r2"; write "%File: $1_ode.r"; write "% New constants"; write "MTTNx := ", MTTNx, ";"; write "MTTNy := ", MTTNy, ";"; in ("$1_sm_write.r"); %Write out the matrices. % IF MTTNx>0 THEN % BEGIN % write "matrix MTTA(", MTTNx, ",", MTTNx, ");"; % FOR i := 1:MTTNx DO % FOR j := 1:MTTNx DO IF MTTA(i,j) NEQ 0 THEN % write "MTTA(", i, ",", j, ") := ", MTTA(i,j); % END; % IF MTTNx>0 THEN % IF MTTNu>0 THEN % BEGIN % write "matrix MTTB(", MTTNx, ",", MTTNu, ");"; % FOR i := 1:MTTNx DO % FOR j := 1:MTTNu DO IF MTTB(i,j) NEQ 0 THEN % write "MTTB(", i, ",", j, ") := ", MTTB(i,j); % END; % %Write it out % IF MTTNy>0 THEN % IF MTTNx>0 THEN % BEGIN % write "matrix MTTC(", MTTNy, ",", MTTNx, ");"; % FOR i := 1:MTTNy DO % FOR j := 1:MTTNx DO IF MTTC(i,j) NEQ 0 THEN % write "MTTC(", i, ",", j, ") := ", MTTC(i,j); % END; % IF MTTNy>0 THEN IF MTTNu>0 THEN % BEGIN % write "matrix MTTD(", MTTNy, ",", MTTNu, ");"; % FOR i := 1:MTTNy DO % FOR j := 1:MTTNu DO IF MTTD(i,j) NEQ 0 THEN % write "MTTD(", i, ",", j, ") := ", MTTD(i,j); % END; write "END;"; SHUT "$1_$2.r2"; quit; EOF cat $1_$2.r1 $1_$2.r2 > $1_$2.r # Now invoke the standard error handling. mtt_error_r csm2sm_r.log