SQLITE_NOTICE(283): recovered 10 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/cse2csm_r artifact 5225d88b5f part of check-in 84e55afbfb
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: cse2csm_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. ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.7 2000/04/07 19:11:59 peterg ## reduce --> $SYMBOLIC ## ## Revision 1.6 2000/04/06 11:27:56 peterg ## Removed the in _cr.r ## ## Revision 1.5 1999/12/08 02:04:46 peterg ## Removed bug - uj := MTTU(j,1); not commented out ## ## Revision 1.4 1999/11/22 23:49:50 peterg ## Writes out the new MTTNx and MTTNy ## ## Revision 1.3 1999/11/22 23:38:51 peterg ## Now does scse 2 scsm as well. ## Uses mkid. ## ## Revision 1.2 1998/07/13 09:56:31 peterg ## Back under RCS for major revision ## # Revision 1.1 1996/08/25 10:13:37 peter # Initial revision # ############################################################### # Inform user echo Creating $1_$2.r case $2 in csm) rep=cse; ;; scsm) rep=scse; ;; *) echo Representation must be csm or scsm; exit esac # Remove the old log file rm -f cse2csm_r.log # Use reduce to accomplish the transformation $SYMBOLIC >cse2csm_r.log << EOF in "$1_def.r"; in "$1_$rep.r"; %%in "$1_cr.r"; %%in "$1_sympar.r"; OFF Echo; OFF Nat; % Get rid of the old mttx and u - now use mkid instead clear MTTx, MTTu; IF (MTTNx>0) THEN BEGIN % Find MTTA : the A matrix matrix MTTA(MTTNx,MTTNx); FOR j := 1:MTTNx DO BEGIN %xj := MTTX(j,1); xj := mkid(MTTx,j); FOR i := 1:MTTNx DO MTTA(i,j) := df(MTTEdx(i,1), xj, 1); END; END; IF (MTTNx>0) AND (MTTNu>0) THEN BEGIN % Find MTTB : the B matrix matrix MTTB(MTTNx,MTTNu); FOR j := 1:MTTNu DO BEGIN %uj := MTTU(j,1); uj := mkid(MTTu,j); FOR i := 1:MTTNx DO MTTB(i,j) := df(MTTEdx(i,1), uj, 1); END; END; IF (MTTNx>0) AND (MTTNy>0) THEN BEGIN % Find MTTC : the C matrix matrix MTTC(MTTNy,MTTNx); FOR i := 1:MTTNy DO FOR j := 1:MTTNx DO BEGIN %xj := MTTX(j,1); xj := mkid(MTTx,j); MTTC(i,j) := df(MTTY(i,1), xj, 1); END; END; IF (MTTNy>0) AND (MTTNu>0) THEN BEGIN % Find MTTD : the D matrix matrix MTTD(MTTNy,MTTNu); FOR i := 1:MTTNy DO FOR j := 1:MTTNu DO BEGIN %uj := MTTU(j,1); uj := mkid(MTTu,j); MTTD(i,j) := df(MTTY(i,1), uj, 1); END; END; %Substitute the ss values in "$1_sspar.r"; %Create the output file OUT "$1_$2.r"; % Constants write "% New constants"; write "MTTNx := ", MTTNx, ";"; write "MTTNy := ", MTTNy, ";"; %Write out the matrices. IF MTTNx>0 THEN BEGIN write "matrix MTTE(", MTTNx, ",", MTTNx, ");"; FOR i := 1:MTTNx DO FOR j := 1:MTTNx DO IF MTTE(i,j) NEQ 0 THEN write "MTTE(", i, ",", j, ") := ", MTTE(i,j); 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.r"; EOF # Now invoke the standard error handling. mtt_error_r cse2csm_r.log